springboot计算机学科团队科研资源管理系统
摘要
本文介绍了一种基于Spring Boot的计算机学科团队科研资源管理系统的设计与实现。科研资源管理是科研团队日常工作中不可或缺的一环,它涉及到实验设备、实验数据、文献资料等多个方面的资源管理,并需保证安全性和高效性。
本系统采用了Spring Boot框架,结合MySQL数据库和Vue.js前端技术,实现了一个功能完善、界面友好的科研资源管理系统。系统包括用户管理模块、资源管理模块以及权限管理模块。
用户管理模块包括用户注册、登录、角色分配等功能,确保了系统安全性。资源管理模块涵盖了实验设备、实验数据、文献资料等资源的录入、查询和管理功能,方便科研人员对资源进行便捷的查找与利用。权限管理模块确保了不同用户在系统中的权限分配,保证了敏感信息的保密性。
在设计与实现过程中,本系统充分考虑了用户需求,提供了直观简洁的用户界面,并采用了前后端分离的开发模式,提高了系统的响应速度和用户体验。同时,系统采用了安全机制,如用户登录验证和权限控制,以确保科研信息的安全性。
通过实际部署及使用,本系统证明了其良好的性能和可靠性,为科研团队提供了一个便捷高效的科研资源管理平台。本文还对系统的可拓展性和未来的改进方向进行了探讨,以期为类似系统的设计与开发提供参考和借鉴。
关键词:计算机学科团队科研资源管理系统;Springboot;数据库
Abstract
This paper introduces the design and implementation of a scientific research resource management system based on Spring Boot. Scientific research resource management is an indispensable part of the daily work of the scientific research team. It involves the resource management of experimental equipment, experimental data, literature data and other aspects, and needs to ensure the safety and efficiency.
This system adopts the Spring Boot framework, combined with MySQL database and Vue.js front-end technology, and realizes a fully functional and interface-friendly scientific research resource management system. The system includes the user management module, the resource management module, and the permission management module.
The user management module includes functions such as user registration, login, and role assignment to ensure system security. The resource management module covers the input, query and management functions of experimental equipment, experimental data, literature data and other resources, which facilitates the researchers to find and use the resources conveniently. The permission management module ensures the permission allocation of different users in the system and ensures the confidentiality of sensitive information.
In the process of design and implementation, the system fully considers the user needs, provides an intuitive and simple user interface, and adopts the development mode of front and rear end separation, which improves the response speed and user experience of the system. At the same time, the system adopts the security mechanism, such as user login verification and authority control, to ensure the security of scientific research information.
Through the actual deployment and use, the system proves its good performance and reliability, and provides a convenient and efficient scientific research resource management platform for the scientific research team. This paper also discusses the system scalability and the future improvement direction, in order to provide reference for the design and development of similar systems.
Keywords: Computer discipline team scientific research resource management system; Springboot; database
目 录
第1章 绪 论
1.1课题背景与意义
随着信息技术的快速发展和计算机学科的不断进步,科研资源的管理成为了计算机学科团队面临的重要问题之一。传统的科研资源管理方式存在许多问题,如人工管理效率低下、信息共享困难、数据容易丢失等。为了解决这些问题,开发一套高效、智能化的科研资源管理系统变得至关重要。
通过基于Spring Boot的计算机学科团队科研资源管理系统,可以实现以下目标与意义:
提高科研资源管理的效率:传统的科研资源管理方式依赖于人工操作,容易出现信息不准确、数据丢失等问题。而基于Spring Boot的科研资源管理系统可以实现信息的自动化采集、存储、分析和展示,极大地提高了科研资源管理的效率,减少了人力成本和错误率。
实现科研资源的统一管理:基于Spring Boot的科研资源管理系统可以集成多个子系统,包括文献管理、项目管理、实验室设备管理等,实现科研资源的统一管理。研究人员可以通过系统进行资源的快速搜索、借用申请、共享发布等操作,实现资源的最大化利用。
提供智能化的决策支持:通过对科研资源的数据进行分析和挖掘,基于Spring Boot的科研资源管理系统可以提供智能化的决策支持。例如,可以通过分析论文引用、项目经费使用情况等数据,辅助团队负责人进行决策,提高团队的科研水平和绩效。
促进科研资源的共享与交流:基于Spring Boot的科研资源管理系统可以实现资源的在线共享和交流。研究人员可以通过系统分享自己的研究成果、发布科研成果动态、组织学术会议等。这样可以促进团队成员之间的合作交流,提高整个学科的研究水平。
因此,基于Spring Boot的计算机学科团队科研资源管理系统的研发与应用具有重要的意义。通过该系统,可以提高科研资源的管理效率,实现科研资源的统一管理,提供智能化的决策支持,促进科研资源的共享与交流,为计算机学科的发展和团队的建设。
1.2 研究内容
计算机学科团队科研资源管理系统及实现,所需要的工作内容:
(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。
(2)系统确认完成后,结合系统开发的需求进行确认系统开发所使用的技术,计算机学科团队科研资源管理系统使用Springboot框架,数据库进行平台的搭建开发,确认好使用的技术进行技术分析,所使用的技术是否可以完成系统的实现。
(3)确定好系统使用的技术,进行在线确认系统所划分的用户角色,并且根据用户角色划分确定所要设计的功能模块,对计算机学科团队科研资源管理系统的设计主要划分别为管理员和用户角色,并所使用的功能模块也相应不同,但是系统的数据库实现的内容是交互的,用户可以随时根据自己的需求进行发表博文,对于系统工作人员可以根据自己的分管内容进行在线信息的处理及操作,管理员获取到所有用户的详细数据信息,并根据需求进行第一时间处理解决。
(4)系统的功能模块确认完成后进行程序及界面的设计,设计完成后,并且通过测试来判断程序是否完善,对于系统测试,需要不同的用户进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞,并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。
1.3研究方法
首先,通过网上搜索或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。其次,在开发工具上,最终确定是基于Mysql数据库,在Java的Springboot框架设计的基础上实现,设计出系统大致的功能模块。主要从方便系统用户和系统管理员的角度进行分析,明确计算机学科团队科研资源管理系统应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统的可用性、实用性。
1.4 开发技术
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的Springboot框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用Springboot作为开发框架,同时集成MyBatis、Redis等相关技术。
1.4.1 B/S结构
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
1.4.2 Spring boot框架
Spring Boot是一款基于Java语言的开源框架,用于构建独立的、生产级别的应用程序。它旨在简化Spring应用程序的开发和部署过程,通过提供一套约定优于配置的原则,来加速应用程序的开发。Spring Boot内置了许多常用的库和依赖项,使得开发者可以更轻松地构建各种类型的应用程序,包括Web应用、RESTful服务、批处理应用等。它还提供了各种开箱即用的特性,如自动配置、内嵌的Web服务器等,使得开发者可以更专注于业务逻辑的实现,而无需过多关注配置和环境搭建。Spring Boot的设计理念是"约定优于配置",即通过默认约定来提高开发效率,同时也支持自定义配置,以满足不同应用的需求。
1.4.3 Mysql数据库
MySQL是一种流行的开源关系型数据库管理系统,常用于各种规模的应用程序和网站。它支持多种操作系统,包括Linux、Windows和macOS,并且具有高度可扩展性和稳定性。MySQL使用标准的SQL语言来管理和操作数据库,同时提供了丰富的功能和工具,如存储过程、触发器、索引等,以满足不同应用场景的需求。
MySQL具有以下特点:
开源免费: MySQL是开源软件,可以免费使用,这使得它成为许多开发者和组织的首选数据库解决方案之一。
高性能: MySQL经过优化,能够处理大量的数据并提供快速的响应速度,适用于高并发的应用场景。
可靠性: MySQL具有良好的稳定性和可靠性,能够保证数据的安全性和完整性,支持事务处理,确保数据操作的一致性。
跨平台: MySQL可以在各种操作系统上运行,包括Linux、Windows、macOS等,提供了良好的跨平台支持。
易于使用: MySQL提供了直观的管理工具和丰富的文档,使得用户可以快速上手并进行数据库管理和操作。
总的来说,MySQL是一种功能强大、性能优越、稳定可靠的关系型数据库管理系统,适用于各种规模的应用程序和网站开发。
第2章 系统分析
2.1 可行性分析
可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面,分别是技术、经济和社会三方面的可行性。我会从这三个方面对计算机学科团队科研资源管理系统进行详细的分析。
2.1.1技术可行性
该系统主要使用Springboot框架啊和MySQL数据库进行开发,Java易于学习和使用灵活。在校期间也学过Springboot和MySQL数据库的课程,因此有一定的开发经验,因此开发难度不高,所以从技术上来说是可行的。
2.1.2经济可行性
本系统设计所选择的开发工具和服务器都是免费的开源软件,适合学生使用的免费版本,并不需要支付费用,而且由本人单独完成,也不存在团队费用,几乎没有经济成本,具备经济可行性。
2.1.3法律可行性
本系统是学习开发所制作的程序,并不用作商业用途,是在根据实际调研的结果结合现有的计算机学科团队科研资源管理系统得出的,而且系统制作的全部过程都是在个人的工作电脑中完成的,使用的都是开源和免费的开发环境、分析软件和数据库,不存在侵权问题。
2.2总体设计原则
一个系统要在开发和维护的过程中方便使用,必须采取一定的设计原则,其主要设计原则有:
简单性:系统功能简单易懂,只需要掌握基本的计算机操作能力即可使用。
针对性:针对特定的用户,没有多余的其他功能,使用户可以专心使用。
实用性:能够满足用户查看资料信息、论文成果、项目成果、专利成果等方面的需求。
先进性:本系统的代码采用读取数据的方式,方便后续开发、拓展。
计算机学科团队科研资源管理系统需要满足的需求有以下几个:
1.信息获取方便,用户可在系统上快速查找到信息
2.查看计算机学科团队科研资源管理成果详情等。
3.注册登录,需要吸引用户,即通过注册来提高用户的存留率。
4.修改用户信息,可以修改用户密码或者用户名等一些个性化操作。
5.管理员功能,管理员可以对用户或者论文成果、项目成果、专利成果等进行管理。
6.系统安全,操作简便,不过于复杂。
7.系统可以稳定运行,不存在卡顿等问题造成用户反感。
2.4 业务流程分析
2.4.1登录流程
登录模块主要满足管理员以及用户的权限登录,用户登录流程图如图2-1所示。
图2-1 登录流程图
2.4.2注册流程
未有账号的用户可进入注册界面进行注册操作,用户注册流程图如图2-2所示。
图2-2 注册流程图
2.4.3添加信息流程
用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。添加信息流程如图2-3所示。
图2-3 添加信息流程图
2.4.4删除信息流程
用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程图如图2-4所示。
图2-4删除信息流程图
第3章 系统设计
3.1 系统概要设计
本计算机学科团队科研资源管理系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图3-1所示:
图3-1 系统工作原理图
3.2系统结构设计
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。
本计算机学科团队科研资源管理系统结构图如图3-2所示。
图3-2 计算机学科团队科研资源管理系统结构图
3.3 数据库设计
数据库可以说是所有软件的根本,如果数据库存在缺陷,那么会导致系统开发的不顺利、维护困难、用户使用不顺畅等一系列问题,严重时将会直接损害企业的利益,同时在开发完成后,数据库缺陷也更加难以解决。所以必须要对数据库设计重点把握,做到认真细致。因此,数据库设计是这个计算机学科团队科研资源管理系统的重点要素。
3.3.1概念结构设计
(1)管理员实体属性图如下图3-3所示
图3-3管理员实体属性图
(2) 计算机学科团队科研资源管理系统实体属性如下图3-4所示
图3-4计算机学科团队科研资源管理系统实体属性图
(3)计算机学科团队科研资源管理系统总E-R图如下图3-5所示
图3-5计算机学科团队科研资源管理系统总E-R图
3.3.2数据库表设计
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | academic_achievements_id | int | 10 | 0 | N | Y | 论文成果ID | |
2 | thesis_title | varchar | 64 | 0 | N | N | 论文题目 | |
3 | teacher_id | int | 10 | 0 | Y | N | 0 | 教师工号 |
4 | teachers_name | varchar | 64 | 0 | N | N | 教师姓名 | |
5 | thesis_category | varchar | 64 | 0 | N | N | 论文类别 | |
6 | publication_date | date | 10 | 0 | N | N | 发表日期 | |
7 | place_of_publication | varchar | 64 | 0 | N | N | 发表地方 | |
8 | paper_attachment | varchar | 255 | 0 | N | N | 论文附件 | |
9 | related_images | varchar | 255 | 0 | Y | N | 相关图片 | |
10 | paper_notes | 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 | 更新时间 |
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | data_upload_id | int | 10 | 0 | N | Y | 资料上传ID | |
2 | data_title | varchar | 64 | 0 | N | N | 资料标题 | |
3 | data_type | varchar | 64 | 0 | N | N | 资料类型 | |
4 | file_upload | varchar | 255 | 0 | Y | N | 文件上传 | |
5 | image_and_text_upload | longtext | 2147483647 | 0 | Y | N | 图文上传 | |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | device_information_id | int | 10 | 0 | N | Y | 设备信息ID | |
2 | manage_users | int | 10 | 0 | Y | N | 0 | 管理用户 |
3 | user_name | varchar | 64 | 0 | N | N | 用户姓名 | |
4 | device_name | varchar | 64 | 0 | N | N | 设备名称 | |
5 | equipment_model | varchar | 64 | 0 | N | N | 设备型号 | |
6 | device_images | varchar | 255 | 0 | N | N | 设备图片 | |
7 | equipment_unit_price | int | 10 | 0 | N | N | 0 | 设备单价 |
8 | number_of_devices | int | 10 | 0 | N | N | 0 | 设备数量 |
9 | production_date | date | 10 | 0 | N | N | 生产日期 | |
10 | equipment_usage | longtext | 2147483647 | 0 | Y | N | 设备用途 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表equipment_repair_report (设备报修)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | equipment_repair_report_id | int | 10 | 0 | N | Y | 设备报修ID | |
2 | manage_users | int | 10 | 0 | Y | N | 0 | 管理用户 |
3 | user_name | varchar | 64 | 0 | N | N | 用户姓名 | |
4 | name_of_the_repair_applicant | varchar | 64 | 0 | N | N | 报修人姓名 | |
5 | contact_information | varchar | 64 | 0 | N | N | 联系方式 | |
6 | device_name | varchar | 64 | 0 | N | N | 设备名称 | |
7 | equipment_model | varchar | 64 | 0 | N | N | 设备型号 | |
8 | production_date | date | 10 | 0 | N | N | 生产日期 | |
9 | reason_for_repair | longtext | 2147483647 | 0 | N | N | 报修原因 | |
10 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
11 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | graduate_users_id | int | 10 | 0 | N | Y | 研究生用户ID | |
2 | user_name | varchar | 64 | 0 | N | N | 用户姓名 | |
3 | professional_name | varchar | 64 | 0 | N | N | 专业名称 | |
4 | student_id | varchar | 64 | 0 | N | N | 学生学号 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
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 | manage_users_id | int | 10 | 0 | N | Y | 管理用户ID | |
2 | user_name | varchar | 64 | 0 | N | N | 用户姓名 | |
3 | department_name | varchar | 64 | 0 | N | N | 部门名称 | |
4 | employee_id | varchar | 64 | 0 | N | N | 员工工号 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | patent_achievements_id | int | 10 | 0 | N | Y | 专利成果ID | |
2 | teacher_id | int | 10 | 0 | Y | N | 0 | 教师工号 |
3 | teachers_name | varchar | 64 | 0 | N | N | 教师姓名 | |
4 | patent_name | varchar | 64 | 0 | N | N | 专利名称 | |
5 | application_time | date | 10 | 0 | N | N | 申请时间 | |
6 | approval_time | date | 10 | 0 | N | N | 审批时间 | |
7 | related_attachments | varchar | 255 | 0 | N | N | 相关附件 | |
8 | patent_number | varchar | 64 | 0 | N | N | 专利编号 | |
9 | patent_certificate | varchar | 255 | 0 | N | N | 专利证书 | |
10 | patent_description | 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 | project_achievements_id | int | 10 | 0 | N | Y | 项目成果ID | |
2 | teacher_id | int | 10 | 0 | Y | N | 0 | 教师工号 |
3 | teachers_name | varchar | 64 | 0 | N | N | 教师姓名 | |
4 | entry_name | varchar | 64 | 0 | N | N | 项目名称 | |
5 | project_category | varchar | 64 | 0 | N | N | 项目类别 | |
6 | participating_members | varchar | 64 | 0 | N | N | 参与成员 | |
7 | related_attachments | varchar | 255 | 0 | N | N | 相关附件 | |
8 | result_description | text | 65535 | 0 | Y | N | 成果说明 | |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | teacher_users_id | int | 10 | 0 | N | Y | 教师用户ID | |
2 | teachers_name | varchar | 64 | 0 | N | N | 教师姓名 | |
3 | department_name | varchar | 64 | 0 | N | N | 部门名称 | |
4 | teacher_id | varchar | 64 | 0 | N | N | 教师工号 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | undergraduate_users_id | int | 10 | 0 | N | Y | 本科生用户ID | |
2 | user_name | varchar | 64 | 0 | N | N | 用户姓名 | |
3 | professional_name | varchar | 64 | 0 | N | N | 专业名称 | |
4 | student_id | varchar | 64 | 0 | N | N | 学生学号 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 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章 系统实现
4.1用户功能模块
用户注册:用户在注册页面通过填写用户账号、密码、昵称、身份等信息完成用户注册,如图4-2所示。
图4-2用户注册界面图
用户注册逻辑代码如下:
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
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);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
设备信息管理,管理用户、本科生用户、研究生用户、教师用户在设备信息管理可以查看属于自己的设备信息,也可对设备信息进行添加、删除和修改等操作,如图4-3所示。
图4-3设备信息管理界面图
论文成果管理,研究生用户、教师用户在论文成果管理可以查看属于自己的论文成果信息,也可对论文成果进行添加、删除和修改等操作,如图4-4所示。
图4-4论文成果管理界面图
项目成果管理,研究生用户、教师用户在项目成果管理可以查看属于自己的项目成果信息,也可下载项目成果附件,如图4-5所示。
图4-5项目成果管理界面图
资料管理,管理用户、本科生用户、研究生用户、教师用户在资料管理可以查看属于自己的资料信息,也可下载资料附件,如图4-6所示。
图4-6资料管理界面图
4.2管理员功能模块
管理员登录,通过填写输入的账号、密码进行登录,如图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管理员功能界面图
管理员功能界面逻辑代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
系统用户,管理员可以管理系统所有用户信息,即可以根据需求进行添加、修改或删除操作,如图4-9所示。
图4-9系统用户界面图
权限管理,管理员可以对系统所有用户的权限进行设置,根据需求进行添加、修改或删除操作,如图4-10所示。
图4-10权限管理界面图
第5章 软件测试
测试存在于软件开发进程中的最后一个阶段,它可以保证一个软件的开发质量是否符合设计者的初衷,也为程序的正式上线做了最后一道质量检测的工序。软件测试主要是控制各种条件、包括软件输出方式,使用模式和运行环境等,来评估一个系统或应用是否符合设计标准。在软件测试过程中,我们一般刻意的去制造错误和极端条件,不能仅依照正常模式允许,而是多去尝试那些意外的情况。
5.1软件测试的重要性
只有在运行和维护阶段之前经历大量的测试的软件,才能说明它的质量是经得起检验的。最近计算机业界也都一致认为,测试应该存在于软件设计的每个阶段,因为越早发现错误,修复起来就越容易。
实际上,对于一个软件应用,错误是必然存在的,无论使用何种技术或手段,都不可能绝对的排除软件漏洞。测试是随着软件开发一同诞生的,两者是共同发展进步的。实际上,测试可以大幅度的降低维护的成本,如果一个漏洞在开发的早期就被发现,那么修复它的成本远比上线后再修复的成本要低得多。
5.2测试实例的研究与选择
测试有白盒测试和黑盒测试两种方式。
其中,白盒测试是将软件看成一个透明的白盒子,按照程序的内部控制结构和处理技术逻辑来选定测试用例、软件系统测试的逻辑路径及过程需要进行管理测试,又称玻璃盒测试。因此白盒测试需要选择足够多的测试用例,覆盖尽可能多的代码来发现程序中的错误。
黑盒测试,也称为功能测试。它将需软件看作一个黑盒,像一个普通用户一样来模拟软件的使用流程。黑盒测试通过大量的输入边界值或错误数据,来检查是否可产生正确的输出。
本系统测试 主要选择黑盒测试,少量采用白盒测试。通过测试达到以下测试目的:
1.检查各大功能模块的运行,确保其能够正确运行,并检查各页面的完整性,保证页面完整。
2.检查各个接口是否可以正确地输入和输出,保证数据流通稳定可行。
3.检查数据结构,保证其和外部接口没有访问错误,访问顺利。
4.检查原计划的性能需求有没有完成,运行流畅。
本系统的测试用例(部分):
登录部分测试用例 | |||||
编号 | 对象 | 项目 | 操作 | 预期结果 | 结果 |
1 | 登录 | 登录提示 | 使用正确的账号密码登录 | 成功登录 | 预期结果 |
2 | 登录提示 | 使用正确的账号但错误的密码登录 | 提示密码错误 | 预期结果 | |
3 | 登录提示 | 使用错误的账号登录 | 提示不存在账户 | 预期结果 | |
4 | 登录提示 | 不输入账号,点击登录 | 提示输入账号 | 预期结果 | |
5 | 登录提示 | 输入账号但不输入密码点击登录 | 提示输入密码 | 预期结果 | |
6 | 登录入口 | 已登录账号,查看登录入口 | 不显示登录入口 | 预期结果 |
5.3测试环境与测试条件
处理器:Inter Core I7-4710MQ四核处理器
内存:4GB
硬盘:1T
操作系统:Windows 10
数据库:MySQL
5.4系统运行情况
全部测试用例都已通过(包括但不限于以上测试用例),且不存在漏洞,实现了论文开始时所作要求。本系统运行稳定,使用流畅,可以满足客户需求。
5.5系统评价
5.5.1系统功能评价
试运行后进行系统评估,可以认为该系统达到预定的目标要求,可以满足用户的需求,也满足了系统开发前所作目标。
5.5.2系统技术评价
系统在经过大量重复测试后运行十分稳定,安全实用,功能模块已经达到预定目标所需。
5.5.3系统经济评价
在规定的时间内实现系统的大部分功能,且满足要求,节省开发成本,有助于提高科学管理水平,符合本人经济情况。
第6章 总结
随着计算机互联网技术的迅猛发展,每个行业都已经实现采用计算机相关技术对日益放大的数据进行管理。该课题是计算机学科团队科研资源管理系统以管理为核心展开的。本研究针对计算机学科团队科研资源管理系统需求建模,数据建模及过程建模分析设计并实现程序研究的过程。给出系统应用架构并分析优劣势,通过功能分解图,系统组件图描述功能需求。设计建立了数据库,给出系统关键数据结构的定义。通过类关系图描述组件间的协作关系,给出各个类的定义方法。通过描述每一个类的字段,属性及方法实现系统的前后端代码。最终给出系统集成整合方法,完成计算机学科团队科研资源管理系统的设计与实现。投入运行时,各功能均运行正常。系统的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个系统的各个功能设计合理,体现了人性化。
但是由于自己在系统开发过程中对一些用到的相关知识和技术掌握不够牢固,再加上自身开发经验欠缺,因此系统在有些方面的功能还不够完善,考虑的不够全面,因此整个系统还有待日后逐步完善。
参考文献:
[1]Henaien A ,Elhadj B H ,Fourati C L .A sustainable smart IoT-based solid waste management system[J].Future Generation Computer Systems,2024,157587-602.
[2]Liu J ,Zhao Y ,Chen X , et al.Ecosystem-based management approaches for watershed conservation and geosustainability[J].Heliyon,2024,10(9):e29800-.
[3]Zhang W ,Wu Z .E-commerce recommender system based on improved K-means commodity information management model[J].Heliyon,2024,10(9):e29045-.
[4]Zhu X ,Li M ,Liu X , et al.A backpropagation neural network-based hybrid energy recognition and management system[J].Energy,2024,297131264-.
[5]Wen J ,Wan C ,Xu G , et al.Optimization of thermal management system architecture in hydrogen engine employing improved genetic algorithm[J].Energy,2024,297131279-.
[6]Kejing Z ,Fanhua K ,Haiwei Y , et al.Urban flood risk management needs nature-based solutions: a coupled social-ecological system perspective[J].npj Urban Sustainability,2024,4(1):
[7]Wang Q ,Qu K ,Du Z , et al.Mining and analysis of security alert signals of valbenazine based on the Food and Drug Administration Adverse Event Reporting System database.[J].Journal of psychopharmacology (Oxford, England),2024,2698811241248391-2698811241248391.
[8]Yu L ,Ding Y ,Jian S .Managing carbon emissions in urban mobility system: A credit-based reservation scheme[J].Transportation Research Part D,2024,130104197-.
[9]王晓东,刘海燕,王迎,等.基于SpringBoot的气象信息资源管理系统设计与实现[J].电脑编程技巧与维护,2024,(03):79-82.DOI:10.16184/j.cnki.comprg.2024.03.028.
[10]刘慧玲,谭定英,陈平平.基于SpringBoot和Vue.js的大学生团队管理系统的设计[J].电脑编程技巧与维护,2024,(03):120-122.DOI:10.16184/j.cnki.comprg.2024.03.039.
[11]杨晟.基于SpringBoot的火车票售票管理系统设计[J].无线互联科技,2024,21(05):61-63.
[12]郭甲天,陈婷,向阳.一种基于SpringBoot框架校园宿舍管理系统的设计与实现[J].电脑知识与技术,2024,20(07):37-40.DOI:10.14004/j.cnki.ckt.2024.0444.
[13]石雨昕,关家兴,邹博华,等.基于SpringBoot微服务架构设计与实现实验室开放课题管理系统[J].实验室检测,2024,2(01):101-106.
[14]吴伶琳.基于SpringBoot的客户关系管理系统设计与实现[J].无线互联科技,2023,20(24):60-62.
[15]李书钦.高校科研信息管理系统构建研究[C]//中国计算机用户协会网络应用分会.中国计算机用户协会网络应用分会2023年第二十七届网络新技术与应用年会论文集.北方工业大学;,2023:4.DOI:10.26914/c.cnkihy.2023.055314.
[16]黄赛英.基于Springboot的医院档案管理系统设计[J].集成电路应用,2023,40(11):384-385.DOI:10.19339/j.issn.1674-2583.2023.11.176.
[17]黄永芳,郭永刚,李峰.基于SpringBoot的藏东南滑坡灾害管理系统设计与实现[J].科学技术创新,2023,(24):100-103.
[18]王忠野,费景洲,高峰,等.科研成果融入实验教学管理系统开发与实践[J].中国现代教育装备,2022,(13):17-20.DOI:10.13492/j.cnki.cmee.2022.13.049.
[19]章仁棠,吴名华.基于大数据技术的科研管理系统分析[J].集成电路应用,2021,38(01):82-83.DOI:10.19339/j.issn.1674-2583.2021.01.040.
[20]倪喜琴.基于“互联网+”模式下高职院校科研管理系统的构建与应用[J].教育现代化,2019,6(31):237-239.DOI:10.16541/j.cnki.2095-8420.2019.31.083.
致 谢
大学生活在这个时候即将划上一个句号,但是对于我的人生道路来说,这仅仅是一个逗号,我将面对的是下一次征程的开始。
回忆过去,很多的事情浮现在脑海:刚上大学时的兴奋场景还历历在目。一切都是那么新鲜,那么富有吸引力。有快乐也有艰辛,有收获也有失落。衷心感谢信息学院所有支持帮助过我的老师,谢谢你们多年来的关心和爱护。同窗的友情同样难忘,你们与我共同走过了人生中不平凡的道路,给我留下了值得珍藏的美好记忆。
最后,我要特别感谢指导计算机学科团队科研资源管理系统设计的老师。本论文是在他的悉心指导和热情帮助下完成的,老师认真负责的工作态度,严谨的治学精神和精深的理论水平都使我受益匪浅。老师无论在理论上还是在实践中,都给予我很大的帮助,使我专业技能的应用水平得到很大提高,这对于我以后的工作和学习都有益处。值此论文完成之际,特别向老师表示衷心的感谢和崇高的敬意,谢谢他细心而又耐心地辅导,使得我得以顺利的完成毕业设计开发工作,同时也要感谢其他帮助过我的老师和同学,他们在我成长过程中给予了我很大的帮助,在此一并表示感谢。
由于本人水平有限,加上时间紧促,本文一定有不少缺点和不足,恳请各位老师给予帮助和指正。
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-