欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    [优秀毕业设计精品]C语言课程设计报告 医院专家门诊挂号系统.doc

    • 资源ID:2385033       资源大小:329KB        全文页数:60页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [优秀毕业设计精品]C语言课程设计报告 医院专家门诊挂号系统.doc

    华中科技大学计算机科学与技术学院C语言程序设计课程设计实验报告题目: 医院专家门诊挂号系统 专业: 计算机科学与技术 班级: 计算机XXX班 学号: XXXX 姓名: XXX 成绩: 指导教师: XXX 完成日期: 20XX年 10月 10日一、 系统功能模块图主菜单数据管理保存和读取统计查询删除修改录入各项信息统计科室、专家、挂号信息查询打印报表支持多关键字的搜索引擎退出添加二、 数据结构设计及用法说明主要的三个结构(采用了十字交叉链表):科室信息的结构、专家信息的结构及挂号信息的结构。分别如下:/*科室信息*/struct Troom char num11;/*保存科室号*/ char name20;/*保存科室名*/ char man20;/*保存负责人*/ char tel12;/*保存电话*/int tot_reg;/*保存科室的总挂号量*/ struct Troom *next;/*保存指向下一个科室信息的指针*/ struct Tpro *sub;/*保存指向专家信息的头指针*/;/*挂号信息结构体*/struct Treg char pro_num11;/*保存专家编号*/ char case_num15;/*保存病历号*/ char patient_name20;/*保存患者姓名*/ char date11;/*保存挂号日期*/ char assistant20;/*保存挂号人员*/ intserial_num;/*保存挂号流水号*/ float fee;/*保存挂号费*/ struct Treg *next;/*保存指向下一个挂号信息的指针*/;/*专家信息结构体*/struct Tpro char room_num11;/*保存科室号*/ char num11;/*保存专家编号*/ char name20;/*保存姓名*/ char birth11;/*保存出生日期*/ char sex;/*保存性别*/ char tel12;/*保存电话*/ char profession15;/*保存职称*/ char summary50;/*保存简介*/int tot_reg;/*保存专家的总挂号量*/ struct Tpro *next;/*保存指向下一个专家信息的指针*/ struct Treg *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将近,我全部时间都用在训练上,所以就算了。希望不会对我的课设的评价造成太大的影响。路漫漫其修远兮,吾将上下而求索。程序设计这条路还很长,我会继续走下去,不断自我完善,早日成为一个出色的程序员。七、 参考文献所有资料均从百度而来附录:程序清单/*/* 医院门诊挂号系统V1.01源代码 */* Copyright by XXX */*/#include <stdio.h>#include <string.h>#include <stdlib.h>#define Troom_len sizeof(struct Troom)#define Tpro_len sizeof(struct Tpro)#define Treg_len sizeof(struct Treg)#define TLroom_len sizeof(struct TLroom)#define TLpro_len sizeof(struct TLpro)#define TLreg_len sizeof(struct TLreg)#define Room_in_mes puts("nt科室信息录入中.")#define Spe_in_mes puts("nt专家信息录入中.")#define Reg_in_mes puts("nt挂号信息录入中.")/*挂号信息结构体*/struct Treg char pro_num11;/*保存专家编号*/ char case_num15;/*保存病历号*/ char patient_name20;/*保存患者姓名*/ char date11;/*保存挂号日期*/ char assistant20;/*保存挂号人员*/ intserial_num;/*保存挂号流水号*/ float fee;/*保存挂号费*/ struct Treg *next;/*保存指向第一个专家信息的指针*/;/*专家信息结构体*/struct Tpro char room_num11;/*保存科室号*/ char num11;/*保存专家编号*/ char name20;/*保存姓名*/ char birth11;/*保存出生日期*/ char sex;/*保存性别*/ char tel12;/*保存电话*/ char profession15;/*保存职称*/ char summary50;/*保存简介*/int tot_reg;/*保存专家的总挂号量*/ struct Tpro *next;/*保存指向下一个专家信息的指针*/ struct Treg *sub;/*保存指向第一个挂号信息的指针*/;/*科室信息*/struct Troom char num11;/*保存科室号*/ char name20;/*保存科室名*/ char man20;/*保存负责人*/ char tel12;/*保存电话*/int tot_reg;/*保存科室的总挂号量*/ struct Troom *next;/*保存指向下一个挂号信息的指针*/ struct Tpro *sub;/*保存指向第一个专家信息的指针*/;/*辅助变量*/struct TLroomstruct Troom *st;struct TLroom *next;*storep, *pp;struct TLprostruct Tpro *st;struct TLpro *next;*storeq, *qq;struct TLregstruct Treg *st;struct TLreg *next;*storer, *rr;struct Troom *p, *pl, *tempp, *head=NULL;struct Tpro *q, *ql, *tempq;struct Treg *r, *rl, *tempr;char rest20, ret5;int n;int flag, changed;void Main_menu();void Show_menu();void Write();void Save();void Load();void Modify();void Insert();void Delete();void Search();void Statistics();void Print();void Exit();void Search_room();void Search_room_with_num(char *);void Search_room_with_name(char *);void Search_room_with_man(char *);void Search_room_with_tel(char *);void Search_pro();void Search_pro_with_num(char *);void Search_pro_with_name(char *);void Search_pro_with_tel(char *);void Search_reg();void Search_reg_with_serial_num(int);void Search_reg_with_case_num(char *);void Sort_room();void Sort_pro();void Show_room();void Show_room_with_reg();void Show_pro();void Show_pro_with_reg();void Show_reg();void Print_room();void Print_pro();void Print_reg();char *Tostring(int);void PrnN();void PrnB();void PrnM();void ClearAll();void Clearp();void Clearq();void Clearr();void cls();/*/* 主菜单 */*/void Main_menu() char command; do do Show_menu();command=getchar(); gets(rest);cls(); if (command<'0' | command>'9') puts("n无此选项!请重新选择");printf("按ENTER以继续.");gets(rest);cls(); while (command<'0' | command>'9');switch (command) case '1':Write();break;case '2':Save();break; case '3':Load();break; case '4':Modify();break; case '5':Insert();break; case '6':Delete();break; case '7':Search();break; case '8':Statistics();break;case '9':Print();break; case '0':Exit(); while (command!='0');void Show_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");/*/* 录入信息 */*/void Write() char command0, command1, command2;char command;if (changed) puts("n录入将覆盖原有信息,您尚未保存,是否保存?Y/N?");command=getchar();gets(rest);cls();if (command='Y' | command='y') Save();head=NULL; do p=(struct Troom *)malloc(Troom_len);Room_in_mes;puts("n请输入科室号");gets(p->num);cls();Room_in_mes;puts("n请输入科室名");gets(p->name);cls();Room_in_mes;puts("n请输入负责人姓名");gets(p->man);cls();Room_in_mes;puts("n请输入电话");gets(p->tel);cls();p->sub=NULL;p->tot_reg=0;p->next=head;head=p;puts("n是否录入此科室的专家信息?Y/N?");command1=getchar();gets(rest);cls();while (command1='Y' | command1='y') q=(struct Tpro *)malloc(Tpro_len);strcpy(q->room_num, p->num);Spe_in_mes;puts("n请输入专家编号"); gets(q->num);cls();Spe_in_mes; puts("n请输入姓名");gets(q->name);cls();Spe_in_mes;puts("n请输入出生日期,例:XXXX/XX/XX");gets(q->birth);cls();Spe_in_mes;puts("n请输入性别,M for MAN, W for WOMAN");q->sex=getchar();gets(rest);cls();Spe_in_mes;puts("n请输入电话");gets(q->tel);cls();Spe_in_mes;puts("n请输入职称");gets(q->profession);cls();Spe_in_mes;puts("n请输入简介");gets(q->summary);cls();q->sub=NULL;q->tot_reg=0;q->next=p->sub;p->sub=q;puts("n是否录入此专家的挂号信息?Y/N?");command2=getchar();gets(rest);cls();while (command2='Y' | command2='y') q->tot_reg+;r=(struct Treg *)malloc(sizeof(struct Treg);strcpy(r->pro_num, q->num);Reg_in_mes;puts("n请输入挂号流水号");scanf("%d", &r->serial_num);gets(rest);cls();Reg_in_mes;puts("n请输入病历号");gets(r->case_num);cls();Reg_in_mes;puts("n请输入患者姓名");gets(r->patient_name);cls();Reg_in_mes;puts("n请输入挂号费(元)");scanf("%f", &r->fee);gets(rest);cls();Reg_in_mes;puts("n请输入挂号时间,例:XXXX/XX/XX");gets(r->date);cls();Reg_in_mes;puts("n请输入挂号人员");gets(r->assistant);cls();r->next=q->sub;q->sub=r;puts("n是否录入下一个挂号信息?Y/N?");command2=getchar();gets(rest);cls();p->tot_reg+=q->tot_reg;puts("n是否录入下一个专家信息?Y/N?");command1=getchar();gets(rest);cls();puts("n是否录入下一个科室信息?Y/N?");command0=getchar();gets(rest);cls(); while (command0='Y' | command0='y'); puts("n录入成功!"); printf("按ENTER以继续."); gets(rest);cls();changed=1;/*/* 保存文件 */*/void Save() FILE *fp, *fq, *fr; char file120, file220, file320; do puts("nt正在创建科室数据文件.");puts("n请输入文件名:");gets(file1);cls();if (fp=fopen(file1, "wb")=NULL) puts("n文件不能打开!");printf("按ENTER以继续.");gets(rest);cls(); while (fp=NULL); do puts("nt正在创建专家数据文件.");puts("n请输入文件名:");gets(file2);cls();if (fq=fopen(file2, "wb")=NULL) puts("n文件不能打开!");printf("按ENTER以继续.");gets(rest);cls(); while (fq=NULL); do puts("nt正在创建挂号数据文件.");puts("n请输入文件名:");gets(file3);cls();if (fr=fopen(file3, "wb")=NULL) puts("n文件不能打开!");printf("按ENTER以继续.");gets(rest);cls(); while (fr=NULL);for (p=head; p; p=p->next) fwrite(p, Troom_len, 1, fp);for (q=p->sub; q; q=q->next) fwrite(q, Tpro_len, 1, fq);for (r=q->sub; r; r=r->next)fwrite(r, Treg_len, 1, fr); puts("n保存成功!"); printf("按ENTER以继续."); gets(rest);cls();changed=0; fclose(fp); fclose(fq); fclose(fr);/*/* 读取文件 */*/void Load() FILE *fp, *fq, *fr; int t; char file120, file220, file320; if (changed) char command;puts("n您尚未保存,是否保存?Y/N?");command=getchar();gets(rest);cls();if (command='Y' | command='y') Save(); ClearAll(); t=0; do puts("n正在载入科室数据文件.");t+;puts("n请输入文件名:");gets(file1);cls();if (fp=fopen(file1, "rb")=NULL) puts("n文件不能打开!");printf("按ENTER以继续.");gets(rest);cls();if (t>3) puts("n读取失败,返回主菜单");printf("按ENTER以继续.");gets(rest);cls();return; while (fp=NULL); t=0; do puts("n正在载入专家数据文件");puts("n请输入文件名:");gets(file2);cls();if (fq=fopen(file2, "rb")=NULL) puts("n文件不能打开!");printf("按ENTER以继续.");gets(rest);cls();if (t>3) puts("n读取失败,返回主菜单");printf("按ENTER以继续.");gets(rest);cls();return; while (fq=NULL); t=0; do puts("n正在载入挂号数据文件");puts("n请输入文件名:");gets(file3);cls();if (fr=fopen(file3, "rb")=NULL) puts("n文件不能打开!");printf("按ENTER以继续.");gets(rest);cls();if (t>3) puts("n读取失败,返回主菜单");printf("按ENTER以继续.");gets(rest);cls();return; while (fr=NULL); head=NULL; while (!feof(fp) p=(struct Troom *)malloc(Troom_len);fread(p, Troom_len, 1, fp);p->sub=NULL;if (!feof(fp) p->next=head;head=p; while (!feof(fq) q=(struct Tpro *)malloc(Tpro_len);fread(q, Tpro_len, 1, fq);q->sub=NULL;Search_room_with_num(q->room_num);if (!feof(fq) && p) q->next=p->sub;p->sub=q; while (!feof(fr) r=(struct Treg *)malloc(Treg_len);fread(r, Treg_len, 1, fr);for (p=head; p; p=p->next) Search_pro_with_num(r->pro_num);if (q) break;if (!feof(fr) && q) r->next=q->sub;q->sub=r; puts("n载入成功!"); printf("按ENTER以继续."); gets(rest);cls();changed=0; fclose(fp); fclose(fq); fclose(fr);/*/* 修改信息 */*/void Modify()char command1, command2;int flag2;int t;while (1) t=0;do puts("n请选择您想修改的信息:n");puts("t1: 科室信息n");puts("t2: 专家信息n");puts("t3: 挂号信息n");printf("t"); PrnM(); puts("n");command1=getchar();gets(rest);cls();if (command1<'1' | command1>'3') && command1!='M' && command1!='m') puts("n无此选项!请重新选择");printf("按ENTER以继续.");gets(rest);cls(); while (command1<'1' | command1>'3') && command1!='M' && command1!='m'); switch (command1) case '1':printf("n请提供科室的相关信息,");flag=0;Search_room();if (flag) continue;if (p) t=0;flag2=0;while (1) do puts("n请选择您想修改的信息:n");puts("t1: 科室号n");puts("t2: 科室名n");puts("t3: 负责人n");puts("t4: 电话n");printf("t"); PrnB(); puts("n");command2=getchar();gets(rest);

    注意事项

    本文([优秀毕业设计精品]C语言课程设计报告 医院专家门诊挂号系统.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开