C语言小系统:医院住院病人信息管理系统

功能:

功能有三个分区:管理员,医生,病人

管理员权限:

1.病人、医生、药品信息的录入;

2.通过病人身份证号,病床号,科室来查找病人;

3.通过科室,编号来查找医生;

4.可以通过药品名称来查找药品;

5.通过病人入院时间来显示病人信息;

6.修改,删除录入的各种信息;

医生权限:

1.通过科室、身份证号、病床号查找病人;

2.添加医嘱;

3.添加病人所需药品;

4.修改药品及医嘱;

5.查看病人不良反应;

病人权限:

1.查看个人信息;

2.查看医生信息;

5.查看药品

6.进行不良反应的反馈;

不足:

1.没有用户注册(利用文件保存实现);

2.没有密码修改;

3.信息录入时跳回输入账号的界面很不人性;

4.病人可以查看所有人的医嘱,没有做好权限管理;

5.即使部分病人没有输入不良反应医生查看不良反应时仍显示那些病人的信息;

6.删除数据时没有及时清理内存;

7.由于一些原因写了文件的保存与输出并没有在程序中使用;

8.main函数很不规范;

9.密码修改子函数写了但是由于没有用文件所以无法使用;

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#define LEN1 sizeof(struct patient)
#define LEN2 sizeof(struct pharmaceuticals)
#define LEN3 sizeof(struct doctor)typedef struct patient { //定义病人结构体char name[20];          //姓名char sex[15];           //性别char year[10];          //年龄char ID [1000];         //身份证号char time [100];        //入院时间char disease [1000];    //病症char pay [100];         //付费方式char department [20];    //科室char doctor [100];       //主治医生char phone [15];         //手机号char number [15];        //床号char orders [1000];     //医嘱char dependents [100];    //家属char depend_phone [1000];//家属联系方式char pharmaceuticals [1000];//药品char adverse_reactions[1000];//不良反应struct patient* next;    //病人结构体指针
} pat;
pat* head1;
struct patient *p1;//改typedef struct pharmaceuticals { //定义药品结构体char name [1000];               //药品名称char price;                     //药品价格char origin [1000];             //药品产地char money [1000];               //药品总价struct pharmaceuticals* next;           //药品结构体指针
} pha;
pha* head2;
struct pharmaceuticals *p2;//改typedef struct doctor { //定义医生结构体char number [1000];       //医生编号char name [100];          //医生姓名char department [20];     //科室char excle [1000];        //医生擅长病症struct doctor* next;      //医生结构体指针
} doc;
doc* head3;
struct doctor *p3;//改int inter ();                        //密码进入界面
void interface_admin();              //管理员界面
int interface_begin();               //起始界面
void interface_user();               //用户界面
int interface_doctor ();             //医生界面
void revise ();                      //修改界面
void input ();                       //输入界面
void look ();                        //显示界面
void insert ();                      //插入界面
void interface_delete ();            //删除界面
void interface_look ();              //查看界面
void interface_save ();              //保存界面
void revise_passward ();             //密码修改界面
doc * inputdata_doc();                   //输入医生
pat* input_patient(pat* head1) ;       //p1 输入病人数据
pha * input_pharmaceuticals (pha*head2); //输入药品 p2
pat *adverse_reactions(pat* head1);      //输入不良反应
pat *orders(pat* head1) ;                //输入医嘱
pat *pha_pat_doc(pat* head1);            //医生输入药品
pat* lookdate_orders (pat * p1);         //查看医嘱
pat* lookdate_reactions (pat* p1);       //查看不良反应
pat* lookdata_pat(pat* p1);        //查看病人数据的函数
pha* lookdate_pha(pha* p2);        //查看药品数据的函数
doc* lookdate_doc(doc* p3);        //查看医生数据的函数
pat *look_pat_pha (pat* p1);       //查看病人药品
void update_pha_pat(pat* p1);      //查找病人修改药品数据
void find_ID_doc(doc * p3);        //按编号查找医生
void find_dep_doc(doc * p3);       //按科室查找医生
void revise_admin();               //管理员密码,账号修改
void revise_doctor();              //医生初始密码,账号修改
void revise_user ();               //病人密码,账号修改
void insert();                     //插入数据
void find(pat* p1);                //通过姓名查找查看数据的函数
void find_ID(pat* p1);             //身份证
void find_depart (pat* p1);        //科室
void find_bed  (pat* p1);          //病床
void add_pat(struct patient *head1);         //插入病人数据
void add_pha(struct pharmaceuticals *head2); //插入药品数据
void insert_doctor(struct doctor *head3);    //插入医生数据
void update_patient(pat* p2);                //查找病人修改数据
void update_doctor(doc* p3);                 //查找医生修改数据
void update_pharmaceuticals(pha* p2);        //查找药品修改数据
int screen();                    //主界面
void deleted_patient();          //删除病人数据
void deleted_doctor();           //删除医生数据
void deleted_pharmaceuticals();  //删除药品数据
void save_patient(pat *head1);         //保存病人信息
void save_pharmaceuticals(pha *head2); //保存药品信息
void save_doctor(doc *head3);          //保存医生信息
struct patient *readpat(struct patient *head1);//病人读出
struct doctor *readdoc(struct doctor *head3);  //医生读出
struct pharmaceuticals *readpha(struct pharmaceuticals *head2);//药品读出
void *Sort(struct patient *head1) ;    //排序int main() {screen();Sleep(3000);if (inter() == -1) {//   if  (i==-1) {printf("输入次数已经用尽,系统将自动退出!\n");exit (1);}return 0;
}int screen () {int i;char s[251] = { "欢迎使用医院病人管理系统,\n\n\t\t\t祝您早日康复\n\n\n\t\t" };printf("\n================================================================================\n");printf("\n\n\n\t\t\t");for (i = 0; s[i] != NULL; i++) {Sleep(30);printf("%c", s[i]);}inter();printf("\n\n\n\n\n\n\n\n\t\t ~ 但愿世间人无病,何妨架上药生尘~ ~\n");printf("================================================================================\n");return 0;
}int inter () { //密码进入system("cls");int i = 10;char account_admin [10] = "admin"; //管理员初始账号char passward_admin [10] = "12345"; //管理员初始密码char account_docter [10] = "doctor"; //医生初始账号char passward_doctor [10] = "12345"; //医生初始密码char account_user [10] = "user";  //用户初始账号char passward_user [10] = "12345"; //用户初始密码char  account[10] = {0};char passward [10] = {0};//passwordprintf ("   ********欢迎使用医院管理系统*********\n");printf ("      志在救人,剂温凉寒暖,而万姓感德\n");printf ("      心欲济世,诊沉浮迟数,乃千古扬庥\n");while (i) {printf ("请输入您的账号:\n");scanf ("%s%*c", account);printf ("请输入您的密码\n");scanf ("%s%*c", passward);if (strcmp(account, account_admin) == 0 && strcmp(passward, passward_admin) == 0) {interface_admin();   //管理员界面break;} else if (strcmp(account, account_docter) == 0 && strcmp(passward, passward_doctor) == 0) {interface_doctor();   //医生界面break;} else if (strcmp(account, account_user) == 0 && strcmp(passward, passward_user) == 0) {interface_user();     //用户界面break;} else {i--;printf ("密码输入错误\n请重新输入(您还剩下%d次机会)", i);}}if (i == 0) {return -1;}return 0;
}void interface_admin() { //管理员界面system("cls");printf("\n\n\n");printf("      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");printf("      ***********************************************************\n");printf("      \t\t\t医院病人管理系统(管理员界面)\n");printf("\n");printf("      \t\t1. 输入数据");printf("\t\t2. 显示数据\n");printf("      \t\t3. 插入数据");printf("\t\t4. 删除数据\n");printf("      \t\t5. 查看数据");printf("\t\t6. 修改数据\n");
//  printf("      \t\t7. 密码修改");printf("                           7. 返回主菜单\n");printf("      ***********************************************************\n");printf("      ~~~~~退~~~~~~~~~~出~~~~~~~~~~请~~~~~~~~~~按~~~~~~~~~~8~~~~~\n");printf("      -----------------------------------------------------------\n\n");int ans;printf("请输入你的选择(1~8):");while (~scanf("%d%*c", &ans))if (ans < 1 || ans > 8)printf("输入有误,请在1~8中进行选择:\n");else break;switch (ans) {case 1:input();break;case 2:look();break;case 3:insert();break;case 4:interface_delete();break;case 5:interface_look();break;case 6:revise();break;
//      case 7:
//          revise_passward ();
//          break;case 7:screen();break;case 8:exit(1);break;}
}void interface_user() { //用户界面system("cls");int ans;printf("\n\n\n");printf("      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");printf("      ***********************************************************\n");printf("      \t\t\t医院病人管理系统(用户界面)\n");printf("\n");printf ("              1.查看个人信息\n");//okprintf ("              2.查看医生情况\n");printf ("              3.查看药品情况\n");//ok直接退出程序printf ("              4.不良反应反馈\n");//okprintf ("              5.查看医嘱\n");//okprintf("               0.返回主菜单\n");
//  scanf ("%d%*c", &ans);
//  fflush (stdin);
//  while (scanf("%d", &ans));
//      if (ans < 0 || ans > 5)
//          printf("输入有误,请在0~4中进行选择:\n");
//      else break;fflush (stdin);while (scanf("%d", &ans))if (ans < 0 || ans > 5)printf("输入有误,请在0~4中进行选择:\n");else break;switch (ans) {case 1:system("cls");printf ("输入0返回界面\n");printf("\n\t\t\t☆☆☆查看数据☆☆☆\n");find_bed  (head1);  //查看病人信息break;case 2:system("cls");printf("\n\t\t\t☆☆☆查看数据(输入1返回界面)☆☆☆\n");find_ID_doc(head3);  //按编号查看医生break;case 3:look_pat_pha (head1);//查看病人药品break;case 4:adverse_reactions(head1);//输入不良反应break;case 5:lookdate_orders (head1);break;case 0:screen ();break;}
}int interface_doctor () { //医生界面system ("cls");int ans;printf ("      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");printf ("      ***********************************************************\n");printf ("   我决心竭尽全力除人类之病痛,助健康之完美,维护医术的圣洁和荣誉,\n\t救死扶伤,不辞艰辛,执着追求,为祖国医药卫生事业的发展和人类身心健康奋斗终生\n");printf ("                         1.查看所有病人\n");        //okprintf ("                         2.按照身份证号查找病人\n");//okprintf ("                         3.按照病床号查看病人\n");  //okprintf ("                         4.查看科室中病人信息\n");  //okprintf ("                         5.输入药品信息\n");        //okprintf ("                         6.修改药品信息\n");        //okprintf ("                         7.添加医嘱\n");            //okprintf ("                         8.修改医嘱\n");            //okprintf ("                         9.查看科室中病人不良反应记录\n");//okprintf ("                         0.返回主界面\n");printf ("\tI will prescribe regimen for the good of my patients according to my ability  \n\tand my judgement and never do harm to anyone. To please no one will I prescribe a deadly drug,   \n\tnor give advice which may cause his death\n");while (~scanf("%d%*c", &ans))if (ans < 0 || ans > 9)printf("输入有误,请在0~7中进行选择:\n");else break;switch (ans) {case 1:system("cls");printf("\n\t\t\t☆☆☆显示病人数据☆☆☆\n");printf ("输入0返回界面");head1 = lookdata_pat(head1);break;case 2:system ("cls");printf("\n\t\t\t☆☆☆查看数据☆☆☆\n");printf ("返回界面请输0\n");find_ID(head1);                     //按照身份证号找break;case 3:system("cls");printf("\n\t\t\t☆☆☆查看数据(输入1返回界面)☆☆☆\n");find_bed(head1);                    //按照病床号查找break;case 4:find_depart (head1);                //按照科室查找病人p1break;case 6:update_pha_pat(head1);              //查找病人修改药品数据break;case 5:pha_pat_doc(head1);                 //医生输入药品break;case 7:orders(head1) ;                     //输入不良反应break;case 8:update_patient (head1);             //修改医嘱break;case 9:lookdate_reactions (p1);            //查看不良反应break;case 0:screen();break;}return 0;
}void revise () { //修改界面system("cls");int ans;printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("***************欢迎进入修改界面(输入“0”返回)******************\n");printf ("                1.病人信息修改\n");printf ("                2.医生信息修改\n");printf ("                3.药品信息修改\n");printf ("   请输入您所需要的选项:");printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("**************************************************\n");while (~scanf("%d%*c", &ans))if (ans < 0 || ans > 3)printf("输入有误,请在0~3中进行选择:\n");else break;switch (ans) {case 1:update_patient(head1);break;case 2:update_doctor(head3);break;case 3:update_pharmaceuticals(head2);break;case 0:interface_admin();break;}
}void input () { //输入界面system("cls");int ans;printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("***************欢迎进入输入界面(按0返回)******************\n");printf ("                 1.病人信息输入\n");printf ("                 2.医生信息输入\n");printf ("                 3.药品信息输入\n");printf ("   请输入您所需要的选项:");printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("**************************************************\n");while (~scanf("%d%*c", &ans))if (ans < 0 || ans > 3)printf("输入有误,请在1~3中进行选择:\n");else break;switch (ans) {case 1:head1 = input_patient (head1);//病人数据输入 break;case 2:inputdata_doc() ;             //医生数据输入的函数break;case 3:head2 = input_pharmaceuticals(head2);//药品输入 break;case 0:interface_admin();break;}
}void look () { //显示界面system("cls");int ans;printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("***************欢迎进入显示界面(按0返回主界面)******************\n");printf ("                 1.病人信息显示\n");printf ("                 2.医生信息显示\n");printf ("                 3.药品信息显示\n");printf ("   请输入您所需要的选项:");printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("**************************************************\n");while (~scanf("%d%*c", &ans))if (ans < 0 || ans > 3)printf("输入有误,请在0~3中进行选择:\n");else break;switch (ans) {case 1:system("cls");printf("\n\t\t\t☆☆☆显示病人数据(输1返回界面)☆☆☆\n");lookdata_pat(head1);//查看病人数据的函数break;case 2:lookdate_doc(head3);//查看医生数据break;case 3:lookdate_pha(head2);//查看药品数据break;case 0:interface_admin();break;}
}void insert () { //插入界面system("cls");int ans;printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("***************欢迎进入插入界面(按0返回主界面)******************\n");printf ("                 1.病人信息插入\n");printf ("                 2.医生信息插入\n");printf ("                 3.药品信息插入\n");printf ("   请输入您所需要的选项:");printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("**************************************************\n");while (~scanf("%d%*c", &ans))if (ans < 0 || ans > 3)printf("输入有误,请在0~3中进行选择:\n");else break;switch (ans) {case 1:add_pat(head1);          //插入病人数据break;case 2:insert_doctor(head3);    //插入医生数据break;case 3:add_pha(head2);          //插入药品数据break;case 0:interface_admin();break;}
}void interface_delete () { //删除界面system("cls");int ans;printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("***************欢迎进入删除界面(按0返回主界面)******************\n");printf ("                 1.病人信息删除\n");printf ("                 2.医生信息删除\n");printf ("                 3.药品信息删除\n");printf ("   请输入您所需要的选项:");printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("**************************************************\n");while (~scanf("%d%*c", &ans))if (ans < 0 || ans > 3)printf("输入有误,请在0~3中进行选择:\n");else break;switch (ans) {case 1:deleted_patient();        //删除病人数据break;case 2:deleted_doctor();         //删除医生信息break;case 3:deleted_pharmaceuticals();//删除药品信息break;case 0:interface_admin();break;}
}void interface_look() { //查看system("cls");int ans;printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("***************欢迎进入查看界面(按0返回主界面)******************\n");printf ("                 1.病人信息查看\n");printf ("                 2.医生信息查看(按编号)\n");printf ("                 3.医生信息查看(按科室)\n");printf ("                 4.药品信息查看\n");printf ("                 5.按病床查看病人\n");printf ("                 6.按入院时间查看病人\n");printf ("                 7.查看科室病人\n");printf ("   请输入您所需要的选项:");printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("**************************************************\n");while (~scanf("%d%*c", &ans))if (ans < 0 || ans > 7)printf("输入有误,请在0~7中进行选择:\n");else break;switch (ans) {case 1:system("cls");printf("\n\t\t\t☆☆☆显示病人数据(输入1返回界面)☆☆☆\n");lookdata_pat(head1) ;//查看病人数据的函数break;case 2:system("cls");printf("\n\t\t\t☆☆☆查看数据(输入0返回界面)☆☆☆\n");find_ID_doc(head3);//按编号查看医生break;case 3:find_dep_doc(head3);//按科室查看医生break;case 4:lookdate_pha(p2);  //药品信息break;case 5:system("cls");printf("\n\t\t\t☆☆☆查看数据(输入-1返回界面)☆☆☆\n");find_bed  (p1);    //按照床号寻找病人p1break;case 6:Sort(head1);       //排序break;case 7:find_depart (p1);  //按照科室查找病人p1break;case 0:interface_admin();break;}
}void revise_passward () { //密码修改界面system("cls");int ans;printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("***************欢迎进入修改界面(按0返回界面)******************\n");printf ("                 1.管理员密码修改\n");printf ("                 2.医生密码修改\n");printf ("                 3.病人密码修改\n");printf ("   请输入您所需要的选项:\n");printf ("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf ("**************************************************\n");while (~scanf("%d%*c", &ans))if (ans < 0 || ans > 3)printf("输入有误,请在0~3中进行选择:\n");else break;switch (ans) {case 1:revise_admin ();      //管理员账号,密码修改break;case 2:revise_doctor();      //病人账号,密码修改break;case 3:revise_user();        //病人账号,密码修改break;case 0:interface_admin();break;}
}pat * input_patient(pat* head1) { //输入病人相关数据psystem("cls");struct patient *p = NULL; //要插入的新结点struct patient *q = NULL; //printf("如果结束录入工作,请输入0):\n");int a = 1;//判断是否结束 while (a != 0) {scanf("%d%*c", &a);p = (struct patient *)malloc(sizeof(struct patient)); //申请一个节点动态内存空间if (p == NULL) { //如果没有申请成功printf("No enough memory to allocate!\n");exit(0);}if (a == 0)break;printf("姓名:");scanf("%s%*c", p->name);printf("年龄:");scanf("%s%*c", p->year);printf ("身份证号" );scanf ("%s%*c",p->ID ) ;printf("性别:");scanf("%s%*c", p->sex);printf ("入院时间:");scanf ("%s%*c", p->time);printf ("病症");scanf ("%s%*c", p->disease);printf("科室:");scanf("%s%*c", p->department);printf ("主治医生:");scanf ("%s%*c", p->doctor);printf("手机号:");scanf("%s%*c", p->phone);printf("床号:");scanf("%s%*c", p->number);printf ("家属手机号:");scanf ("%s%*c", p->depend_phone);
//      printf("药品:");
//      scanf("%s%*c", p->pharmaceuticals);if (head1 == NULL) {//head1 = p;//head1指向p p值给head1 p->next = NULL;//链表尾 ? } else { //针对已有数据的链表需要检查是不是有该病人q = head1;while (strcmp(q->ID, p->ID) != 0 && q->next != NULL)//遍历 q = q->next ;if (strcmp(q->ID, p->ID) == 0 ) {printf("\n\n\n\t很遗憾,你要录入的病人的姓名%s已经存在,无法录入!请重新输入\n\n\n", p->name );} else {p->next = head1;//head1值给p->next head1 = p;      //head1空后 }}}return (head1);
}pha *input_pharmaceuticals (pha* head2) { //输入药品system("cls");struct pharmaceuticals *p = NULL; //要插入的新结点struct pharmaceuticals *q = NULL; //printf("\n\n\t请输入药品(如果结束录入工作,请输入0):\n");int a;while (a != 0) {scanf("%d", &a);p = (struct pharmaceuticals *)malloc(sizeof(struct pharmaceuticals)); //申请一个节点动态内存空间if (p == NULL) { //如果没有申请成功printf("No enough memory to allocate!\n");exit(0);}if (a == 0)break;printf ("药品名称:\n");scanf ("%s%*c", p->name);printf ("药品价格:\n");scanf ("%s%*c", p->price);printf ("药品生产公司:\n");scanf ("%s%*c", p->origin);if (head2 == NULL) {head2 = p;p->next = NULL;} else { //针对已有数据的链表需要检查是不是有该病人q = head2;while (strcmp(q->name, p->name) != 0 && q->next != NULL)q = q->next ;if (strcmp(q->name, p->name) == 0 ) {printf("\n\n\n\t很遗憾,你要录入的病人的姓名%s已经存在,无法录入!请重新输入\n\n\n", p->name );} else {p->next = head2;head2 = p;}}}return (head2);
}
//ok
doc * inputdata_doc() {   //医生数据输入的函数system("cls");struct doctor *p = NULL; //要插入的新结点struct doctor *q = NULL; //printf("\n\n\t请输入医生(数据之间用空格分隔,输入完成按回车键确认。\n\n\t如果结束录入工作,请输入0):\n");int a;while (a != 0) {scanf("%d", &a);p = (struct doctor *)malloc(sizeof(struct doctor)); //申请一个节点动态内存空间if (p == NULL) //如果没有申请成功{ printf("No enough memory to allocate!\n");exit(0);}if (a == 0)//          break;interface_admin();printf ("医生编号:\n");scanf ("%s%*c", p->number);printf ("医生姓名:\n");scanf ("%s%*c", p->name);printf ("所属科室:\n");scanf ("%s%*c", p->department);printf ("擅长病症:\n");scanf ("%s%*c", p->excle);if (head3 == NULL) {head3 = p;p->next = NULL;} else //针对已有数据的链表需要检查是不是有该病人{ q = head3;while (strcmp(q->number, p->number ) != 0 && q->next != NULL)q = q->next ;if (strcmp(q->number, p->number) == 0 ) {printf("\n\n\n\t很遗憾,你要录入的病人的姓名%s已经存在,无法录入!请重新输入\n\n\n", p->name );} else {p->next = head3;head3 = p;}}}return (head3);
}//ok
pat *adverse_reactions(pat* head1) { //输入不良反应system("cls");struct patient *p1 = head1;printf("\n\n\t请输入现象(如果结束录入工作,请输入0):\n");int n = 1;char ID[20];printf ("请输入身份证号:") ;scanf("%s",ID);while(strcmp(p1->ID,ID)!=0){p1=p1->next;}if(p1!=NULL){printf ("输入现象:\n");scanf("%s",p1->adverse_reactions);}scanf ("%d%*c",&n);if (n==0)interface_user();
}pat *pha_pat_doc(pat* head1) { //医生输入药品system("cls");struct patient *p1 = head1;printf("\n\n\t请输入病人所需药品(\n\n\t如果结束录入工作,请输入0):\n");char ID[20];int i = 1;printf ("请输入病人姓名:\n");scanf("%s", ID);while (strcmp(p1->ID, ID) != 0) {p1 = p1->next;}if (p1 != NULL) {scanf("%s", p1->pharmaceuticals);}scanf ("%d%*c", &i);if (i == 0)interface_doctor();return (head1);
}pat *orders(pat* head1) { //输入医嘱system("cls");struct patient *p1 = head1;printf("\n\n\t请输入病人医嘱(如果结束录入工作,请输入0):\n");int n = 1;char ID[20];printf ("请输入身份证号:\n");scanf("%s", ID);while (strcmp(p1->ID, ID) != 0) {p1 = p1->next;}if (p1 != NULL) {printf ("输入医嘱:\n");scanf("%s", p1->orders);}scanf ("%d%*c", &n);if (n == 0)interface_doctor();return 0;
}//ok
void revise_admin () { //管理员账号,密码修改system("cls");int a = 3, b = 3;char account_admin [10] = "admin"; //管理员初始账号char passward_admin [10] = "12345"; //管理员初始密码char  account[10] = {0};char passward [10] = {0};char passward1 [10] = {0};char passward2 [10] = {0};printf ("\n\t\t\t☆☆☆管理员密码修改☆☆☆\n");while (a) {printf ("  请输入原有账号\n");scanf ("%s%*c", account);printf ("  请输入原有密码\n");scanf ("%s%*c", passward);if (strcmp(account, account_admin) == 0 && strcmp(passward, passward_admin) == 0) {while (b) {printf ("请输入修改密码\n");scanf ("%s%*c", passward1);printf ("请再次输入修改密码\n");scanf ("%s%*c", passward2);if (strcmp(passward1, passward2) == 0) {strcpy(passward_admin, passward1);printf ("恭喜您,密码修改成功,请牢记新密码\n");break;} else {b--;printf ("密码输入错误\n您还有%d次输入机会", b);}}if (b == 0) {printf ("您的输入机会已经用完\n,即将返回主界面");Sleep(3000);revise_passward();}break;//改} else {a--;printf ("密码输入错误\n您还有%d次输入机会", a);}}if (a == 0) {printf ("您的输入机会已经用完\n,即将返回主界面");Sleep(3000);revise_passward();}screen();
}
//ok
void revise_doctor() { //医生账号,密码修改system("cls");int a = 3, b = 3;char account_doctor [10] = "doctor";        //医生初始账号char passward_doctor [10] = "12345"; //医生初始密码char  account[10] = {0};char passward [10] = {0};char passward1 [10] = {0};char passward2 [10] = {0};printf ("\n\t\t\t☆☆☆医生密码修改☆☆☆\n");while (a) {printf ("  请输入原有账号");scanf ("%s%*c", account);printf ("  请输入原有密码");scanf ("%s%*c", passward);if (strcmp(account, account_doctor) == 0 && strcmp(passward, passward_doctor) == 0) {while (b) {printf ("请输入修改密码");scanf ("%s%*c", passward1);printf ("请再次输入修改密码");scanf ("%s%*c", passward2);if (strcmp(passward1, passward2) == 0) {strcpy(passward_doctor, passward1);printf ("恭喜您,密码修改成功,请牢记新密码\n");break;} else {b--;printf ("密码输入错误\n您还有%d次输入机会", b);}}if (b == 0) {printf ("您的输入机会已经用完\n,即将返回主界面");Sleep(3000);revise_passward();}break;//改} else {a--;printf ("密码输入错误\n您还有%d次输入机会", a);}}if (a == 0) {printf ("您的输入机会已经用完\n,即将返回主界面");Sleep(3000);revise_passward();}
}
//ok
void revise_user() { //病人账号,密码修改system("cls");int a = 3, b = 3;char account_user [10] = {"user"};  //用户初始账号char passward_user [10] = {"12345"}; //用户初始密码char  account[10] = {0};char passward [10] = {0};char passward1 [10] = {0};char passward2 [10] = {0};printf ("\n\t\t\t☆☆☆病人密码修改☆☆☆\n");while (a) {printf ("  请输入原有账号");scanf ("%s%*c", account);printf ("  请输入原有密码");scanf ("%s%*c", passward);if (strcmp(account, account_user) == 0 && strcmp(passward, passward_user) == 0) {while (b) {printf ("请输入修改密码:");scanf ("%s%*c", passward1);printf ("请再次输入修改密码:");scanf ("%s%*c", passward2);if (strcmp(passward1, passward2) == 0) {strcpy(passward_user, passward1);printf ("恭喜您,密码修改成功,请牢记新密码\n");break;} else {b--;printf ("密码输入错误\n您还有%d次输入机会", b);}}if (b == 0) {printf ("您的输入机会已经用完\n,即将返回主界面");Sleep(3000);revise_passward();}break;//改} else {a--;printf ("密码输入错误\n您还有%d次输入机会", a);}}if (a == 0) {printf ("您的输入机会已经用完\n,即将返回主界面");Sleep(3000);revise_passward();}
}
//ok
void add_pha(struct pharmaceuticals * head2) { //插入药品数据system("cls");struct pharmaceuticals*p = NULL, *p0 = NULL;  //定义p0为需增加的新节点char Name[20];int i = 1;p = head2;printf("请输入增加在哪个药品的后面(输入0返回界面)\n");scanf("%s%*c", Name);if (p != NULL) {p0 = (struct pharmaceuticals *)malloc(sizeof(struct pharmaceuticals));printf ("药品名称:\n");scanf ("%s%*c", p0->name);printf ("药品价格:\n");scanf ("%d%*c", p0->price);printf ("药品生产公司:\n");scanf ("%s%*c", p0->origin);p0->next = p->next;p->next = p0;puts("插入成功!");} elseprintf("未找到该药品\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)insert();
}
//ok
void insert_doctor(struct doctor * head3) {//插入医生数据system("cls");struct doctor *p = NULL, *p0 = NULL;char number[20];   //定义p0为需增加的新节点int i = 1;p = head3;printf("请输入增加在哪个医生的后面(输入0返回界面)\n");scanf("%s%*c", number);if (p != NULL) {p0 = (struct doctor *)malloc(sizeof(struct doctor));printf ("医生编号:\n");scanf ("%s%*c", p0->number);printf ("医生姓名:\n");scanf ("%s%*c", p0->name);printf ("所属科室:\n");scanf ("%s%*c", p0->department);;printf ("擅长领域:\n");scanf ("%s%*c", p0->excle);p0->next = p->next;p->next = p0;printf("插入成功!\n");} elseprintf("未找到该医生\n");printf("======================================================================\n");scanf("%d%*c", &i);if (i == 0)insert();
}
//ok
void add_pat(struct patient * head1) { //插入病人数据system("cls");struct patient*p = NULL, *p0 = NULL;char ID[20];   //定义p0为需增加的新节点int i = 1;p = head1;printf("请输入增加在哪个病人的后面(输入0返回界面)\n");scanf("%s%*c", ID);if (p != NULL) {p0 = (struct patient *)malloc(sizeof(struct patient));printf("姓名:");scanf("%s%*c", p0->name);printf("年龄:");scanf("%s%*c", p0->year);printf("性别:");scanf("%s%*c", p0->sex);printf ("入院时间:");scanf ("%s%*c", p0->time);printf ("病症");scanf ("%s%*c", p0->disease);printf("科室:");scanf("%s%*c", p0->department);printf ("主治医生:");scanf ("%s%*c", p0->doctor);printf("手机号:");scanf("%s%*c", p0->phone);printf("床号:");scanf("%s%*c", p0->number);printf ("家属手机号:");scanf ("%s%*c", p0->depend_phone);printf("药品:");scanf("%s%*c", p0->pharmaceuticals);p0->next = p->next;p->next = p0;printf("插入成功!\n");printf("======================================================================\n");} elseprintf("未找到该病人\n");scanf("%d%*c", &i);if (i == 0)insert();
}
//ok
pat* lookdata_pat(pat * p1) { //查看病人数据的函数int i = 2;printf("----------------------------------------------------------------------\n");while (p1 != NULL) {printf("姓名:%s\n", p1->name);printf("性别:%s\n", p1->sex);printf("年龄:%s\n", p1->year);printf("身份证号:%s\n", p1->ID);printf("入院时间:%s\n", p1->time);printf("病症:%s\n", p1->disease);printf("付费方式:%s\n", p1->pay);printf("科室:%s\n", p1->department);printf ("主治医生:%s\n", p1->doctor);printf ("手机号:%s\n", p1->phone);printf ("床号:%s\n", p1->number);printf ("医嘱:%s\n", p1->orders);printf ("家属:%s\n", p1->dependents);printf ("家属联系方式:%s\n", p1->depend_phone);printf ("药品:%s\n", p1->pharmaceuticals);printf ("不良反应:%s\n", p1->adverse_reactions); //printf("======================================================================\n");p1 = p1->next;}scanf ("%d%*c", &i);switch (i) {case 1:interface_look();break;case 0:interface_doctor();//返回医生break;}return p1;
}
//ok
pha* lookdate_pha(pha * p2) { //查看药品数据的函数p2system("cls");int i = 1;printf("\n\t\t\t☆☆☆显示药品数据☆☆☆\n");printf ("输0返回界面\n");printf("----------------------------------------------------------------------\n");while (p2 != NULL) {printf("药品名称:%s\n", p2->name);printf("药品单价:%d\n", p2->price);printf("药品产地:%s\n", p2->origin);printf("======================================================================\n");p2 = p2->next;}scanf ("%d%*c", &i);if (i == 0)look();return p2;
}pat *look_pat_pha (pat* p1) { //查看病人药品system("cls");p1 = head1;int i = 1;printf("\n\t\t\t☆☆☆显示病人药品☆☆☆\n");printf ("输0返回界面\n");printf("----------------------------------------------------------------------\n");if (head1 != NULL) {while (p1 != NULL) {printf ("病人床号:%s\n", p1->number);printf ("病人姓名:%s\n", p1->name);printf ("病人身份证号:%s\n", p1->ID);printf ("药品:%s\n", p1->pharmaceuticals);printf("======================================================================\n");p1 = p1->next;}}scanf ("%d%*c", &i);if (i == 0)interface_user();return p1;
}void update_pha_pat(pat* p1) {              //查找病人修改药品数据char ID[20];int b = 0, i = 1;printf("\n\t\t\t☆☆☆修改数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入将要修改人的身份证号:");scanf("%s%*c", ID);while (p1 != NULL) {if (strcmp(ID, p1->ID) == 0) {printf("该病人药品的基本信息\n");printf ("药品:%s\n", p1->pharmaceuticals);printf ("修改药品:\n");scanf ("%s%*c", p1->pharmaceuticals);printf("\n修改成功!\n");printf("=========================================================================\n");b = 1;}p1 = p1->next;}if (b == 0) {printf("没有找到该人的资料!\n");}scanf ("%d%*c", &i);if (i == 0)interface_doctor();
}//ok
doc* lookdate_doc(doc * p3 ) { //查看医生数据的函数p3system("cls");int i = 1;printf("\n\t\t\t☆☆☆显示医生数据☆☆☆\n");printf ("输0返回界面\n");printf("----------------------------------------------------------------------\n");while (p3 != NULL) {printf ("医生编号:%s\n", p3->number);printf ("医生姓名:%s\n", p3->name);printf ("所属科室:%s\n", p3->department);printf ("医生擅长病症:%s\n", p3->excle);printf("======================================================================\n");p3 = p3->next;}scanf ("%d%*c", &i);if (i == 0)interface_admin();return p3;
}
//ok
pat* lookdate_reactions (pat * p1) { //查看不良反应system("cls");p1 = head1;int i = 1;printf("\n\t\t\t☆☆☆显示病人不良反应☆☆☆\n");printf ("输入0返回界面\n");printf("----------------------------------------------------------------------\n");if (head1 != NULL) {while (p1 != NULL) {printf ("病人床号:%s\n", p1->number);printf ("病人姓名:%s\n", p1->name);printf ("病人身份证号:%s\n", p1->ID);printf ("现象:%s\n", p1->adverse_reactions);printf("======================================================================\n");p1 = p1->next;}}scanf ("%d%*c", &i);if (i == 0)interface_doctor();return p1;
}pat* lookdate_orders (pat * p1) { //查看医嘱system("cls");p1 = head1;int i = 1;printf("\n\t\t\t☆☆☆显示医嘱(输0返回界面)☆☆☆\n");printf("----------------------------------------------------------------------\n");if (head1 != NULL) {while (p1 != NULL) {printf ("病人床号:%s\n", p1->number);printf ("病人姓名:%s\n", p1->name);printf ("病人身份证号:%s\n", p1->ID);printf ("医嘱:%s\n", p1->orders);printf("======================================================================\n");p1 = p1->next;}}scanf ("%d%*c", &i);if (i == 0)interface_user();return p1;
}
//ok
void deleted_patient() { //删除病人数据system("cls");pat *q1=NULL;pat *q2=NULL;char ID[20];int i = 1;printf("\n\t\t\t☆☆☆删除数据(输0返回界面)☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入要删除的病人身份证号:");scanf("%s%*c", ID);q1 = head1;//指向 if (head1 == NULL) {//未录入 printf("查无此人\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}if (strcmp(ID, q1->ID) == 0) {head1 = q1->next;//删q1 printf("删除成功!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}while (q1 != NULL && (strcmp(ID, q1->ID) != 0)) {q2 = q1;//?q1 = q1->next;//遍历q1的ID (改变q1) }if (q1 == NULL) {printf("查无此人!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}if (q1->next != NULL) { //q1 = q1->next;q2->next = q1;printf("删除成功!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;} else { //最后q2->next = NULL;printf("删除成功!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}
}
//ok
void deleted_doctor () { //删除医生数据system("cls");doc *q1, *q2;int i = 1;char number[20];  //想要删除的人的姓名printf("\n\t\t\t☆☆☆删除数据☆☆☆\n");printf ("输0返回界面\n");printf("----------------------------------------------------------------------\n");printf("请输入要删除的编号:");scanf("%s", number);q1 = head3;if (head3 == NULL) {printf("查无此人\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}if (strcmp(number, q1->number) == 0) {head3 = q1->next;printf("删除成功!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}while (q1 != NULL && (strcmp(number, q1->number) != 0)) {q2 = q1;q1 = q1->next;}if (q1 == NULL) {printf("查无此人\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}if (q1->next != NULL) {q1 = q1->next;q2->next = q1;printf("删除成功!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_doctor();return;} else {q2->next = NULL;printf("删除成功!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}save_doctor(head3);
}
//ok
void deleted_pharmaceuticals() { //删除药品数据system("cls");pha *q1, *q2;char Name[20];               //想要删除的人的姓名int i = 1;printf("\n\t\t\t☆☆☆删除数据☆☆☆\n");printf ("返回界面请输0\n");printf("----------------------------------------------------------------------\n");printf("请输入要删除的名称:");scanf("%s", Name);q1 = head2;if (head2 == NULL) {printf("查无此药\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;} else if (strcmp(Name, q1->name) == 0) {head2 = q1->next;printf("删除成功!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}while (q1 != NULL && (strcmp(Name, q1->name) != 0)) {q2 = q1;q1 = q1->next;}if (q1 == NULL) {printf("查无此药\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;} else if (q1->next != NULL) {q1 = q1->next;q2->next = q1;printf("删除成功!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;} else {q2->next = NULL;printf("删除成功!\n");printf("======================================================================\n");scanf ("%d%*c", &i);if (i == 0)interface_delete();return;}
}
//ok
void find_ID(pat * p1) { //p1       //通过身份证号查找查看数据的函数char ID[20];int b = 0;int i = 5;printf("----------------------------------------------------------------------\n");printf("请输入您想查找人的身份证号:");scanf("%s%*c", ID);while (p1 != NULL) {if (strcmp(ID, p1->ID) == 0) {printf("你要找到的数据\n");printf("姓名:%s\n", p1->name);printf("性别:%s\n", p1->sex);printf("年龄:%s\n", p1->year);printf("身份证号:%s\n", p1->ID);printf("入院时间:%s\n", p1->time);printf("病症:%s\n", p1->disease);printf("付费方式:%s\n", p1->pay);printf("科室:%s\n", p1->department);printf ("主治医生:%s\n", p1->doctor);printf ("手机号:%s\n", p1->phone);printf ("床号:%s\n", p1->number);printf ("医嘱:%s\n", p1->orders);printf ("家属:%s\n", p1->dependents);printf ("家属联系方式:%s\n", p1->depend_phone);printf ("药品:%s\n", p1->pharmaceuticals);printf("======================================================================\n");b = 1;}p1 = p1->next;}if (b == 0) {printf("\n您要查找的人不存在!\n");}scanf ("%d%*c", &i);if (i == 0) {interface_doctor();}
}
//ok
void find_ID_doc(doc * p3) { //p1       //通过编号查找医生数据的函数char number[20];int b = 0;int i;printf("----------------------------------------------------------------------\n");printf("请输入您想查找医生的编号:");scanf("%s%*c", number);while (p3 != NULL) {if (strcmp(number, p3->number ) == 0) {printf("你要找到的数据\n");printf("姓名:%s\n", p3->number);printf("性别:%s\n", p3->name);printf("年龄:%s\n", p3->department);printf("身份证号:%s\n", p3->excle);printf("======================================================================\n");b = 1;}p1 = p1->next;}if (b == 0) {printf("\n您要查找的人不存在!\n");}scanf ("%d", i);if (i == 0)interface_look();if (i == 1)interface_user();
}
//ok
void find_dep_doc(doc * p3) { //p1       //通过科室查找医生数据的函数system("cls");char dep[20];int b = 0;int i;printf("\n\t\t\t☆☆☆查看数据☆☆☆\n");printf ("输0返回界面\n");printf("----------------------------------------------------------------------\n");printf("请输入您想查找医生的科室:");scanf("%s%*c", dep);while (p3 != NULL) {if (strcmp(dep, p3->department ) == 0) {printf("你要找到的数据\n");printf("姓名:%s\n", p3->number);printf("性别:%s\n", p3->name);printf("年龄:%s\n", p3->department);printf("身份证号:%s\n", p3->excle);printf("======================================================================\n");b = 1;}p1 = p1->next;}if (b == 0) {printf("\n您要查找的人不存在!\n");}scanf ("%d", i);if (i == 0)interface_look();
}//ok
void find_depart (pat * p1) { //按照科室查找病人p1system("cls");char department[20];int b = 0;int i = 1;printf("\n\t\t\t☆☆☆查看数据☆☆☆\n");printf ("返回界面请输0\n");printf("----------------------------------------------------------------------\n");printf("请输入您想查找的科室:");scanf("%s%*c", department);while (p1 != NULL) {if (strcmp(department, p1->department) == 0) {printf("你要找到的数据\n");printf("姓名:%s\n", p1->name);printf("性别:%s\n", p1->sex);printf("年龄:%s\n", p1->year);printf("身份证号:%s\n", p1->ID);printf("入院时间:%s\n", p1->time);printf("病症:%s\n", p1->disease);printf("付费方式:%s\n", p1->pay);printf("科室:%s\n", p1->department);printf ("主治医生:%s\n", p1->doctor);printf ("手机号:%s\n", p1->phone);printf ("床号:%s\n", p1->number);printf ("医嘱:%s\n", p1->orders);printf ("家属:%s\n", p1->dependents);printf ("家属联系方式:%s\n", p1->depend_phone);printf ("药品:%s\n", p1->pharmaceuticals);printf("======================================================================\n");b = 1;}p1 = p1->next;}if (b == 0) {printf("\n您要查找的人不存在!\n");}scanf ("%d%*c", &i);if (i == 0)interface_doctor();
}
//ok
void find_bed  (pat * p1) { //按照床号寻找病人p1char bed[20];int b = 0;int i = 5;printf("----------------------------------------------------------------------\n");printf("请输入您想查找人的病床号:");scanf("%s", bed);while (p1 != NULL) {if (strcmp(bed, p1->number) == 0) {printf("你要找到的数据\n");printf("姓名:%s\n", p1->name);printf("性别:%s\n", p1->sex);printf("年龄:%s\n", p1->year);printf("身份证号:%s\n", p1->ID);printf("入院时间:%s\n", p1->time);printf("病症:%s\n", p1->disease);printf("付费方式:%s\n", p1->pay);printf("科室:%s\n", p1->department);printf ("主治医生:%s\n", p1->doctor);printf ("手机号:%s\n", p1->phone);printf ("床号:%s\n", p1->number);printf ("医嘱:%s\n", p1->orders);printf ("家属:%s\n", p1->dependents);printf ("家属联系方式:%s\n", p1->depend_phone);printf ("药品:%s\n", p1->pharmaceuticals);printf("======================================================================\n");b = 1;}p1 = p1->next;}if (b == 0) {printf("\n您要查找的人不存在!\n");}scanf ("%d%*c", &i);if (i == 0)interface_user();if (i == 1)interface_doctor();if (i == -1)interface_look();
}//ok
void update_patient (pat * p1 ) { //通过身份证号查找修改数据p1system("cls");char ID[20];int b = 0, i;printf("\n\t\t\t☆☆☆修改数据(输0返回界面)☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入将要修改人的身份证号:");scanf("%s%*c", ID);while (p1 != NULL) {if (strcmp(ID, p1->ID) == 0) {printf("该病人的基本信息\n");printf("姓名:%s\n", p1->name);printf("性别:%s\n", p1->sex);printf("年龄:%s\n", p1->year);printf("身份证号:%s\n", p1->ID);printf("入院时间:%s\n", p1->time);printf("病症:%s\n", p1->disease);printf("付费方式:%s\n", p1->pay);printf("科室:%s\n", p1->department);printf ("主治医生:%s\n", p1->doctor);printf ("手机号:%s\n", p1->phone);printf ("床号:%s\n", p1->number);printf ("医嘱:%s\n", p1->orders);printf ("家属:%s\n", p1->dependents);printf ("家属联系方式:%s\n", p1->depend_phone);printf ("药品:%s\n", p1->pharmaceuticals);printf("\n请选择要修改的信息\n");printf("\t1.姓名\t2.性别\t3.年龄\t4.身份证号\t5.入院时间\n\n\t6.病症\t7.付费方式\t8.科室\t9.主治医生\t10.手机号\n\n\t11.病床号\t12.医嘱\t13.家属\t14.家属联系方式\t15.药品\n");printf("\n您的选择是(1~15):");scanf("%d", &i);printf("请输入修改之后的内容\n");switch (i) {case 1:printf("姓名:\n");scanf("%s%*c", p1->name);break;case 2:printf("性别:\n");scanf("%s%*c", p1->sex);break;case 3:printf("年龄:\n");scanf("%s%*c", p1->year);break;case 4:printf("身份证号:\n");scanf("%s%*c", p1->ID);break;case 5:printf("入院时间:\n");scanf("%s%*c", p1->time);break;case 6:printf("病症:\n");scanf("%s%*c", p1->disease);break;case 7:printf("付费方式:\n");scanf("%s%*c", p1->pay);break;case 8:printf("科室:\n");scanf("%s%*c", p1->department);break;case 9:printf ("主治医生:\n");scanf ("%s%*c", p1->doctor);break;case 10:printf ("手机号:\n");scanf ("%s%*c", p1->phone);break;case 11:printf ("床号:\n");scanf ("%s%*c", p1->number);break;case 12:printf ("医嘱:\n");scanf ("%s%*c", p1->orders);break;case 13:printf ("家属:\n");scanf ("%s%*c", p1->dependents);break;case 14:printf ("家属联系方式:\n");scanf ("%s%*c", p1->depend_phone);break;case 15:printf ("药品:\n");scanf ("%s%*c", p1->pharmaceuticals);break;}printf("\n修改成功!\n");printf("=========================================================================\n");b = 1;}p1 = p1->next;}if (b == 0) {printf("没有找到该人的资料!\n");}scanf ("%d%*c", &i);if (i == 0)interface_admin();
}
//ok
void update_doctor (doc * p3) { //查找医生修改数据p3system("cls");char number[20];int b = 0, i;printf("\n\t\t\t☆☆☆修改数据(输0返回界面)☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入将要修改人的姓名:");scanf("%s", number);while (p3 != NULL) {if (strcmp(number, p3->number) == 0) {printf("该医生的基本信息\n");printf("医生编号:%s\n", p3->number);printf("医生姓名:%s\n", p3->name);printf("医生擅长病症:%s\n", p3->excle);printf ("所属科室:%s\n", p3->department);printf("\n请选择要修改的信息\n");printf("\t1.编号\t2.姓名\t3.擅长病症\n4.所属科室");printf("\n您的选择是(1~4):");scanf("%d", &i);printf("请输入修改之后的内容\n");switch (i) {case 1:printf("编号:");scanf("%s%*c", p3->number);break;case 2:printf("姓名:");scanf("%s%*c", p3->name);break;case 3:printf("擅长病症:");scanf("%s%*c", p3->excle);break;case 4:printf ("所属科室:");scanf ("%s%*c", p3->department);break;}printf("\n修改成功!\n");printf("=========================================================================\n");b = 1;}p3 = p3->next;}if (b == 0) {printf("没有找到该人的资料!\n");}scanf ("%d%*c", &i);if (i == 0)interface_admin();
}
//ok
void update_pharmaceuticals (pha * p2) { //查找药品修改数据p2system("cls");char name[20];int b = 0, i;printf("\n\t\t\t☆☆☆修改数据☆☆☆\n");printf ("输0返回界面\n");printf("----------------------------------------------------------------------\n");printf("请输入将要修改药品名称:");scanf("%s", name);while (p2 != NULL) {if (strcmp(name, p2->name) == 0) {printf("该药品的基本信息\n");printf("药品名称:%s\n", p2->name);printf("药品单价:%d\n", p2->price);printf("药品产地:%s\n", p2->origin);printf("\n请选择要修改的信息\n");printf("\t1.药品名称\t2.药品单价\t3.药品产地\n");printf("\n您的选择是(1~3):");scanf("%d", &i);printf("请输入修改之后的内容\n");switch (i) {case 1:printf("药品名称:");scanf("%s%*c", p2->name);break;case 2:printf("药品单价:");scanf("%s%*c", p2->price);break;case 3:printf("药品产地:");scanf("%s%*c", p2->origin);break;}printf("\n修改成功!\n");printf("=========================================================================\n");b = 1;}p2 = p2->next;}if (b == 0) {printf("没有找到该药品的资料!\n");}scanf ("%d%*c", &i);if (i == 0)interface_admin();
}
//ok
void *Sort(struct patient * head1) { //排序system("cls");int choose;char temp[20];struct patient *p = NULL; //相当于数组排序中的istruct patient *q = NULL; //相当于数组排序中的jstruct patient *k = NULL; //相当于数组排序中的kprintf ("降序请按1,升序请按2");scanf ("%d%*c", &choose);if (head1 != NULL) {for (p = head1; p != NULL; p = p->next) { //相当于数组排序中的for(i=0;i<n-1;i++)k = p; //相当于数组排序中的k=i(给标准)for (q = p->next; q != NULL; q = q->next) {//相当于数组排序中的for(j=i+1;j<n;j++)if (strcmp(q->time, k->time) > 0 && choose == 1) //降序(后面的大则记录下来,即让k指向这个大的节点)k = q;else if (strcmp(q->time, k->time) < 0 && choose == 2) //升序(后面的小则记录下来,即让k指向这个小的节点)k = q;}if (k != p) { //交换数据strcpy(temp, p->name);strcpy(p->name, k->name);strcpy(k->name, temp);strcpy(temp, p->sex);strcpy(p->sex, k->sex);strcpy(k->sex, temp);strcpy(temp, p->year);strcpy(p->year, k->year);strcpy(k->year, temp);strcpy(temp, p->ID);strcpy(p->ID, k->ID);strcpy(k->ID, temp);strcpy(temp, p->time);strcpy(p->time, k->time);strcpy(k->time, temp);strcpy(temp, p->disease);strcpy(p->disease, k->disease);strcpy(k->disease, temp);strcpy(temp, p->pay);strcpy(p->pay, k->pay);strcpy(k->pay, temp);strcpy(temp, p->department);strcpy(p->department, k->department);strcpy(k->department, temp);strcpy(temp, p->doctor);strcpy(p->doctor, k->doctor);strcpy(k->doctor, temp);strcpy(temp, p->phone);strcpy(p->phone, k->phone);strcpy(k->phone, temp);strcpy(temp, p->number);strcpy(p->number, k->number);strcpy(k->number, temp);strcpy(temp, p->orders);strcpy(p->orders, k->orders);strcpy(k->orders, temp);strcpy(temp, p->dependents );strcpy(p->dependents, k->dependents );strcpy(k->dependents, temp);strcpy(temp, p->depend_phone );strcpy(p->depend_phone, k->depend_phone );strcpy(k->depend_phone, temp);strcpy(temp, p->pharmaceuticals );strcpy(p->pharmaceuticals, k->pharmaceuticals );strcpy(k->pharmaceuticals, temp);strcpy(temp, p->adverse_reactions);strcpy(p->adverse_reactions, k->adverse_reactions);strcpy(k->adverse_reactions, temp);}}} elseprintf("\n\n\t抱歉,没有病人数据!\n\n");lookdata_pat(head1);Sleep(3000);interface_admin();return (head1);
}void save_patient(pat * head1) { //病人文件写入FILE *fp;struct patient *p = head1;
//  int count = 0;if (head1 == NULL) {printf("\t暂无病人信息\n");return;}if ((fp = fopen("病人信息.txt", "wb")) == NULL) { //打开文本文件用来写入printf("\t打开文件失败!\n");}while (p != NULL) { //将链表数据写入文件
//      count++;fwrite(p, sizeof(struct patient), 1, fp); //将P所指向的一个节点数据插入文件p = p->next;}fclose(fp);//关闭文件return;
}void save_doctor(doc * head3) { //医生文件写入FILE *fp;struct doctor *p = head3;int count = 0;if (head3 == NULL) {printf("\t暂无病人信息\n");return;}if ((fp = fopen("医生信息.txt", "wb")) == NULL) { //打开文本文件用来写入printf("\t打开文件失败!\n");}while (p != NULL) { //将链表数据写入文件count++;fwrite(p, sizeof(struct doctor), 1, fp); //将P所指向的一个节点数据插入文件p = p->next;}fclose(fp);//关闭文件return;
}void save_pharmaceuticals(pha * head2) { //药品文件写入FILE *fp;struct pharmaceuticals *p = head2;int count = 0;if (head2 == NULL) {printf("\t暂无药品信息\n");return;}if ((fp = fopen("药品信息.txt", "wb")) == NULL) { //打开文本文件用来写入printf("\t打开文件失败!\n");}while (p != NULL) { //将链表数据写入文件count++;fwrite(p, sizeof(struct pharmaceuticals), 1, fp); //将P所指向的一个节点数据插入文件p = p->next;}fclose(fp);//关闭文件return;
}struct patient *readpat(struct patient *head1) { //病人读出FILE *fp;struct patient *p = NULL;if ((fp = fopen("病人信息.txt", "rb")) == NULL) { //打开文件用来读取printf("\t打开文件失败!\n");return head1;//}p = (struct patient*)malloc(LEN1);fread(p, LEN1, 1, fp); //从文件中读取数据p->next = NULL;//赋值p->next ?while (!feof(fp)) { if (head1 == NULL) {//判断头文件内容是否为空 head1 = p;} else {p->next = head1;//逆序 head1 = p;}p = (struct patient*)malloc(LEN1);fread(p, LEN1, 1, fp); //从文件中读取数据记录到p节点中p->next = NULL;}fclose(fp);//关闭文件return head1;
}struct doctor *readdoc(struct doctor *head3) { //医生读出FILE *fp;struct doctor *p = NULL;if ((fp = fopen("医生信息.txt", "rb")) == NULL) { //打开文件用来读取printf("\t打开文件失败!\n");return head3;}p = (struct doctor*)malloc(LEN3);fread(p, LEN3, 1, fp); //从文件中读取数据p->next = NULL;while (!feof(fp)) { //下面将从文件中读取一个反馈建议添加到链表的一个节点中if (head3 == NULL) {head3 = p;} else {p->next = head3;head3 = p;}p = (struct doctor*)malloc(LEN3);fread(p, LEN3, 1, fp); //从文件中读取一个反馈建议记录到p节点中p->next = NULL;}fclose(fp);//关闭文件return head3;
}struct pharmaceuticals *readpha(struct pharmaceuticals *head2) { //药品读出FILE *fp;struct pharmaceuticals *p = NULL;if ((fp = fopen("药品信息.txt", "rb")) == NULL) { //打开文件用来读取printf("\t打开文件失败!\n");return head2;}p = (struct pharmaceuticals *)malloc(LEN2);fread(p, LEN2, 1, fp); //从文件中读取数据p->next = NULL;while (!feof(fp)) { //下面将从文件中读取一个反馈建议添加到链表的一个节点中if (head2 == NULL) {head2 = p;} else {p->next = head2;head2 = p;}p = (struct pharmaceuticals*)malloc(LEN2);fread(p, LEN2, 1, fp); //从文件中读取一个反馈建议记录到p节点中p->next = NULL;}fclose(fp);//关闭文件return head2;
}

【C语言管理系统】 医院住院病人信息管理系统相关推荐

  1. ER图练习(住院病人信息管理系统)

    某医院拟开发一套住院病人信息管理系统,以方便对住院病人.医生.护士和手术等信息进行管理. [需求分析] (1)系统登记每个病人的住院信息,包括:病案号.病人的姓名.性别.地址.身份证号.电话号码.入院 ...

  2. 病人信息管理html,基于JSP住院病人信息管理系统本科.doc

    基于JSP住院病人信息管理系统本科 本科毕业论文(设计) (2014届) 院 系 计算机科学与技术专 业 计算机 姓 名 指导教师 职 称 摘 要发展,医学领域内,,提高整个医院的工作效率和工作质量. ...

  3. python医院住院病房信息管理系统django

    (1)用户注册:用户首次登录该系统时需要提交用户注册.(2)用户登录:用户可以登录该系统并进行其他的操作. (3)医护信息管理:实现医师盗料的新增.修改.查询.护士信息.(4)病人信息管理:病人住院基 ...

  4. 基于JAVA医院住院综合服务管理系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA医院住院综合服务管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA医院住院综合服务管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B ...

  5. c语言成绩管理系统开题报告,学生信息管理系统,开题报告(共篇).doc

    学生信息管理系统,开题报告(共篇).doc 学生信息管理系统,开题报告(共10篇) :开题 信息管理系统 报告 学生 论文开题报告有查重吗 居民信息网络管理系统 学生信息管理系统c语言 篇一:学生信息 ...

  6. 《C语言》课程设计——火车票信息管理系统

    <C语言>课程设计--火车票信息管理系统 一.课题功能描述 二.基本原理 三.程序代码 一.课题功能描述 本课题要求设计一个火车票信息管理系统,主要包括火车时刻信息的录入.火车票查询.统计 ...

  7. 医院就诊预约信息管理系统

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,医院就诊预约信息管理系统. 计算机毕业生设计,课程设计需要帮助的可以找我 代码 https://pan.baidu.com/s/1Cdxrl ...

  8. c语言课程设计报告15页左右,C语言课程设计报告——学生信息管理系统(15页)-原创力文档...

    C语言程序设计 课程设计报告 设计题目:学生信息管理系统 专 业 电子信息工程 班 级 学 生 指导教师 年 学期 设计任务: C语言课程设计任务书及指导书 5 题目:学生信息管理系统 功能:学生信息 ...

  9. c语言课程设计-商场商品信息管理,C语言课程设计商场商品信息管理系统

    C语言课程设计商场商品信息管理系统 1目 录1 系统分析 21.1 课程设计内容 21.2 系统功能需求分析 21.3 数据结构设计 32 系统设计 32.1 总体设计 32.2 详细设计 42.2. ...

最新文章

  1. 演讲实录 | DevOps五大理念及其落地实践
  2. 如何退出终端中的“git status”列表?
  3. 多线程——实现Callable接口
  4. Oracle-分析函数之取上下行数据lag()和lead()
  5. nyoj116士兵杀敌2
  6. java位运算实例详解——(amp;)、(|)、(~)、(^)、(lt;lt;)、(gt;gt;)
  7. MVC路由中routes.IgnoreRoute({resource}.axd/{*pathInfo}) 到底什么意思!
  8. C++学习之路 | PTA乙级—— 1049 数列的片段和 (20 分)(精简)
  9. 前端 验证码隐藏怎么实现_Python爬虫教程:200行代码实现一个滑动验证码
  10. Spring-cloud学习教程amp;视频
  11. TensorFlow2.0(四)--Keras构建深度神经网络(DNN)
  12. mysql 指令没有用_Mysql指令
  13. Qlik发布中国战略,为实现更大成功而不懈努力
  14. Netcore 读取body数据
  15. 内幕:一个由罪犯秘密建立的“加密”手机公司
  16. COMSOL案例学习(2):非定常圆柱绕流三维模型
  17. Detecting Causality in Complex Ecosystems(检测复杂生态系统中的因果关系)
  18. 开源的驰骋工作流程引擎,工作流程管理系统,表结构与运行机制。
  19. 在微信公众号上下载视频音频的办法
  20. 信源编码技术作业(1)绘制、分析清浊音频谱图

热门文章

  1. Win10_此电脑_多余项目设备和驱动器
  2. 每天学一点flash(73) 恋上我的CD
  3. “我不是坚强,我只是走投无路”,从职高到杭电、浙大、麻省计算机博士!...
  4. 一般怎样恢复u盘丢失的文件
  5. U盘保存文件未完成时拔掉U盘导致数据丢失的解决办法
  6. 【Web技术】1374- 纯 JS 实现灵活的前端主题切换功能
  7. corrupted double-linked list: 0x086a6c50(内存问题)
  8. C语言 实现长整数的相加
  9. Rhino是强大的专业3D造型软件
  10. 完全国产的开源Java微服务分布式开发框架 BudWk