基于JSP的住院病人信息管理系统(含源文件)


获取项目源文件,联系Q:1225467431,可指导毕设,课设


摘 要
今天,互联网技术高速发展,信息管理技术被广泛应用于各行各业。医学领域内,随着医院信息化进程的提速,使用计算机技术管理住院病人信息十分必要。本次设计采用JSP语言作为开发工具,设计实现了住院病人信息管理系统,旨在提高整个医院的工作效率和工作质量。
本系统包括管理员模块、医生模块、护士模块和食堂管理员模块四个部分,四个模块相互协调,共同实现以下功能:住院登记、病人出院、住院药品管理、膳食管理、查询病人住院信息、用户管理和系统维护等功能。本系统是基于B/S模式,用户通过浏览器使用系统。本文首先介绍了系统开发意义和使用到的开发工具和技术,然后进行需求分析和系统设计以及系统测试,论文的最后是结论、致谢以及参考文献,并附录几个重要模块的代码。
关键词:住院病人信息管理系统 JSP SQL Server 2008 B/S模式
ABSTRACT
Nowadays, the rapid development of Internet technology, information management technology is widely used in various industries. Within the field of medicine, with the acceleration of the process of hospital information, the use of computer technology in patient information management is essential. The design uses JSP language as a tool and aims at improving the efficiency and quality of the entire hospital.
The system consists of four parts, administrator module, the module of doctors, the module of nurses and cafeteria manager module, the four modules coordinated together to achieve the following functions: patient admission and discharge management, hospitalization expenses management, medical advice management, and patient inquiries user management and system maintenance functions. The system is based on B/S mode, the user can use the system through a browser. This paper describes the development of the meaning and use of the system to develop tools and techniques, and requirements analysis andsystem design and testing, the papers final conclusion, Acknowledgements and references, and appendix code several important modules.
Key words:IMIS JSP SQL Server 2008 B/S mode
目 录
第1章 绪论 1
1.1项目开发背景 1
1.2开发工具与相关技术介绍 1
1.3系统环境配置 3
1.4论文组织结构 3
第2章 系统分析 4
2.1需求分析 4
2.2系统总体分析 5
2.3可行性分析 6
第3章 系统设计 6
3.1系统功能描述 6
3.2系统功能模块设计 7
3.3核心功能流程 11
3.4数据库设计 13
3.5系统安全性设计 19
第4章 详细设计与实现 20
4.1身份验证模块 20
4.2管理系统用户模块 21
4.3病人基本信息管理模块 22
4.4病人诊断信息管理模块 23
4.5膳食管理模块 24
4.6其它功能模块 25
第5章 系统测试 26
5.1登陆模块测试 27
5.2添加用户模块测试 27
5.3病人登记住院模块测试 28
5.4病人结账出院模块测试 29
5.5医生诊断模块测试 29
5.6用户修改信息模块测试 30
第6章 结束语 31
致 谢 32
参考文献 33
附 录 34
第1章 绪论
1.1项目开发背景
随着科学技术的不断提高,计算机科学技术日渐成熟,它已进入人类社会的各个领域并发挥着越来越重要的作用。计算机信息管理系统利用计算机强大的数据处理能力,通过计算机软件实现信息管理,可以更加准确、实时、可靠。随着我国医疗改革的进一步深化,减少医护人员增加医院效率已势在必行,这就为病人信息管理工作提出了新的挑战:如何使医护人员从繁重的手工抄计病人信息的工作中解放出来,使结果更加科学和准确,实践证明,应该采用计算机管理这一途径[1]。因此,利用计算机实现住院病人信息管理乃至整个医院信息管理势在必行。
虽然住院病人信息管理系统可以认为是医院信息管理系统的一个子系统,但其实现的功能是医院信息管理系统的核心功能,而且其专业性要求比一般系统要高,特别是病人管理功能,如病人出院不仅仅是删除数据,还要计算病人的住院费用等。目前国内医院虽然有一部分的医院采用了医院信息系统,但其一般都是采用C/S模式设计,虽然界面比较美观,但其成本要求很高,而且功能简单,维护困难,升级更是难上加难。所以住院病人信息管理系统在各个方面都有待提高。B/S模式很好的解决了成本、系统维护升级困难等问题,在此背景下开发一款基于B/S模式的住院病人信息管理系统很有必要。
1.2开发工具与相关技术介绍
1.2.1开发工具
本系统的开发使用面向对象软件开发技术,以Myeclipse8.0作为前后台开发工具,以SQL Server 2008作为数据库开发工具,而服务器则使用Tomcat6.0。结合Java语言的完全面向对象技术和JSP语言的简单方便特点以及SQL的强大的数据库查询技术,能很轻松的实现系统所需的需求功能。
MyEclipse8.0是一款非常优秀的用于开发Java、J2EE的开发工具,现在很多软件公司都在使用。MyEclipse有着非常强大的功能,支持范围十分广泛,尤其是在对各种开源产品的支持方面十分优秀。MyEclipse像eclipse一样,目前支持Java Servlet、AJAX、 JSP、 JSF、 Struts、Spring、Hibernate、EJB3、JDBC数据库链接工具等多项功能[2]。目前可以说只要是eclipse支持的开发插件,MyEclipse几乎全部都能很好的支持,并且其功能更加强大。图1.1是Myeclipse8.0的Web开发主界面。
图1-1 Myeclipse主界面
系统所用的后台数据库开发平台是SQL Server 2008,它是Microsoft公司推出的SQL Server数据库管理系统众多版本中的一个版本,SQL Server 2008(简称SQL 2008)是数据库管理系统软件,可以运行在网络环境下,能通过网络使用。数据库系统是数据管理的实用技术,它的出现提高了计算机应用向各行各业的渗透的速度和广度。SQL Server 2008是单进程、多线程、高性能的关系型数据库管理系统(RDBMS)[3]。它使用的是现在很流行的Transact-SQL语言传送请求。图1.2是SQL Server 2008的Web开发主界面。
图1-2 SQL Server 2008主界面
1.2.2 B/S模式
B/S(Browser/Server)模式又叫浏览器 (​http:​/​​/​baike.baidu.com​/​view​/​7718.htm _blank​)和服务器模式。它是随着Internet技术的高速发展,对C/S模式的改进和扩展。在B/S结构下,用户的运行界面是通过网页浏览器向服务器发送请求来实现的。B/S模式最大的优点是运行维护比较方便,系统升级很简单,能实现不同的用户,在不同的地点,以不同的接入方式(如LAN, WAN, Internet/Intranet等)访问和操作相同的数据[4]。
1.2.3 JSP
JSP语言以Java语言为基础,集成了Java Enterprise API,在Web应用系统开发领域具有非常大的优势,技术发展到今天,通过Java平台构建网络程序被大多数人认为是未来最有发展前途的Web技术[5]。今天,在国内有很多人重视JSP技术的发展,越来越多的动态网站开始采用JSP技术。JSP实现了真正意义上的跨平台,只要服务器(Apache等)支持,就可以运行基于JSP技术的Web应用程序,由于Apache广泛应用在Windows NT,UNIX和Linux上,因此JSP有更广泛的运行平台[6] 。JSP技术分离了网页的静态内容和动态内容,使用JSP,程序员可以使用HTML或XML标记来设计和格式化静态内容,并通过JSP标记及JS制作动态内容。
1.3系统环境配置
1安装jdk
本系统使用jdk开发。下载安装后,配置path环境变量。
2安装Myeclipse8.0
本系统采用面向对象的软件开发方法,以Myeclipse8.0作为前台开发工具。
3安装Tomcat
本系统使用Tomcat6.0作为Web服务器,启动前需设置java_home环境变量。
4安装SQL
本系统使用SQL Server 2008作为后台数据库。
5系统布署
将项目文件布署Tomcat6.0,并启动Tomcat6.0服务器,从浏览器上输入网址,进入项目。
1.4论文组织结构
本论文描述了住院病人信息管理系统从设计到实现的整个过程。首先介绍了项目的背景及项目开发工具及相关技术,然后描述了系统分析、系统设计与系统实现环节,接着简述了系统测试,最后总结全文。重点介绍了系统总体设计和数据库设计,并在附录中列出了几个主要功能模块的窗口及源码。
第2章 系统分析
2.1需求分析
一个系统好坏的关键就是有没有一个完整的需求分析。要想做好住院病人信息管系统的需求分析,就是要在不断的调查和研究的基础上,自己总结系统所需要的真正功能,以做到一个完美的需求。要想将现实世界抽象为一个好的概念模型,好需求分析是必不可少的。本系统的需求分析是在不断的实地调查,询问了一些医护人员对住院病人管理系统的要求的基础上,自己做充分的总结,主要是从不同的用户需要的不同的功能做的需求分析。
2.1.1管理员所需的使用功能
系统管理员拥有最高的管理权限,负责系统的运行和维护,需要实现以下功能:
1.添加新用户。因为本系统属于医院内部使用的管理系统,所有的使用用户都只能由管理员添加,本系统不对外提供注册功能。
2.查询及修改所有用户的信息,包括:用户名、密码、身份等。
3.修改个人信息,只包括用户名和密码,还有身份信息。
4.查看食堂信息,可以直接通过web查询食堂今天的菜系价格等。
5.数据库备份还原。
2.1.2护士所需的使用功能
护士作为登陆用户,需要实现以下功能:
1.登记病人住院,能对病人的基本信息进行增、删、改、查操作。
2.实现病人结账出院功能。病人结账出院要能查询账单,并成功结账。
3.修改个人信息,只包括用户名和密码,还有身份信息。
4.查看食堂信息,可以直接通过web查询食堂今天的菜系价格等。
2.1.3医生所需的使用功能
医生作为登录用户,需要实现以下功能:
1.查询自己正在诊断的病人有哪些以及他们的基本信息。
2.查询自己的病人的诊断史及用药史。
3.诊断自己的病人及给自己的病人开药。
4.修改个人信息,只包括用户名和密码,还有身份信息。
5.查看食堂信息,可以直接通过web查询食堂今天的菜系价格等。
2.1.4食堂管理员所需使用功能
医院食堂管理人员作为登陆用户,主要管理病人的膳食,需要实现以下功能:
1.管理食堂的菜样,可以对食堂菜库中的菜样进行增、删、改、查。
2.可以对今天食堂的供应菜样进行增、删、改、查。
3.修改个人信息,只包括用户名和密码,还有身份信息。
4.查看食堂信息,可以直接通过web查询食堂今天的菜系价格等。
2.2系统总体分析
在系统功能分析的基础上,做系统功能模块图如下:
图 2-1 医院管理系统的功能模块图
2.3可行性分析
1.技术上可行性
住院病人信息管理系统采用基于Web开发技术进行实现,采用JSP语言作为开发工具。今天越来越多的大型网站的开发开始采用JSP作为工具语言,和其他网页语言相比JSP有许多自身的优点,首先,JSP实现了跨平台,基本上能在任意平台上的任意环境中开发,并在任意平台上进行访问。 其次,JSP具有强大的可伸缩性,只要一个小小的Jar文件就可以运行Servlet/JSP,一台服务器可以运行多台服务器也可以很好的工作,JSP具有了Java所具有的巨大的生命力[7]。最后,随着JSP的使用越来越多,JSP有了很多功能强大的开发工具支持,像:Eclipse,MyEclipse等。而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
2.经济上可行性
由于本系统是毕业设计,软硬件设计较为简单,只要一台能连网的个人PC就能实现,所以本系统基本不需要格外的开发成本,服务器和开发工具个人PC可完全胜任,所以在经济上是可行的。
3.操作上可行性。
从前面分析看,技术上的操作已经十分成熟并且也已经广泛的被人们使用,从而系统的操作是可行的。
第3章 系统设计
系统设计关乎整个系统的成败,功能模块设计又是整个系统设计的重要部分,因此做好系统设计就是要做好功能模块设计。本系统中以病人信息为中心点,各种功能都是围绕病人信息展开,主要有登记入院,结账出院,诊断病人等。
3.1系统功能描述
根据住院病人信息管系统的实际情况,本系统主要要求实现的功能有:系统用户管理功能(包括对增加用户、查看用户信息、修改用户信息)、病人登记住院(护士人员登记病人的基本信息、医生能对病人进行诊断和开药)、病人结账出院(护士人员能查看病人的信息包括病人的基本信息、住院信息)、膳食管理功能(食堂管理员管理食堂菜库信息、食堂管理员能根据食堂的实际情况在网上设置每天的菜样、一般用户能通过网络查看每天食堂中的菜样)、系统管理功能(包括数据库的备份和还原功能)、其他功能(每个用户能修改自己的信息等功能)等。
本系统应达到以下目标:
●不同身份的用户权限不一样,包括系统管理员、医生、护士和食堂管理员。
●病人结账出院时能清楚的显示病人的费用信息,系统能根据病人的住院情况和药品使用情况自动准确的计算出病人的费用信息。
●病人登记住院时能由护士填写基本信息。
●系统数据处于一个安全状态,不同的用户只访问特定的数据。
●最后系统的界面应该简洁美观,功能应该健全。
3.2系统功能模块设计
3.2.1身份验证模块
在登陆界面输入的用户名、密码,并通过Request请求传给后台的Servlet,在Servlet中查询并比对数据库。本系统允许用户重名,采用用户名和密码共同确定用户身份,密码要以*显示。在Servlet中对用户名和密码进行校验,然后根据不同的身份跳入不同的界面,若用户名或密码不正确都能给出友好的错误提示界面,并引导用户重新返回系统登陆界面[8]。
图 3-1 身份验证模块图
3.2.2管理系统用户模块
由于本系统是医院内部使用,为了系统数据的安全性,本系统不对外提供注册功能,本系统设置所有的用户只能由管理员添加。管理员拥有最高的权限,可以添加用户、查看所有用户信息、更改所有用户信息、删除用户信息等功能。
图3-2 管理系统用户模块图
3.2.3病人登记住院模块
病人住院登记模块,有新的病人入院时,护士拥有权限登记新的病人信息,要求录入病人的基本信息(姓名、性别、年龄等),录入的住院信息(住院时间,科室,主治医生等)。还要求能更新病人的基本信息,删除病人的基本信息等。
图3-3 病人登记住院模块图
3.2.4病人结账出院管理模块
病人结账出院管理模块,病人痊愈,结账出院,要求能打印病人的住院信息,要能显示病人的入院时间,出院时间等信息,计算出病人的各项费用(住院费,药品费)等功能。
图3-4 病人结账出院管理模块图
3.2.5医生诊断管理模块
医生能查看自己正在诊断的病人,能查看自己病人的诊断史以及用药史。医生能根据病人的诊断史对病人进行诊断,根据病人的用药史给病人开药。
图3-5 医生诊断管理模块图
3.2.6膳食管理模块
膳食管理功能由食堂管理员实现,该功能模块主要要求食堂管理员能管理食堂菜品,能设置每天食堂的菜品,能对菜品库中的菜样进行增、删、改、查。
图3-6 膳食管理模块图
3.2.7其它功能模块
为了方便用户的使用,系统还有设置了一些其它常用功能, 修改自己的个人信息及密码功能,查看今日食堂膳食功能等。
图3-7 其它功能模块图
3.2.8整个系统的功能模块图
图3-8 系统功能模块图
3.3核心功能流程图
3.3.1添加功能
用户管理、病人管理和菜品管理等模块中都有添加模块,添加模块是所有信息管理系统的核心功能,很多功能都是建立在添加功能基础上的。添加功能在本系统实现的过程中,使用的是基于数据库的操作,使用SQL查询语句向数据库表中插入数据来实现的,具体流程如下图所示:
图3-9 添加功能流程图
3.3.2删除功能
用户管理、病人管理、结账出院和管理菜品等模块中都有删除模块。删除模块是所有信息管理系统的核心功能,很多功能都是建立在删除功能基础上的。病人结账出院,要把数据库中的病人信息删除,以减少数据库中的无用数据。在本系统实现的过程中,使用的是基于数据库的操作,使用SQL查询语句来实现的,具体流程如下图所示:
图3-10 删除功能流程图
3.3.3查询功能
用户管理、病人管理、结账出院和管理菜品等模块中都有删除模块。删除模块是所有信息管理系统的核心功能,很多功能都是建立在查询功能基础上的。在系统实现中,大部分基于数据库的操作大都是使用SQL查询语句来实现的,具体流程如下图所示:
图3-11 查询功能流程图
3.4数据库设计
SQL Server是Microsoft公司推出的一种关系型数据库系统。SQL Server 20008是Microsoft 公司推出的SQL Server 数据库管理系统,该版本继承了以前版本的优点,同时又增加了许多更先进的功能。在应用系统中,对数据查询及处理速度已成为衡量一个系统是否成功的标准,数据库管理系统SQL Server由于其强大的信息操作和数据管理能力为大众所喜爱[9]。本系统采用SQL Server 20008数据库管理系统管理系统的数据库。
3.4.1建立数据库的方法
数据库设计是建立在用户需求的基础之上的,所以要想设计一个好的数据库系统,就要充分做好系统的需求。一般来说,数据库设计可以按照以下几个步骤进行:
(1)确定该系统的E-R模型,画出E-R图。
(2)将E-R模型转换为关系模型。
(3)确定系统中要用到的表并确定表中需要的字段。
(4)确定表的主键以及不能重复的字段。
(5)设置不同表之间的参照关系。
(6)优化自己的设计
住院病人信息管理的数据库设计步骤如下。
(1)打开数据库资源管理器,选中数据库”选项,在该选项上单击右键,弹出的下拉菜单中选择新建数据库”选项。保存并命名为Hospital_System”。
(2)在数据库资源管理器,选择安全性”中的登录”选项,单击右键选择新建登录”选项输入用户信息创建新用户。
(3)打开Hospital_System”数据库中的选项,找到表”选项,单击右键弹出快捷菜单选择新建表”命令,在新弹出的窗口中设置表的详细信息,包括各个字段的名称、数据类型、长度等信息,最后输入表名并保存。
(4)打开数据库的表”选项,选中要编辑的表,单击鼠标右键。在弹出的快捷菜单中选择编辑前200行”然后在返回的窗口中输入表的内容信息,然后关闭显示窗口,系统自动保存表中的信息工作。
这样名为Hospital_System的数据库就建成了,并在该数据库中输入了有用的信息。
3.4.2 E-R图
实体关系模型E-R图是抽象现实世界的有力工具。它通过画图的方式,将实体以及实体的关系描述出来,为客观世界建立概念上的模型 [10] 。下面是本系统的E-R图:
图3-12 系统用户实体图
图3-13 菜品实体图
图3-14 药品实体图
图3-15 医生开出的药品实体图
图3-16 病人基本信息实体图
图3-17 病人诊断信息实体图
图3-18 病人用药实体图
图3-19 整个系统实体关系图
3.4.3建立数据表
根据E-R模型,设计数据库中的表,数据表是一个数据库中的基本对象,在数据库设计中,数据表的设计是关键
在设计数据库时,关键的步骤就是要确保数据正确地分布到数据库的表中。 使用正确的数据结构,不仅便于对数据库进行相应的存取操作,而且可以极大地简化应用程序的其他内容(查询、窗体、报表、代码等)。正确进行表设计的正式名称就是数据库规范化”。
规范化数据库设计基本的要求是使用规范化的方法来将数据分为多个相关的表,将关系表达式规范化,最低要到达到第三范式。大体可以通过拥有窄表的多少来判断数据库是否是规范化的数据库。数据库中的每张表都应该有一个并只有一个主键,所谓的主键就是:表中的一个列或几个列的组合,其值能唯一地标识表中的每一行。并且,每张表最好应具备有一个id列,便于多表的关联。每一张表只能够用来存储同一数据类型的数据,最好避免空列,这样才会使自己的数据库更加合理、高效。
住院病人信息管理系统需要实现:住院登记、住院药品管理、膳食管理、住院收费、办理病人出院、 查询病人住院信息、用户管理等功能,包括的数据比较多,所以本系统的数据库由8个表组成的,每一个表都有唯一的主关键字,有些表之间存在参照关系。下面是本系统所具有的数据表:
表3-1 系统用户表
字段 列名 数据类型 长度 说明
1 ID int 4 编号
2 Username nchar 30 用户名
3 Password nchar 30 用户密码
4 Ident nchar 30 用户身份标记
表3-2 药品管理表
字段 字段名 数据类型 长度 说明
1 Tiaoma nchar 15 药品条码
2 Mname nchar 40 药品名称
3 Price money 药品单价
4 Address nchar 40 药品生产商
5 Way nchar 80 药品使用方法
6 Guige nchar 80 药品的规格
7 Type nchar 80 药品的类型
8 Date nchar 30 质检日期
表3-3 菜样信息表
字段 字段名 数据类型 长度 说明
1 Dishname nchar 40 菜样名称
2 Photo nchar 40
3 Price money 菜样单价
表3-4 病人基本信息表
字段 字段名 数据类型 长度 说明
1 identitycard int 4 编号
2 pname nchar 15 姓名
3 psex nchar 6 性别
4 page int 4 年龄
5 bedcard nchar 15 床位号
6 poffice nchar 20 科室
7 pdoctor nchar 20 主治医师
8 pdata date 入院日期
9 doctorid nchar 20
表3-5 病人诊断信息表
字段 字段名 数据类型 长度 说明
1 identitycard nchar 40 病人编号
2 doctor nchar 20 诊断医师姓名
3 doctorid nchar 20 诊断医师编号
4 diagnose nchar 1000 诊断内容
5 date date 诊断时间
表3-6 病人使用的药品信息表
字段 字段名 数据类型 长度 说明
1 identitycard nchar 40 病人编号
2 pname nchar 20 病人姓名
3 mename nchar 60 药品名称
4 menumber int 4 药品数量
5 price money 药品单价
表3-7 医生开药临时表
字段 字段名 数据类型 长度 说明
1 tiaoma nchar 15 药品条码
2 mname nchar 40 药品名称
3 price money 药品单价
4 address nchar 40 药品生产商
5 way nchar 80 药品使用方法
6 guige nchar 80 药品的规格
7 type nchar 80 药品的类型
8 date nchar 30 质检日期
10 mnumber int 4 开药数量
表3-8 今日食堂菜样表
字段 字段名 数据类型 长度 说明
1 dishname nchar 40 菜样名称
2 photo nchar 40 菜样图片路径
3 price money 菜样单价
3.5系统安全性设计
3.5.1数据库的完整性
数据库的完整性(Integrity)是指数据的正确性、有效性和相容性。数据的完整性约束主要有实体完整性约束、参照完整性约束、函数依赖约束、统计约束四类[11]。
在住院病人信息管理系统中,实体完整性就是指表的主键要设置、还有一些列不能为空。参照完整性主要有:病人诊断信息表和病人用药信息表中的identitycard”字段要参照病人基本信息表中的identitycard”字段;医生开药临时表中的doctorid”字段要参照系统用户表中的ID”字段;医生开药临时表中的mname”字段要参照药品管理表中的mname”字段;医生开药临时表中的tiaoma”字段要参照药品管理表中的tiaoma”字段等参照关系,让系统中的数据处于安全状态。
3.5.2数据库的安全性
数据库的安全性(Security)是指保护数据库,防止不合法的使用。数据库系统的安全性是和计算机系统的安全性紧密相连的,包括操作系统、网络系统和计算机硬件的安全性。它们之间相互支持的,共同让数据库处在一个安全状态。
SQL Server一般支持三级安全层次,它们分别是:身份认证(与Windows的紧密结合。)、
访问控制(设置数据库访问权限)、对象访问控制(给用户指派对数据库中的对象的访问权限)[12]。
本系统采用了三层控制确保数据库的安全性,第一层是Windows身份验证,打开数据库服务器是要求输入用户名和密码,第二层是在后台Microsoft SQL Server 中实现的,户登录数据库时,要求用户输入合法的用户名和密码。第三层是对象访问控制,不同的用户能访问到的数据库中的数据不一样。
3.5.3统安全性
一个系统的安全性决定了这个系统能不能用于实际应用,只有安全可靠的系统才能被用于实际生活。随着基于Web服务为基础的应用系统被广泛的应用于社会各个行业各个方面,Web系统的安全问题日益凸显,对Web应用系统开展安全性测试能够在很大程度上保证Web服务的安全性[13]。
系统安全性对技术要求较高,本系统只进行了简单的系统安全性控制,通过改进登陆代码中的用户名和密码同数据库比对技术,防止了非法用户通过SQL语句注入手段非法访问数据库。通过登陆过滤手段,实现了不能通过URL访问系统的功能,通过已掌握的技术手段提高了系统的安全性。
第4章 详细设计与实现
4.1身份验证模块
系统中所有的用户都需要通过身份验证才能进入系统,身份验证通过登陆模块实现,用户登陆时只要求用户输入用户名和密码,无需输入自己的身份,这样使系统更加友好。当用户名或密码有误时,系统能给出准确的提示并跳转提示界面。图4-1就是登陆主界面。
图4-1 登录界面
4.2管理系统用户模块
系统的用户管理是由系统管理员完成,本系统中系统管理员拥有最高权,主要功能是管理本系统的使用用户,能对用户信息进行增加、删除、修改、查询。图4-2是其主界面。
图4-2 管理员界面
4.3病人基本信息管理模块
病人信息管理模块主要负责病人的基本信息管理,包括病人住院登记模块、病人结账出院管理模块、病人信息查询模块。
4.3.1护士主界面
护士拥有登记病人住院,病人结账出院,查看病人信息等功能。图4-3是其主界面。
图4-3 护士主界面
4.3.2登记病人住院主界面
登记病人住院工作由护士完成,主要功能是准确的录入病人的基本信息。图4-4是其主界面。
图4-4 登记病人住院主界面
4.3.3病人结账出院主界面
病人结账出院工作由护士完成,病人结账出院需要计算并打印病人的住院费用。图4-5是其主界面。
图4-5 病人结账出院主界面
4.4病人诊断信息管理模块
病人的诊断信息管理模块主要负责管理病人的诊断信息,病人的诊断信息包括医生给病人的诊断信息、开药信息。医生在诊断病人时能查看病人的诊断史。
4.4.1医生主界面
医生能查看自己的真在诊断的病人信息、诊断自己的病人、为自己的病人开药。图4-6是其主界面。
图4-6 医生主界面
4.4.2医生查询病人信息主界面
医生能查看自己病人的诊断信息,根据病人的诊断信息对病人做出诊断。图4-7是其查询病人主界面。
图4-7 医生查询病人信息界面
4.4.3医生诊断病人主界面
医生能对病人做出诊断,能诊断病情,能给针对病人进行开药。图4-8是其界面。
图4-8 医生诊断界面
4.5膳食管理模块
4.5.1食堂管理员主界面
食堂管理员主要负责膳食管理模块,他可以管理菜库,设置今日食堂的菜样,修改自己的密码,查看食堂菜样等。食堂管理员主界面如图4-9所示。
图4-9 食堂管理员主界面
4.5.2添加菜样主界面
菜样管理有食堂管理员完成,能对菜品进行增加、删除、修改、查询。图4-10是其界面。
图4-10 菜样管理界面
4.5.3管理今日菜样主界面
食堂管理员能管理今日食堂的菜样,包括添加和删除。图4-11是其主界面。 图4-11 设计今日菜品主界面
4.6其它功能模块
其它功能模块包括用户修改自己密码和查看食堂菜样模块。
4.6.1用户修改自己信息主界面
每个用户能修改修改自己的信息。图4-12是其界面。
图4-12 用户修改个人信息界面
4.6.2查看今日食堂主界面
登陆系统的用户能通过网络查看今日食堂的菜样。图4-13是其界面。
图4-13 用户查看今日食堂菜样界面
第5章 系统测试
系统测试应该占据制作过程的一半工作量,完整的测试是成功开发一个信息系统的重要保证之一。目前国内很多软件公司都忽视了系统测试,认为其不重要,这是一种错误的做法。
系统测试是将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际环境下,对计算机系统进行一系列的组装测试和确认测试 [14] 。
住院病人信息管理系统模块较多,功能比较复杂,测试需要很长的时间,下面选取核心功能模块进行测试。并列出测试用例和测试结果。
5.1登陆模块测试
登陆模块测试主要测试是当用户输入不同的用户名和密码组合时系统能否给出的正确的提示信息。下表是测试用例和结果:
表5-1 登陆模块测试用例表
用例编号 输入数据 输出结果 预期结果 正确否
1 用户名:admin密码: 111111 密码有误” 密码有误” 正确
2 用户名:admin密码: 123456 跳转到主界面 跳转到主界面 正确
3 用户名:admines密码:123456 用户名不存在” 用户名不存在” 正确
4 用户名:11 or 1=1密码: 空 系统出错 系统出错 正确
5 用户名:空密码:空 用户名不存在” 用户名不存在” 正确
5.2添加用户模块测试
添加用户模块测试主要测试是当添加的用户信息不完整或有误时,看系统能否正确的做出相应的反应。下表是测试用例和结果:
表5-2 添加用户模块测试用例表
用例编号 输入数据 输出结果 预期结果 正确否
1 用户名:空密码: 111111身份:医生 用户名不能为空” 用户名不能为空” 正确
2 用户名:张三密码: 空身份:医生 密码不能为空” 密码不能为空” 正确
3 用户名:admin密码: 123456身份:医生 用户名以存在” 用户名以存在” 正确
4 用户名:张三密码: 123456身份:医生 添加成功” 添加成功” 正确
5.3病人登记住院模块测试
病人登记模块测试主要测试是当病人的基本信息不完整或有误时,看系统能否正确的做出相应的反应。下表是测试用例和结果:
表5-3 添加病人登记住院测试用例表
编号 输入数据 输出结果 预期结果 正确否
1 姓名:李四性别:男年龄:12主治医生:王教授医生编号:110床位号:234住院日期:2014-5-8 登记成功” 登记成功” 正确
2 姓名:李四性别:男年龄:rt主治医生:王教授医生编号:110床位号:234住院日期:2014-5-8 年龄必须为整数” 年龄必须为整数” 正确
3 姓名:空性别:男年龄:34主治医生:王教授医生编号:110床位号:234住院日期:2014-5-8 姓名不能为空” 姓名不能为空” 正确
4 姓名:空性别:空年龄:空主治医生:空医生编号:空床位号:空住院日期:空 再试一次” 再试一次” 正确
5.4病人结账出院模块测试
病人结账出院模块测试主要测试是根据病人编号查询病人的住院信息,并能计算病人住院费用,最后从数据库中删除信息。下表是测试用例和结果:
表5-4 结账出院模块测试用例表
用例编号 输入数据 输出结果 预期结果 正确否
1 编号:13 张三住院信息 张三住院信息 正确
2 编号:空 该病人不存在” 该病人不存在” 正确
4 编号:000 该病人不存在” 该病人不存在” 正确
5.5医生诊断病人模块测试
医生诊断病人模块主要测试医生对病人的诊断详情和用药信息能否正确录入及录入的规范是否正确,医生在诊断自己的病人之前应能够查看该病人的诊断史以及用药信息,然后根据病人的这些信息对病人做出诊断。下表是测试用例和结果:
表5-5 医生诊断病人模块测试用例表
用例编号 输入数据 输出结果 预期结果 正确否
1 诊断:空药名:橘红丸数量:2 诊断不能为空” 诊断不能为空” 正确
2 诊断:心脏病药名:橘红丸数量:2 诊断成功” 诊断成功” 正确
3 诊断:心脏病药名:橘红丸数量:er 数量必须为整数” 数量必须为整数” 正确
4 诊断:心脏病药名:空数量:2 请选择药名” 请选择药名” 正确
5 诊断:心脏病药名:橘红丸数量:2 药品已经开过” 药品已经开过” 正确
5.6用户修改信息模块测试
用户修改信息模块主要是测试用户能否输入原密码,从而修改自己的旧密码,达到修改密码的结果,用户没有权限修改自己用户名,只有管理员有修改用户用户名的权限。下表是测试用例和结果:
表5-6 用户修改信息模块测试用例表
用例编号 输入数据 输出结果 预期结果 正确否
1 用户名:admin原始密码:空新密码: 空确认密码:空 旧密码有误” 旧密码有误” 正确
2 用户名:admin原始密码:123456新密码: 111111确认密码:111111 修改成功” 修改成功” 正确
3 用户名:admin原始密码:111111新密码: 111111确认密码:111111 旧密码有误” 旧密码有误” 正确
4 用户名:admin原始密码:123456新密码: 1111确认密码:111111 两次密码不一样” 两次密码不一样” 正确
第6章 结束语
整个毕业设计完成了,经历了一段每天写代码到深夜的日子,系统不断的出现问题,自己不断的解决问题,过程中有过无数的无助、纠结,最后还是能成功的完成自己的系统设计,这就是对自己努力的最大回报和肯定。鼠标轻轻一点,自己的系统就能在一个页面调到另一个页面,自己有一种小小的满足感,再苦再累都觉得很欣慰。在整个设计实现的过程中自己的感悟不少。
首先,我们要有不怕苦,不怕累的精神,要有超强的毅力,设计的过程中总会出现许多大大小小的问题,有些问题可能只是因为自己的粗心很好解决,更多的问题是技术问题,可能这个技术以前没有用过甚至都没有学过,这就要求我们抱着:只要活着就一定解决这个问题的心态,只有这样才能最终实现自己的系统。
其次,我们要善于学习,自己以前从没有接触过JSP,甚至都没有学过Java语言,拿到这个课题时,自己的基础几乎为零,我知道这对我来说是一个挑战,我相信自己能完成,因为我相信自己的学习能力。开始时在网上搜一些关于Java基础的视频教程,自己认真的观看,对Java中的类、方法、接口等有一定的了解之后就开始看一些JSP语言的视频,后来发现还要学习HTML语言和少量的JS语言,要学的东西很多,自己没有时间将全部的语言都学完再开始动手,基本上一边动手一边学习,不懂的技术问题就百度,百度是最好的老师。
最后,我想说,经过这次毕业设计,我更深刻的认识到了编码规范性的重要,编码规范化要求对所用的语言有较深的理解,知道怎样写代码语句才能更高效,才会有更小的错误率。规范化编码还要求我们重视注释,很多代码当时自己很清楚,等过了一段时间不去看,自己都已忘记,如果没有注释,那就会浪费自己很多时间阅读自己的代码。
虽然,自己的系统还存在一些问题,自己对JSP的理解也不够深刻,但在这次设计中自己处理问题很多方面都得到了一定锻炼,并且自己学到了很多新的知识和技术,这会激励我不断的学习,并在以后的学习和生活中不断的取得更多的进步。
致 谢
从第一个界面的成功运行到整个系统的流程成功走通,不是一时半会能完成的任务。在系统设计实现的过程中,王老师对我帮助了很多。从开题报告的书写到整个论文的完成,老师都给出了许多很有用的建议。对于系统设计,老师也给出了很多具有建设意义的建议。例如:针对系统的医生给病人开药”模块设计,原本自己的设计是要求医生自己输入药品的名称和单价以及详细信息,老师的建议只要医生自己选择药品名称,药品的信息自动在数据库中查询。通过听取老师的建议,自己的系统设计更加合理,功能更加强大。在此,特向指导老师表示诚挚的感谢。
在论文期间,也得到了很多同学的帮助,自己初次接触JSP和HTML,基础为零,好多问题想找资料都不知道从何找起。是我的同学不厌其烦的一次一次帮助我,指导论文应该查看哪些书籍,从哪里找资料。正是在他们的指导下,自己的系统才得以完成。在此,对帮助我的同学表示衷心的感学。
最后,自己查阅了很多参考文献,参考的已经在后面列出来了,自己主要是在中国知网上查找参考论文。在此也要感谢祖国为我们提供了一个良好的学术氛围。
参考文献
[1] 唐明霞.手术病人信息管理系统的开发与应用[J].中国城乡企业卫生,2012, 03:315-316.
[2] Jon Titus.ECN Technical Editor: The Eclipse of stand [J].Journal of Zhongkai Agrotechnical College, 2013, 02:32-35.
[3] 卡梅隆,王净. SQL Server 2008分析服务从入门到精通Step by Step[M].北京:清华大学出版社,2010.
[4] SU Yun-peng,LI Mao-qing. Design and Implementation of Conference Management System Based on B/S Model [J].International Journal of Systems and Control, 2012, 08:13-16.
[5] 布霍恩.赖特著赵明昌译.JSP数据库编程指南[M].北京:北京希望电子出版社, 2004.
[6] 马文刚,谢乐建,管知时.JSP实用编程实例集锦[M].北京:清华大学出版社,2001.
[7] Herbert著.张玉清等译.Java2参考大全[M].北京:清华大学出版社,2002.
[8] 许晓宁. Java Native Interface应用研究[J].计算机科学,2010,10:295-296.
[9] 陈一明. SQL Server数据库应用技巧探讨[J].科学技术与工程 (​http:​/​​/​epub.cnki.net​/​kns​/​Navi​/​ScdbBridge.aspx?DBCode=CJFD&BaseID=KXJS&UnitCode=&NaviLink=%e7%a7%91%e5%ad%a6%e6%8a%80%e6%9c%af%e4%b8%8e%e5%b7%a5%e7%a8%8b _blank​),2012,12:3334-3337.
[10] 孙卓.关于E-R图向关系数据模型的探讨[J].电大理工,2011,4:234-236.
[11] 王惠,霍远.浅议数据库的完整性[J].计算机时代,2004, 11:45-48.
[12] 贾长云,陆卫忠.试论IIS中SQL数据库的安全性[J].计算机与现代化,2013, 01:1245-1248.
[13] 潘陈滨. Web应用系统的安全性测试技术探讨[J].计算机与现代化,2014, 08:3451-3456.
[14] 李志峥,杨社堂.基于B/S结构下的软件测试研究[J].科技情报开发与技术,2009, 16:3451-3456.
附 录
本系统模块很多,代码很长,由于篇幅有限,在这不把每个模块的代码一一贴出了,只贴出一些主要功能模块的代码。
1. 数据库类的代码:
package work;
import java.sql.*;
public class DB {
public static Connection getconn(){
Connection conn=null;
try {
Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);
String dbURL = jdbc:sqlserver://localhost:1433; DatabaseName=Hospital_System;
String userName = sa;
String userPwd = doublecheng;
conn= DriverManager.getConnection(dbURL, userName, userPwd);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static Statement getStatement(Connection conn){
Statement stmt=null;
try{
if(conn!=null){
stmt=conn.createStatement();
}
}catch(SQLException e){
e.printStackTrace();
}
return stmt;
}
public static ResultSet getResultSet(Statement stmt,String sql){
ResultSet rs=null;
try{
if(stmt!=null){
rs=stmt.executeQuery(sql);
}
}catch(SQLException e){
e.printStackTrace();
}
return rs;
}

public static int updata(Statement stmt,String sql){
int rs=0;
try{
if(stmt!=null){
rs=stmt.executeUpdate(sql);
}
}catch(SQLException e){
e.printStackTrace();
}
return rs;
}
public static void close(Statement stmt){
try{
if(stmt!=null)
{
stmt.close();
stmt=null;
}
}catch(SQLException e){
e.printStackTrace();
}
}

public static void close(ResultSet rs){
try{
if(rs!=null)
{
rs.close();
rs=null;
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
2. 用户类代码:
package work;
public class User {
private int uid;
private String uname;
private String upass;
private String utype;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
public String getUtype() {
return utype;
}
public void setUtype(String utype) {
this.utype = utype;
}
}
3. 登陆模块的前台代码:
<%@ page contentType=text/html;charset=GBK%>
<%--登录 --%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+://+request.getServerName()+:+request.getServerPort()+path+/;
%>

 

 


>



 

 

 

 
 

用户名:
 

 

密  码:
 

 

 

 


<%@ include file=copyright.jsp%>



4. 登陆模块的后台控制代码:
package servlet;
import java.io.IOException;
import work.DB;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings(serial)
public class loginser extends HttpServlet {
public loginser() {
super();
}
public void destroy() {
super.destroy(); // Just puts destroy string in log
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = new String(request.getParameter(username).trim().getBytes(iso-8859-1), GBK);
String password=new String(request.getParameter(pass).trim().getBytes(iso-8859-1), GBK);
String type=null;
String sql=select * from login where username=+name+;
Connection conn=DB.getconn();
Statement stmt=DB.getStatement(conn);
ResultSet rs=DB.getResultSet(stmt, sql);
try {
if(!rs.next()){
response.sendRedirect(request.getContextPath() + /loginerrorname.jsp);
}else{
type=rs.getString(ident).trim();
do{
if(!password.equals(rs.getString(password).trim())){
response.sendRedirect(request.getContextPath() + /loginerrorpassword.jsp);
}else{
request.getSession().setAttribute(sessionname,name); //用Session保存用户名
request.getSession().setAttribute(userid,rs.getString(ID)); //保存id
if(type.equals(系统管理员))
{
response.sendRedirect(request.getContextPath() + /main_admin.jsp);
}
if(type.equals(医生))
{
response.sendRedirect(request.getContextPath() + /mian_doctor.jsp);
}
if(type.equals(护士))
{
response.sendRedirect(request.getContextPath() + /main_nurse.jsp);
}
if(type.equals(食堂管理员))
{
response.sendRedirect(request.getContextPath() + /mian_dish.jsp);
}
}
}while(rs.next());
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void init() throws ServletException {
}
}
5. 病人登记住院模块的前台代码:
<%@ page language=java import=java.util.* pageEncoding=GBK%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+://+request.getServerName()+:+request.getServerPort()+path+/;
%>

 

 

 


>









 

 

 

 

住院病人信息管理系统
 
 

管理病人信息
 
 

我的信息
 
 

今日食堂
 
姓   名:


 

性   别:
 

男女
 

 

床 位 号:
 

年   龄:
 

 

科   室:
 

 

主治生:
 

 

住院日期:
 

 

 

 

医生编号:
 

 

>>>
 

>>>
   

>>>
         

>>>
 

>>>
 

登陆用户:<%=request.getSession().getAttribute(sessionname)%>
 

系统时间:
 

||
     


6. 病人登记住院模块的后台控制代码:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import work.DB;
@SuppressWarnings({ serial, unused })
public class pcheckin extends HttpServlet {
public pcheckin() {
super();
}
public void destroy() {
super.destroy(); // Just puts destroy string in log
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(text/html;charset=GBK);
String statues=request.getParameter(statue).trim();
if(statues.equals(updatepatient)){
String pname=new String(request.getParameter(pname).trim().getBytes(ISO-8859-1),GBK);
String idcard=new String(request.getParameter(idcard).trim().getBytes(ISO-8859-1),GBK);
String sex=new String(request.getParameter(sex).getBytes(ISO-8859-1),GBK);
String bedcard=new String(request.getParameter(bedcard).trim().getBytes(ISO-8859-1),GBK);
int age=0;
try{
age=Integer.parseInt(request.getParameter(age));
}catch(Exception e){
PrintWriter out1 = response.getWriter();
out1.println( ;);
}
String offices=new String(request.getParameter(offices).trim().getBytes(ISO-8859-1),GBK);
String doctor=new String(request.getParameter(doctor).trim().getBytes(ISO-8859-1),GBK);
String doctorid=request.getParameter(doctorid);
java.sql.Date sqldate = null;
SimpleDateFormat bartDateFormat = new SimpleDateFormat(yyyy-MM-dd); //讲字符串格式的时间转换为SQLdate形式
String dateStringToParse = request.getParameter(date).trim();
try{
java.util.Date date = bartDateFormat.parse(dateStringToParse);
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
sqldate=sqlDate;
}
catch (Exception ex) {
System.out.println(ex.getMessage());
}
if(pname==||bedcard==||offices==||doctor==){
PrintWriter out1 = response.getWriter();
out1.println( ;);
}else{
String sql=update patient_base set bedcard=+bedcard+, +
pname=+pname+,psex=+sex+, page=+age+,poffices=+offices+,pdoctor=+doctor+,pdata=+sqldate+,doctorid=+doctorid+ +
where identitycard=+idcard+;
Connection conn=DB.getconn();
Statement stmt=DB.getStatement(conn);
int rs=DB.updata(stmt,sql);
if(rs==0){
PrintWriter out1 = response.getWriter();
out1.println( ;);
}else{
PrintWriter out2 = response.getWriter();
out2.println( ;);
}
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}else if(statues.equals(insert)){
String pname=new String(request.getParameter(pname).trim().getBytes(ISO-8859-1),GBK);
String sex=new String(request.getParameter(sex).getBytes(ISO-8859-1),GBK);
String bedcard=new String(request.getParameter(bedcard).trim().getBytes(ISO-8859-1),GBK);
String offices=new String(request.getParameter(offices).trim().getBytes(ISO-8859-1),GBK);
String doctor=new String(request.getParameter(doctor).trim().getBytes(ISO-8859-1),GBK);
String doctorid=request.getParameter(doctorid);
java.sql.Date sqldate = null;
int age=0;
try{
age=Integer.parseInt(request.getParameter(age));
}catch(Exception e){
PrintWriter out1 = response.getWriter();
out1.println( ;);
}
SimpleDateFormat bartDateFormat = new SimpleDateFormat(yyyy-MM-dd); //讲字符串格式的时间转换为SQLdate形式
String dateStringToParse = request.getParameter(date).trim();
try{
java.util.Date date = bartDateFormat.parse(dateStringToParse);
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
sqldate=sqlDate;
}
catch (Exception ex) {
System.out.println(ex.getMessage());
}
if(pname==||bedcard==||offices==||doctor==){
PrintWriter out1 = response.getWriter();
}else{
String sql=insert into patient_base (bedcard,pname,psex,page,poffices,pdoctor,pdata,doctorid) values(+bedcard+,+pname+,+sex+,+age+,+offices+,+doctor+,+sqldate+,+doctorid+);
Connection conn=DB.getconn();
Statement stmt=DB.getStatement(conn);
int rs=DB.updata(stmt,sql);
if(rs==0){
PrintWriter out1 = response.getWriter();
out1.println( ;);
}else{
PrintWriter out2 = response.getWriter();
out2.println( ;);
}
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public void init() throws ServletExceptio{
住院病人信息管理系统
系统管理员
护士
医生
食堂管理员
管理用户
登记入院
结账出院
查询病人
诊断病人
管理菜库
设置菜样
修改基本信息
查看今天菜样
身份验证
输入用户名和密码
提示密码错误
提示用户名错误
管理用户模块
添加用户信息
查看用户信息
删除用户信息
更新用户信息
病人登记住院
录入病人信息
更新病人信息
删除病人信息
病人结账出院
计算病人费用
打印病人信息
删除病人信息
医生诊断管理模快
查询已有病人
查询病人诊断史
诊断病人并开药
膳食管理模块
管理菜库中菜品
设置今天菜样
管理今日食堂
其它功能模块
修改个人信息
查看今日食堂
系统用户
用户ID
用户姓名
用户密码
用户身份
菜品
菜品名
单价
图片名称
药品
药品条码
药品名称
药品单价
生产商
服用方式
药品规格
药品类型
医生开出的药品
药品单价
生产商
服用方式
药品条码
药品名称
药品类型
药品规格
开药数量
病人基本信息
病人科室
主治医生
住院日期
病人性别
病人年龄
病人姓名
病人ID
病人床位号
病人诊断信息
诊断日期
主治医生
医生编号
病人ID
诊断详情
病人用药信息
药品名称
药品数量
药品价格
病人ID
病人姓名

获取项目源文件,联系Q:1225467431,可指导其它毕设,课设

猜你喜欢

转载自blog.csdn.net/u010783228/article/details/86438908