C语言课程设计报告医院管理系统修Word格式.docx
- 文档编号:20064385
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:79
- 大小:266.49KB
C语言课程设计报告医院管理系统修Word格式.docx
《C语言课程设计报告医院管理系统修Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告医院管理系统修Word格式.docx(79页珍藏版)》请在冰豆网上搜索。
charpro_num[11];
/*保存专家编号*/
charcase_num[15];
/*保存病历号*/
charpatient_name[20];
/*保存患者姓名*/
chardate[11];
/*保存挂号日期*/
charassistant[20];
/*保存挂号人员*/
intserial_num;
/*保存挂号流水号*/
floatfee;
/*保存挂号费*/
structTreg*next;
/*保存指向下一个挂号信息的指针*/
/*专家信息结构体*/
structTpro{
charroom_num[11];
/*保存科室号*/
/*保存专家编号*/
/*保存姓名*/
charbirth[11];
/*保存出生日期*/
charsex;
/*保存性别*/
charprofession[15];
/*保存职称*/
charsummary[50];
/*保存简介*/
/*保存专家的总挂号量*/
structTpro*next;
/*保存指向下一个专家信息的指针*/
structTreg*sub;
/*保存指向挂号信息的头指针*/
用法说明图示如下:
三、程序结构流程图
系统总体流程图:
查询流程图:
四、各模块功能
数据管理模块中包含录入信息、修改信息、插入信息和删除信息四大功能:
1、录入信息:
录入科室、专家、挂号信息;
2、修改信息:
对科室、专家、挂号信息进行修改;
3、添加信息:
添加科室或专家;
4、删除信息:
取消科室或解雇专家。
统计查询模块中包含查询信息和统计数据
1、查询信息:
可查询所有科室、专家和挂号信息,还可以查询某个特定的信息,使用多关键字匹配和KMP字符串匹配技术;
2、统计数据:
有3种统计的信息可供查看:
(1)各科室的挂号量;
(2)各专家的挂号量;
(3)某天挂号的患者的基本信息。
保存和读取模块:
保存文件和读取文件;
退出程序:
退出医院专家门诊挂号系统。
各功能函数的相关说明见附录中的源程序清单。
五、试验结果
整个程序运行起来很正常,没有出现bug,我这就把输出结果的截屏贴在下面:
科室基本信息(部分):
专家基本信息(部分):
挂号基本信息(部分):
统计信息均准确无误:
各科室的挂号量:
各专家的挂号量:
某天挂号的基本信息:
六、心得体会
第一次写管理系统这样的大型程序,说真的,有点不习惯,以前的一些代码风格成了我这次课设的最大障碍。
比如说,以前写小程序因为通常只有一个主函数,所以很多变量都是局部变量,而这次大型作业要求有很多的函数相互交叉,共同完成一些功能,所以必须要用全局变量。
还有我的编程风格——无意义的变量名使我吃了很多苦头,很多时候,我的变量名都混淆了,以至于我最后改的时候很麻烦。
这次课设,让我学了很多东西,除了代码风格和编程习惯的优化之外,我的代码能力也明显提高了。
经过这次课设,我一些以前没有彻底掌握的东西都牢牢掌握了。
比如指针的灵活运用,函数之间的互相调用的代码级优化等等。
尽管我学到了很多东西,但是对于这次大型作业我还是有一点遗憾,那就是代码的重复利用率不高,很多几乎一样的代码在我的程序中出现了多次(毕竟是一个上午写出来的东西,这也不能怪我)。
本来我有心想优化一下,使重复利用率提高,但是由于ACM/ICPC将近,我全部时间都用在训练上,所以就算了。
希望不会对我的课设的评价造成太大的影响。
路漫漫其修远兮,吾将上下而求索。
程序设计这条路还很长,我会继续走下去,不断自我完善,早日成为一个出色的程序员。
七、参考文献
所有资料均从XX而来
附录:
程序清单
/***************************************************************/
/*医院门诊挂号系统V1.01源代码*/
/*CopyrightbyXXX*/
#include<
stdio.h>
string.h>
stdlib.h>
#defineTroom_lensizeof(structTroom)
#defineTpro_lensizeof(structTpro)
#defineTreg_lensizeof(structTreg)
#defineTLroom_lensizeof(structTLroom)
#defineTLpro_lensizeof(structTLpro)
#defineTLreg_lensizeof(structTLreg)
#defineRoom_in_mesputs("
\n\t科室信息录入中..."
)
#defineSpe_in_mesputs("
\n\t专家信息录入中..."
#defineReg_in_mesputs("
\n\t挂号信息录入中..."
/*保存病历号*/
/*保存患者姓名*/
/*保存挂号日期*/
/*保存挂号人员*/
/*保存挂号流水号*/
/*保存挂号费*/
/*保存指向第一个专家信息的指针*/
/*保存科室号*/
/*保存专家编号*/
/*保存姓名*/
/*保存出生日期*/
/*保存性别*/
/*保存电话*/
/*保存职称*/
/*保存简介*/
/*保存专家的总挂号量*/
/*保存指向下一个专家信息的指针*/
/*保存指向第一个挂号信息的指针*/
/*保存科室号*/
/*保存科室名*/
/*保存负责人*/
/*保存科室的总挂号量*/
/*保存指向下一个挂号信息的指针*/
/*保存指向第一个专家信息的指针*/
/*辅助变量*/
structTLroom{
structTroom*st;
structTLroom*next;
}*storep,*pp;
structTLpro{
structTpro*st;
structTLpro*next;
}*storeq,*qq;
structTLreg{
structTreg*st;
structTLreg*next;
}*storer,*rr;
structTroom*p,*pl,*tempp,*head=NULL;
structTpro*q,*ql,*tempq;
structTreg*r,*rl,*tempr;
charrest[20],ret[5];
intn;
intflag,changed;
voidMain_menu();
voidShow_menu();
voidWrite();
voidSave();
voidLoad();
voidModify();
voidInsert();
voidDelete();
voidSearch();
voidStatistics();
voidPrint();
voidExit();
voidSearch_room();
voidSearch_room_with_num(char*);
voidSearch_room_with_name(char*);
voidSearch_room_with_man(char*);
voidSearch_room_with_tel(char*);
voidSearch_pro();
voidSearch_pro_with_num(char*);
voidSearch_pro_with_name(char*);
voidSearch_pro_with_tel(char*);
voidSearch_reg();
voidSearch_reg_with_serial_num(int);
voidSearch_reg_with_case_num(char*);
voidSort_room();
voidSort_pro();
voidShow_room();
voidShow_room_with_reg();
voidShow_pro();
voidShow_pro_with_reg();
voidShow_reg();
voidPrint_room();
voidPrint_pro();
voidPrint_reg();
char*Tostring(int);
voidPrnN();
voidPrnB();
voidPrnM();
voidClearAll();
voidClearp();
voidClearq();
voidClearr();
voidcls();
/**************************主菜单***************************/
voidMain_menu()
{
charcommand;
do{
do{
Show_menu();
command=getchar();
gets(rest);
cls();
if(command<
'
0'
||command>
9'
){
puts("
\n无此选项!
请重新选择"
);
printf("
按ENTER以继续..."
gets(rest);
cls();
}
}while(command<
switch(command){
case'
1'
:
Write();
break;
2'
Save();
case'
3'
Load();
4'
Modify();
5'
Insert();
6'
Delete();
7'
Search();
8'
Statistics();
Print();
Exit();
}
}while(command!
='
}
voidShow_menu()
puts("
欢迎进入医院门诊挂号系统!
"
\n请选择:
\n"
\t1:
录入数据\n"
\t2:
保存文件\n"
\t3:
载入文件\n"
\t4:
修改数据\n"
\t5:
插入数据\n"
\t6:
删除数据\n"
\t7:
查询信息\n"
\t8:
统计数据\n"
\t9:
输出报表\n"
\t0:
退出系统\n"
/*************************录入信息**************************/
voidWrite()
charcommand0,command1,command2;
if(changed){
puts("
\n录入将覆盖原有信息,您尚未保存,是否保存?
Y/N?
command=getchar();
cls();
if(command=='
Y'
||command=='
y'
)Save();
}
head=NULL;
p=(structTroom*)malloc(Troom_len);
Room_in_mes;
\n请输入科室号"
gets(p->
num);
\n请输入科室名"
name);
\n请输入负责人姓名"
man);
\n请输入电话"
tel);
p->
sub=NULL;
tot_reg=0;
next=head;
head=p;
\n是否录入此科室的专家信息?
command1=getchar();
while(command1=='
||command1=='
q=(structTpro*)malloc(Tpro_len);
strcpy(q->
room_num,p->
Spe_in_mes;
puts("
\n请输入专家编号"
gets(q->
\n请输入姓名"
gets(q->
\n请输入出生日期,例:
XXXX/XX/XX"
birth);
\n请输入性别,MforMAN,WforWOMAN"
q->
sex=getchar();
gets(rest);
\n请输入职称"
profession);
\n请输入简介"
summary);
next=p->
sub;
p->
sub=q;
\n是否录入此专家的挂号信息?
command2=getchar();
while(command2=='
||command2=='
q->
tot_reg++;
r=(structTreg*)malloc(sizeof(structTreg));
strcpy(r->
pro_num,q->
Reg_in_mes;
\n请输入挂号流水号"
scanf("
%d"
&
r->
serial_num);
\n请输入病历号"
gets(r->
case_num);
\n请输入患者姓名"
patient_name);
\n请输入挂号费(元)"
%f"
fee);
\n请输入挂号时间,例:
date);
\n请输入挂号人员"
assistant);
r->
next=q->
sub=r;
\n是否录入下一个挂号信息?
command2=getchar();
tot_reg+=q->
tot_reg;
\n是否录入下一个专家信息?
command1=getchar();
\n是否录入下一个科室信息?
command0=getchar();
}while(command0=='
||command0=='
\n录入成功!
printf("
gets(rest);
cls();
changed=1;
/*************************保存文件**************************/
voidSave()
FILE*fp,*fq,*fr;
charfile1[20],file2[20],file3[20];
\n\t正在创建科室数据文件..."
\n请输入文件名:
gets(file1);
if((fp=fopen(file1,"
wb"
))==NULL){
\n文件不能打开!
printf("
}while(fp==NULL);
\n\t正在创建专家数据文件..."
gets(file2);
if((fq=fopen(file2,"
}while(fq==NULL);
\n\t正在创建挂号数据文件..."
\n请输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 医院 管理 系统