目 录
[++++1.++++ ++++3 国内外研究现状++++ 2](#1.3 国内外研究现状 2)
[++++2++++*** ++++系统需求分析++++ 3](#2 系统需求分析 3)***
[++++2.1++++** ++++系统目标++++ 3](#2.1系统目标 3)**
[++++2.2++++** ++++系统功能要求++++ 3](#2.2 系统功能要求 3)**
[++++2.++++ ++++2++++ ++++.1++++ ++++前台功能++++ 3](#2.2.1前台功能 3)
[++++2.++++ ++++2++++ ++++.2++++ ++++后台功能++++ 4](#2.2.2后台功能 4)
[++++2.3++++** ++++系统性能要求++++ 4](#2.3 系统性能要求 4)**
[++++2.++++ ++++4系统数据要求++++ 4](#2.4系统数据要求 4)
[++++2.++++ ++++4++++ ++++.1++++ ++++数据的性质++++ 4](#2.4.1数据的性质 4)
[++++2.++++ ++++4++++ ++++.2++++ ++++数据字典++++ 5](#2.4.2数据字典 5)
[++++2.++++ ++++4++++ ++++.++++ ++++3实体联系图++++ 6](#2.4.3实体联系图 6)
[++++3++++*** ++++系统设计++++ 9](#3 系统设计 9)***
[++++3.1++++** ++++开发工具介绍++++ 9](#3.1 开发工具介绍 9)**
[++++3.++++** ++++1.1++++ ++++My eclipse介绍++++ 9](#3.1.1 My eclipse介绍 9)**
[++++3.++++** ++++1.2 Oracle介绍++++ 9](#3.1.2 Oracle介绍 9)**
[++++3.++++ ++++2开发技术介绍++++ 10](#3.2开发技术介绍 10)
[++++3.++++ ++++2++++ ++++.++++ ++++1++++ ++++Struts 2介绍++++ 10](#3.2.1 Struts 2介绍 10)
[++++3.++++ ++++2++++ ++++.++++ ++++2++++ ++++Spring介绍++++ 11](#3.2.2 Spring介绍 11)
[++++3.++++ ++++2++++ ++++.++++ ++++3 Hibernate介绍++++ 11](#3.2.3 Hibernate介绍 11)
[++++3.++++ ++++2++++ ++++.++++ ++++4++++ ++++Jsp介绍++++ 12](#3.2.4 Jsp介绍 12)
[++++3.++++ ++++2++++ ++++.++++ ++++5++++ ++++Jquery介绍++++ 12](#3.2.5 Jquery介绍 12)
[++++3.++++ ++++2++++ ++++.++++ ++++6 Dwr(Ajax)介绍++++ 13](#3.2.6 Dwr(Ajax)介绍 13)
[++++3.++++** ++++3++++ ++++系统架构设计++++ 13](#3.3 系统架构设计 13)**
[++++3.++++** ++++3.1 Hibernate持久化++++ 15](#3.3.1 Hibernate持久化 15)**
[++++3.++++** ++++3.2 Service层++++ 16](#3.3.2 Service层 16)**
[++++4++++*** ++++系统概要设计++++ 17](#4 系统概要设计 17)***
[++++4.1++++** ++++系统体系结构++++ 17](#4.1系统体系结构 17)**
[++++4.1.1++++ ++++设计原则++++ 17](#4.1.1 设计原则 17)
[++++4.1.2++++ ++++运行架构++++ 17](#4.1.2 运行架构 17)
[++++4.++++ ++++2++++ ++++网站功能结构++++ 18](#4.2 网站功能结构 18)
[++++4.++++** ++++3数据库表设计++++ 19](#4.3数据库表设计 19)**
[++++4.++++ ++++3++++ ++++.1++++ ++++数据库详细设计++++ 19](#4.3.1 数据库详细设计 19)
[++++4.++++ ++++3++++ ++++.2++++ ++++数据库逻辑结构设计++++ 19](#4.3.2 数据库逻辑结构设计 19)
[++++4.++++ ++++3++++ ++++.++++ ++++3++++ ++++数据库表设计++++ 20](#4.3.3 数据库表设计 20)
[++++4.++++ ++++4++++ ++++信息安全设计++++ 21](#4.4 信息安全设计 21)
[++++4.++++ ++++4++++ ++++.1++++ ++++网络安全++++ 22](#4.4.1 网络安全 22)
[++++4.++++ ++++4++++ ++++.2++++ ++++其他安全++++ 22](#4.4.2 其他安全 22)
[++++5详细设计++++ 23](#5详细设计 23)
[++++5.1 系统流程图++++ 23](#5.1 系统流程图 23)
[++++5++++ ++++.++++ ++++2++++前台主页界面设计 23](#5.2 前台主页界面设计 23)
[++++5++++ ++++.++++ ++++2++++ ++++.++++ ++++1++++前台主页功能设计 23](#5.2.1前台主页功能设计 23)
[++++5++++ ++++.++++ ++++2++++ ++++.++++ ++++2++++教师饮食管理功能设计 2](#5.2.2教师饮食管理功能设计 2)4
[++++5++++ ++++.++++ ++++2++++ ++++.++++ ++++3++++教师健康日志功能设计 25](#5.2.3教师健康日志功能设计 25)
[++++5++++ ++++.++++ ++++2.4++++教师体检管理功能设计 26](#5.2.4教师体检管理功能设计 26)
[++++5++++ ++++.++++ ++++2++++ ++++.++++ ++++5++++疾病预测评估功能设计 27](#5.2.5疾病预测评估功能设计 27)
[++++5++++ ++++.++++ ++++2++++ ++++.++++ ++++6++++注册功能设计 28](#5.2.6注册功能设计 28)
[++++5++++ ++++.++++ ++++3++++后台主页界面设计 29](#5.3后台主页界面设计 29)
[++++5++++ ++++.++++ ++++3++++ ++++.++++ ++++1++++管理员用户登录功能 29](#5.3.1管理员用户登录功能 29)
[++++5++++ ++++.++++ ++++3++++ ++++.++++ ++++2++++管理管理员功能 30](#5.3.2管理管理员功能 30)
[++++5++++ ++++.++++ ++++3++++ ++++.++++ ++++3++++管理员管理体检结果 31](#5.3.3管理员管理体检结果 31)
[++++5++++ ++++.++++ ++++3++++ ++++.++++ ++++4++++管理员管理健康新闻 32](#5.3.4管理员管理健康新闻 32)
[++++5++++ ++++.++++ ++++3++++ ++++.++++ ++++5++++管理员管理教师功能 33](#5.3.5管理员管理教师功能 33)
[++++6++++*** ++++系统测试++++ 34](#6 系统测试 34)***
[++++6++++ ++++.1++++ ++++编写测试用例++++ 34](#6.1编写测试用例 34)
[++++6++++ ++++.++++ ++++2单元测试++++ 34](#6.2单元测试 34)
[++++6++++ ++++.++++ ++++3系统和集成测试++++ 35](#6.3系统和集成测试 35)
[++++7++++*** ++++结论++++ 36](#7 结论 36)***
[++++参++++*** ++++考++++ ++++文++++ ++++献++++ 37](#参 考 文 献 37)***
[++++致++++*** ++++谢++++ 38](#致 谢 38)***
1 引言
1.1 设计背景
紧张的工作节奏、教学和科研的压力、个人不良的工作生活习惯、以及伴随工作压力而来的家庭关系、人际关系紧张等因素使得高校群体成为慢性病的高发群体[1]。学生入学的定期体检,教职工人入职体检,以及所有学生和教职工的定期体检工作,甚至个人自愿定期进行身体健康检查等都离不开医院的体检。人们对体检工作越来越重视,目前,传统的体检一直延用手工管理的方式,对健康信息的可视化平台需求迫切。
实现对健康信息分析的可视化,根据高危人群的日常行为,建立由此引发的发病概率预测模型,对高危人群做出相应的行为干预。健康管理平台不仅包含对个体健康曲线的可视化,同时包含对某群体健康曲线的可视化及预测,并以此为基础对个体日常行为的干预显示,以此为背景我选择设计健康管理平台。
1.2 设计目的和意义
健康管理既是一个概念,也是一种方法,更是一套完善、周密的服务程序,其目的在于使病人以及健康人更好地拥有健康、恢复健康、促进健康并尽量节约经费开支,有效降低医疗支出。健康管理有如下几大作用:一是可以了解居民的身体年龄,判断疾病指向;二是可以根据日常行为判断发病概率,以此为基础由医生提供降低慢性病发生危险性的行为干预方案;三是可以长期(终生)跟踪高危人群的健康,最大限度减少重大疾病的发生;四是可以节省维护健康的时间和金钱,提高保健效率[2]。
建立面向教师的健康管理平台的目的,对于个人,是如何利用健康体检系统中的信息为人们的健康保驾护航。而健康信息信息管理系统的管理和利用,不仅需要具备基础医学知识、临床医学知识、流行病学知识、计算机技术、数学统计知识等综合素质的专业人员,同时需要有庞大的保健医学、预防医学、临床医学、康复医学等专业的资深专家团队的支持,才能够为个人提供一系列的健康管理服务。
当今世界,信息管理数字化非计算机莫属,只有利用计算机技术,使用我国各个高校统一标准的健康体检系统表格,开发高校健康体检系统的系统软件,设置教师健康体检系统的计算机编号,制作教师的健康体检档案,并详细记录其本次体检程中所发现的健康问题和处理情况等,实现用户的健康体检系统信息在学校范围内的网络信息交换和共享,利用计算机技术,对用户的健康体检系统实现连续的动态管理。健康信息管理系统以计算机为工具,通过对用户体检所得的数据进行信息管理,把管理人员从繁琐的数据计算处理中解脱出来,为更好的帮组用户身体健康监督检查,从而全面提高质量。具体通过本系统可以对用户的基本健康状况进行各种必要的统计和分析[3]。
本项目将针对高校群体研发多模态的健康数据采集系统,对历年体检数据、就诊数据、膳食结构、生活习惯等健康相关信息建立统一管理系统,并在此基础上采用数据挖掘方法对诸如心血管疾病、高血压、糖尿病等慢性病进行有效建模与评估,对高校群体内广泛存在的亚健康状态进行综合客观评价和风险预测,最终实现针对高校群体慢性病患者及其高危人群的动态跟踪健康管理与干预。
1.3 国内外研究现状
健康管理的概念最早见于美国,早在1929年美国洛杉矶水利局就成立了最早的健康维护组织。早在20世纪70年代的美国,由于健康保险的发展以及医疗服务模式的改变,要求医生能更好地指导病人进行疾病预防以及更加节省医疗费用。健康服务组织通过对人群的健康状况进行评价和疾病的风险评估,科学预测疾病的危险因素,制定具体的、有针对性的预防和保健措施。通过健康管理美国的医疗费比以前节省了大约10%,同时避免了疾病的发生,提高了生活质量。资料显示,通过健康管理计划,在1978-1983年,美国人的胆固醇水平下降了2%;高血压水平下降了4%;冠心病发病率下降了16%。美国密执安大学健康管理研究中心主任第·艾鼎敦博士(Dee.W.Edington)曾经提出美国20多年的研究得出了9:1定律结论,即90%的人通过健康管理后,医疗费用降到了原来的10%;10%的人未做健康管理,医疗费用比原来上升了90%。通过经济学分析发现,在健康管理方面投入1元钱,相当于减少3-6元医疗费用的开销。如果加上由此产生的劳动生产率提高的回报,实际效益达到投入的8倍[4]。
健康管理在中国刚刚起步,是一个朝阳的产业。目前在中国大陆地区仅有少数专业的健康管理机构,大部分为医院及体检中心的附属部门。健康管理的从业人数没有准确的数据,估计全国在10万人以上,也就是说我国享受科学、专业的健康管理服务的人数只占人口总数的万分之二,这一比例与美国70%居民能够在健康管理公司或企业接受完善的服务相去甚远。而且目前健康管理仍然主要依赖于简单的单次体检或就诊数据由医生提供一些生活习惯的建议和意见,并没有把个人的历史病历以及日常行为对个人慢性病的影响考虑进去。此外,目前的健康管理也主要是针对已患病的患者,还未做到"早筛选、早预防、早发现、早诊断"的动态追踪的健康管理模式。
2 系统需求分析
2.1 系统目标
健康管理平台的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的教师健康管理平台。
具体的要求如下:
-
教师可以方便的使用五大基本功能;
-
独立于具体的数据库平台。对于与数据库交互的部分充分考虑兼容性;
-
容易在原先基础上进行二次开发;
-
中间基础平台的无型性。尽量采用开放的标准技术,达到跨平台运行的效果。
为了达到以上的开发目的,健康管理平台应遵循一定的设计和开发与原则:
-
模块接口定义清晰;
-
基础类库和接口设计合理,尽量建立叮扩展的接口和抽象类;
-
数据库操作使用标准SQL语句,如果一定要使用有差别的SQL语句,则尽量集中在一起,以减少将来维护和移植的难度;
-
采用开放的标准和工具等。
2.2 系统的功能要求
2.2.1 前台功能
在前台的功能实现上,可以分为以下几个部分:
1.教师饮食管理:根据教师的相关信息,计算其每天所需热量,给出一周的推荐菜单。
2.教师健康日志:用户可以记录自己健康日记,记录每一天的睡眠,饮酒,吸烟,血压,体重等情况。
3.教师体检管理:教师可通过该平台查询每次的体检结果,显示部分项目随时间变化的曲线。
4.疾病预测评估:针对糖尿病和高血压两种疾病,利用数学线性回归的方法,模拟计算出教师患病概率。
2.2.2 后台功能
后台主要有四个功能:
1.管理员用户登录功能:通过编号登录系统。
2.管理员管理教师功能:可以增删改查教师基本信息。
3.管理员管理体检结果:可以增删改查教师体检记录。
4.管理员管理健康新闻:可以发布或删除新闻。
2.3 系统的性能需求
健康管理平台的特性要求网站系统需要具备以下几个主要特性:
-
多样性:健康管理平台在设计时必须遵循的一个重要原则,就是以用户为系统设计的中心。网络的发展大大降低了信息咨询的成本,用户面临更多的选择,所以,健康管理平台除了降低成本以外,还必须在外观,功能的多样性上下工夫,才能够得到用户的认可。具体来说,应用系统应能实现用户特定的需求,操作界面友好、方便,功能设置符合用户的习惯和要求。
-
易维护:管理员能够简单方便地管理系统,定义新的应用,并对系统进行日常维护;随着健康管理平台信息的变更或增加、数据规模的增大,系统升级、维护应易于操作;各子系统、功能模块的设计应具有良好的灵活性,保证在健康管理平台系统建设过程中后期系统功能的实现不影响前期已投入使用的系统功能。
-
安全性:系统应充分考虑信息、设备、运行和管理的安全性,建立完善的多层次的安全保障体系,保证用户的个人信息等资料的数据安全。
-
可扩展:健康管理平台的用户从事着各种行业,他们的需求各不相同,系统在设计时应充分考虑到用户需求不断变化的需要,降低系统在扩展新的业务功能时的复杂度[5]。
2.4 系统的数据要求
2.4.1 数据的性质
- 数据录入和处理的准确性和实时性。
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数据的输入来源是用户的手工输入。手工输入要通过系统界面上的安排系统具有容错性,并且对用户操作进行实时的跟踪和错误提示。
在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。
- 数据的一致性与完整性。
由于网站的数据是共享的,所以如何保证这些数据的一致性,是网站必须解决的问题。要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。
对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,网站应该拒绝该数据。
- 数据的共享与独立性。
整个健康管理平台的数据是共享的。然而,从网站开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。这样,也能提供系统的强壮性。
2.4.2 数据字典
健康管理平台主要涉及到真实姓名数据字典,如表2.1所示:
表2.1 真实姓名数据字典
用户注册界面涉及到电话的数据字典,如表2.2所示:
表2.2 电话数据字典
用户注册界面涉及到邮箱的数据字典,如表2.3所示:
表2.3 邮箱数据字典
2.4.3 实体联系图
健康管理平台主要涉及的实体联系图有六个,实体有Teacher、Manager、Food、
Notice、Exam、Dairy。
3 系统设计
3.1 开发工具介绍
3.1.1 My Eclipse 介绍
My Eclipse企业级工作平台(MyEclipseEnterprise Workbench ,简称My Eclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和Java EE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的Java EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,SQL,Javascript,Spring,Hibernate。
My Eclipse 是一个十分优秀的用于开发Java, J2EE的 Eclipse 插件集合,My Eclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。My Eclipse目前支持Java Servlet , AJAX, JSP, JSF, Struts, Spring, Hibernate, EJB3,JDBC数据库链接工具等多项功能。My Eclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具[6]。
My Eclipse 2013支持HTML5、JQuery 和主流的JavaScript 库。随着My Eclipse 2013支持Html5,可以添加音频、视频和API元素到项目,从而为移动设备创建复杂的Web应用程序。甚至还可以通过HTML5 可视化设计器设计令人难以置信的用户界面。同时,随着My Eclipse 2013支持JQuery,可以通过插件提升性能,并添加动画效果到设计中。
3.1.2 Oracle 介绍
Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如Silver Stream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
Oracle数据库最新版本为Oracle Database 12c。Oracle数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c成为私有云和公有云部署的理想平台[7]。
3.2 开发技术介绍
3.2.1Struts2
Struts是 Apache软件基金会(ASF)赞助的一个开源项目。它最初是 Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用 Java Servlet/JSP 技术,实现了基于Java EE的Web应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
在Struts 中,已经由一个名为ActionServle的 Servlet 充当控制器(Controller)的角色,根据描述模型、视图、控制器对应关系的struts-config.xml的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。在 MVC 的模型(Model)部分,经常划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),这两个概念子系统分别具体对应 Struts 里的ActionForm与Action两个需要继承实现超类。在这里,Struts 可以与各种标准的数据访问技术结合在一起,包括Enterprise Java Beans(EJB),JDBC与JNDI。在Struts的视图(View) 端,除了使用标准的JavaServer Pages(JSP)以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合,比如 Velocity Templates,XSLT 等。通过应用 Struts 的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与 映射关系的配置文件(struts-config.xml)中。
在Java EE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaServer Pages(JSP)的源代码中,采用HTML与Java代码混合的方式进行开发。因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,都给前期开发与后期维护带来巨大的复杂度。为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,Craig McClanahan采用了MVC的设计模式开发Struts。后来该框架产品一度被认为是最广泛、最流行JAVA的WEB应用框架。2006年,WebWork与Struts这两个优秀的Java EE Web框架(Web Framework〕的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为"Struts 2",原Struts的1.x 版本产品称为"Struts 1"。
其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
3.2.2Spring 介绍
2002 年wrox 出版了《Expert one on one J2EE design and development》一书。该书的作者是Rod Johnson。在书中, Johnson 对传统的J2EE 架构提出深层次的思考和质疑。并提出J2EE 的实用主义思想。2003 年, J2EE 领域出现一个新的框架: Spring ,该框架同样出自Johnson 之手。事实上, Spring 框架是《Expert one on one J2EE design and development》一书中思想的全面体现和完善, Spring 对实用主义J2EE 思想进一步改造和扩充,使其发展成更开放、清晰、全面及高效的开发框架。一经推出,就得到众多开发者的拥戴。传统J2EE 应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE 的应用并没有真正实现Write Once 及Run Anywhere 的承诺。Spring 作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。Spring 致力于J2EE 应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring 是企业应用开发的"一站式"选择,并贯穿表现层、业务层及持久层。然而,Spring 并不想取代那些已有的框架,而与它们无缝地整合[8]。总结起来, Spring 有如下优点:
1.低侵入式设计,代码污染极低。
2.独立于各种应用服务器,可以真正实现Write Once, Run Anywhere 的承诺。
3.Spring 的DI 机制降低了业务对象替换的复杂性。
4.Spring 并不完全依赖于Spring ,开发者可自由选用Spring 框架的部分或全部。
3.2.3 Hibernate 介绍
Hibernate 是目前最流行的ORM 框架,其采用非常优雅的方式将SQL 操作完全包装成对象化的操作。其作者Gavin King 在持久层设计上极富经验,采用非常少的代码实现了整个框架,同时完全开放源代码,即使偶尔遇到无法理解的情况,也可以参照源代码来理解其在持久层上灵巧而智能的设计。下面通过对比来了解Hibernate 和传统JDBC 操作数据库持久层之间的差异[9]。
3.2.4 JSP 介绍
JSP是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大 大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。
JSP全名为Java Server Pages,其根本是一个简化的Servlet设计,他实现了Html语法中的java扩张(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
3.2.5 Jquery(JavaScript) 介绍
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML(标准通用标记语言的子集)网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。JavaScript是Sun公司(已被oracle收购)的注册商标。Ecma国际以JavaScript为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,浏览器对象模型。
jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多)。jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。
3.2.6 DWR(Ajax)介绍
AJAX 指异步JavaScript及XML(AsynchronousJavascript+XML)。核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面;可使因特网应用程序更小、更快,更友好;是一种独立于 Web 服务器软件的浏览器技术。DWR它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容。DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码。这样WEB开发人员就可以在JavaScript里使用Java代码,就像它们是浏览器的本地代码一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源。
3.3 系统架构设计
本系统采用严格的J2EE 应用结构,主要有如下几个分层。
- 表现层:由JSP 页面组成。
- MVC 层:使用Struts框架。
- 业务逻辑层:主要由Spring loc 容器管理的业务逻辑组件组成。
- DAO 层:由 DAO 组件组成,实现类必须继承Spring提供的Hibernate Dao Support。
- Hibernate 持久层:由 PO 组成,并在Hibernate Session 管理下,完成数据库访问。
- 数据库服务层:使用Oracle 数据库存储持久化数据。
系统的具体分层如图3.1所示:
在图3.1黑色大方框内的MVC 控制层、Service 层及DAO 组件层的组件,都由Spring IOC 容器负责生成,并管理组件的实例。
本系统不仅严格按MVC 模式设计,还按J2EE分层设计,将中间层严格分成业务逻辑层、DAO 层及数据持久层等。MVC 层的控制器绝对禁止持久层访问,甚至不参与业务逻辑的实现。表现层采用传统JSP 技术。
本系统采用的是典型的J2EE 三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。JSP广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring + Hibernate ,为了将控制层与业务逻辑层分离,又细分为以下几种:
Web 层,就是MVC 模式里面的C,负责逻辑层和表现层的交互。调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC采用Struts框架。
Service 层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO 层为基础,通过对DAO 组件的正面模式包装,完成系统所要求的业务逻辑。
DAO 层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。
PO ,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate 作为ORM 框架。Spring 的作用贯穿了整个中间层,将Web 层、Service 层、DAO 层及PO 无缝整合,其数据服务层用来存放数据。
3.3.1 Hibernate持久化
通过使用Hibernate 持久层,可以避免使用传统的JDBC 操作数据库,对JDBC近一步包装,从而更好地使用面向对象的方式来操作数据库。保证了整个软件开发过程以面向对象的方式进行,即面向对象分析、设计及编程,透过Hibernate 对PO对象持久化操作,不管插入还是查询都是通过PO。
在Hibernate 持久层之上,可使用DAO 组件再次封装数据库操作。通过DAO 层,可以让业务逻辑层与具体持久层技术分离,一旦需要更换持久层技术时,业务逻辑层组件不需要任何改变。因此,使用DAO 组件,即意味着引入DAO 模式,使每个DAO 组件包含了数据库的访问逻辑:每个DAO 组件可对一个数据库表完成基本的CRUD 等操作。
DAO 模式的实现至少需要如下三个部分:
-
DAO 工厂类。
-
DAO 接口。
-
DAO 接口的实现类。DAO 模式是一种更符合软件工程的开发方式,使用DAO 模式有如下理由:
-
DAO 模式抽象出数据访问方式,业务逻辑组件无须理会底层的数据库访问,而只专注于业务逻辑的实现。
-
DAO 将数据访问集中在独立的一层,所有的数据访问都由DAO 对象完成,这层独立的DAO 分离了数据访问的实现与其他业务逻辑,使得系统更具可维护性。
-
DAO 还有助于提升系统的可移植性。独立的DAO 层使得系统能在不同的数据库之间轻易切换,底层的数据库实现对于业务逻辑组件是透明的。数据库移植时仅仅影响DAO 层,不同数据库的切换不会影响业务逻辑组件,因此提高了系统的可复用性。
对于不同的持久层技术,Spring 的DAO 提供一个DAO 模板,将通用的操作放在模板里完成,而对于特定的操作,则通过回调接口完成。
3.3.2 Service层
Service 组件采用正面模式封装多个DAO 组件, DAO 对象与Service 组件之间的关Service 组件需要实现的业务方法主要取决于业务的需要,通常需要在业务组件中包含对应的方法。
业务层组件的实现业务层组件与具体的数据库访问技术分离,使所有的数据库访问依赖于DAO 组件,定义一个Facade Manager Impl来包装7个Dao这样就可以把逻辑层和Dao分开,达到松散耦合的效果。事务管理将推迟到Service组件而不是DAO 组件,因为只有对业务逻辑方法添加事务才有实际的意义,对于单个DAO方法(基本的CRUD 方法)增加事务操作是没有太大实际意义的。关于事务属性的配置,本系统使用Spring 提供的Transaction Proxy Factory Bean配置事务代理。这样不必为每个目标对象配置代理bean;避免了目标对象被直接调用。部署业务层组件单独配置系统的业务逻辑层,可避免因配置文件过大引起配置文件难以阅读。将配置文件按层和模块分开配置,可以提高Spring 配置文件的可读性和可理解性。在application Context.xml 配置文件中配置数据源、事务管理器、业务逻辑组件和事务管理器等bean[10]。
4 系统概要设计
4.1 系统体系结构
基于B/S结构的健康管理平台,应由终端(用户主机/浏览器)、WEB服务器、数据服务器构成。健康管理平台的核心是中间的接入服务器和应用服务器部分。健康管理平台的总体结构图如图4.1所示:
图4.1 健康管理平台总体结构
4.1.1 设计原则
在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际需求,选择合适的开发工具及软件架构。
本系统设计时,比较主流的B/S设计有基于JSP、ASP、PHP、CGI及J2EE等模式。相比较而言PHP的功能相对简单,不适合做大程序;而CGI效率相对较低,所以也不考虑。由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统,所以选择Java技术作为健康平台的开发工具。
4.1.2 运行架构
首先要对系统进行分析,确定对系统的综合要求,分析系统的数据要求,导出系统的逻辑模型。再对系统分析后确定系统的模块,对每个模块进行研究,这也是该系统的一个主要解决的地方。本系统包括了用户,管理员等很多信息,所以对该系统要建立数据库。管理系统是基于WEB的,所以需要一定的网页支持以及与数据库的连接。该系统主要是以JSP技术为主来开发的,所以要对该技术进行了解,学习。除此之外采用的技术和环境要求如下:
数据库访问:oracle数据库
服务器访问:Tomcat系列服务器
网页编程技术:DIV+CSS、JAVASCRIPT、AJAX等
后台处理技术:Struts2+Hibernate+Spring
硬件需求:PIII/512M/10G 及以上配置
操作系统:Windows2000及以上操作系统
4.2 网站功能结构
网站前台功能结构图,如图4.2所示:
图4.3 网站后台功能结构图
4.3 数据库设计
4.3.1 数据库详细设计
数据项和数据结构如下:
1.管理员表(Manager): 管理员编号,管理员名字,管理员密码;
2.新闻表(Notice):新闻编号,新闻标题,新闻内容,发布时间,图片路径,发布者;
3.食物表(Food):食物编号,食物名字,食物热量,食物类型,食物碳水化合物,纤维素,脂肪,蛋白质;
4.体检表(Exam):收缩压,舒张压,体重指数,腰臀比,尿素,尿酸,肌酐,甘油三酯,胆固醇,高密度脂蛋白胆固醇,低密度脂蛋白胆固醇,葡萄糖,同型半膀胱氨酸,微量白蛋白,微量白蛋白/尿肌酐;
5.教师表(Teacher):教师编号,教师昵称,教师密码,教师年龄,教师性别,教师邮箱,找回密码问题,找回密码答案,教师真实名字;
6.日志表(Dairy):日志内容,日志时间,睡眠时间,心情,抽烟,体重,压力,高压,低压,心率;
7.日志食物表(Dairy-food):日志编号,食物编号。
4.3.2 数据库逻辑结构设计
数据库逻辑结构设计汇总表,如表4.1所示:
表4.1 汇总表
|------------|-------|
| 表名 | 功能说明 |
| Manager | 管理员表 |
| Notice | 新闻表 |
| Food | 食物表 |
| Exam | 体检表 |
| Teacher | 教师表 |
| Dairy | 日志表 |
| Dairy-food | 日志食物表 |
4.3.3 数据库表设计
数据库中共涉及到七张表,分别是管理员表,新闻表,食物表,日志表,日志食物表,体检表以及教师表。
表4.2 管理员表
|----------|------|----------|----|------|----|
| 字段名称 | 字段含义 | 数据类型 | 长度 | NULL | 注释 |
| id | ID | Number | 10 | NO | 主键 |
| name | 用户名 | Varchar2 | 20 | NO | |
| password | 密码 | String | 20 | NO | |
表4.3 新闻表
|------------|------|-----------|------|------|----|
| 字段名称 | 字段含义 | 数据类型 | 长度 | NULL | 注释 |
| id | ID | Number | 10 | NO | 主键 |
| title | 用户名 | Varchar2 | 50 | NO | |
| content | 密码 | Varchar2 | 2000 | NO | |
| datetime | 发布时间 | Timestamp | 6 | NO | |
| imagepath | 图片路径 | Varchar2 | 30 | NO | |
| manager_id | 发布者 | Number | 10 | YES | |
表4.4 食物表
|--------------|-------|--------|-----|------|----|
| 字段名称 | 字段含义 | 数据类型 | 长度 | NULL | 注释 |
| id | ID | Number | 10 | NO | 主键 |
| name | 食物名 | Float | 20 | NO | |
| heat | 热量 | Float | 126 | YES | |
| carbohydrate | 碳水化合物 | Float | 126 | YES | |
| fat | 脂肪 | Float | 126 | YES | |
| fiber | 纤维素 | Float | 126 | YES | |
| protein | 蛋白质 | Float | 126 | YES | |
| type | 类型 | Number | 10 | NO | |
表4.5 日志表
|------------|------|----------|------|------|----|
| 字段名称 | 字段含义 | 数据类型 | 长度 | NULL | 注释 |
| datetime | ID | Varchar2 | 20 | NO | 主键 |
| text | 日志 | Varchar2 | 2000 | YES | |
| sleephour | 睡眠 | Float | 126 | YES | |
| mood | 心情 | Varchar2 | 255 | YES | |
| cigrette | 抽烟 | Number | 10 | YES | |
| weight | 体重 | Float | 126 | YES | |
| pressure | 压力 | Varchar2 | 255 | YES | |
| bphigh | 高压 | Float | 126 | YES | |
| bplow | 低压 | Float | 126 | YES | |
| bs | 心率 | Float | 126 | YES | |
| teacher_id | 教师号 | Number | 10 | YES | |
表4.6 日志食物表
|----------|------|----------|----|------|----|
| 字段名称 | 字段含义 | 数据类型 | 长度 | NULL | 注释 |
| dairy_id | 日志ID | Varchar2 | 20 | NO | 主键 |
| food_id | 食物ID | Number | 10 | NO | 主键 |
表4.7 体检表
|------------|-----------|----------|-----|------|----|
| 字段名称 | 字段含义 | 数据类型 | 长度 | NULL | 注释 |
| id | ID | Number | 10 | NO | 主键 |
| datetime | 体检时间 | Varchar2 | 6 | NO | |
| sbp | 收缩压 | Float | 255 | YES | |
| dbp | 舒张压 | Float | 255 | YES | |
| bmi | 体重指数 | Float | 255 | YES | |
| whr | 腰臀比 | Float | 255 | YES | |
| bun | 胆固醇 | Float | 255 | YES | |
| ua | 尿素 | Float | 255 | YES | |
| crea | 尿酸 | Float | 255 | YES | |
| tg | 肌酐 | Float | 255 | YES | |
| chol | 甘油三酯 | Float | 255 | YES | |
| glu | 葡萄糖 | Float | 255 | YES | |
| hcy | 同型半膀胱氨酸 | Float | 255 | YES | |
| m_alb | 微量白蛋白 | Float | 255 | YES | |
| m_alb_crea | 微量白蛋白/尿肌酐 | Float | 255 | YES | |
| teacher_id | 教师ID | Number | 10 | YES | |
表4.8 教师表
|----------|--------|----------|----|------|----|
| 字段名称 | 字段含义 | 数据类型 | 长度 | NULL | 注释 |
| id | ID | Number | 10 | NO | 主键 |
| name | 教师名 | Varchar2 | 20 | NO | |
| password | 密码 | Varchar2 | 20 | NO | |
| age | 年龄 | Number | 10 | NO | |
| sex | 性别 | Varchar2 | 10 | NO | |
| email | 邮箱 | Varchar2 | 30 | NO | |
| question | 找回密码问题 | Varchar2 | 50 | NO | |
| answer | 找回密码答案 | Varchar2 | 50 | NO | |
| phone | 电话 | Varchar2 | 11 | NO | |
| realname | 真实名字 | Varchar2 | 20 | NO | |
4.4 信息安全设计
网络的开放性导致网络技术的全面开放,任何团体和个人都可以获得网络资源,因而网络所面临的破坏和攻击将会是多方面的,可以是对软件环境实施攻出,也可以是对硬件环境实施攻击。网络的国际性还意味着网络的攻击将不仅仅来自本地网络用户,它可能来自Internet上的任何一台机器。即,发起攻击的节点可以位于世界上任何地方。因此可以说,网络安全所面临的将是一个国际性全球化的挑战。网络的自由性意味着网络最初对用户的使用并没有提供任何的技术约束,用户可以自由地访问网络,自由地使用和发布各种类型的信息。用户只对自己的行为负责,而没有受到任何的法律限制。如何保护个人的机密信息不受木马和病毒的入侵,己成为信息安全化健康发展所要考虑的重要事情之一。
健康管理平台用户个人信息的安全问题是至关重要的,制定切实可行的安全策略和实施有力的防范手段是非常必要的。系统的安全体系由下述结构组成,如下图4.4所示:
图4.4 系统的安全体系结构
4.4.1 网络安全
Jsp技术虽然比较安全,但还是存在着很多安全上的问题的,客观的说,服务器软件的开发商在内部测试中不可能将系统中的所有bug 找出来,即使发布了软件后,被发现的漏洞也只会是其中的很小一部分,将来还会不断的有新的安全问题出现,所以我们必须时刻提高警惕。网站服务器的操作系统要打好补丁,进行安全权限的设置,并安装好防火墙,杀毒软件等,定时对数据进行备份。
4.4.2 其他安全
环境安全是整个系统安全的基础,要把信息泄露的危险减至最低限度,需要选择适当的设施位置,要充分考虑水灾、地震、电磁干扰与辐射以及其他等人为威胁,保证净化电源等等。物理安全也是整个系统安全的基础设置之一,物理安全涉及以系统中微机和主机、服务器等资源的房间,必须进行严格的管理。
5 详细设计
5.1 系统流程图
在计算教师所需标准热量值得流程图,如图5.1所示:
18<age<30 31<age<60 age>60 18<age<30 31<age<60 age>60
=
图5.1 计算热量值流程图
5.2 前台功能设计
5.2.1 前台主页面设计
健康管理平台的主页面主要功能有教师的登陆,注册功能,后台界面的入口,四项主要功能的入口和简单介绍,健康新闻的展示,校园风景的动态展示以及相关部门的网站链接,此界面在实现登录时采用DWR异步刷新。主页面具体界面如图5.2所示:
图5.2 健康管理平台主界面
5.2.2 教师饮食管理功能设计
教师饮食管理功能中,主要是根据教师身高,体重,年龄,性别,活动量来计算其每天所需热量,给出一周的推荐菜单。用到的计算式是[11]:
人体基础代谢的需要的基本热量(REE)精确算法如表5.1所示:
表5.1 基本热量精确算法表
|----|----------|---------------------|
| 女子 | 18- 30 岁 | 14.6 x 体重(公斤) + 450 |
| 女子 | 31- 60 岁 | 8.6 x 体重(公斤) + 830 |
| 女子 | 60岁以上 | 10.4 x 体重(公斤) + 600 |
| 男子 | 18- 30 岁 | 15.2 x 体重(公斤)+ 680 |
| 男子 | 31- 60 岁 | 11.5 x 体重(公斤) + 83 |
| 男子 | 60岁以上 | 13.4 x 体重(公斤) + 490 |
每天所需的热量 = REE × 活动系数 =(大卡)
表5.2 活动系数表
|----------------|----------|
| 活动内容 | 活动系数 |
| 卧床(全天) | 1.2 |
| 轻活动生活模式(多坐或缓步) | 1.3 |
| 一般活动度 | 1.5-1.75 |
| 活动量大的生活模式 | 2.0 |
该功能具体界面如图5.3所示:
图5.3 教师饮食管理功能界面
5.2.3 教师健康日志功能设计
用户可以记录自己健康日记,还可记录每一天的睡眠,饮酒,吸烟,血压体重,心情等情况,录入自己一天的饮食量,记录健康日志采用的是kindeditor这款文本编辑器健康日志功能界面具体如图5.4所示:
图5.4 健康日志功能界面
5.2.4 教师体检管理功能设计
校医院从后台导入体检结果,教师可通过该平台查询每次的体检结果,并且利用Highcharts 显示体检部分项目随时间变化的曲线,例如血压,血糖等。
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。目前Highcharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。Highcharts界面美观,由于使用JavaScript编写,所以不需要像Flash和Java那样需要插件才可以运行,而且运行速度快。另外Highcharts还有很好的兼容性,能够完美支持当前大多数浏览器[12]。体检管理功能具体界面如图5.5所示:
图5.5 教师体检管理功能界面
6系统测试
6.1 编写测试用例
表6.1 登陆测试用例
|--------|----------------------------------------------------------------------------------------|
| 字段名称 | 描述 |
| 标识符 | UC001 |
| 测试项 | 用户登录功能测试 |
| 测试环境要求 | 1.用户test/pass为有效登陆用户,用户test1为无效登录用户; 2.浏览器的cookie为被禁用 |
| 输入标准 | 1. 1. 用户输入正确的用户名和密码,单击登陆按钮 2. 输入错误的用户名密码,单击登陆按钮 3. 不输入用户名密码,单击登陆 4. 输入正确的用户名不输入密码,单击登陆 |
| 输出标准 | 1.数据库中存在的用户可以正确登陆 2.显示错误提示界面 3.提示"请输入用户名" 4.提示"请输入密码" |
表6.2 注册测试用例
|--------|-------------------------------------------------------------|
| 字段名称 | 描述 |
| 标识符 | UC002 |
| 测试项 | 用户注册功能测试 |
| 测试环境要求 | 用户未注册过 |
| 输入标准 | 1.用户输入真实名字大于四个或小于两个 2.用户输入手机号不是11位 3.用户输入邮箱不含@ 4.用户必填项输入为空 |
| 输出标准 | 1.系统提示输入正确的名字 2.系统提示输入正确的手机号 3.系统提示输入正确的邮箱格式 4.系统提示完成所有必要输入 |
6.2 单元测试
在单元测试的时候,主要测试的是前后台各功能模块的功能是否都正常运行,是否和预期的结果相同,页面间的跳转和页面数据显示是否正常,实现的方式是单步调试,调试工具是用VS2005,辅助工具使用IE的脚本调试。在VS2005中设置断点,跟踪语句,逐句或者逐过程的调试,对出现的问题进行记录,并在完成所有测试后,对BUG进行了修复。
6.3 系统和集成测试
系统测试是通过将健康管理的前后系统进行整合,整体的测试平台的性能,测试前后台是否有数据不匹配,或者数据冲突等问题。集成测试是将整个平台放在服务器上,通过远程的访问、使用,测试系统平台是否能正常运行,通过使用VS2005提供的压力测试工具,对平台进行压力测试,以测试在用户使用高峰期时,平台的承受能力。
集成压力测试方法:
1.创建测试项目;
2.添加Web测试;
3.运行健康管理平台,此时web测试工具将对网站的相应操作记录,记录充足后停止记录,并生成相应代码;
4.添加负载测试;
5.在向导中设置需要测试环境,运行测试。
7 结论
本文从健康管理平台所需要实现的功能模块开始分析,决定使用Java开发该网站。并利用JDK,Tomcat,My Eclipse,Oracle等软件来搭建开发环境,利用Java技术的Spring、Hibernate、Struts等开源框架设计J2EE三层结构的中业务逻辑层和数据服务层,健康管理平台以Spring 框架为核心,向下整合Hibernate 进行持久层访问;向上整合Struts 按清晰的MVC 模式控制。这样可以更快开发松散耦合的健康管理平台。通过这次毕业设计学会利用java构建Web 网站,在毕业设计中接触过不少开源框架。开源框架的强大让我觉得还有很多技术需要去学习,这也让我明白,要不断地学习新知识才会利于自己各方面的发展。