Springboot养老院信息管理系统的开发
摘 要
随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Springboot框架建设养老院信息管理系统。本设计主要实现集人性化、高效率、便捷等优点于一身的养老服务平台,完成养老资讯、老人信息管理、老人日常管理等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。只需通过一台电脑,动动手指就可以操作系统,实现数据通信管理。整个系统平台的设计过程都充分考虑了数据的安全、稳定及可靠等问题,而且操作过程简单。
养老院信息管理系统采用Java技术,Mysql数据库存储数据,基于Springboot框架开发。系统采用了模块化设计方法,根据用户的需求开发功能模块,方便了程序扩展维护,以便后期的更新。整个开发过程首先对系统进行需求分析,得出系统主要功能模块。接着对系统进行总体设计和详细设计。最后对系统进行了功能测试,并对测试结果进行了分析总结,得出系统的不足及需要改进的地方,为以后的系统维护提供了方便,同时也为以后开发类似系统提供了借鉴和帮助。
关键字:养老院信息管理系统;Springboot;MySQL
Abstracts
With the advent of the Internet trend, various industries are considering using the Internet to promote themselves. The best way is to establish their own Internet system, and maintain and manage it. In practical application, the working rules and development steps of the application software are used to construct the elderly care home information management system using the Springboot framework. This design mainly implements an elderly care service platform that integrates the advantages of humanization, efficiency, and convenience, and completes functional modules such as service projects, elderly supermarket, elderly care workers, and activity information management. The system communicates with the server through a browser to achieve data interaction and change. You can operate the system by moving your fingers through a computer to achieve data communication management. The entire system platform design process fully considers issues such as data security, stability, and reliability, and the operation process is simple.
The nursing home information management system uses Java technology, MySQL database to store data, and is developed based on the Springboot framework. The system uses a modular design method to develop functional modules based on user needs, facilitating program expansion and maintenance for later updates. The entire development process starts with a requirements analysis of the system and obtains the main functional modules of the system. Then, the overall design and detailed design of the system are carried out. Finally, a functional test of the system was conducted, and the test results were analyzed and summarized. The shortcomings and areas for improvement of the system were identified, which provided convenience for future system maintenance and also provided reference and assistance for future development of similar systems.
Keywords: Nursing Home Information Management System; Springboot; MySQL
目 录
摘 要
第1章 绪论
1.1课题背景
1.2开发意义
1.3本文的组织结构
第2章关键技术研究 3
2.1开发环境介绍
2.2统一建模语言
2.3 开发技术
2.3.1J2EE技术 3
2.3.2MVC模式 3
2.3.3MySQL数据库 3
2.3.4 B/S结构 4
2.3.5Springboot框架 4
2.3.6 MyEclipse开发工具 4
第3章 需求分析 7
3.1可行性分析 8
3.1.1 技术可行性 8
3.1.2经济可行性 9
3.1.3 操作可行性 9
3.1.4 法律可行性 10
3.2需求分析 10
3.3系统设计原则 13
3.4业务流程分析
3.4.1操作流程
3.4.2添加信息流程
3.4.3删除信息流程
第4章 系统总体设计
4.1系统功能模块
4.1功能模块设计
4.3数据库设计 19
4.3.1数据库简介 19
4.3.2数据库设计 19
第5章 系统实现
5.1登录功能模块
5.2用户功能模块
5.3管理员功能模块 36
第6章 系统测试
6.1系统测试的目的
6.2测试策略
6.3测试特性及分析
6.4功能测试 38
6.5测试结果 39
结 论 40
参考文献 41
致 谢 43
第1章 绪论
养老院是集老人护理、护工等服务服务于一体的综合行养老院,经过我们前期的调查,院方大部分工作采用手工操作方式,会带来工作效率过低,运营成本过大的问题。
院方可用合理的较少投入取得更好的服务效果,在满足社会需求、注重社会效益的同时,获得相应的经济效益,从而提高院方的长远发展能力,增强内部控制能力,在人、财、物的综合运营管理上得到更多、更好的方法和手段,用有限的资源取得最合理的社会和经济效益的产出。
养老院信息管理系统实现系统主要功能:首页、系统用户(管理员、用户、护工)模块管理(老人管理、养老资讯、公告信息、老人日常)管理。养老院内部管理系统以院方人、财、物综合管理为核心,包含、房间管理、收费管理、健康情况、收支报表管理层决策智能分析等功能,系统采取一体化的运营模式,可作为提高院方综合运营能力的有效手段。
1.2开发意义
养老院在关爱老年人身心健康、提供必要的社会帮助方面发挥着不可或缺的重要作用,同社会中其他性质的企业一样,养老院同样需要高效率和高标准的管理系统,以达到为广大老年客户提供高水准服务的目的。当前的养老院机构的现状和存在的问题有以下两个方面:1、信息化基础薄弱。养老院当前信息化的一些基础信息采集不足,无法满足信息共享、统计、查询等业务的需要。2、信息流转不畅。当前养老院信息的传递依靠传统方式,缺乏高效流转,且流转渠道不畅。
养老院服务的规模化和多样性对管理和服务工作带来了挑战,对于现代养老机构而言,传统的管理方式已难以适应现代化养老服务的需要,而采用信息化集成管理,可以使养老机构的管理和服务工作更加便捷和高效。
1.3本文的组织结构
第一章是绪论,本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。
第二章研究了养老院信息管理系统安全方案的所采用的开发技术和开发工具。
第三章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章是系统的具体实现,介绍系统的各个模块的具体实现。
第六章在前几章的基础上对系统进行测试和运行。
最后对系统进行了认真的总结,以此对未来有一个新的展望。
第2章 关键技术研究
1.软件体系结构方案:采用B/S模式,B/S代表的是服务器端由web服务器发放,客户端由浏览器接收的系统,它的前台是html语言,由浏览器解释。B/S结构可以由web服务器能够解释的脚本语言如jsp、php、asp、JavaScript。
2.操作系统方案:Windows 7(旗舰版)操作系统,该系统可以兼容需要的软件,并且具有良好的运行速度,界面良好。
3.后台数据库:选用Mysql。Mysql旨在通过数据库加密、更加安全的默认设置、加强的密码政策和细化许可控制、及加强的安全模型等特性,为企业数据提供最高级别的安全性。
4.开发工具:选用Myeclipse10
5.开发语言:Java语言。
6.开发技术:JavaEE+html+css+js技术
统一建模语言(Unified Modeling Language ,UML)是一种可视化建模语言,通俗上讲就是系统开发者利用UML可以清楚地表达出自己对系统是如何设计,是一种设计思想的体现,然而UML就是作为辅助工具,就如汽车轴承的轮滑油。UML包括了一些可以相互组合图表的图形元素。由于UML是一种语言,所以UML具有组合这些元素的法规。UML提供了多种图来设计设计系统,如设计系统前期常用的用例图,行为图等,这些图需要用多个视图来展示一个系统,这组视图被称为一个模型(Model)。一个UML模型描述了一个系统需要做什么。同时,UML提供了组织和扩展这些图的方法。
2.3.1J2EE技术
人可以掌握多门外语,而一个计算机科学家精通的大多是编程语言,它不是人类的自然语言,比如C语言、Java、Perl等等。由于不同的公司开发出的“中间件”不够规范,所以Sun公司推出J2EE,用这个标准来解决弊病。它提供了良好的机制,让每个层次允许与之相对的服务器、组件运行,使得系统的搭建稳定可用、开发高效、维护方便。
2.3.2MVC模式
MVC模式是常用的开发模式,主要是在代码实现上将其分为M层、V层和C层。
视图(View)代表用户交互界面,一个 Web 应用就可能有很多的界面,在 MVC 模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求, 并不包括业务流程的处理,业务流程由模型(Model)来处理。
模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVC 最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的 EJB 模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。
控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。
2.3.3MySQL数据库
科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的物流信息管理系统也需要这项技术的支持。
用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。
2.3.4B/S结构
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
2.3.5Springboot框架
Springboot即SpringMVC+Spring+Mybatis,这三个框架有各自最独有的优势,那么将它们组合在一起能够碰撞出很强的火花。设计者在不需消耗大量功夫,能做出Web应用程序,而且这个程序还具有层次清晰、升级更新操作不影响正常使用的、允许多次使用的特点。这个复合框架形成一个有着结构完整、功能强大和结构良好的体系:SpringMVC使各板块分离,Spring使开发更灵活方便,使用Mybatis让开发者直接对对象进行操纵,各层次分工明细,并实现各个层次间的解耦,让代码更加的灵活精简。这个框架使程序员能够规避在开发时期避免个别错误导致整体被破坏,也能在后期应对客户对产品提出的新需求。
2.3.6MyEclipse开发工具
MyEclipse是由Genuitec公司开发的,一款功能非常强大的JavaEE的集成开发环境,其中包括有:完备的编码、调试、测试和发布功能[10],完整支持JSP、Spring、CSS、JavaScript、SpringMVC、HTML、JSF、Mybatis、SQL等技术。在体系结构上,MyEclipse的特征可以被分为7类:JavaEE模型;Web开发工具、EJB开发工具、JavaEE项目部署服务、应用程序服务器的而连接器、数据库服务、MyEclipse整合帮助。
对于以上每一种功能的类别,在MyEclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse在结构上的这种模块化,可以让它在不影响其他模块的情况下,对其中任意的一个模块进行单独的扩展和升级。强大的MyEclipse应用开发平台也不仅仅只是Eclipse的插件而已,同时更是一款功能强大的,用于JavaEE的集成开发环境。
第3章 需求分析
任何一个项目在开发研究前,都需要对研发系统本身的需求做一个认真的分析,市场的调研是不可忽视的,从实际场景中确定使用人员的功能需求,从而明确目标,对整个系统的开发有一个更加准确的定位。在这个章节,需要对系统的性能分析,业务流程分析,和数据等进行分析,养老院信息管理系统的整体界面简单,功能完善。
需求的可行性是分析和讨论发达的系统能达到什么样的要求。开发的系统或网站是否符合之前的要求。只有在预先评估系统的开发中,才能在系统开发和实施之前完成需求。系统在开发和运用过程中,在技术可行性、操作可行性、经济可行性和法律可行性这几点展开的详细说明,证明了这几点是可行的。在技术可行性中主要说明了Springboot是目前是较为通用、成熟的技术,具有较为强大的数据库开发功能、以及具有方便快捷的数据库接口设计功能。在现有的调研情况和所掌握的技术是必要可行的。在经济可行性中,主要说明了系统从调研时期的费用和后期维护和可节约的成本。操作可行性主要说明了系统和操作的简便性具有操作简便和上手快的特点。在法律可行性上,符合要求不涉及到侵权等问题在社会中能起到提高效率的作用。
从系统需求分析、功能分析、性能分析等进行了设计和说明。系统需求分析对于养老院信息管理系统的需求进行了深入分析,证明了系统在市场中的需求。
养老院信息管理系统完成设计,可能受到时间以及空间上的制衡。因此,在开始设计每一个项目的时候,必须对系统进行可行性分析,只有这样才能够降低项目所带来的危害,减少人力、物力以及财力方面的损耗。该系统的可行性分析主要集中在技术可行性、经济可行性、运行可行性和社会可行性四个方面。从以上几个方面讨论了该系统的可行性。
3.1可行性分析
可行性分析目的是根据所开发系统的用户需求,明确研究方向和目标,通过可行性分析确定系统的框架和功能模块。
可行性分析是对任何管理系统的需求、技术和经济的分析。其中最重要的技术方面的可行性,技术可行性是分析软件开发技术的应用开发系统是可行的。其次,分析软件系统的需求,分析软件需求能否满足预先设计的功能需求。最后讨论了系统的操作可行性和经济可行性。
系统的开发环境和配置可以由我们自己安装。系统采用Springboot开发工具,根据技术语言修改和维护数据信息,并结合要求使系统运行更加稳定安全,从而完成实现系统的开发。网络技术的快速发展使网络传输速度越来越快,价格越来越低,安全性越来越高,其所有硬件平台都能完全满足养老院信息管理系统开发的需要。
因此,我们从两个方面进行了可行性研究,可以看出系统的技术可行性发展没有问题。
任何软件系统在其发展将考虑后者经济可行性的一部分,也就是说软件的开发成本和设计所需的花费和随后的操作可能带来的经济效益是匹配,除了考虑这部分的软件是否可以给用户带来经济效益。
经济可行性包括系统实现过程中所需资源的研究。养老院信息管理系统的开发是由开发者自己开发,不需要购买其他软件或者端口之类的,而且社区养老管理系统的开发之前所做的市场调研及其他的养老院信息管理系统,都是没有任何费用的,都是通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于养老院信息管理系统的开发在经济上是完全可行的,没有任何费用支出的。
使用Springboot技术是比较成熟的技术,所以养老院信息管理系统的开发在经济上是没有问题的。
操作可行性是指系统不能有太复杂的操作和使用流程。养老院信息管理系统基于Springboot安装软件,访问和操作界面简单、操作方便。用户只要连接到网络就可以访问和操作。系统在界面设计上就很有善意让人感觉心旷神怡,首先这就能给操作者一种好心情,可以让工作人员以更好的心态工作,其次也很美观,在系统的使用中要不光应用到了系统完善的功能还欣赏了系统简洁的外观。其次就是系统的功能方面了,在系统的日常使用中会一点简单电脑操作的工作人员也都可以应付自如。因此,它具有操作简单,管理方便,交互性强的特点,在操作上是非常可行的。
系统的设计与开发与国家政策法规之间不存在冲突。此外,系统的设计和开发采用的操作和工作模式符合用户的日常习惯,操作方便、灵活、易于管理,具有较高的实用性。开发过程中所采用的数据均来自开源代码,不存在知识产权的争议,在法律上也是行的通的。
综上所述,开发一个基于Springboot的养老院信息管理系统是可行的。
3.2需求分析
在系统开发设计前,应该对功能做初步设想,清楚这个管理系统有什么板块,每个板块有什么功能,整体的设计是否满足使用者的需求,接着对所开发的系统功能进行的详细分析总结,从而设计出完整的系统并将其实现。用户和开发人员的交流分析,使其达到最佳理解程度,使系统功能达到最佳。
家属用户用例图如下所示。
图3-1 家属用户用例图
管理员用例图如下所示。
图3-2 管理员用例图
护工用例图如下所示。
图3-3 护工用例图
3.3系统设计原则
(1)功能要求:可以进行用户管理(管理员、家属用户、护工)资讯管理、资讯分类管理、老人信息管理、评价留言管理、老人日常等功能模块。
(2)性能:在不同操作系统上均能无差错实现在不同类型的用户登入相应界面后能不出差错、方便地进行预期操作。
(3)安全与保密要求:用户都必须通过身份验证才能进入系统,并且用户的权限也需要根据用户的类型进行限定。
(4)环境要求:支持多种平台,可在Windows系列、Vista系统等多种操作系统下使用。
2、开发目标
养老院信息管理系统的主要开发目标如下:
(1)实现管理系统信息关系的系统化、规范化和自动化;
(2)减少维护人员的工作量以及实现用户对信息的控制和管理。
(3)方便查询信息及管理信息等;
(4)通过网络操作,改善处理问题的效率,提高操作人员利用率;
(5)考虑到用户多样性特点,要求界面简单,操作简便。
3、经济效益
设计系统的目的是为了更好的进行节省人员成本及各种开销,因此需要对系统开发的成本和效益进行考虑。
3.4业务流程分析
3.4.1操作流程
图3-1登录流程图
3.4.2添加信息流程
添加信息流程图,如图所示:
图3-2添加信息流程图
3.4.3删除信息流程
删除信息流程图,如图所示:
图3-3删除信息流程图
第4章 系统总体设计
该系统的基本功能包括管理员、护工、家属用户3个角色功能模块。
对于管理员可以使用的功能模块主要有首页、用户管理、养老资讯管理、评价留言管理、公告管理、老人信息管理、老人日常管理等功能。
对于家属用户所使用的功能模块的操作主要是养老资讯、公告消息、留言评价、个人账户等功能。
对于护工所使用的功能模块的操作主要是登录系统、老人信息录入以及老人日常记录等功能。
通过软件的需求分析已经获得了系统的基本功能需求。根据各大功能模块的不同,将系统分为各种功能大块。系统功能结构如下图所示。
系统功能结构图如下图所示。
4.3数据库设计
4.3.1数据库简介
数据库是信息系统的基础和核心。数据库设计的好坏直接影响到信息系统开发的成败。创建数据库表首先确定实体的属性和实体之间的关系。根据关系创建一个数据表。
4.3.2数据库设计
(1)系统的E-R图
概念模型是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。
表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表daily_life_of_the_elderly (老人日常)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | daily_life_of_the_elderly_id | int | 10 | 0 | N | Y | 老人日常ID | |
2 | name_of_the_elderly | varchar | 64 | 0 | Y | N | 老人姓名 | |
3 | family_members_of_the_elderly | int | 10 | 0 | Y | N | 0 | 老人家属 |
4 | family_name | varchar | 64 | 0 | Y | N | 家属姓名 | |
5 | enter_the_nurse | int | 10 | 0 | Y | N | 0 | 录入护工 |
6 | name_of_support_worker | varchar | 64 | 0 | Y | N | 护工姓名 | |
7 | entry_time | datetime | 19 | 0 | Y | N | 录入时间 | |
8 | daily_title | varchar | 64 | 0 | Y | N | 日常标题 | |
9 | daily_type | varchar | 64 | 0 | Y | N | 日常类型 | |
10 | input_document | varchar | 255 | 0 | Y | N | 录入文件 | |
11 | enter_remarks | text | 65535 | 0 | Y | N | 录入备注 | |
12 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表dependent_users (家属用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | dependent_users_id | int | 10 | 0 | N | Y | 家属用户ID | |
2 | family_name | varchar | 64 | 0 | Y | N | 家属姓名 | |
3 | family_sex | varchar | 64 | 0 | Y | N | 家属性别 | |
4 | nursing_age | varchar | 64 | 0 | Y | N | 家属年龄 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表elderly_information (老人信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | elderly_information_id | int | 10 | 0 | N | Y | 老人信息ID | |
2 | name_of_the_elderly | varchar | 64 | 0 | Y | N | 老人姓名 | |
3 | age_of_the_elderly | varchar | 64 | 0 | Y | N | 老人年龄 | |
4 | height_of_the_elderly | varchar | 64 | 0 | Y | N | 老人身高 | |
5 | weight_of_the_elderly | varchar | 64 | 0 | Y | N | 老人体重 | |
6 | family_members_of_the_elderly | int | 10 | 0 | Y | N | 0 | 老人家属 |
7 | family_name | varchar | 64 | 0 | Y | N | 家属姓名 | |
8 | family_phone | varchar | 64 | 0 | Y | N | 家属电话 | |
9 | pictures_of_the_elderly | varchar | 255 | 0 | Y | N | 老人图片 | |
10 | date_of_admission | date | 10 | 0 | Y | N | 入院日期 | |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表forum (论坛)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
表forum_type (论坛分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表support_user (护工用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | support_user_id | int | 10 | 0 | N | Y | 护工用户ID | |
2 | name_of_support_worker | varchar | 64 | 0 | Y | N | 护工姓名 | |
3 | gender_of_nursing_workers | varchar | 64 | 0 | Y | N | 护工性别 | |
4 | age_of_nursing_workers | varchar | 64 | 0 | Y | N | 护工年龄 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
第5章 系统实现
5.1登录模块的实现
系统的登录窗口是用户的入口,用户只有在登录成功后才可以进入访问。通过在登录提交表单,后台处理判断是否为合法用户,进行页面跳转,进入系统中去。
登录合法性判断过程:用户输入账号和密码后,系统首先确定输入输入数据合法性,然后在login.jsp页面发送登录请求,调用src下的mainctrl类的dopost方法来验证。
用户登录模块的IPO如下所示:
输入:用户名和密码。
处理:
1)检测用户输入的账号、密码是否正确及在数据库已对应存在。
2)从数据库中提取记录,并储存在本地的session中(timeout默认=30min)。
3)根据用户名,将其显示在系统首页上。
输出:是否成功的信息。
登录流程图如下所示。
图5-1登录流程图
系统登录界面如下所示。
图5-2系统登录界面
登录代码如下:
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
5.2用户子系统模块的实现
5.2.1用户首页模块
系统呈现出一种简洁大方的首页:界面简约、鳞次栉比,用户能轻车熟路的使用。出于对系统使用群体广泛的顾虑,应有良好性能的后台。在系统时间显示上编写javascript脚本在导航栏显示系统的当前日期,首先定义一个数组d存放周一至周日,创建一个获取时间的对象time后通过该对象的方法获取年月日,(time.getDay())%7计算得到的结果是数组的下标,通过数组下标就获取了数组的值,利用字符窜连接把年月日和星期转换成字符窜,通过document.getElementById("date")获取标签后使用innerHTML把该字符串显示在jsp页面。
如下图所示为系统的首页界面。
图5-3系统首页界面
系统首页代码如下:
<%
String lb=request.getParameter("lb");
HashMap ext = new HashMap();
new CommDAO().insert(request,response,"xinwentongzhi",ext,true,false,"xinwentongzhi_add.jsp?lb="+lb);
%>
5.2.3评价留言模块
评价留言录入过程中,首先使用getmap(id,"xinxi"),通过用户ID得到留言评价数据,将数据赋值给数据库表,调用CommDAO的insert方法将留言数据插入列表中,最后查看个人发布的评价留言记录。
评价留言流程图如下所示。
图5-4评价留言流程图
评价留言界面如图所示。
图5-5评价留言界面界面图
评价留言界面管理代码如下:
<mapper namespace="com.project.demo.dao.base.BaseMapper">
<select id="selectBaseList" resultType="java.util.LinkedHashMap">
${select}
</select>
<select id="selectBaseCount" resultType="Integer">
${count}
</select>
<select id="selectBaseOne" resultType="Object">
${select}
</select>
<update id="updateBaseSql">
${sql}
</update>
<delete id="deleteBaseSql">
${sql}
</delete>
</mapper>
5.2.4养老资讯模块
用户登录系统后可以查看导航栏养老资讯,可以点击查看资讯内容。
养老资讯界面如图所示。
图5-7养老资讯界面
养老资讯评价界面如图所示。
图5-8养老资讯评价界面
养老资讯代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
5.3管理员子系统模块的实现
5.3.1个人资料模块
用户点击登录填写账号信息登录后,当用户登录成功后会将个人信息保存在session作用域中,点击自己的用户名时,会跳转到个人详细信息页面,由后台通过Freemarker取出session作用域中的用户信息进行动态渲染,例如,邮箱、电话号码、用户名等等。同时页面上会显示修改个人信息和修改密码的按钮,这时客户可以修改自己的登录密码以保障账号的安全性,防止被人窃取账号,通过UserController.java的updatePassword()实现,同时也可以根据自己的个人信息是否变动做出相应的修改,通过updateUserInfo()实现。
密码修改流程图如下所示。
图5-9密码修改流程图
密码修改流程图如下所示
图5-10密码修改界面图
密码修改代码如下:
/**
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
Query ret = service.count(query, service.readConfig(request));
List list = ret.getResultList();
Object s = list.get(0);
int count = Integer.parseInt(list.get(0).toString());
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
}
5.3.2老人信息管理模块
添加老人信息时,输入必填字段后,表现层的LaorenController接受传过来的老人信息参数,再调用LaorenController类的addLaoren方法,经过LaorenService业务层到LaorenMapper持久层的处理,完成对整个添加老人信息的操作。addLaoren方法也和用户管理中的addUser方法类似,同时做添加和修改工作。
修改老人信息时,选择需要修改的老人进行修改,调用LaorenController控制器的editLaoren方法,拿到该老人原本的信息并显示到页面,管理员再对需要修改的老人信息字段进行修改,完成后调用addLaoren方法,调用业务层的updateByKey方法,更新数据库的老人信息表的数据。
老人管理界面如下所示。
图5-11老人管理流程图
老人信息添加界面如下图所示。
图5-12老人信息添加界面
老人信息添加代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
5.3.3护工管理模块
删除护工人员时,选择需要删除的护工人员进行删除,把主键的uId传到hugongrenyuanController控制器,再调用控制器的deletehugongrenyuan方法,数据经过hugongrenyuanService业务层解析和处理,请求hugongrenyuanMapper持久层调用deleteByPrimaryKey方法操作数据库将护工人员数据从数据库中删除。
查找护工时,输入需要查找的护工人员名,调用getData方法获取所有数据并且进行分页,把获取到的所有数据显示到视图上,这时候只需要用脚本方法便能快速查找,不涉及对数据库操作。
护工人员管理流程图如下所示。
图5-13护工人员管理流程图
护工人员添加界面如下图所示。
图5-14护工人员添加界面
5.3.4老人日常管理模块
护工可以将老人日常信息录入系统进行保存,管理员可以对此模块进行维护管理。
老人日常管理界面如下图所示。
图5-15老人日常管理界面
第6章 系统测试
系统测试主要是通过测试确定系统的可操作性,系统故障必须在规定的时间内纠正,否则会造成严重的经济损失。验证系统内的保护机制,以防止未经授权的入侵。在安全测试中,测试人员的作用是试图闯入系统并使用各种方法来试图突破防御。因此,系统安全设计的标准是找到一种使入侵系统更先进的方法。
6.1系统测试的目的
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,在测试过程中发现问题并纠正它们,从而使系统更长时间稳定成熟。本章的作用是发现这些问题并对其进行修改,虽然耗时费力,但对于系统的开发长期使用而言是非常重要和必要的。
软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。
养老院信息管理系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在养老院信息管理系统正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
6.2测试策略
测试系统主要针对以下三个方面进行测试:
1、基于Springboot的系统代码的单元测试,集成测试,系统测试和验收测试结果;
2、测试对象中列出的可测试或不可接受的特征和功能;
3、分析并记录测试要求:日期的书面文件不影响测试的设计、开发和执行。
6.3测试特性及分析
(1)挑剔性:测试是为了找出系统的错误,在系统测试时我们要严格苛刻,十分挑剔。
(2)复杂性:测试是一个非常复杂的过程。
(3)不彻底性:虽然系统经过测试,但测试仍然会存在不够彻底的问题,测试不能保证系统后期运行完整无误,所以要在后期不断的检查、修改。
(4)经济性:通场这种测试称为“选择测试(Selective Testing)”。在测试时要遵守经济性的原则。
经过测试,产品的稳定性和成熟度可以大大提高,产品质量也可以得到保证。
6.4功能测试
系统测试方面,我们通常运用的是白盒测试以及黑盒测试这两种方法。白盒测试是指在了解系统内部工作流程的前提下,可以根据需求规范验证系统内部操作是否能够正常运行的测试;而黑盒测试指的是,倘若知道了这个系统的全部功能,可以进行测试检测系统中的每一个功能是否满足正常使用。
功能测试,主要是对系统的用户登录进行详细的测试,但是登录不可以是任何人都可以登录成功的,所以对登录进行详细测试。
表6-1注册测试用例
测试性能 | 新用户注册 | ||
用例目的 | 测试系统新用户个人信息注册功能的功能和安全性 | ||
前提条件 | 进入注册页面填写个人信息 | ||
输入条件 | 预期输出 | 实际情况 | |
各项基本信息输入不完整 | 不允许注册,无法点击注册按钮 | 一致 | |
填写已存在的用户名 | 系统显示出提示信息,要求重新填写 | 一致 | |
两次密码输入不一致 | 系统显示出提示信息,要求重新填写 | 一致 | |
填写的各项信息没有符合提示的长度和字符要求 | 系统显示出提示信息,要求重新填写 | 一致 | |
胡乱填写电话号码 | 收不到验证码 | 一致 | |
填写验证码与收到的不一致 | 系统显示提示信息告知用户验证码错误,不予注册 | 一致 |
登录测试用例表如下所示。
表6-2登录测试用例
测试性能 | 用户或操作员登录系统 | ||
用例目的 | 测试用户或操作员登录系统时功能是否正常 | ||
前提条件 | 进入用户登录页面或操作员登录页面 | ||
输入条件 | 预期输出 | 实际情况 | |
各项信息不予填写,直接点击登陆按钮 | 不允许登录,提示填写账号相关信息 | 一致 | |
填写错误的登录名或密码后点击登录系统 | 提示用户名或密码错误,要求重新填写进行登录 | 一致 | |
填写与验证码信息不一致的信息 | 系统显示出提示信息,表明验证码错误,要求重新填写 | 一致 |
表6-3老人管理测试用例
测试性能 | 老人相关信息管理功能 | ||
用例目的 | 测试系统后台操作员对老人相关信息进行管理的功能是否正常 | ||
前提条件 | 登录系统后台进入相关管理页面 | ||
输入条件 | 预期输出 | 实际情况 | |
普通操作员登录,点击进入老人相关信息管理的页面 | 提示非超级用户,权限不够,无法进入相关页面 | 一致 | |
超级操作员登入,删除某个已被账单的老人 | 提示该老人删除失败 | 一致 | |
点击增加老人按钮 | 页面正常跳转 | 一致 | |
增加老人是,填写已存在的老人编号 | 提示该编号已存在 | 一致 |
通过对功能的测试,养老院信息管理系统的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。
6.5测试结果
经过对一系列测试结果的有效分析,本平台开发系统符合用户的要求和需求。所有的基本功能相对齐全,操作起来简单方便,测试系统性能良好,作为大众化系统使用是比较值得推广宣传的。
结 论
系统的开发环境和配置都是可以自行安装的,系统使用java开发工具,使用比较成熟的mysql数据库进行对系统前台及后台的数据交互,根据技术语言结合需求对数据库进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
在设计系统的过程中还遇到了一个棘手的问题,那就是自己的英语水平还有待提高,很多关于网站技术开发的资料文献都是英文版的,关键词语以及技术性词汇不能很好的理解。只有在借助翻译软件的实时性翻译功能的辅助下才勉强看懂。显然英语水平的高低直接影响到系统的开发过程。
回顾毕业设计的整个过程,既付出了努力与汗水也收获了很多难以忘怀的美好经历。虽然在系统开发过程中经历了各种各样的困难,自己也在不断研究与探索,可是系统的实现仍有许多不足之处。但是经过系统编程工作的学习让我有了更多的信心,相信在未来的路上我会走的更好。
参考文献
[1]单树倩,任佳勋.基于Springboot和Vue框架的数据库原理网站设计与实现[J].电脑知识与技术,2021,17(30):40-41+50.
[2]肖守渊,朱红. 乡镇养老院如何做好医养结合服务[N]. 中国人口报,2021-06-23(003).
[3]余明岩. 陕西石泉县养老院老年体育健身需求与服务供给研究[D].云南师范大学,2021.
[4]彭霞. 小组工作介入农村养老院特困老人精神赡养的应用研究[D].兰州大学,2021.
[5]江西永新县:提升乡镇养老院建设管理水平[J].社会福利,2021(03):59-60.
[6]臧梦璐.地方“两会”亮点之三 进一步理顺农村养老院机构设置和管理体制——专访江苏省人大代表、淮安广济医药连锁有限公司董事长 朱华林[J].光彩,2021(02):26-27.
[7]王志文.关于加强农村养老院监督的调查与思考[J].廉政瞭望,2020(14):82-83.
[8]朱婷. 乡镇政府在养老院养老服务供给中的责任分析[D].南京理工大学,2020.
[9]Minmin He,Shengli Lv. Research on Civil Aircraft Structural Strength Material Performance Database Based on Springboot[C]//Proceedings of 2020 4th International Conference on Electrical,Automation and Mechanical Engineering(EAME2020).Proceedings of 2020 4th International Conference on Electrical,2020:1062-1067.DOI:10.26914/c.cnkihy.2020.057541.
[10]厉丽. 农村养老院公办民营改革困境及其对策研究[D].云南师范大学,2020.
[11]李蓓. 农村五保户老人养老院生活适应研究[D].兰州大学,2020.
[12]大埔县人民政府办公室关于对全县乡镇养老院管理现状情况的通报[J].梅州市人民政府公报,2020(05):27-32.
[13]韩振秋,陈乃笋.山东肥城市:“四个到位”确保农村养老院建设管理水平提升[J].社会福利,2020(03):36.
[14]路兴华.农村养老院公建民营的困境及对策——基于安徽安庆市农村养老院的调查[J].社会福利,2019(11):37-38.
[15]Kan Ji,Xiaojun Chen,Aoming Qin,Jia Liu,Jinmei Wu. Design and Implementation of Teaching Quality Evaluation System Based on Springboot[C]//第七届计算与信息科学国际学术会议论文集.,2019:444-452.
[16]孙似锦,杨飞,陈小红,彭明俊,肖丽娜.铜仁市农村养老院发展现状、困境及对策研究[J].劳动保障世界,2019(27):63-65+68.
[17] 民政部养老服务司负责同志就特困人员供养服务设施(养老院)改造提升和加强管理有关问题答记者问[N]. 中国老年报,2019-09-17(002).
[18]田固.通力合作 多措并举 着力提升农村养老院兜底保障能力——解读民政部等四部门《关于实施特困人员供养服务设施(养老院)改造提升工程的意见》和《关于进一步加强特困人员供养服务设施(养老院)管理有关工作的通知》[J].社会福利,2019(09):18-20.
[19]陆彬. 农村养老院特困老人精神赡养的社会支持网络建构研究[D].扬州大学,2019.
[20]甘满堂,冯璐,萧开通.社区互助养老与村办养老院可持续运营——以福建省晋江市萧下村养老院为例[J].重庆工商大学学报(社会科学版),2020,37(01):99-105.
致 谢
时间过得真快,眨眼之间,大学四年的学习生活即将结束,无论是在学习还是生活的这四年,老师们给了我很多帮助,让我终身受益匪浅。老师们不仅帮我树立了正确的人生观和价值观,还帮我养成了很多好习惯,树立了终身学习的意识。在此,我要对我的所有老师表示衷心的感谢。与此同时,我还要感谢陪伴我在这四年里一起成长的伙伴们。他们给了我无私的帮助和关怀,让我在人生最好的四年中获得许多真诚的友谊。
毕业设计是大学四年的最后一个答卷,我们正忙着这四年的美好结束。在毕业项目主题选择的早期阶段,我很紧张担心自己选择的主题很复杂,难以理解,觉得不能这样做会影响我的毕业。是指导老师给我们提供了毕业设计的主题和具体要求,让我们对毕业设计不要太模糊,如果对主题有任何异议,要及时跟他沟通,并且还帮我们介绍他带过的优秀学哥学姐,对我们进行指导,这样再设计上遇到的问题就可以及时得到解决,对我们完成毕业设计提供好的指导条件。
对于毕业设计项目主要是对我在大学所学的专业知识进行一次综合的考验,让我们通过所学的技术知识可以真正的运用到实际动手开发中,通过项目的开发让我意识到自己很多地方的不足,所学知识的不扎实,不能很好的将自己所学的知识运用到系统实际开发上。后来通过自己在图书馆查阅大量书籍,完成系统的设计大纲,阅读笔记和翻译,毕业设计不仅要考验我们的个人能力,还要测验我们的学习态度,做到细节的事情。对于指导老师的帮助,我的毕业设计才可以顺利的完成,我非常感谢。
最后要感谢我的同学们,是你们不断的帮助、鼓励、熬夜、保持调试,测试程序,最终完成养老院信息管理系统的运行。我们在交流,谈论时间,将是我们未来的财富,我要深深地感谢你。
毕业在即,在今后的工作和生活中,我会铭记师长们的教诲、同学们的帮助,继续不懈努力和追求,来报答所有支持和帮助过我的人!
请关注点赞+私信博主,免费领取项目源码