西安邮电大学C语言实习医院管理系统.doc_第1页
西安邮电大学C语言实习医院管理系统.doc_第2页
西安邮电大学C语言实习医院管理系统.doc_第3页
西安邮电大学C语言实习医院管理系统.doc_第4页
西安邮电大学C语言实习医院管理系统.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安郵電大学C语言课程设计报告题 目:医院信息管理系统院系名称: 计算机学院 专业名称: 计算机科学与技术班 级: 学生姓名: 学号(8位): 指导教师: 王春梅设计起止时间:2012年06月06日2012年06月15日一. 设计目的1,通过本课程设计,强化上机动手能力,使自己在理论和实践的基础上进一步巩固C语言程序设计课程学习的内容,掌握软件设计的基本方法。2,学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。3,为后续各门计算机课程的学习打下坚实基础;为毕业设计和以后工作打下必要基础。二. 设计内容建立一个医院信息管理系统,主要应用了数据结构体,数组,指针等。在内容上包括录入信息模块,读取信息模块,保存信息模块,查寻信息模块,插入信息模块,删除信息模块,修改信息模块,显示信息模块及排序信息模块(按姓名进行排序)等,并且还有统计信息和相关信息的排序。三概要设计1功能模块图;医院信息管理系统登陆界面主菜单用户注册用户登陆医院要品相关信息医院病人相关信息录入病人信息添加病人信息病人信息统计按编号排序显示病人信息修改病人信息删除病人信息查找病人信息显示药品信息修改药品信息添加药品信息删除药品信息查找药品信息录入药品信息2各个模块详细的功能描述。(1)登陆界面:主要是用户进行注册和登陆的程序。(2)录入模块:录入需要管理的病人及药品信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。(3)删除模块:可对病人及药品信息做删除处理。(4)添加模块:可添加一个或多个病人及药品信息并将所添加病人和药品信息保存,方便查找。(5)修改模块:可根据需要对病人和药品信息整体进行修改,也可随时对个别项进行修改。(6)按编号排序:方便管理员进行查找信息。(7)显示病人信息:使管理员更直接的了解病人及药品的相关信息。四详细设计1功能函数的调用关系图;printloginUserRegMain()Main()head=creat()Read(head)Save(head)Print(head)find(head)del(head)insert(head)alter(head)paixu(head)Total(head)2各功能函数的数据流程图;(1)链表的创建,尾插法传入病人数n;传入head;head,r,p指向申请结点;给head输入数据;i=1;inext=p;r移到表尾;r=p;i+rnext=NULL;n0开始结束(2)读取读数据结束开始打开“d:/inf.txt”文件打开是否成功?文件是否结束?关闭文件返回读入数据i输出:请先创建并录入(3)查找输入要查找的学号id1p-id1=id1p=p-nextp=NULL未找到查询成功开始结束删除成功开始结束q=p0;未找到p=p0-next;p-id1=id1p=p-next;p0=p;p0-next=p-next; (4)删除(5)添加开始清屏输出:请输入新增病人编号输入新编号输出:请输入要新增病人的姓名?输入新病人名字q=p0是否继续?p-next=p0-next;p0-next=p;flag是否为1?结束flag=0NY(6)修改模块输入要修改的编号id1;p-id=idp=p-nextP=NULL未找到输入要修改的信息开始结束(7)排序删除成功开始结束q=p0;未找到p=p0-next;p-id1=id1p=p-next;p0=p;p0-next=p-next;(8)统计开始h=read1();female+;male=0;female=0;total=0;total+;male+;p=h-nextp-sex1=malep!=NULL输出total,male,female结束3重点设计及编码。(1)密码:while (!feof(fp1)/循环逐行读取data.txt将读取到的信息保存在数组Userdata中直到文件结束fgets(Userdata1,30,fp1);if (strcmp(Linedata1,Userdata1)=0 ) printf(该用户已经注册!n);printf(按任意键重新注册n);getch();UserReg(); fputs(Linedata,fp);/将这一行格式调整好的用户名 密码信息写入data.txt文件fclose(fp);/关闭data.txt文件指针fputs(Linedata1,fp1);/将这一行格式调整好的用户名 密码信息写入data.txt文件fclose(fp1);/关闭文件指针printf(亲,注册成功喽,赶快去登录吧!n);printf(按任意键进入登陆界面n);getch();system(cls); Login(); (2)排序while (first != NULL) /*遍历剩下无序的链表*/*注意:这里for语句就是体现直接插入排序思想的地方*/for (t=first, q=head; (q!=NULL) & (q-id1id1); p=q, q=q-next); /*无序节点在有序链表中找插入的位置*/*退出for循环,就是找到了插入的位置*/*注意:按道理来说,这句话可以放到下面注释了的那个位置也应该对的,但是就是不能。原因:你若理解了上面的第3条,就知道了。*/first = first-next; /*无序链表中的节点离开,以便它插入到有序链表中。*/ if (q = head) /*插在第一个节点之前*/head = t; else /*p是q的前驱*/p-next = t; t-next = q; /*完成插入动作*/*first = first-next;*/return head;(3)修改void Alter1()struct patient *p;p=read1();if(alter1(p)printf(修改成功!);printf(按任意键返回该菜单);getch();Display1();elseprintf(修改失败!);printf(按任意键返回该菜单);getch();Display1();int alter1() struct patient *p,*h; int id1; char choice; h=read1(); p=h-next; printf(请输入要修改的编号); scanf(%d,&id1);while(p!=NULL) if (p-id1=id1)(4)删除while(p!=NULL)if(p-id1=id1)/找到要删除的结点printf(已删除成功n);p0-next=p-next;/后续结点链接到前驱结点之后free(p);save1_bianji(q);return 1;p0=p;/推移指针继续查找p=p-next;(5)添加while(p0-next!=NULL&p0-next-id1id1)p0=p0-next;if(p0-next!=NULL & p0-next-id1=p-id1)free(p);return 0;printf(按任意键返回该菜单);getch();Display1();p-next=p0-next;p0-next=p;save1_bianji(q);return 1;五测试数据及运行结果1 正常测试数据(3组)及运行结果;输入信息:显示信息:删除信息:删除后的显示添加函数添加后:排序:统计:2 非正常测试数据(2组)及运行结果。登陆错误查找错误:删除输入错误:修改错误:六调试情况,设计技巧及体会1对自己的设计进行评价,指出合理和不足之处,提出改进方案;总的来说,这次课程设计算是画上了圆满的句号。但整个程序的设计中,从开始选取实验题材,到后来的查资料,编程以及运行过程中出现了部分的错误。首先是题材的选定,既要符合要求,又要找自己比较了解的方面,开始是打算写图书馆的信息管理,但到最后却改变了主意,决定写有关医院相关信息的系统。在编程的过程中,其实很多代码都是根据书上的内容编写的,这最大的原因就是自己对C语言相关知识的掌握不够熟练。从数据的录入,存储,打印等,再到最后的相关数据的修改,删除以及添加等代码的书写,对于自己来说。仍然有一些困难。但在程序的编写过程中,自己对这些相关知识也在逐渐理解并掌握。在我所编写的程序中,也存在着许多大大小小的问题。在修改函数部分,当修改完之后,总会把原来的数据打印一遍,程序也查看了好多遍,但仍未找到原因。数据的排列是我在这次编程中遇到的最大的困难了,首先是要求用链表进行排序,自的己本身对链表这章的知识掌握的就不是很牢固,二来,链表的排序在课堂上也还未进行讲解,这对于我来说,是一件很困难的事,也想过很多的方法,但到最后总是运行不出来,最后,在同学的帮助下,才完成了链表的排序。有些程序自己写的过于麻烦,在实习结束后我仍会把这些程序再重新的编写一遍,我相信,这对我的语言实践能力会有很大的帮助的。2对设计及调试过程的心得体会。一句话,每次程序运行时,自己的心里都很紧张啊,总希望自己的程序是对的,但却往往都不尽人意,每一个程序的运行,都会出现很多错误,要一点一点的进行修改,有时,一个符号的书写错误都会给程序带来几个甚至几十个的错误信息,真是细节决定成败啊。但同时。我也体会到了修改程序所带来的乐趣。当一个程序出现错误时,通过自己的修改,使其运行成功,当看到零错误时得那种心情,真是无比喜悦。这是编程以外的人所无法体会的乐趣呀。通过这次课程设计,我对语言有了更深的热爱,尽管我现在学的不是很好,但我相信细节决定成败,相信功夫不负有心人,只要自己肯下足够的功夫,我的语言成绩一定会越来越好。并且,在C语言的陪伴下,我会度过一个既愉快又充实的大一的。七参考文献1,C语言程序设计(第二版) 王曙燕/主编2,C语言程序设计(第四版) 谭浩强/主编八附录:源代码(电子版)#include#include#include#include#include#include/日期基本信息结构体typedef structint year;int month;int day;DATE;/病人基本信息结构体struct patientint id1;/编号ichar age13;/年龄char name110;/姓名char sex110;/性别char con130;/病情char tele115;/电话DATE date;struct patient *next;/药品基本信息结构体struct medicinechar id220;/编号char name2100;/药名char treat2500;/用于治疗char price21000;/单价struct medicine *next;/*函数声明*/与登录有关的函数声明void Login();void Login();/与创建有关的函数声明void print_inf();void save_inf();void save1_bianji(struct patient *h);struct patient *creat1();struct patient *read1();struct patient *find11();struct patient *delete1();struct medicine *creat2();struct medicine *read2();struct medicine *find21();struct medicine *delete2();/主函数的声明void main(void);void print1(struct patient *h);void print2(struct medicine *h);/界面显示相关的函数声明void Display();void Display1();void Display2();void Display3();/病人信息相关函数声明void Find1();void patient();/病人信息函数void inp1();/输入病人信息函数void save1();/存储病人信息函数int insert1(struct patient *h);/添加病人信息函数void Insert1();void Del1();int del1();/删除病人信息函数void find1();/查询病人信息函数void Alter1();int alter1();/药品信息相关声明void Find2();/查找药品信息函数void medicine();/药品函数void inp2();/输入药品信息函数void save2();/存储药品信息函数int insert2();/添加药品信息函数void Insert2();void Del2();int del2();/删除药品信息函数void find2();/查询药品信息函数void Alter2();/修改药品信息函数int alter2();/排序信息相关声明struct patient *charu(struct patient *head);void paixu1();/统计函数声明void total();/*函数定义*/界面显示相关的函数的定义void Display()int a;system(cls);printf( *n); printf( * 迎进入医院信息系统 *n);printf( *n);printf( * 请选择您要查询的相关信息 *n);printf( * 1.医院病人相关信息 *n);printf( * 2.医院药品相关信息 *n);printf( * 0.退出该界面 *n);printf( *n);printf(请选择n);scanf(%d,&a);switch(a)case 1:patient();break;case 2:medicine();break;case 0:exit(0);default:printf(输入有误!);void Display1()int b;struct patient *head;system(cls);printf( 医院病人相关信息n);printf( |1.录入病人信息|n);printf( |2.查找病人信息|n);printf( |3.删除病人信息|n);printf( |4.添加病人信息|n);printf( |5.修改病人信息|n);printf( |6.按编号查看排序信息|n);printf( |7.显示病人信息|n);printf( |8.病人相关信息统计|n);printf( |0.退出该页面|n);printf( n);printf(请选择n);scanf(%d,&b);switch(b)case 1:inp1();break;case 2:Find1();break;case 3:Del1();break;case 4:Insert1();break;case 5:Alter1();break; case 6:paixu1();break;case 7:head=read1();print1(head);break;case 8:total();break;case 0:Display(0);default:printf(输入有误!); printf(按任意键返回该菜单);getch();Display1();void Display2()int b;struct medicine *head;system(cls);printf( 医院药品相关信息n);printf( |1.录入药品信息|n);printf( |2.查找药品信息|n);printf( |3.删除药品信息|n);printf( |4.添加药品信息|n);printf( |5.修改药品信息|n);printf( |6.显示药品信息|n);printf( |0.退出该页面|n);printf( n);printf(请选择n);scanf(%d,&b);switch(b)case 1:inp2();break;case 2:Find2();break;case 3:Del2();break;case 4:Insert2();break;case 5:Alter2();break; case 6:head=read2();print2(head);break;case 0:Display(0);default:printf(输入有误!);printf(按任意键返回该菜单);getch();Display2();/病人信息相关函数的定义void patient()system(cls);Display1();void inp1()struct patient *p,*q;p=creat1();save1(p);q=read1();print1(q);void Insert1()struct patient *head;head=read1();if(insert1(head)printf(已成功插入!n);/插入else printf(有重号插入失败!n);printf(按任意键返回该菜单);getch();Display1();/*录入数据*/struct patient *creat1()/尾插法建立头结点的单链表struct patient*head,*r,*p;int i=0;char choice;system(cls);head=(struct patient *)malloc(sizeof(struct patient);head-next=NULL;r=head;dop=(struct patient *)malloc(sizeof(struct patient);printf(请输入信息n);printf(nn第%d个人的信息:n,+i);printf(n编号:);flushall();scanf(%d,&p-id1);printf(n姓名:);flushall();scanf(%s,p-name1); printf(n性别(请输入male(男)female(女):);flushall();scanf(%s,p-sex1);printf(n年龄:);flushall();scanf(%s,p-age1);printf(n病况:);flushall();scanf(%s,p-con1);printf(n电话:);flushall();scanf(%s,p-tele1);r-next=p;r=p;printf(nContinue?(Y、N);choice=getche();while(choice=Y|choice=y);r-next=NULL;return(head);/*存储数据*/void save1(struct patient *h)/将单链表中的信息保存到指定的磁盘文件中struct patient *p;FILE *fp;if(fp=fopen(d:/inf.txt,at+)=NULL)printf(写文件出错,按任意键退出!);getch();exit(1);for(p=h-next;p!=NULL;p=p-next)fprintf(fp,%d %s %s %s %s %sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);printf(n文件已成功保存,按任意键继续!);getch();fclose(fp);void save1_bianji(struct patient *h)/将单链表中的信息保存到指定的磁盘文件中struct patient *p;FILE *fp;if(fp=fopen(d:/inf.txt,wt)=NULL)printf(写文件出错,按任意键退出!);getch();exit(1);for(p=h-next;p!=NULL;p=p-next)fprintf(fp,%d %s %s %s %s %sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);printf(n文件已成功保存,按任意键继续!);getch();fclose(fp);/*读取数据*/struct patient *read1()/从指定磁盘中读取信息并存入单链表中struct patient *head,*r,*p;FILE *fp;if(fp=fopen(d:/inf.txt,rt)=NULL)printf(读文件出错,按任意键退出!);getch();exit(1);head=(struct patient *)malloc(sizeof(struct patient);head-next=NULL;r=head;while(!feof(fp)/文件未结束/开辟空间,以存放读取的信息p=(struct patient *)malloc(sizeof(struct patient);/存放读取信息 fscanf(fp,%d %s %s %s %s %sn,&p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1); r-next=p; r=p;r-next=NULL;fclose(fp);printf(n文件中信息已正确读出,按任意键继续!);getch();return(head);/输出数据void print1(struct patient *h)struct patient *p;printf(n该医院病人数据为:n);printf(编号t姓名t性别t年龄t病况t电话tn);for(p=h-next;p!=NULL;p=p-next)printf(%dt%st%st%st%st%stn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);printf(按任意键返回该菜单);getch();Display1();/查找数据void Find1()struct patient *p;p=read1();find1(p);void find1(struct patient *p)int id1;printf(n请输入要查找的编号:);flushall();scanf(%d,&id1);p=p-next;while(p)if(p-id1=id1)printf(找到了哦!n);printf(编号t姓名t性别t年龄t病况t电话n);printf(%dt%st%st%st%st%sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);printf(按任意键返回该菜单);getch();Display1();p=p-next;elseprintf(很遗憾,没找到呀!n);printf(按任意键返回该菜单);getch();Display1();/删除数据void Del1() struct patient *p;p=read1();if(del1(p)printf(删除成功n);printf(按任意键返回该菜单);getch();Display1();elseprintf(删除失败!);printf(按任意键返回该菜单);getch();Display1();int del1(struct patient *p0)int id1;struct patient *p,*q;q=p0;p=p0-next;if(p=NULL) /只有头p结点为空表,不能删除返回0return 0;printf(n请输入要删除的编号:);flushall();scanf(%d,&id1);while(p!=NULL)if(p-id1=id1)/找到要删除的结点printf(已删除成功n);p0-next=p-next;/后续结点链接到前驱结点之后free(p);save1_bianji(q);return 1;p0=p;/推移指针继续查找p=p-next;printf(很遗憾没找到哦n);return 0; /未找到删除的结点返回/插入函数int insert1(struct patient *p0) struct patient *p,*q;q=p0;p=(struct patient *)malloc(sizeof(struct patient);printf(n编号:);flushall();scanf(%d,&p-id1);printf(n姓名:);flushall();scanf(%s,p-name1); printf(n性别(请输入male(男)female(女);flushall();scanf(%s,p-sex1); printf(n年龄:);flushall();scanf(%s,p-age1);printf(n病况:);flushall();scanf(%s,p-con1);printf(n电话:);flushall();scanf(%s,p-tele1);while(p0-next!=NULL&p0-next-id1id1)p0=p0-next;if(p0-next!=NULL & p0-next-id1=p-id1)free(p);return 0;printf(按任意键返回该菜单);getch();Display1();p-next=p0-next;p0-next=p;save1_bianji(q);return 1;printf(按任意键返回该菜单);getch();Display1();/修改病人信息void Alter1()struct patient *p;p=read1();if(alter1(p)printf(修改成功!);printf(按任意键返回该菜单);getch();Display1();elseprintf(修改失败!);printf(按任意键返回该菜单);getch();Display1();int alter1() struct patient *p,*h; int id1; char choice; h=read1(); p=h-next; printf(请输入要修改的编号); scanf(%d,&id1);while(p!=NULL) if (p-id1=id1) printf(n编号t姓名t性别t年龄t病情t电话n);printf(%dt%st%st%st%st%sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);printf(n请选择修改:n1.编号 2.姓名 3.性别 4.年龄 5.病情 6.电话n);scanf(n%d,&choice);switch(choice) case 1: printf(n编号:); scanf(%d,&p-id1); printf(%d %s %s %s %s %sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);save1(h);return 1;case 2:printf(n姓名:);scanf(%s,p-name1); printf(%d %s %s %s %s %sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);save1(h);return 1;case 3: printf(n性别(请输入男(male)女(female):); scanf(%s,p-sex1); printf(%d %s %s %s %s %sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);save1(h);return 1;case 4: printf(n年龄:); scanf(%s,p-age1); printf(%d %s %s %s %s %sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);save1(h);return 1;case 5: printf(n病情:); scanf(%s,p-con1);printf(%d %s %s %s %s %sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);save1(h);return 1;case 6: printf(n电话:); scanf(%s,p-tele1); printf(%d %s %s %s %s %sn,p-id1,p-name1,p-sex1,p-age1,p-con1,p-tele1);save1(h);return 1;p=p-next;save1_bianji(h);return 0;/药品信息相关函数的定义void medicine()system(cls);Display2();void inp2()struct medicine *m,*q;m=creat2();save2(m);q=read2();print2(q);void Insert2()struct medicine *head;head=read2();if(insert2(head)printf(已成功插入!n);/插入else printf(有重号插入失败!n);printf(按任意键返回主菜单);getch();Display();/*录入数据*/struct medicine *creat2()/尾插法建立头结点的单链表struct medicine*head,*r,*m;int i=0;char choice;system(cls);head=(struct medicine *)malloc(sizeof(struct medicine);head-next=NULL;r=head;dom=(s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论