C语言课程设计报告医院专家门诊挂号系统docWord格式.docx
《C语言课程设计报告医院专家门诊挂号系统docWord格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告医院专家门诊挂号系统docWord格式.docx(5页珍藏版)》请在冰豆网上搜索。
![C语言课程设计报告医院专家门诊挂号系统docWord格式.docx](https://file1.bdocx.com/fileroot1/2023-1/30/b48cd616-f1e2-4542-90e2-e7514d77d9af/b48cd616-f1e2-4542-90e2-e7514d77d9af1.gif)
/*保存性别*/chartel[12];
/*保存电话*/charprofession[15];
/*保存职称*/charsummary[50];
/*保存简介*/inttot_reg;
/*保存专家的总挂号量*/structTpro*next;
/*保存指向下一个专家信息的指针*/structTreg*sub;
/*保存指向挂号信息的头指针*/};
用法说明图示如下head科室1科室2科室nNULL专家1基本信息专家2基本信息专家n基本信息专家1挂号记录链专家2挂号记录链专家n挂号记录链
三、程序结构流程图系统总体流程图开始主菜单录入信息修改信息插入信息删除信息保存文件读取文件查询信息统计数据打印报表退出系统科室信息专家信息挂号信息读入关键字多关键字搜索结束查询流程图查询信息输入关键字从信息总体中提取含有关键字的信息输出信息
四、各模块功能数据管理模块中包含录入信息、修改信息、插入信息和删除信息四大功能1、录入信息录入科室、专家、挂号信息;
2、修改信息对科室、专家、挂号信息进行修改;
3、添加信息添加科室或专家;
4、删除信息取消科室或解雇专家。
统计查询模块中包含查询信息和统计数据1、查询信息可查询所有科室、专家和挂号信息,还可以查询某个特定的信息,使用多关键字匹配和KMP字符串匹配技术;
2、统计数据有3种统计的信息可供查看
(1)各科室的挂号量;
(2)各专家的挂号量;
(3)某天挂号的患者的基本信息。
保存和读取模块保存文件和读取文件;
退出程序退出医院专家门诊挂号系统。
各功能函数的相关说明见附录中的源程序清单。
五、试验结果整个程序运行起来很正常,没有出现bug,我这就把输出结果的截屏贴在下面科室基本信息(部分)专家基本信息(部分)挂号基本信息(部分)统计信息均准确无误各科室的挂号量各专家的挂号量某天挂号的基本信息
六、心得体会第一次写管理系统这样的大型程序,说真的,有点不习惯,以前的一些代码风格成了我这次课设的最大障碍。
比如说,以前写小程序因为通常只有一个主函数,所以很多变量都是局部变量,而这次大型作业要求有很多的函数相互交叉,共同完成一些功能,所以必须要用全局变量。
还有我的编程风格无意义的变量名使我吃了很多苦头,很多时候,我的变量名都混淆了,以至于我最后改的时候很麻烦。
这次课设,让我学了很多东西,除了代码风格和编程习惯的优化之外,我的代码能力也明显提高了。
经过这次课设,我一些以前没有彻底掌握的东西都牢牢掌握了。
比如指针的灵活运用,函数之间的互相调用的代码级优化等等。
尽管我学到了很多东西,但是对于这次大型作业我还是有一点遗憾,那就是代码的重复利用率不高,很多几乎一样的代码在我的程序中出现了多次(毕竟是一个上午写出来的东西,这也不能怪我)。
本来我有心想优化一下,使重复利用率提高,但是由于ACM/ICPC将近,我全部时间都用在训练上,所以就算了。
希望不会对我的课设的评价造成太大的影响。
路漫漫其修远兮,吾将上下而求索。
程序设计这条路还很长,我会继续走下去,不断自我完善,早日成为一个出色的程序员。
七、参考文献所有资料均从XX而来附录程序清单/***************************************************************//*医院门诊挂号系统V1.01源代码*//*CopyrightbyXXX*//***************************************************************/includeincludeincludedefineTroom_lensizeofstructTroomdefineTpro_lensizeofstructTprodefineTreg_lensizeofstructTregdefineTLroom_lensizeofstructTLroomdefineTLpro_lensizeofstructTLprodefineTLreg_lensizeofstructTLregdefineRoom_in_mesputs“\n\t科室信息录入中...“defineSpe_in_mesputs“\n\t专家信息录入中...“defineReg_in_mesputs“\n\t挂号信息录入中...“/*挂号信息结构体*/structTreg{charpro_num[11];
/*保存指向第一个专家信息的指针*/};
/*保存指向第一个挂号信息的指针*/};
/*科室信息*/structTroom{charnum[11];
/*保存指向下一个挂号信息的指针*/structTpro*sub;
/*辅助变量*/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,*headNULL;
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_numchar*;
voidSearch_room_with_namechar*;
voidSearch_room_with_manchar*;
voidSearch_room_with_telchar*;
voidSearch_pro;
voidSearch_pro_with_numchar*;
voidSearch_pro_with_namechar*;
voidSearch_pro_with_telchar*;
voidSearch_reg;
voidSearch_reg_with_serial_numint;
voidSearch_reg_with_case_numchar*;
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*Tostringint;
voidPrnN;
voidPrnB;
voidPrnM;
voidClearAll;
voidClearp;
voidClearq;
voidClearr;
voidcls;
/***************************************************************//**************************主菜单***************************//***************************************************************/voidMain_menu{charcommand;
do{do{Show_menu;
commandgetchar;
getsrest;
cls;
ifcommand9{puts“\n无此选项请重新选择“;
printf“按ENTER以继续...“;
}}whilecommand9;
switchcommand{case1Write;
break;
case2Save;
case3Load;
case4Modify;
case5Insert;
case6Delete;
case7Search;
case8Statistics;
case9Print;
case0Exit;
}}whilecommand0;
}voidShow_menu{puts“欢迎进入医院门诊挂号系统“;
puts“\n请选择\n“;
puts“\t1录入数据\n“;
puts“\t2保存文件\n“;
puts“\t3载入文件\n”;
puts“\t4修改数据\n“;
puts“\t5插入数据\n“;
puts“\t6删除数据\n“;
puts“\t7查询信息\n“;
puts“\t8统计数据\n“;
puts“\t9输出报表\n“;
puts“\t0退出系统\n“;
}/***************************************************************//*************************录入信息**************************//***************************************************************/voidWrite{charcommand0,command1,command2;
charcommand;
ifchanged{puts“\n录入将覆盖原有信息,您尚未保存,是否保存Y/N“;
ifcommandY||commandySave;
}headNULL;
do{pstructTroom*mallocTroom_len;
Room_in_mes;
puts“\n请输入科室号“;
getsp-num;
puts“\n请输入科室名“;
getsp-name;
puts“\n请输入负责人姓名“;
getsp-man;
puts“\n请输入电话“;
getsp-tel;
p-subNULL;
p-tot_reg0;
p-nexthead;
headp;
puts“\n是否录入此科室的专家信息Y/N“;
command1getchar;
whilecommand1Y||command1y{qstructTpro*mallocTpro_len;
strcpyq-room_num,p-num;
Spe_in_mes;
puts“\n请输入专家编号“;
getsq-num;
puts“\n请输入姓名“;
getsq-name;
puts“\n请输入出生日期,例XXXX/XX/XX“;
getsq-birth;
puts“\n请输入性别,MforMAN,WforWOMAN“;
q-sexgetchar;
getsq-tel;
puts“\n请输入职称“;
getsq-profession;
puts“\n请输入简介“;
getsq-summary;
q-subNULL;
q-tot_reg0;
q-nextp-sub;
p-subq;
puts“\n是否录入此专家的挂号信息Y/N“;
command2getchar;
whilecommand2Y||command2y{q-tot_reg;
rstructTreg*mallocsizeofstructTreg;
strcpyr-pro_num,q-num;
Reg_in_mes;
puts“\n请输入挂号流水号“;
scanf“d“,getsrest;
puts“\n请输入病历号“;
getsr-case_num;
puts“\n请输入患者姓名“;
getsr-patient_name;
puts“\n请输入挂号费(元)“;
scanf“f“,getsrest;
puts“\n请输入挂号时间,例XXXX/XX/XX“;
getsr-date;
puts“\n请输入挂号人员“;
getsr-assistant;
r-nextq-sub;
q-subr;
puts“\n是否录入下一个挂号信息Y/N“;
}p-tot_regq-tot_reg;
puts“\n是否录入下一个专家信息Y/N“;
}puts“\n是否录入下一个科室信息Y/N“;
command0getchar;
}whilecommand0Y||command0y;
puts“\n录入成功“;
changed1;
}/***************************************************************//*************************保存文件**************************//***************************************************************/voidSave{FILE*fp,*fq,*fr;
charfile1[20],file2[20],file3[20];
do{puts“\n\t正在创建科室数据文件...“;
puts“\n请输入文件名“;
getsfile1;
iffpfopenfile1,“wb“NULL{puts“\n文件不能打开“;
}}whilefpNULL;
do{puts“\n\t正在创建专家数据文件...“;
getsfile2;
iffqfopenfile2,“wb“NULL{puts“\n文件不能打开“;
}}whilefqNULL;
do{puts“\n\t正在创建挂号数据文件...“;
getsfile3;
iffrfopenfile3,“wb“NULL{puts“\n文件不能打开“;
}}whilefrNULL;
forphead;
p;
pp-next{fwritep,Troom_len,1,fp;
forqp-sub;
q;
qq-next{fwriteq,Tpro_len,1,fq;
forrq-sub;
r;
rr-nextfwriter,Treg_len,1,fr;
}}puts“\n保存成功“;
changed0;
fclosefp;
fclosefq;
fclosefr;
}/***************************************************************//*************************读取文件**************************//***************************************************************/voidLoad{FILE*fp,*fq,*fr;
intt;
ifchanged{charcommand;
puts“\n您尚未保存,是否保存Y/N“;
}ClearAll;
t0;
do{puts“\n正在载入科室数据文件...“;
t;
iffpfopenfile1,“rb“NULL{puts“\n文件不能打开“;
ift3{puts“\n读取失败,返回主菜单“;
return;
}}}whilefpNULL;
do{puts“\n正在载入专家数据文件“;
iffqfopenfile2,“rb“NULL{puts“\n文件不能打开“;
}}}whilefqNULL;
do{puts“\n正在载入挂号数据文件“;
iffrfopenfile3,“rb“NULL{puts“\n文件不能打开“;
}}}whilefrNULL;
headNULL;
whilefeoffp{pstructTroom*mallocTroom_len;
freadp,Troom_len,1,fp;
iffeoffp{p-nexthead;
}}whilefeoffq{qstructTpro*mallocTpro_len;
freadq,Tpro_len,1,fq;
Search_