摘要
本文介绍了一种基于Spring Boot框架的养老院管理系统的设计与实现。该系统旨在帮助养老院管理者更有效地管理机构内的各项事务,并提供更好的服务于老年人。系统的设计考虑了养老院管理的特殊需求,包括系统用户、老人信息管理、服务分类管理、医疗服务管理、预约服务管理、健康信息管理、安全监控管理、财务信息管理、系统管理、公告管理、资源管理等功能模块。通过采用Spring Boot框架,系统具有良好的可扩展性和稳定性,同时提供了友好的用户界面和便捷的操作体验。在实现过程中,采用了前后端分离的开发模式,使用了Vue.js框架构建了前端界面,并通过RESTful API与后端服务进行交互。最后,通过对系统的测试和实际应用,验证了系统的可行性和有效性,表明该系统能够满足养老院管理的实际需求,具有一定的推广和应用价值。
关键词:养老院管理系统;Springboot框架;MySQL数据库
Abstract
This paper introduces the design and implementation of a nursing home management system based on the Spring Boot framework. The system is designed to help nursing home managers more effectively manage matters within the agency and provide better services to the elderly. The design of the system takes into account the special needs of nursing home management, including system users, elderly information management, service classification management, medical service management, appointment service management, health information management, security monitoring management, financial information management, system management, announcement management, resource management and other functional modules. By adopting the Spring Boot framework, the system has good scalability and stability, while providing a friendly user interface and convenient operation experience. During the implementation process, the development mode of front and rear-end separation was adopted, the front-end interface was built using the Vue.js framework, and it interacted with the back-end service through RESTful API. Finally, through the test and practical application of the system, the feasibility and effectiveness of the system are verified, indicating that the system can meet the actual needs of nursing home management, and has certain promotion and application value.
Keywords:Nursing home management system; Springboot framework; MySQL database
目 录
摘要
第1章 绪 论
1.1课题背景与意义
1.2 研究内容
1.3研究方法
1.4 开发技术
第2章 系统分析
2.1 可行性分析
2.2总体设计原则
2.3 系统需求分析
2.4 业务流程分析
第3章 系统设计
3.1 系统概要设计
3.2系统结构设计
3.3 数据库设计
第4章系统实现
4.1用户(老人用户、护工用户)功能模块
4.2管理员功能模块
第5章软件测试
5.1软件测试的重要性
5.2测试实例的研究与选择
5.3测试环境与测试条件
5.4系统运行情况
5.5系统评价
第6章 总结
参考文献:
致 谢
随着我国老龄化进程的不断加剧,养老服务领域的需求日益增长。然而,传统的养老服务模式已经无法满足社会的需求,因此需要借助现代信息技术来提升养老服务的质量和效率。在这一背景下,本课题旨在设计和实现一种基于Spring Boot框架的养老院管理系统,以满足养老院管理者在日常运营中的需求,提升老年人的生活质量。
养老院作为提供养老服务的机构,其管理具有一定的复杂性和特殊性。传统的纸质管理方式已经无法满足信息化管理的需求,需要引入现代信息技术来进行管理和优化。因此,设计一个基于Spring Boot框架的管理系统势在必行。
养老院管理涉及到多个方面,包括系统用户、老人信息管理、服务分类管理、医疗服务管理、预约服务管理、健康信息管理、安全监控管理、财务信息管理、系统管理、公告管理、资源管理等功能模块。这些功能模块之间存在着复杂的关联和依赖关系,需要一个统一的系统来进行整合和管理。Spring Boot框架提供了良好的模块化设计和依赖管理机制,可以有效地支持这些功能模块的实现和集成。
养老院管理系统还需要具备良好的可扩展性和稳定性,以应对未来可能出现的各种需求和挑战。Spring Boot框架作为一种轻量级的Java开发框架,具有优秀的性能和可扩展性,可以满足系统的这些需求。
在实现过程中,采用了前后端分离的开发模式,前端使用Vue.js框架构建界面,通过RESTful API与后端服务进行交互。这种开发模式可以有效地提高系统的灵活性和可维护性,同时也提升了用户的操作体验。
通过对系统的测试和实际应用,验证了系统的可行性和有效性。系统可以满足养老院管理的实际需求,为管理者提供了更便捷、高效的管理工具,同时也为老年人提供了更优质的生活服务。因此,该系统具有一定的推广和应用价值,可以为我国养老服务领域的发展做出积极的贡献。
1.2 研究内容
养老院管理系统的设计与实现所需要的工作内容:
(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。
(2)系统确认完成后,结合系统开发的需求进行确认系统开发所使用的技术,养老院管理系统的设计与实现使用Springboot框架,数据库进行平台的搭建开发,确认好使用的技术进行技术分析,所使用的技术是否可以完成系统的实现。
(3)确定好系统使用的技术,进行在线确认系统所划分的用户角色,并且根据用户角色划分确定所要设计的功能模块,对养老院管理系统的设计与实现的设计主要划分别为管理员和用户角色,并所使用的功能模块也相应不同,但是系统的数据库实现的内容是交互的,用户可以随时根据自己的需求进行发表博文,对于系统工作人员可以根据自己的分管内容进行在线信息的处理及操作,管理员获取到所有用户的详细数据信息,并根据需求进行第一时间处理解决。
(4)系统的功能模块确认完成后进行程序及界面的设计,设计完成后,并且通过测试来判断程序是否完善,对于系统测试,需要不同的用户进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞,并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。
1.3研究方法
首先通过网上查找或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。然后,在开发工具上,最终确定是基于Mysql数据库,在Java的Springboot框架设计的基础上实现,设计出系统大致的功能模块。主要从方便系统用户和系统管理员的角度进行分析,明确养老院管理系统的设计与实现应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统的可用性、实用性。
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的Springboot框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用Springboot作为开发框架,同时集成MyBatis、Redis等相关技术。
Spring Boot是一个开源的Java框架,用于快速构建独立的、可扩展的、基于Spring框架的应用程序。它旨在简化Spring应用程序的配置和部署过程,通过默认配置和自动化来提高生产力。
Spring Boot的主要特点如下:
简化配置:Spring Boot通过自动配置功能,减少了繁琐的配置过程。开发者只需进行少量的配置,即可快速构建一个可运行的应用程序。
内嵌服务器:Spring Boot默认集成了多种内嵌服务器,如Tomcat、Jetty等。这意味着开发者可以直接将应用程序打包为一个可执行的JAR文件,而无需安装额外的服务器软件。
自动化依赖管理:Spring Boot通过依赖管理功能,自动解决了项目中的依赖关系。开发者只需在配置文件中添加所需的依赖,Spring Boot会自动下载并管理这些依赖。
健康检查和监控:Spring Boot提供了健康检查和监控功能,可以方便地监控应用程序的运行状态和性能指标。
简化开发流程:Spring Boot提供了一系列的开发工具和插件,可以帮助开发者快速构建、测试和部署应用程序。它还支持热部署,可以在开发过程中实时更新应用程序。
生态系统丰富:Spring Boot在Spring框架的基础上发展起来,与Spring生态系统紧密结合。开发者可以方便地使用Spring框架提供的各种功能和模块。
总的来说,Spring Boot是一个简化Java应用程序开发的框架,具有简单配置、内嵌服务器、自动依赖管理等特点。
1.4.2 Mysql数据库
MySQL是一种流行的开源关系型数据库管理系统,广泛应用于各种网站和应用程序中。它支持多种操作系统,包括Windows、Linux和Mac OS等。MySQL具有稳定性高、性能优异、易于使用等特点,因此备受开发者的青睐。
MySQL使用SQL(结构化查询语言)作为其查询语言,提供了丰富的功能和强大的性能优化工具。它支持事务处理,具有ACID(原子性、一致性、隔离性、持久性)特性,能够确保数据的完整性和一致性。此外,MySQL还支持多种存储引擎,如InnoDB、MyISAM等,开发者可以根据需求选择合适的存储引擎来优化数据库性能。
MySQL的社区版是免费的,同时也有企业版提供商业支持。它拥有庞大的用户社区和丰富的文档资源,开发者可以轻松获取到相关的帮助和支持。由于MySQL的稳定性和性能优势,它被广泛应用于各种规模的项目中。
1.4.3 JAVA平台
Java平台是一种以Java编程语言为基础,提供了一种跨平台、面向对象的解决方案的计算机平台。它包括Java编程语言、Java虚拟机(JVM)、Java开发工具和Java应用编程接口(API)等组件。
Java编程语言是一种通用的、面向对象的编程语言,拥有简单、健壮、安全和可移植等特性。Java虚拟机(JVM)是Java平台的核心组件,负责解释和执行Java字节码,实现了Java代码与底层操作系统的交互。Java开发工具包括编译器、调试器和性能分析工具等,用于开发、测试和调试Java应用程序。Java应用编程接口(API)提供了丰富的类库和函数,为开发者提供了各种常用功能的实现,如图形界面、网络通信、数据库连接等,大大简化了Java应用程序的开发过程。
Java平台的一个重要特性是其跨平台性。通过Java虚拟机的存在,Java程序可以在不同的操作系统上运行,只需在不同平台上安装相应的Java虚拟机即可。这为开发者提供了更大的灵活性和可移植性,使得Java应用程序可以在各种设备和环境中广泛运行,如电脑、手机、嵌入式系统等。
由于其易学易用、可移植性强和丰富的类库支持,Java平台在企业应用开发、移动应用开发、嵌入式系统、大数据处理等领域都得到了广泛的应用。同时,Java拥有庞大的用户社区和成熟的生态系统,开发者可以轻松获取到相关的工具、框架和技术支持。
1.4.4 HTML
HTML是一种用于创建网页的标记语言,它定义了网页的结构和内容。通过使用HTML标签,开发人员可以指定文本、图像、链接和其他元素在网页上的位置和外观。HTML标签由尖括号括起来,通常是成对出现的,包括一个开始标签和一个结束标签,之间包含要显示的内容。例如,
标签用于定义段落,标签用于插入图像,标签用于创建链接等。HTML还支持通过CSS(层叠样式表)来控制网页的样式和布局,以及通过JavaScript来实现交互性和动态效果。HTML的灵活性和易用性使其成为构建网页的基础工具之一。
可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面,分别是技术、经济和社会三方面的可行性。我会从这三个方面对养老院管理系统的设计与实现进行详细的分析。
养老院管理系统的设计与实现主要使用Springboot框架和MySQL数据库进行开发,Java易于学习和使用灵活。在校期间也学过Springboot和MySQL数据库的课程,因此有一定的开发经验,因此开发难度不高,所以从技术上来说是可行的。
养老院管理系统的设计与实现所选择的开发工具和服务器都是免费的开源软件,适合学生使用的免费版本,并不需要支付费用,而且由本人单独完成,也不存在团队费用,几乎没有经济成本,具备经济可行性。
一个系统要在开发和维护的过程中方便使用,必须采取一定的设计原则,其主要设计原则有:
简单性:系统功能简单易懂,只需要掌握基本的计算机操作能力即可使用。
针对性:针对特定的用户,没有多余的其他功能,使用户可以专心使用。
实用性:能够满足用户查看管理老人信息、医疗服务、健康信息等方面的需求。
先进性:本系统的代码采用读取数据的方式,方便后续开发、拓展。
养老院管理系统的设计与实现需要满足的需求有以下几个:
1.信息获取方便,用户可在系统上快速查找到信息
2.查看老人信息、医疗服务、健康信息详情等。
3.注册登录,需要吸引用户,即通过注册来提高用户的存留率。
4.修改用户信息,可以修改用户密码或者用户名等一些个性化操作。
5.管理员功能,管理员可以对用户或者老人信息、医疗服务、健康信息等进行管理。
6.系统安全,操作简便,不过于复杂。
7.系统可以稳定运行,不存在卡顿等问题造成用户反感。
2.4.1登录流程
登录模块主要满足管理员以及用户的权限登录,用户登录流程图如图2-1所示。
图2-1 登录流程图
2.4.2添加信息流程
用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。添加信息流程如图2-3所示。
图2-2 添加信息流程图
2.4.4删除信息流程
用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程图如图2-4所示。
图2-4删除信息流程图
本养老院管理系统的设计与实现选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图3-1所示:
图3-1 系统工作原理图
3.2系统结构设计
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。
本养老院管理系统的设计与实现结构图如图3-2所示。
图3-2 养老院管理系统的设计与实现结构图
数据库可以说是所有软件的根本,如果数据库存在缺陷,那么会导致系统开发的不顺利、维护困难、用户使用不顺畅等一系列问题,严重时将会直接损害企业的利益,同时在开发完成后,数据库缺陷也更加难以解决。所以必须要对数据库设计重点把握,做到认真细致。因此,数据库设计是这个养老院管理系统的设计与实现的重点要素。
(1)管理员实体属性图如下图3-3所示
图3-3管理员实体属性图
(2) 养老院管理系统的设计与实现实体属性如下图3-4所示
图3-4养老院管理系统的设计与实现实体属性图
(3)养老院管理系统的设计与实现总E-R图如下图3-5所示
图3-5养老院管理系统的设计与实现总E-R图
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | caregiver_users_id | int | 10 | 0 | N | Y | 护工用户ID | |
2 | nurse_no | varchar | 64 | 0 | N | N | 护工工号 | |
3 | name_of_caregiver | varchar | 64 | 0 | Y | N | 护工姓名 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | elderly_information_id | int | 10 | 0 | N | Y | 老人信息ID | |
2 | elderly_users | int | 10 | 0 | Y | N | 0 | 老人用户 |
3 | elderly_persons_name | varchar | 64 | 0 | Y | N | 老人姓名 | |
4 | gender_of_the_elderly | varchar | 64 | 0 | Y | N | 老人性别 | |
5 | age_of_the_elderly | varchar | 64 | 0 | Y | N | 老人年龄 | |
6 | elderly_phone_number | varchar | 16 | 0 | Y | N | 老人电话 | |
7 | emergency_contact | varchar | 64 | 0 | Y | N | 紧急联系人 | |
8 | contact_phone_number | varchar | 64 | 0 | Y | N | 联系人电话 | |
9 | health_condition | text | 65535 | 0 | Y | N | 健康状况 | |
10 | physical_condition | text | 65535 | 0 | Y | N | 身体状况 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | elderly_users_id | int | 10 | 0 | N | Y | 老人用户ID | |
2 | elderly_persons_name | varchar | 64 | 0 | Y | N | 老人姓名 | |
3 | gender_of_the_elderly | varchar | 64 | 0 | Y | N | 老人性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | financial_information_id | int | 10 | 0 | N | Y | 财务信息ID | |
2 | accounting_name | varchar | 64 | 0 | Y | N | 账务名称 | |
3 | statistical_cycle | varchar | 64 | 0 | Y | N | 统计周期 | |
4 | statistical_type | varchar | 64 | 0 | Y | N | 统计类型 | |
5 | statistical_amount | varchar | 64 | 0 | Y | N | 统计金额 | |
6 | financial_situation | text | 65535 | 0 | Y | N | 财务情况 | |
7 | cost_details | text | 65535 | 0 | Y | N | 费用明细 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | health_information_id | int | 10 | 0 | N | Y | 健康信息ID | |
2 | elderly_users | int | 10 | 0 | Y | N | 0 | 老人用户 |
3 | elderly_persons_name | varchar | 64 | 0 | Y | N | 老人姓名 | |
4 | gender_of_the_elderly | varchar | 64 | 0 | Y | N | 老人性别 | |
5 | age_of_the_elderly | varchar | 64 | 0 | Y | N | 老人年龄 | |
6 | record_date | date | 10 | 0 | Y | N | 记录日期 | |
7 | the_height_of_the_elderly | varchar | 64 | 0 | Y | N | 老人身高 | |
8 | elderly_weight | varchar | 64 | 0 | Y | N | 老人体重 | |
9 | health_condition | text | 65535 | 0 | Y | N | 健康状况 | |
10 | health_records | varchar | 255 | 0 | Y | N | 健康档案 | |
11 | evaluation_results | varchar | 64 | 0 | Y | N | 评估结果 | |
12 | health_assessment | text | 65535 | 0 | Y | N | 健康评估 | |
13 | health_advice | text | 65535 | 0 | Y | N | 健康建议 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | medical_service_id | int | 10 | 0 | N | Y | 医疗服务ID | |
2 | caregiver_users | int | 10 | 0 | Y | N | 0 | 护工用户 |
3 | name_of_caregiver | varchar | 64 | 0 | Y | N | 护工姓名 | |
4 | caregiver_position | varchar | 64 | 0 | Y | N | 护工职位 | |
5 | service_items | varchar | 64 | 0 | Y | N | 服务项目 | |
6 | service_type | varchar | 64 | 0 | Y | N | 服务类型 | |
7 | service_time | varchar | 64 | 0 | Y | N | 服务时间 | |
8 | service_image | varchar | 255 | 0 | Y | N | 服务图片 | |
9 | service_price | varchar | 64 | 0 | Y | N | 服务价格 | |
10 | service_content | text | 65535 | 0 | Y | N | 服务内容 | |
11 | service_introduction | longtext | 2147483647 | 0 | Y | N | 服务介绍 | |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | reservation_service_id | int | 10 | 0 | N | Y | 预约服务ID | |
2 | caregiver_users | int | 10 | 0 | Y | N | 0 | 护工用户 |
3 | name_of_caregiver | varchar | 64 | 0 | Y | N | 护工姓名 | |
4 | caregiver_position | varchar | 64 | 0 | Y | N | 护工职位 | |
5 | service_items | varchar | 64 | 0 | Y | N | 服务项目 | |
6 | service_type | varchar | 64 | 0 | Y | N | 服务类型 | |
7 | service_time | varchar | 64 | 0 | Y | N | 服务时间 | |
8 | service_price | varchar | 64 | 0 | Y | N | 服务价格 | |
9 | elderly_users | int | 10 | 0 | Y | N | 0 | 老人用户 |
10 | elderly_persons_name | varchar | 64 | 0 | Y | N | 老人姓名 | |
11 | gender_of_the_elderly | varchar | 64 | 0 | Y | N | 老人性别 | |
12 | appointment_time | datetime | 19 | 0 | Y | N | 预约时间 | |
13 | appointment_instructions | text | 65535 | 0 | Y | N | 预约说明 | |
14 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
15 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | security_monitoring_id | int | 10 | 0 | N | Y | 安全监控ID | |
2 | elderly_users | int | 10 | 0 | Y | N | 0 | 老人用户 |
3 | elderly_persons_name | varchar | 64 | 0 | Y | N | 老人姓名 | |
4 | gender_of_the_elderly | varchar | 64 | 0 | Y | N | 老人性别 | |
5 | age_of_the_elderly | varchar | 64 | 0 | Y | N | 老人年龄 | |
6 | caregiver_users | int | 10 | 0 | Y | N | 0 | 护工用户 |
7 | safety_precautions | varchar | 64 | 0 | Y | N | 安全事项 | |
8 | security_type | varchar | 64 | 0 | Y | N | 安全类型 | |
9 | monitoring_date | date | 10 | 0 | Y | N | 监控日期 | |
10 | safety_condition | text | 65535 | 0 | Y | N | 安全状况 | |
11 | record_content | text | 65535 | 0 | Y | N | 记录内容 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表service_classification (服务分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | service_classification_id | int | 10 | 0 | N | Y | 服务分类ID | |
2 | service_type | varchar | 64 | 0 | Y | N | 服务类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
用户登录:用户在登录页面通过填写用户名、密码等信息完成登录,如图4-2所示。
图4-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;
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());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
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, "账号或密码不正确");
}
}
养老资讯,用户可以在养老资讯界面查看所有的资讯信息,并可以点击查看详情然后进行收藏、点赞和评论等操作,如图4-3所示。
图4-3养老资讯界面图
老人信息,老人用户在老人信息界面可以填写个人信息并提交,如图4-4所示。
图4-4老人信息界面图
医疗服务,护工用户在医疗服务界面可以进行添加、删除、修改医疗服务信息等操作,如图4-5所示。
图4-5医疗服务界面图
管理员登录,通过填写输入的账号、密码进行登录,如图4-7所示。
图4-7管理员登录界面图
管理员登录的关键代码如下。
* 登录
* @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;
}
系统用户:管理员在系统用户界面可以添加、删除、修改所有的用户信息。如图4-8所示。
图4-8系统用户界面图
服务分类管理,管理员在服务分类管理界面可以添加、删除、修改服务类型信息。如图4-9所示。
图4-9服务分类管理界面图
资源管理:管理员在资源管理界面可添加、删除、修改养老资讯和资讯分类信息。如图4-10所示。
图4-10资源管理界面图
权限管理:管理员在权限管理界面可以对所有用户的权限进行添加、删除和修改。如图4-11所示。
图4-11权限管理界面图
测试存在于软件开发进程中的最后一个阶段,它可以保证一个软件的开发质量是否符合设计者的初衷,也为程序的正式上线做了最后一道质量检测的工序。软件测试主要是控制各种条件、包括软件输出方式,使用模式和运行环境等,来评估一个系统或应用是否符合设计标准。在软件测试过程中,我们一般刻意的去制造错误和极端条件,不能仅依照正常模式允许,而是多去尝试那些意外的情况。
只有在运行和维护阶段之前经历大量的测试的软件,才能说明它的质量是经得起检验的。最近计算机业界也都一致认为,测试应该存在于软件设计的每个阶段,因为越早发现错误,修复起来就越容易。
实际上,对于一个软件应用,错误是必然存在的,无论使用何种技术或手段,都不可能绝对的排除软件漏洞。测试是随着软件开发一同诞生的,两者是共同发展进步的。实际上,测试可以大幅度的降低维护的成本,如果一个漏洞在开发的早期就被发现,那么修复它的成本远比上线后再修复的成本要低得多。
测试有白盒测试和黑盒测试两种方式。
其中,白盒测试是将软件看成一个透明的白盒子,按照程序的内部控制结构和处理技术逻辑来选定测试用例、软件系统测试的逻辑路径及过程需要进行管理测试,又称玻璃盒测试。因此白盒测试需要选择足够多的测试用例,覆盖尽可能多的代码来发现程序中的错误。
黑盒测试,也称为功能测试。它将需软件看作一个黑盒,像一个普通用户一样来模拟软件的使用流程。黑盒测试通过大量的输入边界值或错误数据,来检查是否可产生正确的输出。
本系统测试 主要选择黑盒测试,少量采用白盒测试。通过测试达到以下测试目的:
1.检查各大功能模块的运行,确保其能够正确运行,并检查各页面的完整性,保证页面完整。
2.检查各个接口是否可以正确地输入和输出,保证数据流通稳定可行。
3.检查数据结构,保证其和外部接口没有访问错误,访问顺利。
4.检查原计划的性能需求有没有完成,运行流畅。
本系统的测试用例(部分):
登录部分测试用例 | |||||
编号 | 对象 | 项目 | 操作 | 预期结果 | 结果 |
1 | 登录 | 登录提示 | 使用正确的账号密码登录 | 成功登录 | 预期结果 |
2 | 登录提示 | 使用正确的账号但错误的密码登录 | 提示密码错误 | 预期结果 | |
3 | 登录提示 | 使用错误的账号登录 | 提示不存在账户 | 预期结果 | |
4 | 登录提示 | 不输入账号,点击登录 | 提示输入账号 | 预期结果 | |
5 | 登录提示 | 输入账号但不输入密码点击登录 | 提示输入密码 | 预期结果 | |
6 | 登录入口 | 已登录账号,查看登录入口 | 不显示登录入口 | 预期结果 |
处理器:Inter Core I7-4710MQ四核处理器
内存:4GB
硬盘:1T
操作系统:Windows 10
数据库:MySQL
全部测试用例都已通过(包括但不限于以上测试用例),且不存在漏洞,实现了论文开始时所作要求。本系统运行稳定,使用流畅,可以满足客户需求。
试运行后进行系统评估,可以认为该系统达到预定的目标要求,可以满足用户的需求,也满足了系统开发前所作目标。
系统在经过大量重复测试后运行十分稳定,安全实用,功能模块已经达到预定目标所需。
在规定的时间内实现系统的大部分功能,且满足要求,节省开发成本,有助于提高管理水平,符合本人经济情况。
通过本文的设计与实现,我们成功开发了一套综合性的养老院管理系统,该系统覆盖了养老院日常运营管理的各个方面,包括老人信息管理、医疗护理管理、员工管理、设施设备管理以及财务管理等。这一系统的实施将极大地提高养老院的管理效率和服务质量,为老人们提供更好的生活环境和服务。在设计与实现过程中,我们特别关注了信息安全和隐私保护、用户友好性以及系统稳定性和可靠性等方面,以确保系统的安全性、易用性和稳定性。我们相信,这一养老院管理系统的推广应用将为养老院管理工作带来显著的改进,并为老人们的幸福生活贡献力量。
[2]Batgi U S ,Dincer I .Design of a two-renewable energy source-based system with thermal energy storage and hydrogen storage for sustainable development[J].Journal of Energy Storage,2024,89111742-.
[3]Azzaz S M ,Kaibou R ,Madani B .Co-design based FPGA implementation of an efficient new speech hyperchaotic cryptosystem in the transform domain[J].Integration,2024,97102197-.
[4]李明,冯树栋,白宗文,等.基于SpringBoot的成果需求匹配系统设计与实现[J].延安大学学报(自然科学版),2024,43(01):90-95.DOI:10.13876/J.cnki.ydnse.230026.
[5]王晓东,刘海燕,王迎,等.基于SpringBoot的气象信息资源管理系统设计与实现[J].电脑编程技巧与维护,2024,(03):79-82.DOI:10.16184/j.cnki.comprg.2024.03.028.
[6]刘晓旭,吕志华,何润华.基于窄带物联网的养老院智能系统设计[J].现代信息科技,2024,8(02):154-157.DOI:10.19850/j.cnki.2096-4706.2024.02.033.
[7]Dorothee K ,Peter K ,Nikolas D .[Can nursing home placement of people with dementia be delayed by case management? A Systematic Review of Randomized Controlled Trials].[J].Gesundheitswesen (Bundesverband der Arzte des Offentlichen Gesundheitsdienstes (Germany)),2023,85(12):1229-1237.
[8]Fiona M ,L A G ,F R J G , et al.Crack on: a qualitative study of care home managers experiences and responses to system-led setbacks during the crisis of the COVID-19 Pandemic in England.[J].European geriatric medicine,2023,14(4):811-821.
[9]Jung S L ,Sun M P ,Ok S C .Capturing key function-focused care problems, nursing diagnoses, and interventions for nursing home patients using a web-based case management system.[J].International journal of nursing knowledge,2023,35(1):93-104.
[10]银莉,杜啸楠.基于SpringBoot和Vue的社区服务平台设计与实现[J].电子技术,2022,51(12):182-183.
[11]张琴.养老院智能管理系统的设计与实现[J].信息与电脑(理论版),2022,34(13):158-160.
[12]Alaa A ,Abdalmahmoud A ,Khalafallah M , et al.Pain Management Among Nursing Home Residents Before and After COVID-19: A Systematic Review[J].Journal of the American Medical Directors Association,2022,23(3):B18-B19.
[13]段昊鹏.基于物联网技术的养老院智能管理系统设计[J].物联网技术,2022,12(02):99-100+105.DOI:10.16667/j.issn.2095-1302.2022.02.027.
[14]Jana K ,Jessica A ,E M M .Determining the efficacy of non‐pharmacological interventions to manage neuropsychiatric symptoms of dementia in residential aged care settings: A systematic review of systematic reviews[J].Alzheimer's Dementia,2021,17(S7):
[15]商无冬.基于蓝牙Mesh的物联网养老院管理系统[D].南京邮电大学,2020.DOI:10.27251/d.cnki.gnjdc.2020.001192.
[16]Health and Medicine - Diet and Nutrition; Data from Cangzhou Normal University Advance Knowledge in Diet and Nutrition (Intelligent Community Old-age Management System and Protein Nutrition Supply Based On Internet of Things)[J].Computer Weekly News,2020,186-.
[17]吴金容.某养老院管理信息系统的设计与实现[D].江西财经大学,2019.DOI:10.27175/d.cnki.gjxcu.2019.000132.
[18]Chenyin L ,Feng L .Design and implementation of pension management system based on Internet of things technology[J].Journal of Physics: Conference Series,2019,1345(5):052026-052026.
[19]沈梦琦.基于物联网技术的养老院管理系统[J].计算机产品与流通,2019,(08):122.
[20]张袁,陆建华,余仔涵.基于物联网技术的养老院系统设计[J].科技风,2019,(05):87-88.DOI:10.19392/j.cnki.1671-7341.201905076.
大学的学习生活总是感觉短暂的,总感到知识还没有学够,但大学毕业就在我们面前,即毕业设计即将的结束,意味着我们的大学生涯即将结束。毕业设计是我们在大学所学知识的一次总结,更是对我们过去所学知识的提炼和升华,通过毕业设计,我们认识到大学学习过程中还有那些知识没有掌握,那些知识需要我们进入深入研究。这次毕业设计让我学到了很多新的知识,研究了一些新的以前自己不熟悉的领域,使我处理问题的能力得到了一定的提升,同时也为今后的继续深造或踏入社会大门提供了很好的锻炼机会。
我也曾经沮丧过,失落过,想放弃过,可是因为你们这不厌其烦的鼓励和支持才使得我坚持了下来,这里我要对我的老师和同学们说句“谢谢你们”。因为我们的知识是有限的,所以本文将不可避免的会出现一些错误和不足之处,还请老师指正。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~