1、 课 程 设 计 报 告题目 电子医嘱录入系统 系 别 年 级 专 业 班 级 学 号 学生姓名 指导教师 职 称 讲师 设计时间 目录1 绪论 .11.1 课题背景和意义 .11.2 主要研究内容 .12 系统功能设计 .22.1 初始化模块 .22.2 预约模块 .22.3 查看预约信息模块 .22.4 删除预约信息模块 .32.5 创建病人信息模块 .32.6 修改病人信息模块 .32.7 查看病人信息模块 .32.8 保存信息并退出模块 .33 系统详细设计 .43.1 数据表的存储组织 .43.1.1 病人信息数据结构 .43.1.2 科室信息数据结构 .53.1.3 病人预约信息数
2、据结构 .53.1.4 三种结构的关联 .63.2 主要算法设计 .73.2.1 初始化模块 .83.2.2 预约模块 .93.2.3 查看预约模块 .103.2.4 删除预约模块 .113.2.5 创建病人信息模块 .123.2.6 修改病人信息模块 .133.2.7 查看病人信息模块 .143.2.8 保存信息并退出模块 .154 系统测试 .164.1 病人信息管理测试 .174.2 病人预约信息管理测试 .214.3 文件信息存取测试 .245 总结与展望 .245.1 全文总结 .24心 得 体 会 .25参 考 文 献 .261 / 701 绪论1.1 课题背景和意义随着社会的信息
3、化,各个行业的管理与运营都逐渐开始使用电子系统来取代传统的管理模式。使用电子医嘱管理可以帮助医院更为便捷的管理医嘱,通过计算机技术给医院的管理人员和就诊病人在病历创建、预约查询以及记录统计等方面带来便利,为医院在管理医嘱方面提供一种更好的方式。1.2 主要研究内容本系统使用 C 语言编写了电子医嘱管理系统,主要实现医院中医生医嘱的电子管理。通过此系统可对医嘱进行管理和维护操作,实现电子医嘱管理的一般功能。主要内容包括:(1)电子医嘱查询。提供按照科室信息、病人信息查询;(2)电子医嘱创建。提供病人信息、预约记录的录入功能;(3)电子医嘱编辑。提供对系统数据的修改、删除等功能;(4)电子医嘱维护
4、。提供对系统数据的保存、读取等功能。系统采用菜单方式作为人机交互界面,为用户提供便捷的使用方式。用户根据菜单提示,选择所需要的服务,系统自动做出相应的响应。医嘱信息包含病人姓名、身份证号、科室名称、就诊科室等。科室信息、病人信息的读取和保存要求有一定的格式规范,录入的信息以文件的形式保存并可以对其进行浏览、查询、修改、删除等基本操作。整个程序基于链表实现,一个就诊信息的更改不影响其他的就诊记录。2 / 702 系统功能设计电子医嘱管理系统是由五大功能模块组成:预约模块、查看预约信息模块、删除预约信息模块、创建病人信息模块、修改病人信息模块、查看病人信息模块、保存信息并退出模块以及初始化模块如图
5、 2.1 所示。初 始 化1.预 约2.查 看 预 约 信 息3.删 除 预 约 信 息4.创 建 病 人 信 息5.修 改 病 人 信 息6.查 看 病 人 信 息7.保 存 并 退 出图 2.1 电子医嘱管理系统的功能模块2.1 初始化模块创建链表并将文件中的格式化信息读取到内存链表中。2.2 预约模块预约模块的操作流程包括选择预约科室,输入预约人员身份证号,若存在病人则预约,若不存在则返回主界面。2.3 查看预约信息模块查看预约信息模块的操作流程包括输入预约人员身份证号码得到相关预约科室信息,若存在病人则预约,若不存在则返回主界面。3 / 702.4 删除预约信息模块删除预约信息模块的操
6、作流程包括输入预约人员身份证号码得到相关预约科室信息,选择删除预约科室删除成功返回主界面。2.5 创建病人信息模块创建病人信息模块的操作流程依次输入身份证号码、姓名、年龄、性别、联系电话、住址、密码并回车添加病人信息。2.6 修改病人信息模块修改病人信息模块的操作流程输入病人身份证号显示病人信息输入修改项并输入修改的内容,若退出则按 0 返回主界面。2.7 查看病人信息模块查看病人信息模块的操作流程输入病人身份证号码显示病人信息按回车返回主界面。2.8 保存信息并退出模块保存信息并退出模块的操作流程直接退出程序将链表中的信息保存到文件。4 / 703 系统详细设计3.1 数据表的存储组织根据
7、2.3 节中设计,系统建立病人基本信息和病人预约信息表。在系统实现中,采用内存链表和磁盘文件二级的数据存储结构来存放这些数据信息。系统将文件信息转换为内存链表,再将链表转换成磁盘文件形式。系统首先将磁盘文件数据转入内存链表,在通过对链表数据的处理,对用户请求作出响应。 本系统以病人信息文件以及预约信息二份文本文件作为表单对应的磁盘存储,在内存中以结构变量的方式分别存放基本信息,并以链表的形式将所有的数据组织起来。 3.1.1 病人信息数据结构病人信息在内存中采用结构类型进行描述。病人结构成员包括:病人姓名、身份证号、性别、年龄、联系方式、家庭住址、密码。病人姓名、身份证号、性别、年龄、联系方式
8、、家庭住址、密码均以字符数组的形式存储。在病人结构中有一个个结构指针,指向下一个病人结构,通过这个指针可以组成病人链表。该结构变量实现病人信息表在计算机上的存储,其结构声明如图 3.1 所示。typedef struct patientinfchar name10;char number19;char sex10;char age10;char tel20;char addr20;char PassWord5;struct patientinf *next;patinf;5 / 70图 3.1 病人结构3.1.2 科室信息数据结构科室信息在内存中采用结构类型进行描述。科室结构成员包括:科室名称
9、。科室名称以指针数组的形式存储。在科室结构中有二个结构指针,一个指向下一个科室结构,通过这个指针可以组成科室信息链表,一个指向下一个病人结构,通过这个指针可以组成病人链表。该结构变量实现病人信息表在计算机上的存储,其结构声明如图 3.2 所示。图 3.2 科室结构3.1.3 病人预约信息数据结构病人预约信息在内存中采用结构类型进行描述。预约结构成员包括:病人身份证号。病人身份证号以字符数组的形式存储。在预约结构中有一个结构指针,指向下一个预约结构通过该指针可以将某一科室的所有预约病人链接起来,组成就诊链表。该结构变量实现病人预约信息表在计算机上的存储,其结构声明如图 3.3 所示。图 3.3
10、预约结构typedef struct patchar number19;struct pat *next;patient;typedef struct headchar *name;struct head *next;struct pat *next_;class_;6 / 703.1.4 三种结构的关联本系统数据之间以指针相结合的方式来链接系统中各类对象。系统中,科室结构中的病人身份证号以及科室编号的值将科室和预约病人关联起来。在系统实现中为了提高查询效率,查询模块实现中采用了值的相等对记录进行定位。科室、预约病人之间存在着层次关系,为了在内存中较好的体现这种层次关系,本系统采用二重链表的方
11、式组织信息之间的关联关系。具体结构如图3.4 所示。科室信息存放在二重链表的主链结点上,每个主链结点除了保存下一个结点的地址,还保存该科室的预约病人的基本信息链表头结点地址;预约病人信息存放在二重链表中相应科室的预约病人链结点上,每个结点保存下一个预约病人基本信息结点的地址。图 3.4 二重链表存储结构示意图病人信息存放在单链表中,具体结构如图 3.5 所示。病人信息结点除了保存病人信息还保存下一个结点的地址。7 / 70图 3.5 单链表存储结构示意图3.2 主要算法设计本系统在算法设计上采用“自顶向下,逐步求精”的设计方法。由全局到局部、由整体到细节、由抽象到具体,逐步将系统的问题分解为相对简单的小规模问题。本系统依照使用功能分成几个子模块:预约模块、查看预约信息模块、删除预约信息模块、创建病人信息模块、修改病人信息模块、查看病人信息模块、保存信息并退出模块以及初始化模块。系统的总控模块的算法流程如图 3.1 所示。图 3.1 主程序运行流程图系 统运行文本菜单初始化界面加载文件中存储的链表数据系统功能模块的选择和运行保存数据链表关闭系统结束PatInfHEAD 病人信息 NULL