《《C语言程序设计》课程设计实验报告-门诊病历信息管理系统》由会员分享,可在线阅读,更多相关《《C语言程序设计》课程设计实验报告-门诊病历信息管理系统(106页珍藏版)》请在金锄头文库上搜索。
1、华中科技大学计算机科学与技术学院华中科技大学计算机科学与技术学院CC 语言程序设计语言程序设计课程设计课程设计实验报告实验报告题目:题目: 门诊病历信息管理系统门诊病历信息管理系统 专业:专业:计算机科学与技术计算机科学与技术 _班级:班级:CS0809CS0809 _学号:学号: _姓名:姓名: _ 成绩:成绩: _指导教师:指导教师: _完成日期:完成日期:2009 年年 1010 月月 8 8 日日一、一、系统功能模系统功能模块块结结构构图图.1二、数据结构设计及用法说明.1三、三、各模块的功能解析、各模块的功能解析、程程序结构、运行结果及部分流程序结构、运行结果及部分流程图图.2文件系
2、统、辅助函数及欢迎界面2录入信息5修改信息6插入信息10删除信息13查询信息14统计信息15四、四、心得体心得体会会.17五、五、源代码及源代码及注注释释18六、六、参考参考文文献献.103C 语言课程设计实验报告 CS0809 陶松桥1一一、系统功能模块结构图、系统功能模块结构图二、数据结构设计及用法说明二、数据结构设计及用法说明 该系统的数据结构是采用十字交叉链表。十字交叉链表的模型如下:单位病历门诊信息十字交叉链表门诊病历信息管理系统门诊病历信息管理系统文件系统文件系统编辑系统编辑系统查询系统查询系统统计系统统计系统信息导入信息显示信息保存录入信息修改信息插入信息 子删除信息查询病历信息
3、查询门诊信息查询单位信息统计各月门诊量统计各单位门诊量统计未门诊员工信息录入单位信息录入门诊信息录入病历信息修改单位信息修改门诊信息修改病历信息插入单位信息插入门诊信息插入病历信息删除单位信息删除门诊信息删除病历信息d_head单位 1单位 2单位 nNULL病历 1病历 2病历 n NULL.门诊 1门诊 2.门诊 2门诊 1门诊 n NULL门诊 n NULL门诊 1门诊 2.门诊 n NULL门诊 1门诊 2.门诊 n NULL.C 语言课程设计实验报告 CS0809 陶松桥2三个结构的声明如下: /*定义存储单位基本信息的结构*/ typedef struct danweichar d
4、d_num10; /*单位编号*/char d_name30; /*单位名称*/char d_person20; /*单位负责人*/char d_tel12; /*联系电话*/struct danwei *next; /*指向下一个单位结点*/struct bingli *b_head; /*指向病历信息链表头指针*/ DANWEI; /*定义存储病历基本信息的结构*/ typedef struct binglichar bb_num10; /*病历编号*/char name10; /*姓名*/char sex; /*性别*/char bd_name30 ; /*所在单位*/char bd_n
5、um10; /*所在单位编号*/char birthday11; /*出生日期*/char* history; /*药物过敏史*/char tel12; /*电话*/char add30; /*住址*/struct bingli *next; /*指向下一个病历结点*/struct menzhen *m_head;/*指向门诊信息链表头指针*/ BINGLI; /*定义存储门诊基本信息的结构*/ typedef struct menzhenchar mb_num10; /*病历编号*/char md_num10; /*所在单位编号*/char kebie10; /*科别*/char time1
6、1; /*门诊时间*/char zs30; /*主诉*/char zd30; /*初步诊断*/char yj30; /*治疗意见*/char doctor10; /*医师姓名*/struct menzhen* next; /*指向下一门诊信息结点*/ MENZHEN; 三、三、各模块的功能解析、程序结构、运行结果及部分流程图各模块的功能解析、程序结构、运行结果及部分流程图 整个系统有七大模块,除了主函数外,另外还有 24 个函数,除了实现上面模块结构 图中的各个功能以外,还有读取键入值的函数 int get_key(); 画边框函数 void box(int startx,int stary,
7、int high,int width);和一个欢迎界面的函数 void welcome(void); 。 各个模块的功能解析和程序的结构说明分别如下:C 语言课程设计实验报告 CS0809 陶松桥3 文件系统、辅助函数及欢迎界面文件系统、辅助函数及欢迎界面 1欢迎界面欢迎界面 void welcome(void);本程序是由 wintc 编译。该界面调用了 dos 库里的 getdate 和 gettime 函数, date 和 time 结构已在 dos.h 中定义,可以读取系统日期和时间。首先将界面背景设为 白色,字体设为蓝色,然后输出相应信息及系统时间。最后使用 getch()函数,使得
8、按 任意键进入系统主界面。 2得到按键值得到按键值 int get_key(); 要使程序得到键盘按键值,就要对按键进行扫描,通过查询键盘编码表,通过 get_key 函数返回按键的扫描码(即编码高位字节)。在 get_key 函数中,首先定义类 型为 REGS 的联合体 rg,然后降高字节初始化为 0,然后使用 int86 函数寄存键值,最 后输出高字节键值即扫描码。 3画边框函数画边框函数 void box(int startx,int starty,int high,int width); 该函数主要是在设计下拉菜单时使用,通过该函数画出一个矩形框。换矩形边框时,先打印左上角,再打印上边
9、线,再打印右上角,再打印左边线和右边线, 最后打印左下角,下边线和右下角。startx、starty、high、width 分别代表起始坐标和 矩形边框的高度和宽度。C 语言课程设计实验报告 CS0809 陶松桥44导入文件导入文件 void load(DANWEI *d_head); 该函数中声明了 3 个字符数组,分别用来存储要导入的三个文件的路径名,即用 户可以自己确定要导入的数据文件。如果用户输入的文件路径不对或者文件不存在, 系统会提示用户重新输入或者退出。读入单位时,建立的是后进先出链表,最先保存 的那个单位建立在链表的尾部;读取病历时,先要找到对应的单位编号,然后建立后 进先出链
10、表;读取门诊时,先找到对应病历编号,然后同样建立后进先出链表。录入 完毕,关闭三个文件。5保存文件保存文件 void save(DANWEI *d_head); 该函数有三个文件指针,分别指向三级信息要保存的文件。函数将整个系统的三 部分数据分别保存在 3 个文件里面,而且也声明了 3 个字符数组,用来存储文件名, 即用户可以自己选择保存的路径和文件名。6显示信息显示信息 void show(DANWEI *d_head); 该函数可以将整个系统的所有信息显示出来。本函数新建立三个窗口,即先建立一个 窗口输出单位信息,然后在原有窗口上建立第二个窗口用来输出病历信息,最后在原有窗C 语言课程设计
11、实验报告 CS0809 陶松桥5口上建立第三个窗口用来输出门诊信息。当显示完一次门诊后按任意键清屏显示下一个门 诊,当一个病历的门诊显示完之后,清屏显示下一个病历并显示其病历,当一个单位的病 历显示完之后清屏显示下一个单位,当显示完所有信息后清屏按任意键退出。 录入信息录入信息 1录入单位信息录入单位信息 DANWEI *create1(void);该函数是录入单位基本信息,建立第一级链表。建立该链表采用的是后进先出式,即 输入的下一个单位的 next 指针指向前一个单位,最后录入的那个单位作为链表的第一个单 位。返回值为指向第一个单位的指针。将每个单位的 b_head 指针赋值为空。效果如下
12、:2录入病历信息录入病历信息 BINGLI *create2(DANWEI *d_head); 本函数是在录入单位基本信息的基础上录入病历基本信息,建立第二级链表,如果未录入 单位信息将自动退出。首先提示输入要录入病历信息的单位编号,然后找到对应的单位(如未 找到则提示重新输入或退出),如果该单位有多条病历输入,则建立一个先进先出链表。将单 位最后一条病历的 next 指针赋值为 NULL。如果该单位已经存在病历信息则提示退出,用户可 以通过插入来输入病历信息。每条病历的 m_head 指针都自动赋值为 NULL。输入病历信息时,C 语言课程设计实验报告 CS0809 陶松桥6不必重新输入单位
13、编号,单位名称,而通过 strcpy 函数将单位信息复制到病历结构中。当用 户不在输入某一单位病历时,可自动通过循环提示输入下一个单位病历信息或者输入 X 退出。3录入门诊信息录入门诊信息 MENZHEN *create3(DANWEI *d_head);本函数是在录入单位信息及病历信息的基础上建立的第三级链表,即门诊信息链表。 同前,先找到对应的单位,然后再找到对应的病历,找到后先判断是否已经存在门诊信息, 如果门诊信息不存在,则可建立一个先进先出链表,如果门诊信息已经存在,则提示用户 可以使用插入函数来添加,并退出该函数。当然有些已知信息可以直接复制而不必重新输 入。通过自身的循环可以选择录入某一单位某一病历的门诊信息,也可选择退出。 修改信息修改信息 1 1修改单位信息修改单位信息 void modify1(DANWEI *d_head);本函数的功能是查找某一单位并修改该单位的某一项信息。首先提示用户输