《医疗门诊查询系统(基于JavaEE).doc》由会员分享,可在线阅读,更多相关《医疗门诊查询系统(基于JavaEE).doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流医疗门诊查询系统(基于JavaEE).精品文档.基于JavaEE的医疗门诊查询系统分析与设计摘要随着计算机技术的发展和进步,计算机应用已经涉及到人们生活的各个方面。医疗门诊查询预约系统是通过分析一个医院门诊系统,把数据库,Servlet,Bean,JSP整合在一起,从而实现一个从信息收集,处理到查询的完整的处理方案。该系统集合了患者管理,医生管理,以及病历管理的综合性应用软件。在该系统中,患者可以不用在医院里面排很长的队伍挂号,只要在门诊系统的页面上选择自己喜欢的医生进行预约看病。这样不仅方便了患者,也方便了医生更容易查阅病历和患者资料。更进
2、一步方便了医院的门诊管理,符合信息化时代的软件应用潮流。本系统是基于J2EE的设计方案,使用表示层,逻辑层和数据层三层模式。使用B/S模式,大大减低了服务端的数据处理任务。提供了高性能的处理速度,降低数据库的运行时的开销。使用MS SQL Server 2000作为数据库,Tomcat作为JSP容器。数据库层使用JDBC与底层数据库进行交互,逻辑层封装在Java类中,表示层由JSP实现。关键词:BS模式;JSP;Enterprise JavaBean;三层模式;JDBC目 录第一章 绪 论11.1 引 言11.2 概 述21.3 J2EE概述3第二章 系统运行必要的环境72.1 JSP运行环境
3、的要求72.1.1 对硬件条件和操作系统的要求72.1.2 对软件环境的要求72.2 安装和配置JDK82.3 安装和配置Tomcat92.4 Microsoft SQL Server 的配置11第三章 系统分析与设计133.1 系统功能分析133.2 系统设计思想143.2.1 数据库层-逻辑层-表示层三层结构143.2.2 角色模块设计-设计模式143.2.3 与数据库的连接143.2.4 日志记录153.3 系统模块分析153.4 业务流程16第四章 系统实现与详细设计174.1 数据库设计174.1.1 设计思路174.1.2 表的设计184.1.3 表关系图224. 逻辑层的设计23
4、4.2.1 逻辑层包结构设计234.2.2 与数据库建立连接类DBConnection254.2.3 用户角色类274.3 表达层设计284.3.1 表达层设计概述284.3.2表达层设计中使用的几大JSP对象294.4 系统功能实现与演示30第五章 设计总结35参考文献36致谢37附录A 开题报告附录B 外文资料原文附录C 外文资料译文附录D 源程序代码第一章 绪 论1.1 引 言 管理信息系统(Management Information System)简称MIS,是一个由人,计算机及其他外围设备等组成的能进行信息的收集、传递、存储、加工、维护和使用的系统,是一门新兴的科学,其主要任务是最
5、大限度的利用现代计算机及网络通信技术加强企业的信息管理,通过对企业拥有的人力、物力、财力、设备、技术等资源的调查了解、建立正确的数据,加工处理并编制成各种信息资料及时提供给管理人员,以便进行正确的决策,不断提高企业的管理水平和经济效益。目前,企业的计算机网络已成为企业进行技术改造及提高企业管理水平的重要手段。随着我国与世界信息高速公路的接轨,企业通过计算机网络获得信息必将为企业带来巨大的经济效益和社会效益,企业的办公及管理都将朝着高效、快速、无纸化的方向发展。MIS系统通常用于系统决策,例如,可以利用MIS系统找出目前迫切需要解决的问题,并将信息及时反馈给上层管理人员,使他们了解当前工作发展的
6、进展或不足。换句话说,MIS系统的最终目的是使管理人员及时了解公司现状,把握将来的发展路径。传统的MIS系统的核心是C/S(Client/Server客户端/服务器)架构,而基于Internet的MIS系统的核心是B/S(Browser/Server浏览器/服务器)架构。B/S架构比起C/S架构有着很大的优越性,传统的MIS系统依赖于专门的操作环境,这意味着操作者的活动空间受到极大限制;而B/S架构则不需要专门的操作环境,在任何地方,只要能上网,就能够操作MIS系统,这其中的优劣差别是不言而喻的。基于Internet上的MIS系统是对传统MIS系统概念上的扩展,它不仅可以用于高层决策,而且可以
7、用于进行普通的商务管理。通过用户的具名登录(或匿名登录),以及相应的权限控制,可以实现在远端对系统的浏览、查询、控制和审阅。随着Internet的扩展,现有的公司和学校不再局限于物理的有形的真实的地域,网络本身成为事实上发展的空间。基于Internet上的MIS系统,弥补了传统MIS系统的不足,充分体现了现代网络时代的特点。随着Internet技术的高速发展,因特网必将成为人类新社会的技术基石。基于Internet的MIS系统必将成为网络时代的新一代管理信息系统,前景极为乐观7。1.2 概 述随着计算机技术的发展和进步,计算机应用已经涉及到人们生活的各个方面。软件行业的兴起,各个单位为了提高生
8、产效率,降低生产成本,很多由人来管理的工作都由计算机来完成。医疗门诊查询预约系统是通过分析一个真正的医院门诊系统,运用信息技术,结合软件工程,利用数据库和一些编程语言设计,从而实现一个从信息收集,处理到查询的完整的处理方案。该系统集合了患者管理,医生管理,以及病历管理的综合性应用软件。现实中,很多病患在就医看病的时候都苦恼于大医院的挂号队伍,因为挂号排队延误病情治疗的事情也时有发生,也有很多病患想了解专家门诊的医生情况和经验,来选择自己的就医方向,很多病患不能提前知道该专家医生的就医时间而延误病情的事和打乱自己的就医安排也是存在的。在该系统中,患者可以不用在医院里面排很长的队伍挂号,只要在门诊
9、系统的页面上选择自己喜欢的医生进行预约看病。在系统中没个医生都有自己的看病时间表,病患可以通过医生的时间表来选择自己的就医时间,方便患者安排时间,这样就方便了患者,而医生也可以通过系统查询到预约自己的病患的基本情况,为治疗做好前期准备,为医生成功治疗病患打下基础,这样方便了医生更容易查阅病历和患者资料。每次治疗完毕医生通过简单的电脑操作可以完成一份治疗患者的病历和处方,存入数据库,方便了医院的病历管理,也就方便了医院的门诊管理,符合信息化时代的软件应用潮流2。本系统使用MS SQL Server 和 Tomcat,其中Tomcat是开源软件,可以从网上免费得到其正式的发行版本,而MS SQL
10、Server 是当前使用得最广泛的数据库,其性能,安全性等方面都有很好的保证。Tomcat虽然是开源软件,但许多大型网站也因其稳定的性能和出色的性能而选择它作为专业的JSP容器。由这两者组成的整个系统的底层框架,既能节省开支,配置过程也相对简单。服务器端使用三层体系结构,将业务逻辑从表示层中抽出,使页面,业务逻辑和数据库开发互相独立,并行地进行,这样可以大大减少开发时间。同时这种设计方法降低了三层之间的耦合层度,日后对某一层的修改,扩充时,对其他层可以只产生很小的影响4。使用面向对象技术,将各个角色(医生,患者,管理员)封装成类,这样能帮助程序员更直观地去理解整个业务流程,将重点放在业务逻辑的
11、处理上,降低了开发难度,这样也便于将来的扩展。而且该系统的一些亮点:(1)在逻辑层实现了一个简单的日志记录系统,可以将任何信息记录到指定的日志文件中,方便服务器程序的跟踪和调试,同时可以记录一些重要的事物信息(比如管理员登陆,重要信息的删除等),以便将来需要是查询。(2)逻辑层实现时使用事务(Transaction)保证数据的完整性。(3)服务器端采用数据库,事务逻辑,用户截面相互独立的结构,各个模块自身扩充方便,且互相之间耦合度非常低,对逻辑层稍做扩充就可以实现一个功能更完善的系统。(4)使用单例模式(Singleton Design Pattern)设计逻辑层,大大降低数据库运行的开销。总
12、体来说,本系统是基于J2EE的设计方案,使用表示层,逻辑层和数据层三层模式。使用B/S模式,使用MS SQL Server作为数据库,Tomcat作为JSP容器。数据库层使用JDBC与底层数据库进行交互,逻辑层封装在Java类中,表示层由JSP实现。1.3 J2EE概述JSP技术是由Servlet技术发展起来的,自从有了JSP后,在Java服务器端编程中普遍采用的就是JSP,而不是Servlet。因为JSP在编写表示页面时远远比Servlet简单,并且不需要手工编译,目前Servlet主要用于做视图控制器,处理后台应用等。由于JSP构建在Servlet上。所以它有Servlet所有强大的功能1
13、。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记,就构成了JSP网页(*.jsp)。JSP基于强大的Java语言,具有良好的伸缩性,与Java Enterprise API紧密地集成在一起,在网络数据库应用开发领域具有得天独厚的优势,基于Java平台构建网络程序已经被越来越多的人认为是未来最有发展前途的技术1。从JSP这几年的发展来看,JSP已经获得了巨大的成功,它通过和EJB等J2EE组件进行集成,可以编写出处理具有大的伸缩性,高负载的企业级应用。JSP技术在多个方面加速了动态Web页面的开发。通过分析和总结,列出了以下几点说明J
14、SP的特点。(1)将内容的生成和显示进行分离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBean组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Bean中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和小脚本中,生成所请求的内容,并且将结果以HTML页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保护任何基于HTML的Web浏览器的完全可用性。(2)
15、生成可重用的组件绝大多数JSP页面依赖于可重用的,跨平台的组件来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使用这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。(3)采用标识简化页面开发Web页面开发人员不一定都熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是在易用的,与JSP相关的XML标识中进行动态内容生成是所需要的。标准的JSP标识能够访问和实例化JavaBean组件,设置或者检索组件属性,下载Applet,以及执行同其他方
16、法更难于编码或耗时的功能。通过开发定制标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样执行特定功能的构件来工作。(4)JSP能提供所有的Servlets功能与Servlet相比,JSP能提供所有的Servlets功能,它比用Println书写和修改HTML更加方便。此外,您可以更明确地进行分工,Web页面设计人员编写HTML,只需要留出空间让Servlets程序员插入动态部分即可。(5)健壮的存储管理和安全性由于JSP页面内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有优点,包括健壮的存储管理和安
17、全性。(6)一次编写,随处运行作为Java平台的一部分,JSP拥有Java编程语言“一次编写,随处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,但并不影响当前的应用。(7)JSP的平台适应性更广这是JSP与ASP的优越之处。几乎所有的平台都支持Java,JSP+Beans,它们可以在任何平台下通行无阻。Windows NT下的IIS通过一个插件就能支持JSP,例如JRUN或者ServletExec,著名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在Windows NT,UNIX和Linux上,因此JSP有更广泛的
18、运行平台。从一个平台移植到另一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标准的字节码,与平台无关。(8)Java中连接数据库的技术是JDBC很多数据库系统带有JDBC驱动程序,Java程序通过JDBC驱动程序与数据库相连,执行查询,提取数据等操作。Sun公司还开发了JDBC-ODBC Bridge,用此技术Java程序就可以访问带有ODBC驱动程序的数据库,目前大多数数据库系统都带有ODBC驱动程序,所以Java程序能够访问如Oracle,Sybase,MS SQL Server和MS Access等类型的数据库。(9)简单易学随着JSP 2.0中标签语言的出现
19、,即使不懂Java的程序员也能编写出功能完善的JSP应用2。EJB(Enterprise Java Bean,企业Bean),是基于Java的服务器端组件架构技术。借助于EJB,开发者能够轻松构建企业级的,分布式组件应用。与此同时,在不用自身开发复杂分布式组件框架的前提下,开发者能够开发架构灵活,运行可靠及安全的应用系统。对于服务器端开发而言,EJB引入了快速应用开发(Rapid Application Development,RAD)模型。因此,在Java应用服务器提供商提供的分布式基础框架的基础上,开发者能够快速,轻松地构建服务器端组件。EJB的重要设计初衷是保证应用能够在任一提供商提供的
20、企业中间件服务上畅行无阻,而且便携性,可重用性都是一流的。EJB仅仅是J2EE(Java 2 Platform,Enterprise Edition)的组成部分之一。其中,J2EE平台规范是由JCP(Java Community Process,Java工业标准组织)制定。J2EE平台规范使命是,提供平台独立的,便携的,多用户的,安全的,遵循标准的企业级平台。而且,它必须基于Java和在服务器端的部署。J2EE只是规范,不是产品。J2EE规范定义了开发企业级软件产品的规则。J2EE应用服务器供应商需要在他们的J2EE兼容产品中实现J2EE规范。J2EE是由一套健壮的中间件服务构成的,它使得服务
21、器端应用开发者能够高效,快乐地开发应用。为了使开发者能够进一步理解J2EE的重要性,列举出J2EE兼容实现必须提供的一些重要技术。如EJB,用于XML RPC的Java API,Java远程方法调用(RMI)和RMI-IIOP,Java命名和服务接口(JNDI),Java数据库连接(JDBC),Java事务API,Java消息服务,Java Servlet,JSP,Java IDL以及J2EE连接器架构(JCA)等。J2EE就是通过以上大量的组件来构件一个企业级的应用4。图1.1 J2EE应用部署场景第二章 系统运行必要的环境本章主要介绍JSP开发环境的搭建。介绍JSP对运行环境的要求。讲述J
22、SP开发和运行环境的安装配置,并且介绍当今流行的JSP运行环境的安装和配置,以及集成开发环境的设置以及数据库的安装和配置。2.1 JSP运行环境的要求2.1.1 对硬件条件和操作系统的要求 JSP环境对硬件要求不是很高,所以开发成本比较低,比如CPU只要求使用586或更高级别的处理器;内存大概64MB及其以上水平,如果使用WebLogic或者WebSphere配置要求256MB以上;硬盘大概500MB以上,根据不同的服务器要求不同,如果使用WebLogic或者WebSphere则要求硬盘空间大概1GB空间;当然机器还要配置适合通信的网卡,毕竟JSP是网络通信与信息技术的媒介。 由于Java具有
23、跨平台的特点,所以只要能够安装JDK,就能在此安装JSP服务器。JSP服务器能够运行在目前绝大多数的操作系统上,目前在普通用户中用到的系统绝大多数为Windows系列和UNIX系列11。2.1.2 对软件环境的要求 要使用JSP,在服务器端和客户端都必须有对应的运行环境。服务器端主要是Servlet兼容的Web服务器,客户端主要是浏览器。表2-1 对软件环境的要求Web浏览器任何支持HTML TABLE和FORM元素的浏览器,浏览器应支持如下HTML:Frames;CookieTables客户端的图片映射文件上载典型情况下使用IE6.0和Netscape 7.0 续表2-1Web服务器BEA
24、WebLogic 8.1IBM WebSphere Server 5.5Apache Tomcat 5.0Apache Web Server JservAllaire Jrun 3.0ATG Dynamo ApplicationBluestone SapphireGemStone J4.0Java Web Server 2.0Resin 数据库Oracle Sybase Microsoft SQL Server 2000InformixDB2Mysql Microsoft AccessJava Developer Kit(JDK)Jdk1_4_2-win.exeJdk1_4_2-unixJdk
25、1_4-os22.2 安装和配置JDK JDK中包含了Java开发中必需的工具和Java程序运行环境(JRE)。可以从SUN公司网站免费下载JDK1.4.2。 JDK的安装特别简单,和安装应用程序软件没什么区别,不过JDK的安装路径一定要设好,方便以后环境变量的设置。 安装好JDK后,还需要在环境变量中进行对应的配置。就以本次毕业设计为例。JDK安装在D:j2sdk1.4.2。 主要进行以下配置: (1)设置JAVA_HOME环境变量 (2)设置CLASSPATH环境变量 (3)更新PATH环境变量的值 JAVA_HOME表示Java安装目录,其他的应用程序如果需要使用Java运行环境,首先获
26、得JAVA_HOME变量的信息,然后确定执行的路径。 在鼠标右键单击“我的电脑”,在属性栏的高级选项中可以选择环境变量的设置,新建一个系统变量或者用户变量,名称为JAVA_HOME,它的值为D:j2sdk1.4.2。如图:图2.1 JAVA_HOME变量设置 然后建立一个CLASSPATH的变量,它表示搜索Java类的路径,这个路径可以包含一些Jar归档文件,也可以是一个目录。在应用程序执行是,往往会动态地在CLASSPATH中添加一些自己需要的路径。在本机上CLASSPATH的值为“.;d:j2sdk1.4.2libtools.jar;d:j2sdk1.4.2libdt.jar;” (.;一
27、定不能少)。图2.2 CLASSPATH变量设置 当以上都配置好了,我们可以测试下Java环境是否配置成功。我们可以在运行中进入命令提示符cmd下面。输入java version回车,看是否能看到当前JDK的版本。如果看见就配置成功了3。2.3 安装和配置Tomcat Tomcat服务器是当今使用最广泛的Servlet/JSP服务器。它运行稳定,性能可靠,是学习和中小企业的最佳选择,而且是开源程序,下载免费,大大降低系统的开发成本。我们可以从http:/jakarta.apache.org/tomcat下载Tomcat 5.0 服务器。安装也很方便。本次设计Tomcat安装目录是D:Tomca
28、t。 安装完成以后,把Tomcat里面的类包(*.jar文件)包含到环境变量的CLASSPATH里面。这些Jar文件都在D:Tomcatcommonlib目录下。 然后运行Tomcat程序,启动Tomcat。在IE中,输入http:/127.0.0.1:8080或者http:/localhost:8080。如果出现Tomcat的欢迎页面,就表示Tomcat的安装和配置是正确的。图2.3 测试Tomcat是否安装成功 当Tomcat配置成功以后,就要在%Tomcat%目录下的webapps下面建立一个虚拟目录,来方便将来程序的开发。本次设计是医院门诊系统,所以我们在webapps下面新建立一个叫
29、hospital的文件夹,然后使用Tomcat Administrator tools来建立关于hospital的虚拟目录。这样以后我们的程序就可以在hospital文件夹下面进行,当设计完成以后,只要在IE里面输入http:/localhost:8080/hospital就可以看到你所设计的系统程序的实现了3。图2.4 Tomcat Administrator tool页面和hospital的虚拟目录2.4 Microsoft SQL Server 的配置 本节不对SQL Server的安装做过多的赘述,本节介绍如何让SQL Server能加入到JSP运行的集成环境中来。当安装好SQL Se
30、rver程序之后,由于JSP要与SQL Server集成,进行对数据库的操作,就必须下载Microsoft SQL Server 2000 Driver for JDBC的驱动,微软的官方网站提供免费下载。安装该程序之后,把安装目录里面lib下面的3个驱动jar文件拷贝到你所开发的JSP程序目录下面的WEB-INF文件夹下面的lib文件夹下。这3个文件分别是:mssqlserver.jar;msbase.jar;msutil.jar。然后在环境变量的CLASSPATH变量里面包含这3个文件的初试路径。这样我们就可以在以后的程序开发过程中,调用Bean文件或者通过Servlet来进行对数据库的连
31、接和操作9。值得注意的是如果是老版本的SQL Server,可能会出现与Tomcat和JSP连接失败的故障,你可以通过Telnet 127.0.0.0:1433指令来测试数据库的连通性,在本次设计时这个问题出现过,如果连接失败,就应该给SQL Server打Service patch 3和Service patch 4补丁。一般这个问题打上SP3和SP4补丁就基本能够解决,而且Telnet也会成功。本次设计的这个问题也是这么解决的。图2.5 三个SQL Server的JDBC驱动的放置位置第三章 系统分析与设计3.1 系统功能分析根据对医院门诊流程的分析及客户的要求,整个系统需要实现以下功能。
32、软件的整体功能,系统要操作简单,要有友好的界面,系统的操作者的权限层次要有明确的分类,进入软件时要进行身份验证。而且出于对患者个人隐私的负责,患者病历记录只能在患者就医期间由主治医生调阅,其他任何人包括管理员无权查阅。这样使的系统更具有人性化,因为系统中三个角色之间没有联系,所以设置三个独立操作的角色对象。(1)患者角色能进行的对象操作可以联机注册成为用户,设定自己的登录名及密码。可按医生姓名自定义查询。可基于查询结果进行预约,若指定医生当日预约量已满,则预约失败。预约结果随机返回给患者。可对已经进行预约的情况查看或撤消。预约成功后可查询主治医生信息,病例信息。(2)医生角色可查看预约患者的情
33、况。可查询患者病例。可创建患者病历。可对患者的病例进行修改。(3)管理员角色有固定的帐号,直接在数据库添加,不能注册成管理员,可以添加和删除医生帐号,对医生用户进行管理。但不能管理患者用户,保证患者的隐私。3.2 系统设计思想3.2.1 数据库层-逻辑层-表示层三层结构 服务器端三层结构及之间的关系如图3-1所示。JDBCServletJSPSQL Server图3.1 服务器端体系结构3.2.2 角色模块设计-设计模式整个系统中有三种用户:医生、患者、管理员,他们之间没有相互的操作,因此可以封装到各自的类中去。dboperation包中设计了一个抽象父类DBOperation,具体的角色类(
34、Admin、Patient、Doctor)从它继承。将它的子类所公用的方法划分成两类进行设计。其中一类方法在各个子类内部的具体实现时间,这些方法被直接设计在DBOperation类中,供子类继承;另一类方法在各个子类内部的具体实现不相同,这些方法被设计成抽象方法,由子类负责实现。3.2.3 与数据库的连接设计一个类只负责与数据库的连接工作,当与数据库成功连接后,该类将能返回一个可靠的数据库连接对象供其他类使用。每当用户开始操作,即登录成功就开始连接数据库,数据库的连接贯穿整个用户操作的全过程,不会是每个操作进行一次连接,这样太消耗数据库资源,只到用户完成操作,注销退出后才断开数据库连接。3.2
35、.4 日志记录为了便于调试与服务器信息的记录,设计一个类负责将需要的信息记入本地硬盘上的日志文件中。在开始系统运行开始,日记系统就开始记录,记录在log文件夹里面,存放格式是*.txt文件,当用户的每个操作都会记录到日记里面,不管是正确操作,错误操作还是误操作,都会记录。而且连系统的异常和数据库异常都会记录在日志上,这样方便管理员的系统维护工作。而且日志每条记录都显示实时的时间。3.3 系统功能分析根据系统所要求实现的功能要求,不同的用户具有不同的操作权限,本系统主要划分为三大用户模块:患者、医生、管理员,模块图如下所示:登录注销患者医生管理员注册查询医生信息预约查询预约信息取消预约查询主治医
36、生信息查询预约患者信息创建病历查询患者病历修改病历删除病历添加医生帐号删除医生帐号图3.2 系统功能模块划分3.4 业务流程根据现实的医院门诊业务流程,以及根据系统功能模块的分析,规划出该系统的业务流程图是是否否是否未注册是是否登录系统输入帐号,密码输入注册信息注册成功预约取消预约成功登录成功患者医生管理员病历信息坐诊信息患者信息预约队列信息医生信息取消?用户已存在?输入信息正确?已预约?输入正确?有合适的时间?查询预约信息查询医生信息预约预约成功?否是否是否已注册 图 3.3 业务流程图第四章 系统实现与详细设计4.1 数据库设计当一个系统涉及数据库时,其运行效率、冗余程度、可靠性、稳定性等
37、评价指标除了与上层的代码有关外,更多地会受到低层数据库效率的影响。因此,一个好的数据库设计能够让你的系统跑的更顺畅、稳定5。4.1.1 设计思路一、确定各实体间的关系首先确定各个实体之间的相互关系,这是设计好一个数据库的基础。实体之间的关系图如图4-1所示mn患者医生管理员有有病历预约信息可预约数量有有管理治疗管理nnn111111mnn图4.1 实体关系图二、将实体和关系转化为表将各个角色的所有信息分别放在独立的表中,其中包括该角色的全部信息。选定一个字段作为主键,这个字段存储的信息在整个表中两两必须相异,比如本次设计中,医生编号(DID)等。如果表中没有此类信息,可人为加入惟一的ID用于标
38、志,比如本次设计中的PID、AID、QID、HID等。三、主键是唯一的依赖性保证表中其他字段只与主键有关系,如果一组信息同时与一个以上的表或者一个表中一个以上的字段有关系,则必须将这组信息抽出去独立构成一张表。四、指定索引对所有会成为查询关键字的字段进行索引,以提高查询效率。4.1.2 表的设计一、医生表(doctor)用来存储医生个人信息,其中“Password”字段在记录插入时与“DID”字段信息相同,因此医生在第一次登录后应该及时地更改自己的密码表4-1 医生表结构字段名类型备注约束条默认值DIDVarchar(5)医生编号PKNameVarchar(12)姓名索引PasswordVar
39、char(20)登录密码初始=DIDSextinyint性别1-男 0-女1LevelVarchar(12)医生职称SectionVarchar(20)所属科室索引SpecialismVarchar(20)专家门诊科目PhoneVarchar(15)联系电话可为空AgeInt(4)年龄0二、患者表(Patient)表4-2 患者表结构字段名类型备注约束条件默认值PIDIdentity类型患者编号PKNameVarchar(12)姓名UsernameVarchar(20)登录用户名索引PasswordVarchar(20)登录时密码AgeTinyint(4)年龄0 续表42字段名类型备注约束条件
40、默认值SexTinyint(4)性别1-男 0-女1AddressVarchar(20)家庭地址可为空PhoneVarchar(15)联系电话可为空值得注意的是PID设置成Identity类型是为了添加患者记录时,患者编号能自动增长。这样对患者注册时提供方便,而且又是PK,又方便数据库操作。三、病历记录表(history)病历记录表记录了患者的病历信息,以doctor字段与doctor表建立关系,以patient字段与patient表建立关系。当finished字段设为“1”时,逻辑层将不能对记录进行修改,只能查询。表 4-3 病历记录表结构字段名类型备注约束条件默认值HIDIdentity类
41、型病历记录编号PKDoctor Varchar(5)主治医生编号索引DescriptionVarchar(20)症状Diagnose Varchar(20)诊断PatientInt(8)患者编号索引0Rx Varchar(20)处方Finished Tinyint(1)就诊是否结束1-是 0-否0四、预约记录表(pinqueue)预约记录表记录了已预约但尚未创建病历的患者的信息。在这一阶段患者可以取消预约,而医生创建病历也会删除记录,这里对预约就诊时间(Day字段)的约束条件,其取值范围被限定在06之间。表4-4 预约记录表结构字段名类型备注约束条件默认值QID Identity类型记录编号P
42、KDoctor Varchar(5)主治医生编号索引 续表44字段名类型备注约束条件默认值PatientInt(4)患者编号索引0DateDatatime预约时间DayTinyint(1)预约就诊时间ApTinyint(1)预约就诊时间0-上午 1-下午五、管理员表(administrator)管理员表存储了与管理员有关的信息,如用户名、密码、电子邮件、真实姓名 等。注意这里将管理员登录用户名设为索引,目的是为了提高查询时的效率。表4-5 管理员表结构字段名类型备注约束条件默认值AIDIdentity类型管理员编号PKUsername Varchar(20)登录时用户名索引Password V
43、archar(20)登录密码Email Varchar(20)电子邮件NameVarchar(12)姓名Phone Varchar(15)联系电话可为空六、医生最大可预约数量表(appointment)和当前可预约数量表(curappointment)这2个表存储了医生每天可预约的最大数量和当前可预约数量,在逻辑层中不提供对其的修改操作,只能在管理员添加医生帐户时输入。以DID字段与doctor表中建立关系。而对于curappointment表,逻辑层提供修改方法。即医生的可预约数量要与患者的预约和取消预约操作相联系。表4-6 医生最大可预约数量表结构字段名类型备注约束条件默认值DIDVarchar(5)医生编号PKSunATinyint(1)周日上午0SunPTinyint(1)周日下午0MonATinyint(1)周一上午0续表46字段名类型备注约束条件默认值MonPTinyint(1)周一下午0TurATinyint(1)周二上午0TurPTinyint(1)周二下午0WebATinyint(1)周三上午0WebPTinyint(1)周三下午0ThuATinyint(1)周四上午0ThuPTinyint(1)周四下午0FriATinyint(1)周五上午0FriPTinyint(1)周五下午0SatATinyint(1)周六上午0SatP
限制150内