文档介绍:华中科技大学计算机科学与技术学院
《C语言程序设计》课程设计
实验报告
题目: 医院专家门诊挂号系统
专业: 计算机科学与技术
班级: 计算机XXX班
学号: XXXX
姓名: XXX
成绩:
指导教师: XXX
完成日期: 20XX年 10月 10日
系统功能模块图
主菜单
数据管理
保存和读取
统计查询
删除
修改
录入
各项信息统计
科室、专家、挂号信息查询
打印报表
支持多关键字的搜索引擎
退出
添加
数据结构设计及用法说明
主要的三个结构(采用了十字交叉链表):科室信息的结构、专家信息的结构及挂号信息的结构。分别如下:
/*科室信息*/
struct Troom{
char num[11]; /*保存科室号*/
char name[20]; /*保存科室名*/
char man[20]; /*保存负责人*/
char tel[12]; /*保存电话*/
int tot_reg; /*保存科室的总挂号量*/
struct Troom *next; /*保存指向下一个科室信息的指针*/
struct Tpro *sub; /*保存指向专家信息的头指针*/
};
/*挂号信息结构体*/
struct Treg{
char pro_num[11]; /*保存专家编号*/
char case_num[15]; /*保存病历号*/
char patient_name[20]; /*保存患者姓名*/
char date[11]; /*保存挂号日期*/
char assistant[20]; /*保存挂号人员*/
int serial_num; /*保存挂号流水号*/
float fee; /*保存挂号费*/
struct Treg *next; /*保存指向下一个挂号信息的指针*/
};
/*专家信息结构体*/
struct Tpro{
char room_num[11]; /*保存科室号*/
char num[11]; /*保存专家编号*/
char name[20]; /*保存姓名*/
char birth[11]; /*保存出生日期*/
char sex; /*保存性别*/
char tel[12]; /*保存电话*/
char profession[15]; /*保存职称*/
char summary[50]; /*保存简介*/
int tot_reg; /*保存专家的总挂号量*/
struct Tpro *next; /*保存指向下一个专家信息的指针*/
struct Treg *sub; /*保存指向挂号信息的头指针*/
};
用法说明图示如下:
…
head
科室1
科室2
科室n
NULL
…
专家1基本信息
专家2基本信息
专家n基本信息
专家1挂号记录链
专家2挂号记录链
专家n挂号记录链
程序结构流程图
系统总体流程图:
开始
主菜单
录入信息
修改信息
插入信息
删除信息
保存文件
读取文件
查询信息
统计数据
打印报表
退出系统
科室信息
专家信息
挂号信息
读入关键字
多关键字搜索
结束
查询流程图:
查询信息
输入关键字
从信息总体中提取含有关键字的信息
输出信息
各模块功能
数据管理模块中包含录入信息、修改信息、插入信息和删除信息四大功能:
录入信息:录入科室、专家、挂号信息;
修改信息:对科室、专家、挂号信息进行修改;
添加信息:添加科室或专家;
删除信息:取消科室或解雇专家。
统计查询模块中包含查询信息和统计数据
查询信息:可查询所有科室、专家和挂号信息,还可以查询某个特定的信息,使用多关键字匹配和KMP字符串匹配技术;
统计数据:有3种统计的信息可供查看:
各科室的挂号量;
各专家的挂号量;
某天挂号的患者的基本信息。
保存和读取模块:保存文件和读取文件;
退出程序:退出医院专家门诊挂号系统。
各功能函数的相关说明见附录中的源程序清单。
试验结果
整个程序运行起来很正常,没有出现bug,我这就把输出结果的截屏贴在下面:
科室基本信息(部分):
专家基本信息(部分):
挂号基本信息(部分):
统计信息均准确无误:
各科室的挂号量:
各专家的挂号量:
某天挂号的基本信息:
心得体会
第一次写管理系统这样的大型程序,说真的,有点不习惯,以前的一些代码风格成了我这次课设的最大障碍。比如说,以前写小程序因为通常只有一个主函数,所以很多变量都是局部变量,而这次大型作业要求有很多的函数相互