#include<stdio.h>
#include<string.h>
//界面
void jiemian()
{
printf("******************************************\n");
printf("*** 欢迎使用医疗管理系统 ***\n");
printf("******************************************\n");
printf("———请根据如下提示进行你需要的操作———\n");
printf("添加患者信息请输入:1\n");
printf("\n");
printf("查询患者信息请输入:2\n");
printf("\n");
printf("查看所有患者信息请输入:3\n");
printf("\n");
printf("删除患者信息请输入:4\n");
printf("\n");
printf("修改患者信息请输入:5\n");
printf("\n");
printf("退出患者信息请输入:0\n");
printf("\n");
}
//添加患者信息
typedef struct Patient
{
//房间号
int id;//病人序号
char name[999];//病人名字
int age;//病人岁数
char sex[999];//病人性别
char tele[12];//家人联系方式
}Patient;
int Input_Patient(Patient patient[100],int i)
{
while (1)
{
printf("请输入%d号病人的信息\n", i);
printf("请输入病人名字:》》》");
scanf_s("%s", patient[i-1].name);//这里注意要放进结构体数组中要用i-1
printf("请输入病人年龄:》》》");
while (1)
{
scanf_s("%d", &patient[i-1].age);
if (patient[i-1].age > 0 && patient[i-1].age <= 120)
{
break;
}
else
{
printf("数据不合理请重新输入病人年龄》》》");
}
}
printf("请输入病人性别:》》》");
scanf_s("%s", &(patient[i-1].sex));
printf("请输入病人家属联系方式》》》");
scanf_s("%s", &(patient[i - 1].tele));
printf("储存完毕。");
printf("请选择:\n");
printf("1.继续输入病人信息\n");
printf("0.退出\n");
int p = 1;
scanf_s("%d", &p);
/* if (p == 1)
{
continue;
}
else
return i;*/
if (p==1)
{
i++;
}
else
{
return i;//已经输入的患者的个数
}
}
}
//搜查患者信息
void Se_patient(Patient patient[100], int count)
{
printf("请输入要搜查患者的名字》》》");
char name1[50];
scanf_s("%s", name1);
int p = 0;//标记患者不存在
int i;
for (i = 0; i < count; i++)
{
if (strcmp(name1, patient[i].name) == 0)
{
p = 1;
break;
}
else
{
continue;
}
}
if (p == 0)
{
printf("该患者不存在");
return;
}
else
{
printf("该患者为第%d号患者 ", i + 1);
printf("姓名:%s|年龄:%d|性别:%s|家属联系方式:%s\n", patient[i].name, patient[i].age, patient[i].sex,patient[i].tele);
printf("__________________________\n");
printf("请输入任意数字退出界面");
int q;
scanf_s("%d", &q);
return;
}
}
//打印患者信息
void Print_patient(Patient patient[100], int count)
{
for (int c = 0; c < count; c++)
{
if (patient[c].age != 0)
{
printf("%d号患者的信息为\n", c + 1);
printf("姓名:%s|年龄:%d|性别:%s|家属联系方式:%s\n", patient[c].name, patient[c].age, patient[c].sex, patient[c].tele);
printf("___________________________________________________\n");
}
}
int p = 0;
}
//查看所有患者信息
void Check_patient(Patient patient[100], int count)//count是存入的患者个数,作为下标应该-1
{
int i = 0;
int c = 0;
if (patient[c].age == 0)
{
printf("当前无患者信息\n");
printf("请输入任意数字退出界面》》》");
scanf_s("%d", &i);
return;
}
else
{
Print_patient(patient, count);
printf("请输入任意数字退出界面》》》");
scanf_s("%d", &i);
return;
}
}
//删除患者信息
//分支
void De_patient1(Patient patient[100], int g,int total)//这里的g是对应的数组下标,total是总下标数
{
for (int i = g; i <= total; i++)
{
patient[i] = patient[i + 1];
}
}
//主体
void De_patient(Patient patient[100], int count)
{
int i;
printf("以下是在院患者的信息\n ");
int c = 0;
if (patient[c].age == 0)
{
int j;
printf("当前无患者信息\n");
printf("请输入任意数字退出界面》》》");
scanf_s("%d", &j);
return;
}
else
{
Print_patient(patient, count);//第count个患者对应的下标是count-1
printf("请输入要删除的患者的序号》》》");
while (1)
{
scanf_s("%d", &i);//要删除的是数组下标为i-1的数据并且而将下标为i到count-1的数组的位置往前提一个
if (i > 0 && i <= count)
{
De_patient1(patient, i - 1, count - 1);
printf("已删除成功\n");
break;
}
else
{
printf("当前序号无病人信息请重新输入》》》");
}
}
}
}
//修改病人信息
void Amend_patient(Patient patient[100],int n)
{
////int i;
//int p;
//printf("以下是在院患者的信息\n ");
//Print_patient(patient, n);
//printf("\n");
//printf("请输入要修改信息的病人的序号》》》");
//scanf_s("%d", &i);
//printf("第%d个患者的信息为:\n", i);
//printf("姓名:%s\n",patient[i-1].name);
//printf("性别:%s\n",patient[i-1].sex);
//printf("年龄:%d\n", patient[i - 1].age);
while (1)
{
int i;
int p;
printf("以下是在院患者的信息\n ");
int c = 0;
if (patient[c].age == 0)
{
printf("当前无患者信息\n");
printf("请输入任意数字退出界面》》》");
scanf_s("%d", &i);
return;
}
else
{
Print_patient(patient, n);
printf("\n");
printf("请输入要修改信息的病人的序号》》》");
scanf_s("%d", &i);
printf("第%d个患者的信息为:\n", i);
printf("姓名:%s\n", patient[i - 1].name);
printf("性别:%s\n", patient[i - 1].sex);
printf("年龄:%d\n", patient[i - 1].age);
printf("家属联系电话:%s\n", patient[i - 1].tele);
printf("请输入你要修改的数据|1.姓名|2.性别|3.年龄|4.家属联系电话|》》》");
scanf_s("%d", &p);
switch (p)
{
case 1:
{
printf("请输入修改后患者姓名:");
scanf_s("%s", &(patient[i - 1].name));
break;
}
case 2:
{
printf("请输入修改后患者性别:");
scanf_s("%s", &(patient[i - 1].sex));
break;
}
case 3:
{
printf("请输入修改后患者年龄:");
scanf_s("%d", &(patient[i - 1].age));
break;
}
case 4:
{
printf("请输入修改后患者家属联系电话:");
scanf_s("%s", &(patient[i - 1].tele));
}
}
printf("修改成功\n");
int q = 0;
printf("是否继续修改(1.退出|0.继续修改)");
scanf_s("%d", &q);
if (q)
{
break;
}
}
}
}
int main()
{
Patient patient[100];
int count = 0;
int n = 0;
while (1)
{
int p;
jiemian();
printf("请选择>>>");
scanf_s("%d", &p);
switch (p)
{
case 1:
//这里count代表患者的个数
n = Input_Patient(patient, ++count);//n返回的是登记的患者的个数,当作下标时应用n-1
break;
case 2:
Se_patient(patient,n);
case 3:
Check_patient(patient, n);
break;
case 4:
De_patient(patient, n);
break;
case 5:
Amend_patient(patient,n);
break;
case 0:
break;
default:
printf("重新输入》》》\n");
}
}
return 0;
}