毕业设计(论文)-JAVA社区医疗信息服务管理系统设计.doc_第1页
毕业设计(论文)-JAVA社区医疗信息服务管理系统设计.doc_第2页
毕业设计(论文)-JAVA社区医疗信息服务管理系统设计.doc_第3页
毕业设计(论文)-JAVA社区医疗信息服务管理系统设计.doc_第4页
毕业设计(论文)-JAVA社区医疗信息服务管理系统设计.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

编号:03023247河南大学2007届本科毕业论文社区医疗信息服务管理系统开发Development of Community Medical Information Service Management System论文作者姓名: 作者学号: _ 所在学院:计算机与信息工程学院 所学专业:计算机科学与技术 导师姓名职称: 论文完成时间:2007年5月20日 2007年5月20日河南大学2007届毕业论文(设计、创作)开题报告(由学生本人认真填写)学号姓名导师姓名职称开题时间2006年12月1日课题题目社区医疗信息服务管理系统开发课题来源导师指定 自定 其他来源课题的目的、意义以及和本课题有关的国内外现状分析: 目的:将学习的理论知识应用于实际,提高自己独立分析问题、解决问题的能力。意义:通过课题研究及系统开发,将提高自己对计算机行业的理解,并对业务流程有具体的认识。使理论和实践相得益彰,相互促进。国内外现状分析:医疗信息服务在当今社会起着越来越重要的作用,而社区医疗信息服务平台的建立也成为其中一个重要趋势。医疗卫生是一个专业性非常强的领域,老百姓所掌握的医疗卫生知识非常有限,获取渠道不足,因此存在着老百姓看病难的问题。无论在国内,还是在国外,医疗服务都被提上了日程,而本课题的研究也正是一个生动的体现。相信不久此类系统将会在社会上流行开来。研究目标、研究内容和准备解决的问题:研究目标:经过深入社会调研,并对当今医疗现状进行分析,根据社会需求,将开发出一个具体的社区医疗信息服务管理系统,它将拥有友好的、人性化的用户界面,对各种信息提供便捷的查询方式。研究内容:经过大量的调查,搞清用户需要医疗系统的哪些信息,并为其建立相应的数据库和查询方式,满足用户需求。准备解决问题:课题要解决数据库设计及其与程序的链接,各模块间信息传递,模块优化等问题。拟采取的方法、技术或设计(开发)工具:拟采取编程语言Java,开发工具Eclipse,利用其Swing插件,设计出合理的模块,数据库采用Microsoft Office Access。此系统应以信息查询为主,拟设计出一些自定义模板,呈现结果信息,来避免过多窗体的弹出,完成项目预期开发目的。预期成果:1、毕业设计成果“社区医疗信息服务管理系统”软件2、毕业论文进度计划:2006.12.1 - 2007.4.11:完成需求分析及数据库部分的设计2007.4.12 - 2007.4.30:完成各模块的设计并实现各模块优化及整合2007.5.1 - 2007.5.15:整理资料、撰写毕业论文2007.5.16 - 2007.5.25:根据导师要求,完善毕业设计和论文指导教师对选题报告的意见:该生考查了社会需求,选题很有新意,符合开题要求,同意开题。 指导教师签名: 2006年12月 1日开题报告II目 录摘 要IABSTRACTII第1章 绪论11.1 系统开发的可行性分析11.1.1 开发背景11.1.2 技术上的可行性21.1.3 市场需求及风险分析21.2 开发工具简介21.2.1 Java编程语言简介21.2.2 Eclipse编程工具简介31.2.3 Microsoft Office Access简介3第2章 数据库设计52.1 数据库需求分析52.2 数据库详细设计52.2.1 管理员表(USERS)52.2.2 用户表(PatientsInfo)62.2.3 医生表(DoctorsInfo)62.2.4 疾病表(Diseases)62.2.5 免疫表(Immunities)72.2.6 纪录表(Statistic)72.2.7 家庭档案表(FamiliesInfo)7第3章 系统功能设计及实现介绍93.1 用户模块93.1.1 用户模块的分析与设计93.1.2 用户登录113.1.3 医生信息查询113.1.4 疾病信息查询113.1.5 近期免疫情况查询143.1.6 近期常见病查询143.1.7 家庭档案查询及建立153.2 管理模块173.2.1 管理模块的分析与设计183.2.2 管理模块各功能及实现183.3 自定义类的实现213.3.1 Myconn类213.3.2 PanelDisplayInformation(ResultSet rs)类22第四章 系统测试254.1 功能测试254.2 性能测试254.2.1 存在问题254.2.2 改进方法264.3 用户界面测试264.4 安全性测试26结 论27参考文献28河南大学本科毕业生学士学位论文摘 要随着人们生活水平的提高,身心健康越来越被重视,社区医疗信息服务也倍受关注,本文所介绍的“社区医疗信息服务管理系统”旨在为遍布国内的各级各类社区医疗信息服务站提供一个使用方便、功能完善的现代化管理工具;方便快捷地为社区民众提供疾病的群防群治、医疗保健等各种益于身心健康的信息。本文首先对所开发的“社区医疗信息服务管理系统”的可行性,从理论上、技术上进行了详细的分析,建立其数学模型、数据结构;对系统所涉及到的各种操作算法进行筛选;然后对在此基础上所设计的系统开发方案进行了详细的论述;对所选的软件开发工具的合理性进行了概要介绍;对开发过程中所涉及到的诸多技术要点进行了分析;最后对于系统的调试、测试、使用方法、尚存问题及其改进措施等进行了简要的叙述。关键词 Eclipse编程工具,数据库,动态数据交换,医疗信息服务 ABSTRACTAlong with the improving living standard, more and more people realized importance of the body and mind health. Therefore corresponding service of community medical information has received double attention. The aim of the “Community Medical Information Service Management System” which is introduced in this paper is to provide a modernized management tool. It is convenient to use. And it has perfect merit ability. The system can be used in various kinds of community medical information service stations, which spread all over the nation. It offers many sorts of information conveniently. It benefits body and mind health such as the disease guards and the health protection of medical treatment.Firstly, this paper analyzed the feasibility of the “Community Medical Information Service Management System” both on theory and technology in detail, established the mathematical model and data structure, and screened the various kinds of operation algorithm used in the system. Secondly, the development scheme which is designed based on the foundation is discussed in detail. The development tools selected are introduced briefly and the technique points are analyzed. Finally, the debug, test, methods, existent problems and improvement measures are narrated concisely.Keywords programming tool of eclipse, database, dynamic data exchange, medical information service第 II 页河南大学本科毕业生学士学位论文第1章 绪论医院作为人类文明与进步的重要象征和载体,越来越显现出它在社会上的重要地位和职能,并且也同其他行业一样受到了这股网络浪潮的冲击。随着身体健康越来越被重视以及医疗改革的不断深入,社区医疗服务逐渐成为医疗系统日常工作的一个重要部分。本系统旨在为民众提供一个易于查询的医疗信息服务平台。1.1 系统开发的可行性分析医疗卫生是一个专业性非常强的领域,由于老百姓所掌握的医疗卫生知识非常有限,获取相关知识的渠道也不多,因此存在许多老百姓看病难的问题。在一定程度下,如果老百姓掌握了一些常见疾病的治疗信息,他们就不会变得那么束手无策。本系统就是本着方便老百姓查询医疗信息、让老百姓多了解医院的信息而设计的。社区医疗信息服务管理系统的开发将为以后企业对此类软件的开发提供模型。1.1.1 开发背景老百姓获取医疗信息的途径大多是通过频繁的到医院各科室咨询医生。由于医院资源有限,医生又要忙于其他患者的治疗,因此无暇再反馈对医疗信息的提问。若在社区建立一个医疗信息服务站,用于满足用户对医疗信息以及医院信息的查询,就会大大方便百姓对信息的获取。首先,这样一个系统必须有较友好的界面,最好提供一个用户较熟悉的界面来满足这种需求;其次,系统必须有一定的智能性。由于用户所了解的信息难免不完善,因此该系统要能进行模糊查询;最后,系统管理应尽可能便捷,能实现对用户所需信息的更新。1.1.2 技术上的可行性该系统是运用Java开发语言、使用现在较流行的开发工具Eclipse、采用Microsoft Office Access数据库来进行设计的。Eclipse中的Swing控件提供了可视化编程的简单方法。通过拖拉控件,就可以实现友好的用户界面,当然也要合理安排各层次,系统在这方面做的很是不错。系统主要以查询为主,通过学习及借阅参考书,可以实现系统与数据库的链接以及数据库的操作,并实现模糊查询,以满足用户查询需求的多样化。管理员对系统的管理无非就是对信息的增、删、改、查,查询信息较琐碎,但大致操作相同,系统封装一些自定义类,帮助实现对信息的提交。1.1.3 市场需求及风险分析现今国内外同类软件都已出现,并提供了很好的平台以使用户能够从各个方面了解医疗信息。但此类软件在我国各医疗部门还未盛行,仍有许多百姓不知道怎样便捷的获取医疗信息,市场需求仍然很大。1.2 开发工具简介一个好的开发语言和开发环境会大大的减少系统设计的工作量,社区医疗信息服务管理系统采用了当今较流行的开发工具,以及轻便的数据库,下面对这些进行简单介绍。1.2.1 Java编程语言简介Java起源于80年代的中末期,它是一种优秀的编程语言。它最大的优点就是与平台无关性,无论在何种平台上,都可能使用相同的代码,实现了“一次编写,到处运行”的特点,使得系统的移植、平台的迁移变得十分的容易。下面简单介绍一下此种语言的优良特性。(1) 通用性 即跨平台、跨网络、跨语种、跨时间。跨平台:指Java与计算机平台(硬件、操作系统)无关。跨网络:指Java与网络平台无关,可以穿越多种常用的网络类型(平台)。它的结构确切地说是B/S模型(浏览器/服务器模型,亦称Web模型)。B/S模型是一种三层结构的模型:客户端/应用服务器(Web)/数据库服务器。跨语种:指Java的应用软件不存在语言本地化问题,它本身带有语言机制。它主要是通过所谓“国际语言管理”(International Language Management)模块实现的。跨时间:技术更新以及保护投资的方案、产品容易升级,只需编写一个新的模块替换老模块即可。(2)可移植性Java的源代码是可移植的。不但在几乎所有操作系统环境中无须修改便能运行,还具有多线程同步、内存管理等功能。本系统已达成Jar包,只要有Java虚拟环境就可运行,这点也体现出了Java语言的优越性。1.2.2 Eclipse编程工具简介Eclipse是一个开放源代码的,与Net Beans、Sun ONE Studio和Borland JBuilder类似的一种基于Java的整合型可扩展开发平台,也是目前最著名的开源项目之一。就Eclipse自身而言,它只是一个框架和一组服务,用于插件构建开发环境。它主要由Eclipse项目Eclipse工具项目和Eclipse技术项目三个项目组成。Eclipse可视化Java组件开发一直做基于J2EE的Web应用,而这里用的可视化工具就是Swing。Swing组件可以通过拖拉控件进行代码的生成,是一种优良的代码生成方法。本系统就采用了这一方法。1.2.3 Microsoft Office Access简介本系统数据库用的是Microsoft Office Access,这是微软公司推出的基于Windows的桌面关系数据库,是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。Access是一种关系型数据库管理系统,其主要特点如下:(1)存储方式单一Access管理的对象都存放在后缀为(.mdb)的数据库文件中,便于用户的操作和管理。(2)面向对象Access利用面向对象的方式将数据库中的各种功能对象化,将数据库管理的各种功能封装在类的对象中。通过对象的开发方式,使得开发应用程序更为简便。(3)界面友好、易操作Access是一个可视化工具,其风格与Windows完全一样,用户要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。(4)集成环境、处理多种数据信息Access是基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。(5)Access支持ODBC利用Access强大的DDE(动态数据交换)OLE(对象的连接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。Access还可以将程序应用于网络,并与网络上的动态数据相链接。利用数据库访问页面对象生成HTML文档,轻松构建Internet/Intranet的应用。除此之外,Access是轻型、小型数据库,在小程序中使用特别划算。第2章 数据库设计数据库设计是一个管理系统的关键,合理的数据库设计会使系统功能有较好的分块,数据组织结构清晰、简洁,一个好的数据库应执行效率高、速度快,并易于维护。2.1 数据库需求分析本系统是一个以医疗信息服务为主的系统,因此数据库中各表比较散,根据社会需求,要方便用户查询以下信息:疾病信息、医生信息、最近常见病以及最近免疫信息。该系统要方便用户进行个人信息管理,要方便建立个人家庭的需求档案,方便对用户所查询信息进行更新,以及方便建立一个统计表等。下面介绍各表详细设计情况。如图2-1所示。图2-1 数据库中的表2.2 数据库详细设计根据数据库需求分析,进行数据库详细设计是数据库建立的重要步骤,下面对设计过程进行介绍。2.2.1 管理员表(USERS)系统设置管理员来管理系统,管理员的信息要用管理员表来保存,此表保存所有系统管理员的信息,包括的字段有:管理员姓名(userName)和管理员密码(userPassword),这些都为文本类型,其中管理员姓名是此表的主键。此表在系统管理员登录时使用,匹配成功可以进入系统管理。2.2.2 用户表(PatientsInfo)用户要进行个人信息的注册及个人信息的管理,就必须建立一个专用表来保存用户信息,以确保用户信息的安全性。此表保存所有用户的信息,包括的字段有:用户编号(patientId)、用户名(patientName)、用户密码(patientPassword)和用户所属科室(patientDepart)等,这些都为文本类型,其中用户编号是此表的主键。用户登录时只需用到用户编号和用户密码,而新用户注册时则要填入所有用户信息。2.2.3 医生表(DoctorsInfo)用户查询医生信息是系统功能的关键,因此需要医生表来保存所有供用户可以查询的信息。此表保存医院所有医生的信息,包括字段有:医生编号(doctorId),医生姓名(doctorName),医生科室(doctorDepart)及医生被查询次数(times),times为数字类型,其它为文本类型。其中医生编号是医生的主键,医生编号和医生姓名可以提供用户查询,以得到用户所需信息,times会随用户查询次数增加而增多。2.2.4 疾病表(Diseases)用户查询疾病的治疗信息是系统最大的用处,因此数据库中必要提供医院呈现给用户的各种疾病治疗方法等。此表保存医院提供的所有疾病的治疗信息,包括字段有:疾病编号(diseaseId),疾病名称(diseaseName),疾病治疗方法(diseaseMethod),疾病被查询的次数(times),times为数字类型,其它为文本类型。疾病编号是此表的主键,疾病名称为用户查询的关键字,当匹配到类似信息时,系统将把所查到的疾病治疗信息呈现给用户。在系统中,此表一方面接受用户的查询,以提供给用户疾病的治疗信息,此一方面在用户模块实现;另一方面,还可以由管理员进行更新,更新分为两部分:一是通过对用户查询的跟踪来提交疾病治疗方法,另一种则是对疾病库的自主添加。这两种方式都是由系统模块实现。2.2.5 免疫表(Immunities)为用户方便得知近段内需接种什么疫苗,需建立免疫表。此表保存医院提供的所有免疫信息,包括字段有:免疫名称(immunityName)及备注信息(remark),都为文本类型,其中免疫名称是此表的主键,remark是用户可以查询到的此免疫信息的具体注意事项。此表在不同模块中作用不同,用户模块中,提供用户查询;系统模块中,提供管理员更新和添加。2.2.6 纪录表(Statistic)系统要实现对用户行为的统计,就要设置一个统计表来保存用户所查询的信息。当用户查到信息时,直接在原有表中进行更新查询次数,而当用户未查到所需信息时,要对用户行为进行统计就必须再建立一个表来存储此类信息。此表就是这样设计的。包括字段有:类型(type)、名称(name)、查询次数(times),times为数字类型,其它为文本类型。其中类型和名称一起是此表的组合主键,times表示用户查询次数,会随着用户查询而增加。此表在系统中起着关键的作用,它是本系统能实现用户行为统计的核心所在。用户查询过程中,若未找到相应的医生或疾病信息,系统就会把用户查询的信息记录到此表,当管理员进行系统管理时,可以查询到所有的用户信息,而对在医生信息表和疾病表中不存在的信息要进行分析,或提交到数据库,或进行转移记录,或进行删除,这些前面也已提及。2.2.7 家庭档案表(FamiliesInfo)当用户想为自己的家庭建立档案时,就要建立用户的家庭档案信息表,包括这一家庭的各种信息。各字段类型如表2-1所示。 表2-1 家庭档案表字段名称数据类型说明familyId文本家庭编号familyMasterName文本家长姓名familyContactNumber文本联系方式childName文本儿童姓名childSex文本儿童性别childTime日期/时间儿童生日familyAdd文本家庭住址remark备注备注信息各字段分别为家庭编号,家长姓名,联系方式,儿童姓名,儿童性别,儿童生日,家庭住址,备注信息,其中家庭编号是此表的主键。在用户模块中,此表提供了按家长姓名、儿童姓名、儿童年龄、家庭住址等多种查询。在系统模块中,此表不仅提供和用户表相同的多种查询,还可以对无用信息进行删除。第3章 系统功能设计及实现介绍社区医疗信息平台是密切结合当今需求而设计的。在需求分析阶段,我对系统功能和数据库进行了仔细的考虑,通过调研,本系统分为两部分,一为用户部分,即用户操作功能实现模块;另一为系统部分,即管理员操作实现模块。下面我将先介绍各模块功能。3.1 用户模块用户模块主要包括注册登录、信息查询、以及个人信息录入。下面对此模块的设计与实现做介绍。3.1.1 用户模块的分析与设计为方便社区居民,系统必须要能让用户便捷的查询各种信息。为让用户能直接在系统上查询到一些疾病的治疗信息,系统必须提供疾病查询功能。当然医生信息还是比较重要的,百姓看病就想找个好医生,系统也将提供最近免疫信息以及最近常见病的查询,这将让百姓在查询信息时能够得知近期的医疗状况,做好防范。为方便用户查询自己家庭的信息,提供了家庭档案的查询。对于有特殊要求的用户,系统提供用户注册。当用户用自己的ID进入系统时,可以提交自己的治疗信息。一般地,系统为方便用户使用,都会把用户登录框摆在明显位置。本系统在系统初始页面,把用户登录框加载到上面,用户可以直接进行用户登录。当用户在查询其它信息后,用户登录框会被覆盖,用户可以通过点击界面上的登录按钮,或从菜单栏的用户登录进入。系统初始页面如图3-1所示。图3-1 系统初始界面本系统中我设计了一些模版,有些信息只需把封装好的类加到页面即可显示,并有较友好的呈现,后面还会涉及此类模版。例如本系统初始页面,当用户查询其他信息时,会把用户登录框覆盖,用户则需要点击用户登录或从菜单中选择用户登录来显示用户登录框。当然,系统是为方便社区居民而设计的,因此对一些功能是用户不须登录就能使用的。例如,对医院的各种信息查询是完全公开的,也就是说任何用户都可以到本系统来查询所需信息。这不仅方便了用户,对医院来说也起到比较好的宣传作用,毕竟不是每个人都需要进行详细的个人信息查询。信息查询是本系统实用性所在。本系统提供了简单的信息查询、近期免疫情况查询、近期常见病查询、家庭档案查询四种查询方式,并且都采用模糊查询的办法,实现用户操作智能化。查询的进入在初始页面是可见的,用户可通过点击界面的按钮或从菜单栏进入,操作非常简便。图3-2为用户行为图,显示了用户可以进行的各种操作。图3-2 用户行为3.1.2 用户登录系统把用户登录模块设计成一个用户登录类,即PanelLogin。然后在需要时把它加载在如图3-1所示位置即可,即:panelMessage.add(panelLogin),通过与用户表中用户编号及密码进行匹配,匹配成功则进入个人信息管理。3.1.3 医生信息查询用户输入的信息可以是医生编号也可以是医生姓名。要实现此功能,就要对医生编号进行精确查询,而对医生姓名进行模糊查询。查询语句是这样的:sql = select doctorId as 医生编号 , doctorName as 医生姓名 , doctorDepart as 医生科室 ,times as 查询次数 from DoctorsInfo where doctorId =+textFieldQuery.getText().trim()+or doctorName like %+textFieldQuery.getText().trim()+%;通过这种方式用户可以得到数据库中已存在的所需信息,并大大增加了系统的可用性,无论用户所了解的医生信息如何少,系统都会呈现有相关性的信息。若用户输入医生编号则查询出具体医生信息;若用户输入医生姓名,则凡是与用户输入的医生姓名相似的医生信息会全部呈现出来。3.1.4 疾病信息查询系统对用户输入的疾病名称进行模糊查询。查询语句是这样的:sql = select * from Diseases where diseaseName like %+textFieldQuery.getText().trim() +%;通过这种方式用户可以得到数据库中已存在的疾病信息,例如:用户键入“胃”,则疾病库中所有有关“胃”的疾病治疗方法等都会一并显示出来。图3-3 查询胃病信息诸如此类用列表实现的查询信息显示,系统用自定义类实现,后面将对此做详细介绍。系统有一个很大的优点,即对用户的行为进行了统计分析。本系统会对用户所查找的信息进行登记,即对用户查询信息的输入框进行跟踪,这也是系统对用户需求的间接调查方法。若找到所需信息,本系统会对已存在的数据库信息进行更新,系统会找到数据库中具体表DoctorsInfo或Diseases,提交相应信息。例如:用户查找“感冒”这种疾病的治疗方法,并且在数据库中找到相应的治疗方法,则系统为“感冒”的查询次数加1,以备其他信息的查询;更新语句是这样的:sql = update DoctorsInfo set times = + +timesStr+where doctorId = +message+;其中timesStr是从DoctorsInfo表中获取的医生查询次数。其他更新亦然。比如,“感冒”的查询次数高到一定数字时,在最近常见病的查询中会把“感冒”查询出来呈现给用户。医生信息亦然,管理员可以得到查询记录,对医生进行奖励或处罚。当用户没有找到所需信息时,系统也会进行相应的记录。这些记录保存在纪录表中。此表分两个字段,“type”字段或“医生”类型或“疾病”类型,及“Name”字段保存对应于“type”字段的相应名称。实现例子:用户查询“沙眼”这种疾病,但系统疾病库中并没有这种疾病的治疗方法信息,系统就会把“沙眼”这种疾病记录下来,并为这种疾病的查询次数置1,当又有其他用户来查询这种疾病时,次数递加。医生信息亦然。图3-4 未找到沙眼的治疗信息系统管理员来进行数据库更新时,可以查询到近期用户查询的详细记录及记录表中的相应内容。对于用户查询的疾病信息而言,管理员可以把无用的信息删除,并提交有用信息。例如:删除疾病信息“张三,1次”、医生信息“上火,2次”;提交疾病信息“沙眼,25次”,进入下一个界面,为“沙眼”编号,键入治疗方法,并提交到数据库、记录下医生信息“王五,50次”,并到医院为“王五”加薪。这些会在系统模块详细论述实现方法。3.1.5 近期免疫情况查询社区居民可以通过此模块查询近期的免疫信息,免疫信息都保存在Immunities表中。点击按钮即可将库中信息调入并显示在模版上。查询语句是这样的:sql = select immunityName as 名称,remark as 说明 from Immunities;用户查询到信息内包含此免疫的详细情况:免疫信息、免疫时间、注意事项等。可以大大提高用户的医疗信息了解度,这也是本系统的初衷;同时增加了用户的免疫主动性,为医院创效益。如图3-5所示查询近期免疫信息。图3-5 查询近期免疫信息3.1.6 近期常见病查询此模块为用户提供了最便捷的查询方式,功能实现同免疫信息的查询,只需点击按钮就可以查到近期较流行的疾病,这或许会成为此系统使用最多的查询部分。如图3-6所示查询近期常见病信息图3-6 查询近期常见病3.1.7 家庭档案查询及建立家庭档案查询是专门为想为一个家庭建立治疗档案的需求而设立的。用户通过注册自己的用户信息,并建立家庭档案,用户可以在这里进行家庭档案编写,而用户只有通过注册才能建立,也一定程度上减少了系统负荷。图3-7 家庭档案查询为方便用户查询,系统提供了多种查询方式。下面分别介绍按照家长姓名、儿童姓名、儿童年龄、家庭住址方式查询信息的情况。(1)按家长姓名查询按家长姓名查询家庭档案时,系统提供模糊查询,通过把用户输入的家长姓名信息与家庭档案表是否匹配进行查询,查询语句是这样的:sql = select familyId as 家庭编号,familyMasterName as 家长姓名, +familyContactNumber as 联系方式,childName as 儿童姓名, +childSex as 儿童性别,childTime as 儿童生日, +familyAdd as 家庭住址,remark as 备注 + from FamiliesInfo where familyMasterName like%+textFieldInput.getText().trim()+%; (2)按儿童姓名查询按儿童姓名查询家庭档案时,系统提供模糊查询,查询语句是这样的:sql = select familyId as 家庭编号,familyMasterName as 家长姓名, +familyContactNumber as 联系方式,childName as 儿童姓名, +childSex as 儿童性别,childTime as 儿童生日, + familyAdd as 家庭住址,remark as 备注 + from FamiliesInfo where childName like %+textFieldInput.getText().trim()+%;(3)按儿童年龄查询按儿童年龄查询家庭档案时,比上面查询稍麻烦些,下面简单介绍算法实现。因为在数据库中,为更新方便,儿童的属性设置为出生年月,这样系统可以直接计算出儿童年龄来代替属性儿童年龄,必免管理员繁琐的操作。当用户查询儿童年龄时,先把这个年龄childAge转化为所查儿童在数据库中应具备的出生年份,具体转化是这样实现的:Calendar calendar = Calendar.getInstance();String year = String.valueOf(calendar.get(Calendar.YEAR);String yearInDataBase = Integer.parseInt(year)-childAge+; 然后对该年份yearInDataBase进行在数据中出生年月字段内进行模糊匹配,查询语句是这样的:sql = select familyId as 家庭编号,familyMasterName as 家长姓名, +familyContactNumber as 联系方式,childName as 儿童姓名, +childSex as 儿童性别,childTime as 儿童生日, +familyAdd as 家庭住址,remark as 备注 + from FamiliesInfo where childTime like %+yearInDataBase+-%;(4)按家庭住址查询按家庭住址查询家庭档案时,系统提供模糊查询。查询语句是这样的:sql = select familyId as 家庭编号,familyMasterName as 家长姓名, +familyContactNumber as 联系方式,childName as 儿童姓名, +childSex as 儿童性别,childTime as 儿童生日, + familyAdd as 家庭住址,remark as 备注 + from FamiliesInfo where familyAdd like %+textFieldInput.getText().trim()+%;通过这四种形式的查询,基本可以满足用户的查询要求,当然可以提供更多的查询方式,这里只设置了以上四种。通过本模块用户可以进行个人信息管理。首先用户要进入自己的信息区,系统会弹出新的相应界面让用户管理,用户可以在这里进行个人信息查询和个人信息录入,并可以建立个人家庭档案。图3-8 建立家庭档案3.2 管理模块本模块主要包括用户登录、信息查询和更新,对应于用户模块分为医生信息查询和更新、疾病信息查询和更新、免疫信息查询和更新以及新的免疫信息和疾病信息的添加等,实现对用户模块的跟踪,并把有用信息提交到数据库。3.2.1 管理模块的分析与设计为方便管理与对系统的管理,首先应区分普通用户,建立管理员登录模块。通过系统主界面,管理员可以进行登录来进行管理。在界面转移过程中,传递了管理员信息。因此,在系统总界面上可以实现显示管理员姓名。管理员对系统的管理在本系统中的主要体现是管理员所查到的信息,管理员有权进行删除或上呈数据库,这部分也是至关重要的。对用户所能查询的各种信息,管理员应都能进行查询,以实现对系统的管理。如图3-9,显示了管理员所有可进行的操作。图3-9 管理员行为3.2.2 管理模块各功能及实现(1)管理员登录系统管理员通过系统总界面弹出管理员登录框,若所输入的管理员编号及密码与管理员表匹配成功则进入系统管理。(2)用户信息查询这部分也是用自定义类PanelDisplayInformation(ResultSet rs) 实现的,它只需传入查询结果,即可生成一个JTable的对象对结果集进行显示,并在此类中实现对结果集,同时数据库的删改。管理员可以查询所有的用户信息,并对无用信息进行更新。图3-10 管理员查询用户界面(3)医生信息查询此模块实现了对用户所查询的医生信息的跟踪,可以显示记录表中“type”为“医生”的所有信息。当然这些记录都是用户没有查到的信息。用户查到的信息已在用户模块提交到数据库,而此处系统管理员则需要把用户所查的记录进行分析,记下有用的信息,呈交到医院,对医生进行综合评定。(4)疾病信息查询此模块实现了对用户所查询的疾病信息的跟踪,可以显示记录表中“type”为“疾病”的所有信息,这些记录也都是用户没有查到的信息。同样,管理员进行分析,对有用的信息,进行上呈,删除无用信息。例如:用户查询“肺炎”很多次,但系统疾病库中并没有这种疾病的治疗信息,这时管理员就要把“肺炎”这种疾病编个号,并把它交到系统的Diseases表中。图3-11 管理员查询疾病信息管理员可以对无用信息进行删除。例如,删除上图中的疾病as,当然系统也是支持多行删除的。具体实现方法,将在第三节有详细介绍。管理员对用户查询很多次的“肺炎”进行提交,下图为提交界面,此界面直接弹出,提交成功后自动关闭。图3-12 提交肺炎信息(5)近期免疫情况查询和近期常见病查询此模块和用户模块中实现功能完全相同。(6)增加新的免疫信息:为新的免疫信息命名,并输入相应的时间、注意事项等。数据库操作语句是这样的:sql = insert into Immunities (immunityName,remark)values + (+textField.getText().trim()+,+textArea.getText().trim()+);当然免疫信息的名称也是不允许重复的,所以首先要查询“Immunities”表,确保名称的唯一性。查询语句是这样的:sql = select * from Immunities where immunityName=+textField.getText().trim()+;(7)增加新的疾病信息为新的疾病信息编号、命名,并输入相应治疗信息。数据库操作语句是这样的:sql=insert into Diseases (diseaseId, diseaseName, diseaseMethod, times)+values(+textFieldDiseaseId.getText().trim()+,+textFieldName.getText().trim()+,+textArea.getText()+,1);疾病信息的编号是不允许重复的,实现方法与免疫信息名称的处理相同。(8)家庭档案查询管理员可以和用户一样查询所有用户的家庭档案,并可以对家庭档案进行更、删、改、查。3.3 自定义类的实现代码的实现也是系统实现的关键。高效的代码让系统有较强的可读性、较高的代码重用性、及较好的时间空间复杂度。本系统中大量使用了自定义类作为模板,来完成同种类型的操作,这是本系统的一大特色,从以上图片也可看出,下面我对这些封装的自定义类做简单介绍。3.3.1 Myconn类此类为数据库链接类,类中封装了数据库与系统链接的具体方法。具体来说它包含了三个方法,一个是public ResultSet getResult(String sql)它通过数据库操作字符串,返回查询的结果集;二是public boolean executeSql(String sql)它通过数据库操作字符串,返回数据库更新成功与否;三是public int rowSql(String sql)它通过数据库操作字符串,返回数据库更新所影响的行数。例如:public ResultSet getResult(String sql)try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn = DriverManager.getConnection(URL);Statement stmt = conn.createStatement ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);rs = stmt.executeQuery(sql);return rs; 3.3.2 PanelDisplayInformation(ResultSet rs)类此类为一面板类,在用户查询到结果集时,用此类对象来呈现到系统初始界面上。该类中封装了一个方法,即:public JTable displayResultSet(ResultSet rs)throws Exception;它接受一个ResultSet结果集,返回一个JTable类的对象,此对象是绑定在JScrollPane上的,可以实现在行数增加是表格的自动增加滚动条,通过把ResultSet转化为两个容器来实现把结果集转化为列属性的集合。具体代码如下所示,其中,rows用来存放数据库表中的一行,columnHeads用来存放表的所有列头。public JTable displayResultSet(ResultSet rs)throws Exceptionif(rs.first() Vector rows = new Vector(); Vector columnHeads = new Vector(); ResultSetMetaData rsmd = rs.getMetaData(); for(int i=1;i=rsmd.getColumnCount();i+) columnHeads.addElement(rsmd.getColumnName(i); dorows.addE

温馨提示

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

评论

0/150

提交评论