摘要:科技的飞速发展已经深刻地改变了人们的日常生活,电子信息技术的迅猛进步已经广泛渗透并应用于各个领域。信息时代的兴起已成不可逆转的趋势,引领着人类社会进入崭新的历史时代。在实际应用方面,我们采用Java技术构建了一个健康数据分析管理系统,并制定了应用软件的工作准则和开发流程。本设计的目标是打造一个综合了人性化、高效、便捷等多重优势的健康数据分析管理系统,包括用户管理、健康监测、就诊记录、健康提醒、健康服务、健康指导等多个功能模块。该系统通过浏览器与服务器进行数据交互和更新,采用科学管理方法,提升工作效率,降低了数据存储中的错误和遗漏。我们选用Java语言,采用基于SSM模式的MVC框架进行开发,以Eclipse编译器为工具。在数据存储方面,主要采用MySQL关系型数据库,同时借助HTML+CSS技术完成了系统的开发。
关键词:健康数据分析管理;Java语言;关系型数据库;SSM框架
Abstract:The rapid development of technology has profoundly changed people's daily lives, and the rapid progress of electronic information technology has been widely penetrated and applied in various fields. The rise of the information age has become an irreversible trend, leading human society into a new historical era. In terms of practical application, we have adopted Java technology to build a personal health management system and formulated work guidelines and development processes for the application software. The goal of this design is to create a personal health management system that integrates multiple advantages such as humanization, efficiency, and convenience, including multiple functional modules such as user management, health monitoring, medical records, health reminders, health services, and health guidance. The system interacts and updates data with the server through a browser, adopts scientific management methods, improves work efficiency, and reduces errors and omissions in data storage. We choose the Java language and use the MVC framework based on the SSM pattern for development, using the Eclipse compiler as a tool. In terms of data storage, MySQL relational databases were mainly used, and the system development was completed using HTML+CSS technology.
Keywords:JAVA; Pet Hospital; information management system
目 录
一、引言
(一)研究背景及意义
随着社会的进步和健康知识的广泛传播,人们对生活质量的要求日益提高,对个人和家庭的健康关注度也逐渐增加。不再仅仅追求免疾病,更加注重疾病的预防和保健。尽管现代社会对健康问题的关注度前所未有,但大多数人在健康饮食、科学预防疾病以及慢性疾病的长期监测等方面仍然存在知识不足的情况。因此,健康管理的重要性就在于传授科学的健康生活方式,由被动的疾病治疗转变为主动的健康管理,以长期有效地促进健康数据分析。
健康管理是一种以健康数据分析档案为基础的个性化健康管理服务,通过软件和互联网收集和管理健康数据分析信息,建立健康数据分析管理系统。借助先进的计算机信息技术,通过分析生理指标、体检数据、基因信息或医学影像等相关健康与疾病数据,评估获得与健康数据分析密切相关的信息,从而指导整个健康数据分析管理过程。健康数据分析档案不仅包括个人的基本信息,还包括健康数据分析资料。
(二)开发现状
西方发达国家率先进入互联网时代,他们的新媒体已经经过多年的演进,逐渐从单一功能发展为规模庞大的系统,技术也相对成熟。相较之下,中国的发展起步较晚,经历了一系列试验和实践。目前,国内的网络硬件设施已经覆盖了大部分地区,国内的主要任务是学习并引进先进的互联网技术,以更好地为人们提供新媒体服务。
在国外,新媒体技术已经经过十多年甚至更长时间的发展,其核心功能已经能够适应社会的快速发展和人们日益增长的需求。此外,他们将客户需求作为首要考虑因素,致力于实现易用性高、集成度强的系统。从信息的采集、提交、审核、修改到发布等各个环节都实现了无缝衔接。网络健康领域涵盖多个领域的实时动态信息,同时可以与用户进行互动。还能将传统媒体的文字内容转化为声音、图像和视频,使用户更容易理解。
举例来说,美国的BuzzFeed通过网络收集大量健康博客的信息,为用户提供最新的热门事件。美国有线电视健康网Cable News Network提供全天候无休息的健康报道,用户可以通过评论或电子邮件投稿,编辑审核通过后的稿件可在健康网站上发布。英国最大的健康广播公司BBC的健康服务BBC News会在各个健康领域显示最新的热门消息。澳大利亚ABC健康网站也特别注重向公众提供实时的健康资讯。
(三)本文的组织结构
第一章是引言,是本文的开篇部分,用以描述研究背景和研究意义。
第二章讨论了健康数据分析管理系统所采用的开发技术和工具。
第三章涵盖系统分析,包括系统总体需求描述、功能性需求分析以及非功能性需求分析,以评估系统的可行性。
第四章是系统设计的关键部分,提供了系统架构的详细设计和主要功能模块的设计说明。
第五章描述了系统的具体实现,介绍了各个模块的具体实施细节。
第六章在前几章的基础上对系统进行了测试和运行。
最后,对系统进行了深入总结,并展望了未来的发展方向。
二、相关技术介绍
(一)J2EE技术
J2EE(Java 2 Platform, Enterprise Edition)是一种用于构建企业级应用程序的Java平台。它提供了一组强大的工具和技术,使开发人员能够创建分布式、可伸缩和安全的应用程序。J2EE技术的核心是Java Servlet和JavaServer Pages(JSP),它们允许开发人员构建基于Web的应用程序。此外,J2EE还提供了诸如Enterprise JavaBeans(EJB)、Java Messaging Service(JMS)、Java Naming and Directory Interface(JNDI)等组件,用于支持企业级功能,如事务管理、消息传递和命名服务。J2EE还强调了多层架构的设计,将应用程序拆分成不同的层次,包括表示层、业务逻辑层和持久化层,以实现更好的可维护性和扩展性。
(二)MVC模式
MVC(Model-View-Controller)模式是一种常用于设计和组织用户界面的软件架构模式。它将应用程序分为三个主要组件:
模型(Model):模型表示应用程序的数据和业务逻辑。它负责存储和管理数据,以及执行与数据相关的操作。模型通常独立于用户界面,可以在不同的视图之间共享。
视图(View):视图是用户界面的表示,负责将数据呈现给用户。它通常与用户交互,接受用户输入,并将其传递给控制器。视图的目标是将模型的数据可视化,并向用户提供交互方式。
控制器(Controller):控制器充当模型和视图之间的中介。它接受用户输入,处理用户请求,并更新模型和视图以响应这些请求。控制器将用户操作映射到模型的操作,实现了模型和视图的解耦。
MVC模式有助于提高应用程序的可维护性和可扩展性,因为它将不同的关注点分离开来,允许团队分别开发和测试模型、视图和控制器。
(三)MySQL数据库
MySQL是一个流行的关系型数据库管理系统(RDBMS),广泛用于开发各种类型的应用程序。它是开源的,具有高性能、可扩展性和可靠性。MySQL支持多种操作系统,并提供了丰富的功能,包括数据存储、检索、事务管理、数据备份和安全性控制等。MySQL还与多种编程语言和开发框架集成,使开发人员能够轻松访问和操作数据库。
(四)B/S结构
B/S结构(Browser/Server结构)是一种常见的应用程序架构模式,其中客户端使用Web浏览器作为用户界面,而服务器端负责处理业务逻辑和数据管理。这种架构模式与传统的C/S结构(Client/Server结构)相比,减少了客户端的依赖性和安装要求,使应用程序更易于部署和维护。B/S结构适用于Web应用程序和互联网应用程序,它允许用户通过浏览器访问应用程序,而无需安装额外的客户端软件。
(五)SSM框架
SSM框架是一种常用于开发Java Web应用程序的技术栈,它结合了Spring、SpringMVC和MyBatis三个开源框架。每个框架都有不同的职责:
Spring提供了依赖注入和面向切面编程的功能,使开发人员能够创建可维护和可测试的Java应用程序。
SpringMVC是基于MVC模式的Web框架,用于构建Web应用程序的用户界面和控制逻辑。
MyBatis是一种持久化框架,用于简化数据库操作,将Java对象映射到数据库表。
SSM框架的组合使开发人员能够构建高性能的、可扩展的Web应用程序,同时享受Spring、SpringMVC和MyBatis各自的优势。
(六)Eclipse开发工具
Eclipse是一款强大的集成开发环境(IDE),广泛用于Java应用程序的开发。它提供了丰富的功能,包括代码编辑、调试、版本控制、构建和部署工具。Eclipse支持多种编程语言和框架,通过插件系统可以扩展其功能。开发人员可以使用Eclipse来编写、测试和管理他们的Java应用程序,提高开发效率和代码质量。由于其广泛的社区支持和大量的插件可用性,Eclipse成为了许多Java开发人员的首选开发工具之一。
三、系统分析
(一)可行性分析
本次设计采用B/S模式,使用Java和JSP技术,以MySQL数据库和Eclipse实现。总体的可行性可分为以下三个方面。
1.技术可行性分析
技术可行性评估了在规定时间内是否能够满足预期功能,并是否会在开发过程中遇到无法解决的问题。同时,它还考察了项目完成后是否能够顺利应用,以及在后期维护中是否存在困难。在对系统进行评估后,我们认定已有的技术可以达到项目目标。通过使用JSP技术实现动态页面,采用低依赖性的设计模式,与灵活的数据库和稳定的服务器配合,整个系统的运行效率得到了显著提升。因此,在技术层面达成目标是可行的。
2.经济可行性分析
在项目中,我们主要使用当下流行的开源免费工具,因此,在项目的前期和开发阶段,项目所需经费将大大降低,不会受到经费问题的影响。因此,从经济角度来看,项目是可行的。我们将尽力以最低的成本来满足用户需求,将省下的经费用于人力和设备,走向无纸化和高效率的道路。
3.操作可行性分析
本系统的操作非常简单,只需要一台普通电脑,具备连接互联网的功能,并且能够正常访问系统。操作者无需高超的技能,只需了解业务流程和相关专业知识,即可流畅使用本软件。因此,健康数据分析管理系统具有良好的操作可行性。
(二)功能需求分析
在系统开发设计之前,应该对功能进行初步设想,明确管理系统的板块和各板块的功能。需要确保整体设计是否满足使用者的需求。接下来,对系统功能进行详细的分析和总结,以便设计出完整的系统并将其实现。通过与用户和开发人员进行交流和分析,以达到最佳理解程度,从而确保系统功能最佳。
用户用例图如下所示。
图1 用户用例图
管理员用例图如下所示。
图2 管理员用例图
健康数据分析管理系统在对需求做解析后,整个系统主要分为两个部分:管理员和普通用户,每个模块下的分支功能不一样。对功能做出如下说明:
普通用户模块:
账号注册。
账号登录认证。
管理个人资料信息,修改可修改的信息项。
提交健康服务,同时查看历史已提交的健康服务记录。
健康提醒录入,同时查看历史已录入健康提醒的记录。
就诊记录录入,同时查看历史已录入的记录。
管理员模块:
维护普通用户,审核普通用户的账号,可以冻结普通用户的登录权限,或者删除普通用户账号。
发布健康指导,并可以销毁某个健康指导,更新健康指导数据,模糊搜索健康指导数据等。
管理健康提醒数据。
维护就诊记录数据。
查看普通用户提交的健康服务数据,管理员有权利维护它。
(三)非功能需求分析
系统的非功能需求有很多,包括性能需求、最大用户承载量、稳定性以及易用性等。在系统分析过程中,我们特别考虑了易用性需求,因为系统是供人使用的。因此,必须充分从用户的角度出发,考虑用户体验,以确保系统易于理解、上手和操作。
(四)数据流程分析
一层数据流程图包括登录注册、用户功能以及检索维护等模块。在登录注册模块中,需要存储用户账户文档;在用户功能模块中,需要存储用户各功能模块的数据文档。而检索维护模块则使用上述数据文档,通过关键词进行检索。
系统的一层数据流图如下图所示。
图3系统数据流图(一层)
二层数据流程是对一层数据流程图中填写登录注册信息和用户功能进行的细化。具体来说,填写登录注册信息被细化为填写信息和后台审核两个步骤,而用户功能则被细化为健康监测提交、就诊记录提交、健康提醒提交、健康服务提交以及健康指导查询等操作。
系统的二层数据流图如下图所示。
图4系统数据流图(二层)
四、系统设计
(一)系统架构设计
目前,B/S体系的系统主要采用以下数据访问方式:用户通过浏览器页面进入系统,系统会自动处理用户发送的请求,这一处理过程在系统后台进行。用户在浏览器页面上执行相应操作,便能够查看服务端传递的处理结果。
健康数据分析管理系统采用了视图-模型-控制三层架构设计。在视图层,主要处理服务器向客户端反馈并显示的数据。在模型层,主要负责处理相关的业务逻辑和数据整合等任务。而控制层位于视图和模型之间,其主要职责是协调这两个层次之间的关系,最终实现数据的传递。
系统架构图如下图所示。
图4系统架构图
(二)系统功能结构
系统设计的目的是分析系统包括的所有功能结构,为开发人员设计开发和实现系统做好准备工作。经过前期的需求调查、分析和整理之后,确定的总体需求主要包括多个模块,分别是:用户管理、健康监测管理、就诊管理、健康提醒管理、健康服务管理、健康指导管理。系统整体角色分为两个部分:一是普通用户,二是管理员。权限分布也很明显,普通用户除了浏览信息外,还具有查询和管理自己账户信息、健康监测提交、就诊记录提交、健康提醒提交、健康服务提交、健康指导查询等权限;而管理员则是最高权限的拥有者。
系统功能结构图如下图所示。
图6系统功能结构图
(三)功能模块设计
用户管理模块
该模块针对所有用户设计。普通用户登录后只能执行普通功能操作(如修改个人信息)。而管理员和超级管理员登录后具有不同的权限,管理员不能越权,而超级管理员能够对整个系统的数据进行管理,主要涉及用户的登录权限以及用户登录后在系统中的操作权限。
健康提醒录入模块
普通用户和健康监测之间存在一对多的关系。根据健康监测编号将监测数据传入健康提醒数据中。操作者是普通用户,录入数据后生成健康提醒列表。普通用户可以查看个人历史健康提醒列表,也可以对数据进行销毁操作。
健康监测维护模块
操作者录入健康监测数据,点击健康监测录入按钮,填写要录入的数据,然后点击提交按钮将数据存入数据库。接着刷新健康监测数据页面,每条数据右边都有删除和编辑按钮,可用于相应的删除和更新操作。
就诊记录维护模块
操作者录入就诊记录数据,点击就诊记录录入按钮,填写要录入的就诊记录数据,然后点击提交按钮将数据存入数据库。接着刷新就诊记录数据页面,每条数据右边都有删除和编辑按钮,可用于相应的删除和更新操作。
健康指导维护模块
管理员点击健康指导管理菜单,选择健康指导添加子菜单,填写健康指导数据的标题、内容、日期和注意事项,提交成功后,健康指导数据页面刷新,新数据成功载入页面。
健康服务维护模块
普通用户提交健康服务数据,然后可以在个人后台查看历史提交的健康服务数据。管理员负责维护健康服务数据,审批和确认已存在的健康服务数据。
打印和导出模块
系统的多个页面支持打印功能,包括信息详细页和信息列表页。用户可以调用外部打印机进行打印,完成打印设置即可进行打印操作。在信息列表页,用户可以将信息列表导出至Excel文件。用户需要选择保存Excel文件的路径,然后可以下载到本地,在Excel中可以自由编辑数据。
(四)数据库设计
1.概念模型
对于一个要开发的系统来说,E-R图可以让别人能更快更轻松的了解此系统的事务及它们之间的关系。根据系统分析阶段所得出的结论确定了在健康数据分析管理系统中存在着多个实体分别是用普通用户、管理员、健康监测、健康提醒、就诊记录、健康服务。
系统总体ER图如下图所示。
图7系统总体ER图
2.关系模型
管理员(管理员id、用户名、密码、权限)
普通用户(普通用户id、账号、密码、姓名、性别、地区、手机、Email、照片)
健康指导数据(健康指导id、标题、内容、日期、注意事项)
健康监测(健康监测id、BMI、备注、餐后血糖、空腹血糖、年龄、日期、身高、体温、体重、心率、姓名、性别、血压、腰围、用户名)
健康提醒(健康提醒id、年龄、提醒方式、提醒内容、提醒时间、姓名、性别、用户名)
就诊记录(就诊记录id、疾病情况、就诊时间、就诊医生、就诊医院、年龄、姓名、性别、用户名、治疗方案)
健康服务(健康服务id、服务类型、内容、年龄、日期、姓名、性别、用户名)
3.数据表
数据库逻辑结构就是将E-R图在数据库中用具体的字段进行描述。用字段和数据类型描述来使对象特征实体化,最后形成具有一定逻辑关系的数据库表结构。健康数据分析管理系统所需要的部分数据结构表如下表所示。
表1管理员用户表
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1、 | ID | int | 4 | 否 | 4 | 主键ID |
2、 | username | varchar | 20 | 否 | 50 | 用户名 |
3、 | pwd | varchar | 20 | 否 | 50 | 密码 |
4、 | cx | varchar | 20 | 否 | 50 | 权限 |
5、 | addtime | datetime | 8 | 否 | 8 | 添加时间 |
表2健康监测信息
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1、 | ID | int | 4 | 否 | 8 | 主键ID |
2、 | yonghuming | varchar | 50 | 否 | 50 | 用户名 |
3、 | xingming | varchar | 50 | 是 | 50 | 姓名 |
4、 | xingbie | varchar | 50 | 是 | 50 | 性别 |
5、 | nianling | varchar | 50 | 是 | 50 | 年龄 |
6、 | riqi | datetime | 8 | 是 | 8 | 日期 |
7、 | shengao | varchar | 50 | 是 | 50 | 身高 |
8、 | tizhong | varchar | 50 | 是 | 50 | 体重 |
9、 | yaowei | varchar | 50 | 是 | 50 | 腰围 |
10、 | kongfuxuetang | varchar | 50 | 是 | 50 | 空腹血糖 |
11、 | canhouxuetang | varchar | 50 | 是 | 50 | 餐后血糖 |
12、 | tiwen | varchar | 50 | 是 | 50 | 体温 |
13、 | xinlv | varchar | 50 | 是 | 50 | 心率 |
14、 | xueya | varchar | 50 | 是 | 50 | 血压 |
15、 | BMI | varchar | 50 | 是 | 50 | BMI |
16、 | beizhu | text | 8 | 是 | 8 | 备注 |
17、 | addtime | datetime | 8 | 否 | 8 | 添加时间 |
表3健康提醒
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1、 | ID | int | 4 | 否 | 8 | 主键ID |
2、 | yonghuming | varchar | 50 | 否 | 50 | 用户名 |
3、 | xingming | varchar | 50 | 是 | 50 | 姓名 |
4、 | xingbie | varchar | 50 | 是 | 50 | 性别 |
5、 | nianling | varchar | 50 | 是 | 50 | 年龄 |
6、 | tixingshijian | datetime | 8 | 是 | 8 | 提醒时间 |
7、 | tixingfangshi | varchar | 50 | 是 | 50 | 提醒方式 |
8、 | tixingneirong | text | 8 | 是 | 8 | 提醒内容 |
9、 | addtime | datetime | 8 | 否 | 8 | 添加时间 |
表4健康服务
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1、 | ID | int | 4 | 否 | 8 | 主键ID |
2、 | yonghuming | varchar | 50 | 是 | 50 | 用户名 |
3、 | xingming | varchar | 50 | 是 | 50 | 姓名 |
4、 | xingbie | varchar | 50 | 是 | 50 | 性别 |
5、 | nianling | varchar | 50 | 是 | 50 | 年龄 |
6、 | riqi | datetime | 8 | 是 | 8 | 日期 |
7、 | fuwuleixing | varchar | 50 | 是 | 50 | 服务类型 |
8、 | neirong | text | 8 | 是 | 8 | 内容 |
9、 | addtime | datetime | 8 | 否 | 8 | 添加时间 |
表5用户
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1、 | ID | int | 4 | 否 | 8 | 主键ID |
2、 | yonghuming | varchar | 50 | 是 | 50 | 用户名 |
3、 | mima | varchar | 50 | 否 | 50 | 密码 |
4、 | xingming | varchar | 50 | 否 | 50 | 姓名 |
5、 | xingbie | varchar | 50 | 是 | 50 | 性别 |
6、 | nianling | float | 10 | 是 | 10 | 年龄 |
7、 | zhaopian | varchar | 50 | 是 | 50 | 照片 |
8、 | youxiang | varchar | 50 | 是 | 50 | 邮箱 |
9、 | lianxifangshi | varchar | 50 | 是 | 50 | 联系方式 |
10、 | dizhi | varchar | 50 | 是 | 50 | 地址 |
11、 | addtime | datetime | 8 | 否 | 8 | 添加时间 |
表6就诊信息
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1、 | ID | int | 4 | 否 | 8 | 主键ID |
2、 | yonghuming | varchar | 50 | 否 | 50 | 用户名 |
3、 | xingming | varchar | 50 | 是 | 50 | 姓名 |
4、 | xingbie | varchar | 50 | 是 | 50 | 性别 |
5、 | nianling | varchar | 50 | 是 | 50 | 年龄 |
6、 | jiuzhenshijian | datetime | 8 | 是 | 8 | 就诊时间 |
7、 | jiuzhenyiyuan | varchar | 50 | 是 | 50 | 就诊医院 |
8、 | jiuzhenyisheng | varchar | 50 | 是 | 50 | 就诊医生 |
9、 | jibingqingkuang | text | 8 | 是 | 8 | 疾病情况 |
10、 | zhiliaofangan | text | 8 | 是 | 8 | 治疗方案 |
11、 | addtime | datetime | 8 | 否 | 8 | 添加时间 |
表7健康指导
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1、 | ID | int | 4 | 否 | 8 | 主键ID |
2、 | biaoti | varchar | 50 | 否 | 50 | 标题 |
3、 | zhuyishixiang | varchar | 50 | 否 | 50 | 注意事项 |
4、 | riqi | datetime | 8 | 是 | 8 | 日期 |
5、 | neirong | text | 8 | 是 | 8 | 内容 |
6、 | addtime | datetime | 8 | 否 | 8 | 添加时间 |
五、系统实现
(一)登录模块的实现
系统的登录窗口为用户提供入口,只有成功登录后才能进入系统。用户需在提交登录表单后,经后台验证合法性后才能进入系统。
登录合法性验证步骤如下:
用户输入账号和密码。
系统首先验证输入数据的合法性。
在login.jsp页面,发送登录请求,并调用src目录下的mainctrl类的dopost方法进行验证。
用户登录模块的IPO描述如下:
输入:用户名和密码。
处理:
检查用户输入的账号和密码是否正确,以及是否已在数据库中存在对应记录。
从数据库中提取记录,并存储在本地的session中(默认超时时间为30分钟)。
根据用户名,在系统首页上显示相应信息。
输出:登录成功与否的信息。
登录流程图如下所示。
图8登录流程图
系统登录界面如下所示。
图9系统登录界面
用户登录的逻辑代码如下。
if(ac.equals("adminlogin"))
{
String username = request.getParameter("username");
String password = request.getParameter("pwd");
String utype = request.getParameter("cx");
request.setAttribute("random", "");
go("/login.jsp", request, response);
else{
String sql1 = "select * from allusers where username='"+username+"' and pwd='"+password+"' ";
List<HashMap> userlist1 = dao.select(sql1);
if(userlist1.size()==1)
{
request.getSession(). setAttribute("username", userlist1.get(0).get("username"));
request.getSession(). setAttribute("cx", userlist1.get(0).get("cx"));
gor("main.jsp", request, response);
}else{
request.setAttribute("error", "");
go("/login.jsp", request, response);
}
}
}
(二)用户子系统模块的实现
1.用户首页模块
系统的首页设计简洁大方,界面清爽,布局井然有序,使用户可以轻松上手。为了满足广泛的用户群体需求,后台应具备出色的性能表现。
如下图所示为系统的首页界面。
图10系统首页界面
其中载入前台页面的主要代码如下。
<td><%@ include file="qttop.jsp"%></td>
<td><%@ include file="qtleft.jsp"%></td>
<td><%@ include file="qtdown.jsp"%></td>
2.注册模块
该页面用于普通用户注册,必须先注册并登录才能使用系统的大部分功能。用户名不得重复,否则注册将失败并显示相应提示信息,验证过程由JavaScript实现。
用户注册流程图如下所示。
图11用户注册流程图
用户注册界面如下图所示。
图12用户注册界面
用户注册关键代码如下所示。
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
3.健康提醒录入模块
在健康提醒录入过程中,首先使用getmap(id,"xinxi")方法,通过健康监测ID获取相应的健康监测数据,然后将这些数据赋值给健康提醒录入。接下来,调用CommDAO的insert方法,将健康提醒数据插入到健康提醒表中。最后,用户可以查看个人历史健康提醒录入记录,并有选项来销毁历史健康提醒数据。
健康提醒录入流程图如下所示。
图13健康提醒录入流程图
健康提醒录入界面如图所示。
图14健康提醒录入界面
健康提醒管理界面如图所示。
图15健康提醒管理界面
健康提醒录入关键代码如下所示。
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
4.健康服务模块
用户可对健康服务执行新增、查看、修改和删除等相关管理操作。点击"新增健康服务"按钮将导航至健康服务添加界面,可进行详细信息的添加。点击"查看健康服务"超链接将显示所选健康服务的信息,点击"返回"可回到主页面。
健康服务提交界面如图所示。
图16健康服务提交界面
健康服务管理界面如图所示。
图17健康服务管理界面
健康服务添加关键代码如下所示。
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
(三)管理员子系统模块的实现
1.用户管理模块
管理员能够浏览用户信息。首先,执行SQL查询语句以检索所有用户表的数据。接着,调用PageManager.getPages(url, 4, sql, request)方法,返回一个ArrayList对象。在for循环中,通过JSP获取每个ArrayList对象的数据,并在JSP页面中解析ArrayList对象,提取其中的各个键值对的数值。
用户管理界面如下图所示。
图18用户管理界面
系统用户管理关键代码如下所示。
public List<HashMap> select(String sql)
{
System.out.println(sql);
List<HashMap> list = new ArrayList();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next())
{
HashMap map = new HashMap();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(!rsmd.getColumnName(j).equals("ID"))
{
String str = rs.getString(j)==null?"": rs.getString(j);
if(str.equals("null"))str = "";
map.put(rsmd.getColumnName(j), str);
}
else
map.put("id", rs.getString(j));
}
list.add(map);
}
rs.close();
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
if(sql.equals("show tables"))
list = select("select table_name from INFORMATION_SCHEMA.tables");
else
e.printStackTrace();
}
return list;
}
2.个人资料管理模块
用户登录成功后,其个人信息将存储在会话作用域(session)中。点击用户名时,将导航至个人详细信息页面。后台使用Freemarker动态渲染页面,提取会话作用域中的用户信息,包括邮箱、电话号码、用户名等。页面上同时提供修改个人信息和修改密码的按钮,用户可通过UserController.java中的updatePassword()方法修改登录密码以增强账户安全性,防止账户被盗。同时,用户还可以根据个人信息是否发生变化进行相应的修改,此操作通过updateUserInfo()方法实现。
密码修改流程图如下所示。
图19密码修改流程图
图20修改密码
密码修改关键代码如下所示。
if(ac.equals("uppass"))
{
String olduserpass = request.getParameter("ymm");
String userpass = request.getParameter("xmm1");
String copyuserpass = request.getParameter("xmm2");
HashMap m = dao.getmaps("yonghuming",(String)request.getSession().getAttribute("username"), "yonghuzhuce");
if(!(((String)m.get("mima")).equals(olduserpass)))
{
request.setAttribute("error", "");
go("mod2.jsp", request, response);
}else{
//String id = (String)user.get("id");
String sql = "update yonghuzhuce set mima='"+userpass+"' where yonghuming='"+(String)request.getSession().getAttribute("username")+"'";
dao.commOper(sql);
request.setAttribute("suc", "");
go("mod2.jsp", request, response);
}
}
3.健康监测管理模块
在添加健康监测信息时,用户需填写必填字段后,JiankangjianceController层接收健康监测信息参数,随后调用JiankangjianceController类的addJiankangjiance方法。该方法通过JiankangjianceService业务层传递至JiankangjianceMapper持久层,完成添加健康监测信息的操作。与用户管理中的addUser方法相似,addJiankangjiance方法同时负责添加和修改任务。
当需要修改健康监测信息时,用户首先选择要修改的健康监测记录,然后调用JiankangjianceController控制器的editJiankangjiance方法。该方法获取原始健康监测信息并在页面上显示。管理员对需要修改的健康监测信息字段进行修改,完成后再次调用addJiankangjiance方法。通过业务层的updateByKey方法,数据库中的健康监测信息表数据得以更新。
健康监测管理流程图如下所示。
图20健康监测管理流程图
健康监测查询界面如下图所示。
图21健康监测查询界面
健康监测信息添加关键代码如下所示。
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
4.就诊记录管理模块
删除就诊记录时,首先选定欲删除的就诊记录,并传递主键uId至JiuzhenController控制器。然后,调用控制器的deleteJiuzhen方法,经过JiuzhenService业务层解析和处理,最终请求JiuzhenMapper持久层,使用deleteByPrimaryKey方法将就诊记录数据从数据库中移除。
至于查找就诊记录,用户需输入欲查找的就诊记录名称。接着,调用getData方法以获取所有数据并进行分页。获取的所有数据随后在视图上显示。此时,用户只需借助脚本方法快速查找,无需进行数据库操作。
就诊记录管理流程图如下所示。
图22就诊记录管理流程图
就诊记录查询界面如下图所示。
图23就诊记录查询界面
就诊记录信息添加关键代码如下所示。
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
六、系统测试
(一)测试目的
在对该系统进行完详细设计和编码之后,就要对健康数据分析管理系统的程序进行测试,检测程序是否运行无误,反复进行测试和修改,使之最后成为完整的软件,满足用户的需求,实现预期的功能。
(二)测试过程
在软件测试过程中,通常需要为不同的功能模块设计多种测试用例。测试用例的使用可以及时发现代码业务逻辑与实际业务逻辑是否相符,及时发现代码或逻辑上的缺陷,从而完善系统,提高软件产品质量,以确保用户体验良好。
注册测试用例表如下所示。
表8注册测试用例
测试性能 | 新用户注册 | ||
用例目的 | 测试系统新用户个人信息注册功能的功能和安全性 | ||
前提条件 | 进入注册页面填写个人信息 | ||
输入条件 | 预期输出 | 实际情况 | |
各项基本信息输入不完整 | 不允许注册,无法点击注册按钮 | 一致 | |
填写已存在的用户名 | 系统显示出提示信息,要求重新填写 | 一致 | |
两次密码输入不一致 | 系统显示出提示信息,要求重新填写 | 一致 | |
填写的各项信息没有符合提示的长度和字符要求 | 系统显示出提示信息,要求重新填写 | 一致 | |
胡乱填写电话号码 | 收不到验证码 | 一致 | |
填写验证码与收到的不一致 | 系统显示提示信息告知用户验证码错误,不予注册 | 一致 |
登录测试用例表如下所示。
表9登录测试用例
测试性能 | 用户或操作员登录系统 | ||
用例目的 | 测试用户或操作员登录系统时功能是否正常 | ||
前提条件 | 进入用户登录页面或操作员登录页面 | ||
输入条件 | 预期输出 | 实际情况 | |
各项信息不予填写,直接点击登陆按钮 | 不允许登录,提示填写账号相关信息 | 一致 | |
填写错误的登录名或密码后点击登录系统 | 提示用户名或密码错误,要求重新填写进行登录 | 一致 | |
填写与验证码信息不一致的信息 | 系统显示出提示信息,表明验证码错误,要求重新填写 | 一致 |
健康指导录入测试用例表如下所示。
表10健康指导录入测试用例
测试性能 | 用户进行健康指导录入的操作 | ||
用例目的 | 测试用户进行健康指导录入操作时,该功能是否正常 | ||
前提条件 | 用户进入用户详情页,该用户能够被健康提醒 | ||
输入条件 | 预期输出 | 实际情况 | |
对着某用户点击“健康提醒”按钮 | 界面跳转至健康提醒界面 | 一致 | |
在健康提醒界面,输入必填项,点击“提交”按钮 | 提示“健康提醒成功”,并返回上一级界面 | 一致 | |
在健康提醒界面,填写健康提醒表单的时候未输入完整,点击“提交”按钮 | 提示“健康提醒失败” | 一致 |
健康监测管理测试用例表如下所示。
表11健康监测管理测试用例
测试性能 | 健康监测相关信息管理功能 | ||
用例目的 | 测试系统操作者对健康监测相关信息进行管理的功能是否正常 | ||
前提条件 | 登录系统进入相关管理页面 | ||
输入条件 | 预期输出 | 实际情况 | |
进入健康监测管理界面,点击“录入”按钮,填写所有必填项,点击提交 | 提示“录入成功”,并返回查询界面 | 一致 | |
进入健康监测管理界面,点击“录入”按钮,未填写一个或者多个必填项,点击提交 | 提示“录入失败”,请填写必填项 | 一致 | |
进入健康监测管理界面,选择要修改的一条数据,点击该条数据后面的“修改”按钮 | 节目跳转至修改界面 | 一致 | |
在修改界面,修改可修改项后,点击“提交”按钮 | 提示“修改成功”,并返回查询界面 | 一致 | |
进入健康监测管理界面,点击某条数据后面的删除按钮 | 提示“是否要删除该数据”,如果用户点击“确定”按钮,则成功删除该条数据,并提示“删除成功”,之后返回查询界面 | 一致 |
(三)测试结果
经过对此系统的测试,得出该系统足以满足用户日常需求,在功能项目和操作等方面也能满足操作员对于其他用户的管理。但是,还有很多功能有待添加,这个系统仅能满足大部分的需求,还需要对此系统的功能更进一步的完善,这样使用起来才能更加的完美。
七、总结
通过开发健康数据分析管理系统,我巩固了之前学过的知识。如今,我将平时所学到的知识融合到设计中。在设计过程中,我进行了充分的准备工作。首先,在数据库系统的设计过程中,特别是在数据库的工作原理和工作特点方面,我进行了深入的讨论。同时,对于小型站点来说,选择最适合的服务器也至关重要。其次,我利用所学的知识点来分析所做的系统,并在此基础上进行了设计。