c语言课程设计实验报告_第1页
c语言课程设计实验报告_第2页
c语言课程设计实验报告_第3页
c语言课程设计实验报告_第4页
c语言课程设计实验报告_第5页
已阅读5页,还剩154页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机学院课 程 设 计 报 告题目: 电子医嘱管理系统 课程名称: C语言程序设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 2014年10月17日 计算机科学与技术学院课程设计任务书1、 课题名称 电子医嘱管理系统。2、 课题内容 建立电子医嘱信息系统,提供创建、编辑和综合查询等基本业务管理和服务。3、 课题任务要求 收集与阅读相关文献资料,确定系统目标与范围,分析系统需求,确定系统功能;设计系统方案,完成系统实现;提交课程设计报告。4、 主要参考文献1曹计昌,卢萍,李开. C语言与程序设计,北京:电子工业出版社,20132张引. C程序设计基础课程设计, 杭州: 浙江大学出

2、版社,20073黄明,梁旭,万洪莉. C语言课程设计,北京: 电子工业出版社,2006目 录1 绪论1.1课题背景和意义11.2主要研究内容11.3开发环境12 系统需求分析与总体设计2.1 系统需求分析22.1系统功能设计32.3数据结构设计73 系统详细设计3.1 数据表的存储组织93.2 主要算法设计134 系统实现与测试4.1 系统实现234.2 系统测试265 总结与展望5.1 全文总结465.2 工作展望46心得体会47致谢49参考文献50附录源程序代码511 绪论1.1课题背景和意义 随着社会的信息化,各个行业的管理与运营都逐渐开始使用电子系统来取代传统的管理模式。使用电子医嘱管

3、理可以帮助医院更为便捷的管理医嘱,通过计算机技术给医院的管理人员和就诊病人在病历创建、就诊查询以及历史记录统计等方面带来便利,为医院在管理医嘱方面提供一种更好的方式。 本课题在C语言程序设计课程学习后,作为课程设计内容开展研究,其目的是为锻炼C编程能力,将课堂上的理论知识应用到具体实践中。1.2主要研究内容本系统使用C语言编写了电子医嘱管理系统,主要实现医院中医生医嘱的电子管理。通过此系统可对医生所开的医嘱进行管理和维护操作,实现电子医嘱管理的一般功能。主要研究内容包括:(1) 电子医嘱查询。提供按照科室、病人及就诊记录等信息多种查询方式;(2) 电子医嘱创建。提供科室、病人、就诊记录的录入、

4、增加功能;(3) 电子医嘱统计。提供按照病人人数、年龄、就诊历史的多种统计功能;(4) 电子医嘱编辑。提供对系统数据的修改、删除等功能;(5) 电子医嘱维护。提供对系统数据的备份、恢复等功能。 系统采用菜单方式作为人机交互界面,为用户提供便捷的使用方式。用户根据菜单提示,选择所需要的服务,系统自动做出相应的响应。在交互过程中,系统尽可能的兼容用户使用过程中可能出现的异常情况,保证系统中数据的完整性。医嘱信息包含病人姓名、身份证号、科室名称、科室编号、就诊医生、就诊类型、就诊日期、症状、医嘱等。科室、病人、医嘱信息的录入和显示要求有一定的格式规范,录入的信息以文件的形式保存并可以对其进行浏览、查

5、询、修改、删除等基本操作。整个程序实现链表的操作对就诊信息的操作逐个地进行,一个就诊信息的更改不影响其他的就诊记录。1.3开发环境 Code:Block是一款开源、免费、跨平台的集成开发环境,并支持Window和Linux以及十几种常见的编译器,个性化特性十分丰富,功能十分强大,而且简单易学,使用它可以很方便的编辑、调试和编译C应用程序。系统实现采用Code:Block作为开发工具。2 系统需求分析与总体设计2.1 系统需求分析 电子医嘱管理系统用于管理医院中病人就诊的相关信息,主要包括科室基本信息、病人基本信息和病人就诊记录基本信息,以帮助医院以及病人及时的了解就诊的情况,对病情有及时的了解

6、。 电子医嘱管理系统主要实现以下几方面的功能: (1)基本信息的录入、修改和删除功能 系统应实现对科室基本信息、病人基本信息和病人就诊记录基本信息的录入,修改和删除功能。在信息录入时,系统应提供尽量快捷和方便的数据录入方式。避免重复操作,降低数据冗余度;同时还应提供自动数据矫正功能,满足数据的正确性、合理性、有效性和依赖性等要求,尽量避免录入无用或非法数据。 (2)信息的查询功能 系统应实现对以上基础数据信息的查询功能,具体包括:按科室编号查询科室信息;按病人身份证号查询病人信息;按病人查询病人就诊记录;按病人身份证号、科室编号、就诊日期为组合条件查询就诊记录。 (3)数据统计功能 在三种基础

7、数据信息的基础上,提供多方面的数据统计功能具体包括:日就诊人数:统计各科室每日的就诊人数;病人分类:统计不同年龄的就诊病人的人数;病人就诊历史:统计每个病人的所有就诊记录,并提供查询功能。 (4)数据存储功能 在以上三种信息在程序运行时,以链表结构形式存在与内存中,并且数据的存储采用动态分配方式。同时,在外存上以数据文件形式对数据进行存储,且保证数据在内存外存上的一致性。2.1系统功能设计 电子医嘱管理系统是由五大功能模块组成:文件模块;数据维护模块;数据查询模块;数据统计模块;帮助模块。如图2.1所示。文件管理数据维护数据查询帮助数据统计电子医嘱管理系统 图2.1电子医嘱管理系统的功能模块2

8、.2.1文件管理模块 文件模块的功能包括一系列与系统启动运行和系统结束运行相关的操作。它进一步分为6个子模块:界面初始、数据加载、数据保存、数据备份、数据恢复、退出系统。如图2.2所示。数据加载数据保存界面初始数据备份数据恢复退出系统文件管理图2.2文件模块子系统2.2.3数据维护模块 数据维护模块完成对系统代码信息和基础数据信息的录入,修改,删除功能,保证数据的准确性、完整性和有效性。该模块分为:科室信息维护、病人信息维护和就诊记录维护。科室信息维护又分为:科室信息录入、修改和删除。病人信息维护又分为:病人信息录入、修改和删除。就诊记录维护又分为:就诊记录信息录入、修改和删除。如图2.3所示

9、。数据维护病人信息维护就诊记录维护科室信息维护就诊记录录入就诊记录修改就诊记录删除病人信息录入病人信息修改病人信息删除科室信息录入科室信息修改科室信息删除图2.3数据维护子系统2.2.4数据查询模块 数据查询模块完成对系统代码信息和三种数据进行查询的功能。该功能有三个子模块组成:科室信息查询、病人信息查询和就诊记录查询。如图2.4所示。数据查询病人信息查询就诊记录查询科室信息查询图2.4数据查询子系统2.2.5数据统计模块 数据统计模块提供对三种基础数据进行多方面统计的功能。按统计条件,该模块分为日就诊人数统计、病人分类和病人就诊历史记录。如图2.5所示。数据统计病人分类就诊历史记录日就诊人数

10、统计图2.5数据查询子系统2.2.6帮助 帮助模块为用户使用系统提供帮助。该模块分为帮助主题和系统说明。如图2.6所示。帮助模块系统说明帮助主题 图2.6帮助模块子系统2.3数据结构设计 在计算机中,客观对象及其关系是用数据来刻画的。在系统功能设计的同时,需要分析系统中的实体对象及其关系,建立刻画实体的数据模型,再以此为基础,实现数据的内部存储结构,进而建立系统运行的数据支撑环境。 按照2.1节中的需求分析,系统需要处理的实体包括有科室和病人。这两种实体之间存在着病人就诊关系,图2.7描述了它们的E-R关系图。根据E-R模型转化规则,图2.7中的实体及关系应采用三张基本表:科室信息表、病人信息

11、表和就诊记录表来描述。科 室病 人MN 就 诊图2.7病人与医生E-R图2.3.1科室信息表 科室信息表描述了系统中的科室实体,其结构如表2.1所示,包括:科室名称、科室编号、地址、联系方式、医生人数等信息。该表为科室信息的录入、修改、删除、查询与统计功能的实现提供数据的支撑。表中的类型定义对信息的录入、修改、删除给予一定的格式规范,以保证对数据操作的完整性。表2.1科室信息表数据项名称数据项标识数据类型实例科室名称office_namestring“内科”科室编号 office_idstring“001”地址adressstring“武汉”联系方式telstring“87551111”医生人

12、数doc_numint52.3.2病人信息表 病人信息表描述了系统中的病人实体,其结构如表2.2所示,包括:病人姓名、身份证号、性别、年龄、联系方式、家庭住址、就诊科室等信息。该表为病人信息的录入、修改、删除、查询与统计功能的实现提供数据支撑。表中的类型定义对信息的录入、修改、删除给予一定的格式规范,以使对数据的操作更为合理。表2.2病人信息表数据项名称数据项标识数据类型实例病人姓名pati_namestring“内科”身份证号 pati_idstring“001”性别sexstring“男”年龄ageint“30”联系方式telstring“87551111”家庭住址adressstring

13、“武汉”就诊科室office_namestring“内科”2.3.3就诊记录信息表 就诊记录信息表反映了病人在某个科室的就诊情况,其结构如表2.3所示,包括:病人姓名、身份证号、科室名称、科室编号、就诊类型、就诊医生、就诊日期、症状、医嘱、备注等信息。该表为就诊记录信息的录入、修改、删除、查询与统计功能的实现提供数据支撑,并与表2.1和表2.2一起为信息查询提供了多种查询所需数据。表中类型定义对信息的录入、修改、删除给予一定的格式规范,以使对数据的操作更为合理。表2.3就诊记录信息表数据项名称数据项标识数据类型实例病人姓名pati_namestring“内科”身份证号pati_idstring

14、“001”科室名称office_namestring“内科”科室编号office_idstring“001”就诊类型typestring“急诊”就诊医生doctorstring“王医生”就诊日期datestring“20140901”症状symptomstring“无”医嘱advicestring“无”备注notestring“无”3 系统详细设计3.1 数据表的存储组织 根据2.3节中设计,系统建立科室基本信息、病人基本信息和病人就诊记录基本信息三张逻辑表,这三张表示系统呈现给用户的数据视图。在系统实现中,采用内存链表和磁盘文件二级的数据存储结构来存放这些逻辑视图。 用户通过表单接口输入相关

15、信息,系统将表单信息转换为内存链表,再将链表转换成磁盘文件形式。对于用户的服务请求,系统首先将磁盘文件数据转入内存链表,在通过对链表数据的处理,对用户请求作出响应。 本系统以科室信息文件、病人信息文件以及就诊信息三份文本文件作为表单对应的磁盘存储,在内存中以结构变量的方式分别存放三种基本信息,并以链表的形式将所有的数据组织起来。3.1.1科室信息数据结构 科室信息在内存中采用结构类型进行描述。科室结构成员包括:科室名称、科室编号、地址、联系方式、医生人数。科室名称、编号、地址、联系方式均以字符数组的形式存储,医生人数以整型变量的形式存储。在科室结构中有两个结构指针,分别指向下一个科室结构以及病

16、人结构,通过这两个指针可以分别将医院的所有科室以及一个科室所有病人链接起来,组成科室链表以及科室下属的病人链表。该结构变量实现科室信息表在计算机内存中的存储,其结构声明如图3.1所示。typedef struct office_nodechar office_name10;char office_id5;char adress30;char tel 20;int doc_num;struct office_node* next;struct pati_node* pnext;OFFICE_NODE;图3.1科室结构3.1.2病人信息数据结构 病人信息在内存中采用结构类型进行描述。病人结构成员包

17、括:病人姓名、身份证号、性别、年龄、联系方式、家庭住址、就诊科室。病人姓名、身份证号、性别、联系方式、家庭住址、就诊科室均以字符数组的形式存储,年龄以整型变量的形式存储。在病人结构中有两个结构指针,分别指向下一个病人结构以及就诊记录结构,通过这两个指针可以分别将某一科室的所有病人以及一个病人所有就诊记录链接起来,组成病人链表以及病人的就诊链表。该结构变量实现病人信息表在计算机上的存储,其结构声明如图3.2所示。typedef struct pati_nodechar pati_id12;char pati_name10;char sex4;int age;char adress30;char

18、tel20;char office_name10;struct cure_node* cnext;struct pati_node* next;PATI_NODE;图3.2病人结构3.1.3就诊记录信息数据结构 就诊记录信息在内存中采用结构类型进行描述。就诊记录结构成员包括:病人姓名、身份证号、科室名称、科室编号、就诊类型、就诊医生、就诊日期、症状、医嘱、备注。病人姓名、身份证号、科室名称、科室编号、就诊类型、就诊医生、就诊日期、症状、医嘱、备注均以字符数组的形式存储。在就诊记录结构中有一个结构指针,指向下一个就诊记录结构通过该指针可以将某一病人的所有就诊记录链接起来,组成就诊链表。该结构变量

19、实现就诊记录信息表在计算机上的存储,其结构声明如图3.3所示。typedef struct cure_nodechar pati_id12;char pati_name10;char office_id5;char office_name10;char type6;char doctor10;char date12;char symptom100;char advice 100;char note5;struct cure_node* next;CURE_NODE;图3.3就诊记录结构3.1.4三种结构的关联本系统采用数据之间的相等以及指针相结合的方式来描述系统中各类对象之间的相互关联关系。

20、系统中,就诊记录结构中的病人身份证号以及科室编号的值将病人、科室和就诊记录关联起来。在系统实现中为了提高查询效率,查询模块实现中采用了值的相等对记录进行定位。科室、病人、就诊记录之间存在着层次关系,为了在内存中较好的体现这种层次关系,本系统采用三重链表的方式组织信息之间的关联关系。具体结构如图3.4所示。 科室信息存放在三重链表的主链结点上,每个主链结点除了保存下一个结点的地址,还保存该科室的病人的基本信息链表头结点地址;病人信息存放在三重链表中相应科室的病人链结点上,每个结点除了保存下一个病人基本信息结点的地址外,还保存该病人对应的就诊记录信息;就诊记录信息存放在三重链表中该病人对应基本信息

21、链结点的就诊信息链结点上,每个结点保存下一个就诊信息结点的地址。 病人1 病人2 病人m 科室1 科室2科室n head就诊记录1 就诊记录1 图3.4三重链表存储结构示意图 3.2 主要算法设计 本系统在算法设计上采用“自顶向下,逐步求精”的设计方法。由全局到局部、由整体到细节、由抽象到具体,逐步将系统的问题分解为相对简单的小规模问题。本系统依照功能分成几个子模块:文件管理模块、数据维护模块、数据查询模块、数据统计模块以及辅助功能模块。 系统的总控模块的算法流程如图3.1所示。系统运行文本菜单初始化界面加载文件中存储的链表数据系统功能模块的选择和运行保存数据链表关闭系统结束图3.1主程序运行

22、流程图3.2.1文件管理模块文件管理模块负责将内存链表转换成文本文件。在第2章的概要设计中,系统数据分为三种基础数据,这三种系统数据要求储存到数据文件中。为便于处理每个文件,本系统将三种数据分别存放在三个文本文件中。为了实现上述功能,本模块一共编写三个子函数:数据保存函数;数据加载函数;退出系统函数。(1) 数据保存函数数据保存函数将内存中的数据保存到外存的数据文件中。函数通过调用低层函数Write输出到数据文件,链表中的三种基础数据用输出函数fwriter写到相应的数据文件。算法流程如图3.2所示。将病人信息写入病人链表N pcure = NULLYppati=ppati->next

23、poffice = NULL开始打开科室、病人和就诊信息文件将科室信息写入主链表N将就诊信息写入就诊链表Npcure=pcure->nextpoffice=poffice->next结束Y ppati = NULLY图3.2数据保存流程图(2) 数据加载函数 数据加载的过程包括将科室文件、病人文件、就诊文件从数据文件中读取并存放到所创建的三重链表中以及判断每种类型的数据的加载是否成功。算法流程如图3.3所示 Feof(pFile) = 0创建动态结点ppati_node。从病人文件中读入一条记录。Nppati->cnext = NULL;ppati->next p=po

24、ffice->pnext;poffice->pnext=ppati。在科室链表下找到相应的科室,在该科室下建立一个病人链开始打开科室、病人和就诊信息文件。定义文件指针pFile依次指向三个文件。 Feof(pFile) = 0创建动态结点poffice_node。从科室文件中读入一条记录。Npoffice->pnext = NULL;poffice->next = gp_head;gp_head =poffice-。YYA AAAA AAA Feof(pFile) = 0创建动态结点pcure_node。从就诊记录文件中读入一条记录。Nppati =poffice-&g

25、t;pnext;pcure->next = ppati->cnext;ppati->cnext =pcure。在病人链表下找到相应的科室,在该病人下建立一个就诊记录链。Y结束 图3.3数据加载流程图(3)退出系统函数退出系统函数由退出系统函数、释放内存函数、文本界面函数三个子函数组成。算法流程如下:STEP1:产生退出界面;STEP2:释放三重链表及句柄;STEP3:退出函数循环;3.2.2数据维护及查询模块 在数据维护模块中,包括对科室数据、病人数据以及就诊数据的录入、修改和删除。三者在算法上的实现基本一致。因此在本小节中只介绍科室数据的创建、修改以及删除的算法,而另外两种

26、数据的算法类比科室数据处理即可。 (1) 科室数据的录入通过“后进先出”的方式创建链表,并将每一个科室的信息保存到链表的一个结点上面,以此形成科室链。算法流程如图3.4所示。系统运行创建动态结点,并对其赋值poffice->next=gp_head;gp_head=Poffice保存链表信息结束图3.4科室插入流程图(2) 科室数据的修改 按照用户的要求找到相应的结点,并对该结点的数据进行修改和保存。算法流程如图3.5所示。输入修改后的信息此科室不存在!P->office_id=office_idP=NULL开始获取指向科室数据链头的指针PP=P ->nextN NY结束保存

27、信息输入所要修改的科室编号office_id P=NULLN输入所要修该的选项Y图3.5科室修改流程图(3) 科室删除流程图 按照用户的要求找到相应的结点,并对将结点的数据删除但同时需注意该结点上的病人支链,而病人支链的删除同时需删除该结点上的就诊记录结点。算法流程如图3.6所示。 YYP->office_id=office_id&& P=NULL P是否为头指针将目标结点的前结点指向后结点开始获取指向科室数据链头的指针P此科室不存在! P=P ->nextN NY结束保存信息输入所要删除的科室编号office_id P=NULLN释放结点指针p,并且循环释放该科室

28、结点下的病人和就诊记录信息将目标结点的后结点指针置为链表头指针 N图3.6科室删除流程图(4)数据查询模块 数据查询模块提供了对三种基础信息进行精确查询。科室编号对应一条科室信息,身份证号对应一条病人信息而科室编号、身份证号和就诊日期合起来对应一条病人就诊信息。它们分别为三种基础信息进行精确查询提供条件。科室信息查询算法流程如图3.7所示此科室不存在!P->office_id=office_id P=NULL开始获取指向科室数据链头的指针PP=P ->nextN NY结束保存信息 输入所要查询的科室编号office_id P=NULLN 输出此时p所指向结点的信息Y图3.7科室查询

29、功能3.2.3数据统计模块 为了使系统功能更全面,本系统对三种基础数据进行多方面统计的功能。按统计条件分为:日就诊人数统计、病人分类统计和病人就诊历史记录。(1)日就诊人数统计 pcure_date=date ppati_node = poffice_node->pnext;NYYY输出相应就诊结点信息开始获取指向科室数据链头的指针pofficeY输入需要查询的年月日date poffice=NULLN结束输出该日就诊的总人数 ppati=NULLNpcure_node = ppati_node->cnext pcure=NULLNppati_node = ppati_node-&

30、gt;nextpoffice_node = poffice_node->next 该模块用于统计任意一天的就诊情况并显示该日就诊的所有就诊病人以及总人数。算法流程如图3.8所示。pcure_node = pcure_node->next图3.8日就诊人数统计流程(2)病人分类统计 该模块用于统计就诊病人的年龄分布,以10年为一个层次,并输出结构。算法流程如图3.9所示。开始获取指向科室数据链头的指针pofficepoffice=NULL ppati_node = poffice_node->pnextNppati=NULL统计各年龄层人数ppati_node = ppati_

31、node->nextNppati_node = ppati_node->nextY输出各年龄层人数结束Y图3.9病人分类统计(3)病人就诊历史该模块用于统计一个病人所有的就诊记录并显示,算法流程如下: STEP1:访问科室主链的结点P。 STEP2:遍历该科室结点下的所有病人结点,并查找是否有与要找病人相符的结点;如果找到输出该结点信息。 STEP3:判断p的下一个结点是否为空。如果为空结束,不为空则p指向下一个结点并跳到S1。4 系统实现与测试4.1 系统实现 本系统使用Code:Block作为开发工具。Code:Block是一款开源、免费、跨平台的集成开发环境,并支持Windo

32、w和Linux以及十几种常见的编译器,个性化特性十分丰富,功能十分强大,而且简单易学,使用它可以很方便的编辑、调试和编译C应用程序。 同时本系统将所有数据都存放在一个三重链表中(如图4.1所示),三种基础信息分别对应三种结构变量:科室结构变量(如图4.2所示)、病人结构变量(如图4.3所示)、就诊结构变量(如图4.4所示)。typedef struct pati_nodechar pati_id12;char pati_name10;char sex4;int age;char adress30;char tel20;char office_name10;struct cure_node* c

33、next;struct pati_node* next;PATI_NODE;typedef struct pati_nodechar pati_id12;char pati_name10;char sex4;int age;char adress30;char tel20;char office_name10;struct cure_node* cnext;struct pati_node* next;PATI_NODE;typedef struct office_nodechar office_name10;char office_id5;char adress30;char tel 20;

34、int doc_num;struct office_node* next;struct pati_node* pnext;OFFICE_NODE; 图4.2科室结构 病人1 病人2 病人m 科室1 科室2科室n head就诊记录1 就诊记录1 图4.3病人结构 图4.4就诊记录结构 图4.1三重链表存储结构示意图 本系统有5个模块组成。每个模块调用相应的子函数,每个子函数实现一个具体的功能。模块的结构如下:(1)文件 此模块包括系统启动时数据初始化、结束时数据保存、文件备份及恢复等操作。由数据加载、数据保存、数据备份、数据恢复、退出系统五个子函数组成。 数据加载函数:将已有的三个文件的数据信息

35、加载到系统中 数据保存函数:将新建的各种信息以文件的形式保存下来 数据备份函数:将系统已存的三个文件的信息作好备份 数据恢复函数:系统崩溃时恢复系统的数据 退出系统函数:结束程序运行(2)数据维护科室信息维护:此模块完成对科室数据的录入、修改和删除操作。 科室信息录入函数:新建科室基本信息; 科室信息修改函数:修改录入的科室的基本信息 科室信息删除函数:删除录入的科室基本信息病人信息维护:此模块完成对病人数据的录入、修改和删除操作。 病人信息录入函数:新建病人基本信息; 病人信息修改函数:修改录入的病人的基本信息 病人信息删除函数:删除录入的病人基本信息就诊信息维护:此模块完成对就诊记录的录入

36、、修改和删除操作。 就诊信息录入函数:新建就诊基本信息; 就诊信息修改函数:修改录入的就诊的基本信息 就诊信息删除函数:删除录入的就诊基本信息(3)数据查询 此模块完成录入的三种基本信息的查询工作,查询时需要输入相应编号。 科室信息查询函数:通过科室编号查询录入的科室的基本信息 病人信息查询函数:通过病人身份证号查询录入的专家基本信息 就诊信息查询函数:通过就诊科室,就诊病人以及就诊日期查询录入的就诊基本信息(4)数据统计 此模块完成日就诊人数、病人分类、病人就诊历史的统计工作。 日就诊人数函数:统计各科室每日的就诊人数 病人分类函数:统计不同年龄的就诊病人的人数 病人就诊历史函数:统计每个病

37、人的所有就诊记录,并提供查询功能(5)帮助 此模块为使用者提供部分操作帮助,包括系统信息、模块功能等,同时输出完整的科室信息、病人信息以及就诊记录信息。 科室信息输出函数:输出录入的科室的基本信息。 病人信息输出函数:输出录入的病人基本信息。 就诊信息输出函数:输出录入的就诊记录基本信息。 帮助主题函数:提供模块组成及功能的信息。 关于函数:提供系统信息。4.2 系统测试 软件测试即使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让测试

38、事半功倍。常用的软件测试方法有:黑盒测试、白盒测试、静态测试、动态测试、自动化测试、功能测试、集成测试、场景测试、系统测试等。本系统的测试针对系统的功能进行检查,以功能模块进行分类,分别对数据管理、数据维护、数据查询、数据统计及帮助几个模块进行测试。(1) 数据管理测试 此模块的功能包括系统运行启动与结束运行相关数据保障操作,以及系统存盘、系统崩溃后数据恢复等操作。本模块设计的目的是对系统所要使用的数据进行管理。 本模块包含数据加载、数据保存、数据备份、数据恢复、退出系统。系统的备份与恢复和加载、保存类似,这里只对加载、保存、退出进行测试。同时为了方便检查,本系统提供了一个面向程序开发者的接口

39、,如图4.5所示,用于显示当前系统中数据。图4.5输出函数 文件的保存与加载 数据加载函数即将已有的三个文件的数据信息加载到系统中,数据保存函数即将新建的各种信息以文件的形式保存下来。为测试该功能,本系统先将一份医院的信息录入本系统中,录入前数据为空(如图4.6所示)。录入后保存数据(如图4.7所示),再加载数据(如图4.8所示),最后将数据显示。运行结果如图4.9所示。通过数据的保存以及加载函数可以将录入的数据保存在文件上并将文件上的数据读入内存中。图4.9表明可以两个函数可以实现保存与加载的功能。图4.6显示初始科室信息图4.7保存信息图4.8加载信息图4.9显示结果 系统退出 系统的退出

40、函数即退出整个函数循环,结束系统的运行。运行结果如图4.10(1)及4.10(2)所示。图4.10(1)系统退出函数图4.10(2)系统退出函数(2) 数据维护测试此模块完成对科室、病人、就诊记录数据的录入、修改和删除操作。使程序管理员可以实现新数据的创建、原有数据的修改与删除操作,以保证数据的准确性。 本模块包含科室录入、修改、删除函数;病人录入、修改、删除函数;就诊记录录入、修改、删除函数。在此分别选择科室录入、病人删除、就诊记录修改进行测试。本模块的界面如图4.11所示。图4.11数据维护初始界面 科室录入 科室信息录入函数即新建科室基本信息。为测试该功能,本系统先未创建任何数据(如图4

41、.6所示),再开始创建一条科室链表(如图4.12(1)及图4.12(2)所示),最后显示运行结果(如图4.13所示)。由结果可知科室链表创建成功。 图4.12(1)创建科室链表 图4.12(2)创建科室链表图4.13显示科室链表 病人删除 先在科室链表下录入病人链表并显示(如图4.14所示),再将其中一条链表删除(如图4.15所示),显示运行结果如图4.16所示。运行结果表明该病人信息已经删除。图4.14病人信息初始界面图4.15(1) 病人信息删除图4.15(2) 病人信息删除图4.16显示删除后结果 就诊信息修改 就诊记录的修改即对就诊链表上的一个就诊结点的信息进行修改。为了测试该功能,本

42、系统先在病人链表下创建就诊链表并显示(如图4.17所示),再修改其中就诊的信息(如图4.18(1)、图4.18(2)及图4.18(3)所示),最后显示运行结果(如图4.19所示)。图4.17科室信息初始界面图4.18(1)就诊信息修改图4.18(2)就诊信息修改图4.18(3)就诊信息修改图4.19结果显示(3) 数据查询测试此模块完成录入的三种基本信息的查询工作,查询时需要输入相应编号。由科室信息查询函数、病人信息查询函数、就诊信息查询函数组成,其中科室查询为单条件查询,其余为多条件查询。现对科室信息查询及就诊信息查询进行测试。 科室信息查询 科室查询即按照用户提供的科室编号对科室链表的某一

43、个节点的信息进行访问。为测试此功能,先显示已录好的科室链表(如图4.9所示),再运行查询程序(如图4.20(1)及4.20(2)所示),运行结果如图4.21所示。图4.20(1)运行科室查询程序图4.20(2)运行科室查询程序图4.21运行结果显示 就诊记录查询 就诊查询即按照用户提供的科室编号,病人身份证以及就诊日期对就诊链表的某一个节点的信息进行访问。为测试此功能,先显示已录好的就诊链表(如图4.19所示),再运行查询程序(如图4.22所示),运行结果如图4.23所示。图4.22(1)运行就诊查询程序图4.22(2)运行就诊查询程序图4.21运行结果显示(4)数据统计功能测试此模块完成日就

44、诊人数、病人分类、病人就诊历史的统计查询,为系统提供对历史数据的统计与查询功能。使用户可以更好的了解数据信息。 日就诊人数 日就诊人数及对每日所有科室就诊的总人数进行统计。为测试该功能,先显示就诊记录(如图4.22所示)。再在日就诊统计函数中输入所要统计的日期(如图4.23(1)及图4.23(2)所示)。运行结果如图4.24所示。图4.22初始就诊信息 图4.23(1)运行日就诊人数函数图4.23(2)运行日就诊人数函数图4.24运行结果 病人分类 病人分类即统计不同年龄的就诊病人的人数。为测试该功能,先显示所有病人信息(如图4.25所示)。再在病人分类函数中输出病人分类。运行结果如图4.26

45、所示。图4.25初始病人信息显示图4.26运行结果 病人就诊历史病人就诊历史即统计每个病人的所有就诊记录,系统根据用户提供的病人身份证号将该病人的在不同科室下的所有就诊信息全部显示。为测试该功能,先显示就诊记录(如图4.22所示)。再在病人就诊历史函数中输入所要查询的病人的身份证号(如图4.27(1)及图4.27(2)所示)。运行结果如图4.28所示.。图4.27(1)运行病人就诊历史图4.27(2)运行病人就诊历史图4.28运行结果5 总结与展望5.1 全文总结 本文使用C语言实现了电子医嘱管理系统,具体功能包括: (1)文件管理 负责系统初启时数据初始化、文件存盘、数据备份、恢复。主要由数

46、据加载、数据保存、数据备份、数据恢复、退出系统五个子函数组成。 (2)数据维护 负责科室信息、病人信息、就诊信息的录入、修改和删除。主要由科室录入、修改、删除函数,病人录入、修改、删除函数,就诊信息录入、修改、删除函数组成。 (3)数据查询 实现信息的查询。提供了按照科室编号、病人身份证号及就诊日期等多种查询方式。 (4)数据统计 实现了日就诊人数、病人分类、病人就诊历史的统计查询。 (5)帮助 为使用者提供部分帮助操作。提供模块组成、功能说明、使用说明等功能。5.2 工作展望 电子医嘱管理系统实现了课程设计的功能要求,能够正确运行。从实用和性能方面可以进一步加以改善。 (1)完整性。可通过增

47、加科室名单表等方法,对输入信息进行完整性检查。如果输入科室名称与名单表不符,则该信息视为无效。对年龄设置上下限,以保证数据的合理性。 (2)安全性。在系统中可以增加多种角色的登陆方式,提高系统的安全性。对于不同角色的用户,给与不同的操作权限,从而保证系统内部数据的安全性。在登陆时可加入口令认证,确保用户身份的正确性。 (3)性能优化。对内部数据建立索引表,对索引表进行二分查找,提高查询速度。对链表可以采用双向十字链表结构存储,提高信息处理的速度。心 得 体 会 刚开始看到题目时一头雾水,不知该从何处下手,因为平时学的C根本没有提及控制台程序,根本不知该用哪方面的知识来实现文本菜单界面,因为平时

48、只做过一些输入输出的普通小程序,根本没有界面的概念。于是我就想如果先运行一下书上提供的样例程序,脑中大概也就有了一些概念和想法。可是把书上提供的几个代码拿来一运行编译error就有几十行,面对那上千行的代码,我就不知该怎么下手了。后来实在没办法,离开学还二十来天了,我又开始行动起来。首先拿起那本C语言实验与课程设计看了三天,大概懂了一些控制台函数的用法,就开始将书上的代码一段一段的输入进去跑一跑,慢慢的就大概懂了怎么来实现那些界面。首先把那个任务说明看了几遍,就将程序主要分成五大块功能:(1)文件处理功能:首先得有将数据信息保存的功能,这就得用到老师讲的“文件”那章的知识,我又拿起课本看了几遍。其次还得有数据备份的功能,以备在重大失误后能找回一些数据,将损失降低。有了备份,还得有恢复备份数据地功能。最后必须有安全退出系统的功能。(2)数据处理功能:首先得让系统能读入操作者输入的数据并将数据存储在文件中。然后如果操作者输入数据有误那还得有对数据修改,部分数据删除,以及数据添加的功能。(3)查询功能:第一可以按照科室编号来查询,第二还可以按照病人身份证号查询,第三还可以按照科室编号,病人身份证及就诊日期进行多条件统计查询。(4)统计信息功能:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论