专业设计报告
课程名称: C 语言程序设计
课题名称:医院信息管理系统
专业班别: 12本计算机科学与技术二班
姓名:
学号:
指导教师:
设计日期: 2012-5-25
教师评语:
成绩评定:
指导教师签名:
日期: 2012 年月日
课程设计题目医院信息管理程序
作者姓名:
同组成员:
摘要利用结构体存储每个病人的信息和每种药品的信息,并使用链表存储全部病人的信息;能完成对医院内所有病人信息的注册、查询、删除和修改等操作,同时又能对药房内库存的药品进行查询;可以将链表中的病人信息保存在文件中,并且可以对文件中的病人信息进行读取与显示
1.专业设计目的
1、掌握链表的操作,包括链表节点的创建、释放还有链表的遍历
2、掌握对二进制文件的创建、增添等基本操作。
3、熟悉C语言函数的使用方法,学会模块化处理问题以及多个源文件的处理方式
2.设计基本要求(
1、使用结构体来存储病人的信息,结构体中包括病的id号码、姓名、病历以及消费信息,并用链表将所有病人信息整合。
2、用文件来存储链表的信息以便下次再使用该程序时载入病人信息
3、能够实现病人信息的注册、病人信息的查询、病人消费统计、保存链表信息、载入链表信息、查询库存等几项功能。
4、要求用四个源文件、、、
5、系统完成后应实现类似下面所示界面
3、算法分析
1、数据结构
设计链表中的一个节点存储一个病人的信息,使用下面的结构体类型定义:struct patient{
char id[10];
char name[10];
char casehist[200];
int cost[3];
int transfusion;
int surgery;
struct patient *next;
};
其中cost数组用来存储病人卖药的的个数(总共三种药),casehist存储病历内容,transfusion用来存储病人输液的花费,surgery存储手术的花费。
Struct patient *next用来指向下一个病人结构体的起始地址从而形成一个链表。
此外还要用到一个结构体来存储库存中当前的药品情况。
struct storage{
int amount[3];
int price[3];
};
2、函数定义
程序代码有、、、四个源文件组成,使用头文件把四个源文件连接起来,四个文件中所包含的函数说明如表所示。
3、处理过程
(1)检查存储病人信息的文件是否存在,若不存在则创建一个新文件并设置flag值为1,以标记现在可以对链表进行操作。
(2)初始化库存令巴米尔、感冒灵、病毒唑3种药的数量分别为20、20、10,价格分别为5、9、16。
(3)输出提示菜单让用户悬着要操作的项目.
1)写病历前先检查是否有可用的链表(此标记为flag的值,若为1则代表可以修改病历,否则要求用户重新做出选择)。
确认有可用链表之后进入modify函数。
要求用户输入病人的id号码,然后在链表中寻找该病所对应的节点,若无此病人的id则直接输出提示信息后返回:若找到后,先输出原来的病历内容,然后提示用户输入当前日期和新添加的病历内容,调用strcmp函数将新内容追加到原来的casehist字符串数组中。
printf("原有病历: %s\n",temp->casehist);
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("data","r"))==0){
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("2.查询单个病人信息\n");
printf("3.写病历\n");
printf("4.病人消费\n");
printf("5.列出所有病人的信息\n");
printf("6.载入所有病人信息\n");
printf("7.保存现有信息\n");
printf("8.查询库存\n");
printf("9.退出\n");
printf("******************************\n");
}
void test(){
程序设计(第四版).北京:清华大学出版社,2010
谭浩强.C程序设计(第四版)学习辅导.北京:清华大学出版社,2010
李丹程.C语言程序设计案例实践. 北京:清华大学出版社,2009
……
……。