当前位置:首页 > C语言程序设计附源代码
struct patient *insert(struct patient *head,struct patient *rea void modify(struct patient *temp) void buy(struct patient *temp,struct storage *s) 加入新节点,参数为指向struct patient类型的指针 修改病人病历,参数为指向struct patient类型的指针 /用于病人的消费处理,参数为指向struct patient类型的指针与指向struct storage的指针 将链表信息保存到文件中,参数为指向struct patient类型的指针 void save(struct patient *head) struct patient patient *head) *load(struct 将文件信息写入到链表中,参数为指向struct patient类型的指针
3、处理过程
(1)检查存储病人信息的文件是否存在,若不存在则创建一个新文件并设置flag值为1,以标记现在可以对链表进行操作。
(2)初始化库存令巴米尔、感冒灵、病毒唑3种药的数量分别为20、20、10,价格分别为5、9、16。 (3)输出提示菜单让用户悬着要操作的项目.
1)写病历前先检查是否有可用的链表(此标记为flag的值,若为1则代表可以修改病历,否则要求用户重新做出选择)。确认有可用链表之后进入modify函数。要求用户输入病人的id号码,然后在链表中寻找该病所对应的节点,若无此病人的id则直接输出提示信息后返回:若找到后,先输出原来的病历内容,然后提示用户输入当前日期和新添加的病历内容,调用strcmp函数将新内容追加到原来的casehist字符串数组中。
printf(\原有病历: %s\\n\ printf(\输入当前日期 年份\ gets(a); printf(\输入当前月份\ gets(b); printf(\输入当前日子\ gets(c); strcat(temp->casehist,a); strcat(temp->casehist,\ strcat(temp->casehist,b); strcat(temp->casehist,\ strcat(temp->casehist,c); strcat(temp->casehist,\ printf(\请输入新病历的内容\\n\ gets(d); strcat(temp->casehist,d); ········
2)载入链表信息是首先定义一个文件指针,然后以只读方式打开文件。若失败则输出提示信息返
回,成功后调用malloc函数来申请一块内存,用read函数将文件内容写入到节点中,随后调用insert函数将节点加入链表,如此循环下去直到fread函数返回0值,即文件已经读到了末尾时,再将链表的头指针返回给主函数即可。Flag值置为1,用来代表已有可用链表。
if((fp=fopen(\
printf(\文件不存在!\ return head; }
while(1){ rear=(struct patient *)malloc(sizeof(struct patient)); if(fread(rear,sizeof(struct patient),1,fp)) head=insert(head,rear); } else{ free(rear); flag=1; break; } }
4、源程序代码 /**/
#ifndef FIRST #include<> #include<> #include<> struct patient{ 册新病人信息\\n\ printf(\查询单个病人信息\\n\ printf(\写病历\\n\ printf(\病人消费\\n\ printf(\列出所有病人的信息\\n\ printf(\载入所有病人信息\\n\ printf(\保存现有信息\\n\ printf(\查询库存\\n\ printf(\退出\\n\ printf(\ }
void test(){
程
序设计(第四版).北京:清华大学出版社,2010
谭浩强.C程序设计(第四版)学习辅导.北京:清华大学出版社,2010 李丹程.C语言程序设计案例实践. 北京:清华大学出版社,2009 …… ……
共分享92篇相关文档