摘要
随着现代社会竞争压力的增加以及学习需求的提升,学生们对于高效自习场所的需求日益增长。而基于springboot的共享自习室管理系统的设计与实现将为学生提供一个便捷、高效的共享自习环境,提升学生自习效率和体验。该系统可以为学生们提供在线讲座的渠道,实现在线进行预约位置、座位变更、提交投诉等功能,提高学生体验。共享自习室管理系统的应用价值不仅在于满足学生自习需求,还有助于管理者更好地进行资源分配和管理,提升共享自习室管理效率和质量,提高学生自主学习的能力。
关键词:Java开发语言;springboot;共享自习室管理系统
Abstract
With the increasing competitive pressure in modern society and the increasing demand for learning, students have a growing demand for efficient self-study places. The design and implementation of a shared self-study room management system based on Springboot will provide students with a convenient and efficient shared self-study environment, improving their self-study efficiency and experience. This system can provide students with a channel for online lectures, enabling functions such as booking seats, changing seats, and submitting complaints online, improving the student experience. The application value of the shared self-study room management system lies not only in meeting the self-study needs of students, but also in helping managers better allocate and manage resources, improve the efficiency and quality of shared self-study room management, and enhance students' ability to learn independently.
Keywords: Java development language; Springboot; Shared Study Room Management System
目 录
1 绪论
1.1研究背景
随着社会发展和教育水平提高,学生自习的需求逐渐增加。而基于springboot的共享自习室管理系统的设计与实现将为学生提供一个便捷、高效的共享自习环境,提升学生自习效率和体验。该系统可以为学生们提供在线讲座的渠道,实现在线进行预约位置、座位变更、提交投诉等功能,简化流程,节省时间,提高学生体验。共享自习室管理系统的应用价值不仅在于满足学生自习需求,还有助于管理者更好地进行资源分配和管理,提升共享自习室管理效率和质量,提高学生自主学习的能力。
通过建立共享自习室管理系统,具有积极的现实意义,共享自习室管理系统的开发,可以实现信息化、数据化、便捷化管理。共享自习室管理系统的设计与实现可以提高自习室的管理效率,为学生提供更好的学习服务。通过在线讲座可以帮助学生拓展知识,实现预约位置功能可以减少排队等待时间,并具有座位变更功能可以提供更灵活的选择,还能进行投诉操作,及时解决出现的问题,并能方便学生收藏在线讲座的信息,能够快速寻找想要的信息。这些功能的应用可以使共享自习室资源更好地利用,提高学生自习体验,有助于塑造良好的自习氛围,促进学生的学习和成长。同时,提供一个高效的管理工具和技术,能够提升共享自习室管理效率和服务水平。
1.3论文结构与章节安排
论文将分层次进行编排,除去论文摘要致谢文献参考部分,论文主要架构如下:
第一章:绪论。主要介绍了课题研究的背景,研究意义和论文结构与章节安排。
第二章:系统分析。主要从系统的用户、功能等方面进行需求分析。
第三章:系统总体设计。主要对系统框架、系统功能模块、数据库进行功能设计。
第四章:系统详细设计与实现。主要介绍了系统框架搭建、系统界面的实现。
第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试。
2 系统分析
系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。下面是详细的介绍。
2.1 可行性分析
(1)技术可行性:
Java是一种跨平台的编程语言,具有丰富的类库和良好的兼容性,广泛应用于各种场景。Java语言具有较高的性能和稳定性,可以满足系统高并发、大数据处理的需求。此外,Spring Boot是一个非常流行的Java开发框架,Spring Boot不仅能够帮助开发者快速搭建应用的基本框架,还提供了丰富的扩展点,使得开发者可以灵活地定制和优化应用程序,满足不同场景下的需求。因此,从技术层面来说是可行的。
(2)经济可行性:
Spring Boot的自动配置功能可以根据应用程序的依赖和环境来进行自动配置,减少了大量的手动配置工作,可以降低开发成本;另外,Spring Boot的代码质量和可维护性较高,可以降低后期维护成本。因此,从经济角度分析是可行的。
(3)操作可行性:
使用Java开发技术,通过Spring Boot作为开发框架,结合MySQL数据库,能为用户提供友好的界面、操作的简易、完善的功能、数据安全性、便捷的运维以及适应性和扩展性,为高校科研成果提供稳定高效的管理运营平台。因此,从操作角度分析是可行的。
系统流程是用一些特定的符合和线条来进行演示用户在使用系统时的过程,在进行系统分析的时候,业务流程可以帮助开发人员更好的理解业务,发现错误,完善系统。
2.2.1 数据新增流程
用户成功登入系统后就能够实现增加数据的操作,增加数据的编号由系统生成,用户不能随意填写,除了编号以外,其他增加信息用户自己填写,填写后的信息经过系统验证,验证通过后即可完成数据新增,数据新增的流程图如下图2-1所示。
图2-1 数据新增流程图
2.2.2 数据删除流程
如果系统里面存在一些没有用的数据,相关的管理人员还可以对这些数据进行删除,数据删除时流程图如下图2-2所示。
图2-2 数据删除流程图
根据用户对系统的需求,要求系统简单操作,能够准确,完整的对信息进行管理。对高校科研成果管理做需求做解析后,划分为了学生用户和管理员两大功能板块。
学生用户
(1)注册登录:游客可以通过注册成为系统用户,使用账号密码可进行登录,使用系统功能。
(2)首页:可查看轮播图、通知公告、在线选座推荐,点击可查看详情,和使用系统其他功能。
(3)通知公告:可查看包括关于我们、联系方式、网站介绍等管理员发布的所有通知公告,点击可查看详情。
(4)在线讲座:可查看管理员发布的所有在线讲座信息,支持关键字(座位名称)搜索和下拉(排序)搜索,点击可查看详情(座位名称、座位编号、座位图片、座位位置、座位情况、座位详情),进行收藏,并可点击预约操作,填写预约信息(开始时间、结束时间)并提交。
(5)我的账户:对个人资料进行管理,包括修改密码和修改资料(头像、昵称、邮箱、用户姓名、用户性别)。
(6)个人中心:可对个人首页、预约位置、座位变更、投诉信息、收藏等信息进行管控。
(7)点击“预约位置”,可查看自己提交的所有预约位置信息,进行查询操作,支持学生姓名、座位名称搜索,可点击查看详情,并可点击变更(申请类型、申请原因)和投诉(投诉内容)操作;点击“座位变更”,可查看自己提交的所有座位变更信息,进行增改删查操作,支持学生姓名、座位名称、审核状态搜索,可点击查看详情;点击“投诉信息”,可查看自己提交的所有投诉信息,进行增改删查操作,支持学生姓名、座位名称搜索,可点击查看详情;点击“收藏”,可管理所有收藏信息,包括在线讲座等收藏信息,进行查看和删除操作,点击可查看详情。
管理员
(1)登录:管理员账号密码由系统生成,可使用账号密码可进行登录,使用系统功能,并对个人信息和密码进行管理。
(2)系统用户:可对学生用户和管理员进行管控,包括进行增删改查操作,学生用户支持,点击可查看详情(头像、账号、密码、昵称、邮箱、状态、学生姓名、学生性别、学生学号、学生学院、学院班级、联系方式)。
(3)在线讲座管理:可查看发布的所有在线讲座信息,进行增改删查操作,支持座位名称,点击可查看详情。
(4)预约位置管理:可查看提交的所有预约位置信息,进行增改删查操作,支持学生姓名、座位名称搜索,可点击查看详情,并可点击变更和投诉操作。
(5)座位变更管理:可查看提交的所有座位变更信息,进行增改删查操作,支持学生姓名、座位名称、审核状态搜索,可点击查看详情(学生用户、学生姓名、座位名称、座位编号、申请类型、申请原因、审核状态、审核回复),和进行审核。
(6)投诉信息管理:可查看提交的所有投诉信息,进行查询和删除操作,支持学生姓名、座位名称搜索,可点击查看详情。
(7)系统管理:可对首页的轮播图进行管理,进行增删改查操作,支持标题搜索,可点击查看详情。
(8)通知公告管理:可对通知公告进行管理,进行增删改查操作,支持标题搜索,可点击查看详情。
(9)个人信息:点击“个人信息”可对个人信息(头像、昵称、邮箱)进行修改。
共享自习室管理系统的非功能性需求比如共享自习室管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1共享自习室管理系统非功能需求表
安全性 | 主要指共享自习室管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指共享自习室管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响共享自习室管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着共享自习室管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 共享自习室管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.4 系统用例分析
通过2.3功能的分析,得出了本共享自习室管理系统的用例图:
学生用户角色用例图如下图2-3所示。
图2-2 学生用户角色用例图
管理员角色用例图如下图2-3所示。
图2-3管理员角色用例图
本章主要通过对共享自习室管理系统的可行性分析、流程分析、功能需求分析、系统用例分析,确定整个共享自习室管理系统要实现的功能。同时也为共享自习室管理系统的代码实现和测试提供了标准。
3 系统总体设计
本章主要讨论的内容包括共享自习室管理系统的系统架构设计、功能模块设计、数据库系统设计。
3.1 系统架构设计
本共享自习室管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1系统架构设计图
表现层(UI):又称UI层,主要完成本共享自习室管理系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本共享自习室管理系统时的舒适度。UI的界面设计也要适应不同版本的共享自习室管理系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本共享自习室管理系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本共享自习室管理系统的数据是放在服务端的MySQL数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本共享自习室管理系统的数据存储和管理功能。
3.2 系统功能模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本共享自习室管理系统中的用例。那么接下来就要开始对本共享自习室管理系统的主要功能和数据库开始进行设计。共享自习室管理系统根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。
图3-2 系统功能模块图
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1 数据库概念结构设计
下面是整个共享自习室管理系统中主要的数据库表总E-R实体关系图。
图3-3 系统总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 | 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 | booking_a_seat_id | int | 10 | 0 | N | Y | 预约座位ID | |
2 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | seat_name | varchar | 64 | 0 | Y | N | 座位名称 | |
5 | seat_number | varchar | 64 | 0 | Y | N | 座位编号 | |
6 | start_time | datetime | 19 | 0 | Y | N | 开始时间 | |
7 | end_time | datetime | 19 | 0 | Y | N | 结束时间 | |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | 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 | complaint_information_id | int | 10 | 0 | N | Y | 投诉信息ID | |
2 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | seat_name | varchar | 64 | 0 | Y | N | 座位名称 | |
5 | seat_number | varchar | 64 | 0 | Y | N | 座位编号 | |
6 | complaint_content | text | 65535 | 0 | Y | N | 投诉内容 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | 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 | 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 | online_seat_selection_id | int | 10 | 0 | N | Y | 在线选座ID | |
2 | seat_name | varchar | 64 | 0 | Y | N | 座位名称 | |
3 | seat_number | varchar | 64 | 0 | Y | N | 座位编号 | |
4 | seat_image | varchar | 255 | 0 | Y | N | 座位图片 | |
5 | seat_position | varchar | 64 | 0 | Y | N | 座位位置 | |
6 | seat_situation | varchar | 64 | 0 | Y | N | 座位情况 | |
7 | seat_details | text | 65535 | 0 | Y | N | 座位详情 | |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | 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 | seat_change_id | int | 10 | 0 | N | Y | 座位变更ID | |
2 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | seat_name | varchar | 64 | 0 | Y | N | 座位名称 | |
5 | seat_number | varchar | 64 | 0 | Y | N | 座位编号 | |
6 | application_type | varchar | 64 | 0 | Y | N | 申请类型 | |
7 | reason_for_application | text | 65535 | 0 | Y | N | 申请原因 | |
8 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
9 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | 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 | student_users_id | int | 10 | 0 | N | Y | 学生用户ID | |
2 | student_name | varchar | 64 | 0 | N | N | 学生姓名 | |
3 | student_gender | varchar | 64 | 0 | Y | N | 学生性别 | |
4 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
5 | student_college | varchar | 64 | 0 | Y | N | 学生学院 | |
6 | student_class | varchar | 64 | 0 | Y | N | 学生班级 | |
7 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
8 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
9 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | 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 | 更新时间: |
整个共享自习室管理系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 系统详细设计与实现
共享自习室管理系统的详细设计与实现主要是根据前面的共享自习室管理系统的需求分析和共享自习室管理系统的总体设计来设计页面并实现业务逻辑。主要从共享自习室管理系统界面实现、业务逻辑实现这两部分进行介绍。
4.1学生用户功能模块
4.1.1 前台首页界面
可查看轮播图、通知公告、在线选座推荐,点击可查看详情,和使用系统其他功能。其主界面展示如下图4-1所示。
图4-1 前台首页界面图
4.1.2 用户注册界面
用户右上角“注册”按钮进入注册页面填写账号、密码、确认密码、昵称、邮箱、身份等信息后点击“注册”按钮,系统会对输入的信息进行验证,验证通过后即可完成注册,其界面展示如下图4-2所示。
图4-2 用户注册界面图
用户注册的关键代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
4.1.3 用户登录界面
用户注册后可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,系统会对输入的信息进行验证,验证通过后即可完成登录,其界面如下图4-3所示。
图4-3用户登录界面图
用户登录关键代码如下:
/**
* 登录
* @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.1.4 通知公告界面
可查看包括关于我们、联系方式、网站介绍等管理员发布的所有通知公告,点击可查看详情。其界面如下图所示。
图4-4 通知公告界面图
4.1.5 在线讲座界面
可查看管理员发布的所有在线讲座信息,支持关键字(座位名称)搜索和下拉(排序)搜索,点击可查看详情(座位名称、座位编号、座位图片、座位位置、座位情况、座位详情),进行收藏,并可点击预约操作,填写预约信息(开始时间、结束时间)并提交。其界面如下图所示。
图4-5在线讲座界面图
可对个人首页、预约位置、座位变更、投诉信息、收藏等信息进行管控。
点击“预约位置”,可查看自己提交的所有预约位置信息,进行查询操作,支持学生姓名、座位名称搜索,可点击查看详情,并可点击变更(申请类型、申请原因)和投诉(投诉内容)操作;点击“座位变更”,可查看自己提交的所有座位变更信息,进行增改删查操作,支持学生姓名、座位名称、审核状态搜索,可点击查看详情;点击“投诉信息”,可查看自己提交的所有投诉信息,进行增改删查操作,支持学生姓名、座位名称搜索,可点击查看详情;点击“收藏”,可管理所有收藏信息,包括在线讲座等收藏信息,进行查看和删除操作,点击可查看详情。其界面如下图所示:
图4-6个人中心界面图
4.2管理员功能模块
4.2.1 系统用户界面
可对学生用户和管理员进行管控,包括进行增删改查操作,学生用户支持,点击可查看详情(头像、账号、密码、昵称、邮箱、状态、学生姓名、学生性别、学生学号、学生学院、学院班级、联系方式)。其界面如下图所示。
图4-7 系统用户界面图
可查看发布的所有在线讲座信息,进行增改删查操作,支持座位名称,点击可查看详情。界面如下图所示。
图4-8 在线讲座管理界面图
添加关键代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
删除关键代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
可可查看提交的所有预约位置信息,进行增改删查操作,支持学生姓名、座位名称搜索,可点击查看详情,并可点击变更和投诉操作。其界面如下图所示。
图4-9预约位置管理界面图
可查看提交的所有投诉信息,进行查询和删除操作,支持学生姓名、座位名称搜索,可点击查看详情。其界面如下图所示。
图4-10 投诉信息管理界面图
可对首页的轮播图进行管理,进行增删改查操作,支持标题搜索,可点击查看详情。其界面如下图所示。
图4-11 系统管理界面图
可对通知公告进行管理,进行增删改查操作,支持标题搜索,可点击查看详情。其界面如下图所示。
图4-12 通知公告管理界面图
5系统测试
5.1 系统测试目的
无论什么样的系统,测试都至关重要,通过测试可以检查出潜藏的缺陷,从而确保系统的性能和稳定性,避免Bug的出现,并确保系统的功能和性价比达到预期的要求。
系统测试包括:用户登录功能测试、在线讲座查看功能、在线讲座添加功能、密码修改功能测试,如表5-1、5-2、5-3、5-4所示:
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
在线讲座查看功能测试:
表5-2 在线讲座查看功能测试表
用例名称 | 在线讲座查看 |
目的 | 测试在线讲座查看功能 |
前提 | 用户登录 |
测试流程 | 点击在线讲座管理 |
预期结果 | 可以查看到所有的在线讲座信息 |
实际结果 | 实际结果与预期结果一致 |
在线讲座添加界面测试:
表5-3 在线讲座添加界面测试表
用例名称 | 在线讲座添加测试用例 |
目的 | 测试在线讲座添加功能 |
前提 | 管理员正常登录情况下 |
测试流程 | 1)点击在线讲座管理,进入添加页面填写信息。 2)填写完毕后点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的在线讲座信息 |
密码修改功能测试:
表5-4 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员、用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
通过编写共享自习室管理系统的测试用例,已经检测完毕用户登录功能测试、在线讲座管理查看功能、在线讲座管理添加功能、密码修改功能测试,通过的测试为共享自习室管理系统的后期推广运营提供了强力的技术支撑。
结 论
在共享自习室管理系统开发之前,需要先对用户的具体需求进行分析。包括系统的可行性分析、功能需求分析以及其他需求等。在可行性分析过程中,对系统实现的技术性、经济性等方面进行了分析。总体上证明了系统实施的可行性。
本文总结了共享自习室管理系统开发背景与意义,然后阐述了系统的具体业务需求,并根据系统需求对系统结构以及功能模块等进行了详细地设计,将整个系统划分为多个不同的功能模块。在分析系统功能需求时,对整个系统的总体架构以及功能模块等进行了分析,并选择合适的系统开发技术完成了对各个模块的开发工作。系统开发完成之后进行了部署,同时进行了系统的测试过程,通过测试证明了系统在功能以及性能等方面都达到了预期的要求,具有较高的稳定性与可靠性。
参考文献
[1]赵彩霞,张栽培,杨璇.基于Java编程导航学习平台开发设计的研究[J].家电维修,2024,(03):62-64.
[2]申雪萍,原仓周,邵兵.面向软件实践能力的Java程序设计课程教学改革探索[J].计算机教育,2024,(02):20-25.DOI:10.16512/j.cnki.jsjjy.2024.02.008.
[3]韩小龙,司珍,吕晓峰等.基于面向对象编程的Java语言程序设计方法分析[J].集成电路应用,2024,41(01):228-229.DOI:10.19339/j.issn.1674-2583.2024.01.103.
[4]石雨昕,关家兴,邹博华等.基于SpringBoot微服务架构设计与实现实验室开放课题管理系统[J].实验室检测,2024,2(01):101-106.
[5]谭光兴,甘景,戚秋晨.基于Java语言的远程数据采集系统设计与实现[J].科技与创新,2024,(01):19-22.DOI:10.15913/j.cnki.kjycx.2024.01.005.
[6]吴伶琳.基于SpringBoot的客户关系管理系统设计与实现[J].无线互联科技,2023,20(24):60-62.
[7]唐媛媛,王晓楠,李京培等.基于SpringBoot的病原生物学在线智能化实验考试系统建设探索[J].赤峰学院学报(自然科学版),2023,39(12):75-78.DOI:10.13398/j.cnki.issn1673-260x.2023.12.024.
[8]翟祥栩,陈谦民,陈宗玉.基于SpringBoot的农业大数据一站式分析预测平台的设计与实现[J].现代信息科技,2023,7(24):6-10+15.DOI:10.19850/j.cnki.2096-4706.2023.24.002.
[9]袁琳琳.计算机软件Java编程特点及技术分析[J].数字通信世界,2023,(12):87-89.
[10]曲锦旭.基于SpringBoot的农作物受灾分析系统的设计与实现[J].农业工程技术,2023,43(35):18-19.DOI:10.16815/j.cnki.11-5436/s.2023.35.006.
[11]马庆.计算机软件开发中JAVA编程语言的应用[J].山西电子技术,2023,(06):84-86+98.
[12]吴昊,张丹.基于SpringBoot框架的大学生网上兼职系统设计与实现[J].电脑知识与技术,2023,19(35):68-72.DOI:10.14004/j.cnki.ckt.2023.1860.
[13]苏婉怡,揣小龙,刘美瑜等.基于Java技术的实验室管理系统设计与实现[J].无线互联科技,2023,20(23):58-60.
[14]艾钰承,朱海风,刘舟.基于SpringBoot的“喵站”宠物服务平台的设计与实现[J].科技资讯,2023,21(22):22-25.DOI:10.16661/j.cnki.1672-3791.2305-5042-0756.
[15]宋晓燕,杨芬.Java程序设计语言的分层教学实践[J].电子技术,2023,52(11):182-183.
[16]游晶,邱淑丽,李敬文.基于SpringBoot的校园智慧报修系统的设计与实现[J].电脑知识与技术,2023,19(32):50-52+65.DOI:10.14004/j.cnki.ckt.2023.1718.
[17]黄赛英.基于Springboot的医院档案管理系统设计[J].集成电路应用,2023,40(11):384-385.DOI:10.19339/j.issn.1674-2583.2023.11.176.
[18]王荣兴,毛诗睿,韩佳红.基于用户体验的南京市共享自习室未来发展探讨[J].今日财富,2023,(13):86-88.
[19]杨赟.绿洲共享自习室服务营销策略研究[D].兰州大学,2023.DOI:10.27204/d.cnki.glzhu.2023.001947.
[20]毛瑞欣,王平,张国艳等.基于JAVA的校图书馆管理系统的设计与实现[J].信息与电脑(理论版),2020,32(23):95-97.
致 谢
首先,我要感谢我的论文指导老师。在论文完成的整个过程中,指导老师始终给予我无微不至的关爱与指导。在论文写作的过程中,导师那耐心细致的指导,以及提出的具有建设性的意见,都给予了我极大的帮助,让我受益匪浅。导师严谨的治学态度、敬业精神以及高水平的教学能力,都给我树立了追求卓越的典范,这对我以后的人生道路和学业成就都产生了极大的积极影响。
此外,我还要感谢我班的同学们,他们既是我的同窗好友,又是我的良师益友。正是由于你们的支持和关怀,使得我在大学期间的学习和生活都变得异常充实。感谢那些在大学期间给予我帮助的所有老师和同学们,是你们给予了我在学业道路上的前进动力。
当然,我也不能忘记我的父母,是他们用无私的爱抚养我成人。你们的养育之恩我将永生难忘,将来我一定会用我的成绩回报你们。在成长的道路上,我会不断努力,不负众望,用实际行动来回报你们对我的期望。
总之,在这篇论文中,我要感谢所有给予我帮助的人,包括指导老师、同学们、家人和朋友们。是你们的支持与关爱,让我在学术和个人生活中取得了优异的成绩。我会珍惜这份感恩之情,将这份力量用于学习和未来的生活中,不断追求卓越,成为一个更加优秀的人。
标签:10,毕设,varchar,19,用户,毕业设计,界面,自习室 From: https://blog.csdn.net/QQ_785101605/article/details/143621405免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-