基于springboot+Vue高校宿舍管理系统的设计与实现【附源码】

本科毕业设计(论文)

基于springboot+Vue高校宿舍管理系统的设计与实现

在这里插入图片描述

目录
摘要 2
第一章 绪论 2
1.1 开发背景 2
1.2 开发意义 2
第二章 系统分析 3
2.1 系统的需求分析 3
2.2 系统开发设计思想 3
2.3系统开发步骤 3
2.4 系统的主要技术 4
2.4.1 B/S系统的三层体系结构 4
2.4.2springboot简介 5
2.4.3springboot优点 5
2.4.4vue 6
2.4.5vue优点 6
2.4.6redis简介 8
2.4.7redis特点 8
2.5 系统的运行环境和开发平台 9
2.5.1 硬件设备及操作系统 9
2.5.2 系统开发工具 9
2.5.3 开发工具简介 9
第三章 系统设计 11
3.1系统流程 11
3.2 系统功能模块的划分 11
3.2.1用户管理 12
3.2.3 宿舍管理 12
3.2.4 系统管理 12
3.3数据库设计 13
3.3.1数据库需求分析 13
3.3.2数据库的逻辑设计 13
第四章 系统实现 13
4.1主要界面实现 13
4.1.1用户登陆 13
4.1.2 首页 14
4.1.3 宿舍管理-楼宇信息管理 15
4.1.4宿舍管理-房间信息管理 15
4.1.5宿舍管理-学生信息管理 15
4.1.6学生-报修申请 16
4.1.7学生-申请调宿 16
4.1.8权限管理-修改密码管理 17
4.2主要功能程序的实现 18
4.2.1 数据库连接的建立 18
4.2.2信息添加 18
4.2.3宿舍录入相关页面 21
第五章 系统的测试 30
5.1 软件测试的目的和原则 30
第六章 总结 31
1.学习到了很多Java开发中需要的技术。 32
参考文献 32
致谢: 33

摘 要
摘要:当今大学校园内的学生公寓,其数据量大,各种信息管理内容复杂,查询和管理学生信息和校园内的公寓信息等工作由人工完成将是很累的,不仅浪费了许多人力物力资源,而且还很容易出现差错,有一个软件对学生公寓管理不仅节省了人力物力,而且对各种信息的把握和操作也更加方便。
开发宿舍管理系统,有利于提高管理效率:传统的手工记录和纸质档案管理方式,效率低下且容易出错。通过宿舍管理系统,管理员可以快速、准确地录入和查询宿舍信息,提高了管理效率。简化入住流程:学生可以通过系统提前预约宿舍,简化入住流程,避免了繁琐的手续和等待时间。保证信息准确性:系统可以记录每个宿舍的详细信息,如入住人员、住宿时间等,保证信息的准确性和完整性。提高安全保障:系统可以对宿舍进行实时监控,加强安全保障,及时发现和处理异常情况。 优化资源配置:通过系统数据分析,学校可以更好地了解学生住宿需求,优化资源配置,提高宿舍的使用率。
该学生宿舍管理系统主要包括前台用户界面的开发和后台数据库的开发,对于后台数据库要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点。管理人员需要做的就是将数据输入到系统的数据库中去。经过分析,本系统运用了MySQL为后台数据库,以IDEA为前端开发工具,系统实现了权限管理、学生信息管理、房间信息管理、学生离校返校管理、卫生情况检查管理等必需的功能,其操作简单,界面友好,运行比较稳定,适用于大学院校大学生宿舍管理。

【关键字】JAVA;Jeecg;MySQL;宿舍管理;学生信息管理

Design and implementation of dormitory management system based on Java
Abstract: Nowadays, student apartments on university campuses have a large amount of data and complex information management contents. It will be very tiring to query and manage student information and apartment information on campus manually, which not only wastes a lot of human and material resources, but also easily makes mistakes. A software for student apartment management not only saves human and material resources, but also saves human and material resources. Moreover, it is more convenient to grasp and operate all kinds of information.
The development of dormitory management system is conducive to improving management efficiency: the traditional manual record and paper file management methods are inefficient and prone to errors. Through the dormitory management system, administrators can quickly and accurately input and query dormitory information, which improves management efficiency. Simplified check-in process: Students can make reservations in advance through the system, simplifying the check-in process and avoiding cumbersome formalities and waiting time. Ensure the accuracy of information: The system can record the details of each dormitory, such as check-in personnel, stay time, etc., to ensure the accuracy and integrity of information. Improve security: The system can monitor the dormitory in real time, strengthen security, and detect and deal with abnormal situations in time. Optimize resource allocation: Through system data analysis, schools can better understand student accommodation needs, optimize resource allocation, and improve the utilization rate of dormitories.
The student dormitory management system mainly includes the development of the front user interface and the development of the background database, which requires the establishment of a database with strong data consistency and integrity and good data security. The development of front-end application requires that the application can provide powerful data manipulation function, friendly interface, easy to use and so on. All the manager needs to do is enter the data into the system’s database. After analysis, the system uses MySQL as the background database, IDEA as the front-end development tool, the system realizes the rights management, student information management, room information management, student leaving and returning to school management, health inspection management and other necessary functions, its operation is simple, friendly interface, the operation is relatively stable, suitable for university student dormitory management.

Keywords:JAVA; Jeecg; MySQL; Dormitory management; Student information management

第一章 绪论
1.1 开发背景
宿舍管理系统的特点是从宿舍管理的角度出发,用集中的数据库将几乎所有与宿舍相关的数据统一管理起来,形成了集成的信息源。有好的用户界面,强有力的工具和信息的共享使得宿舍管理人员得以摆脱繁重的日常工作。
1.2 开发意义
宿舍管理是高校内每一个系部或院部都必须切实面对的工作,但一直以来人们使用传统的人工方式管理宿舍。这种方式存在着许多缺点,如效率低、保密性差且较为繁琐。另外管理各项信息的准确性也比较差。
经过调查,目前我国各类高等学校中有相当一部分的管理水平还停留在纸介质的基础上,这样的管理机制已经不能适应时代的发展,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,这种传统的手工管理方法必然被以计算机为基础的信息管理方法所取代。
宿舍管理作为计算机应用的一个分支,有着手工管理无法比拟的优点,因此,开发一套宿舍管理系统,将为学校管理带来前所未有的改变,是非常必要的,也是十分及时的。
1.3 国内外研究现状
宿舍管理系统作为一个比较新颖的管理方式,引起了很多学者的研究和关注。国内外专家学者在该领域开展了大量的研究,探讨了宿舍管理系统的设计理念、技术实现、管理模式等方面,下面将就该领域的国内外研究现状进行分析。
在国内,学校的宿舍管理系统一直是学校管理的热点问题之一,因此,很多学者对宿舍管理系统领域进行了深入的研究。目前,国内的研究方向主要集中在宿舍管理系统的设计理念、技术实现、管理模式、市场应用等方面。在宿舍管理系统的设计方面,国内学者提出的设计理念主要有灵活性、实用性、可扩展性等。在技术实现方面,国内学者主要研究了宿舍管理系统的建设、管理与维护等方面的技术问题。在管理模式方面,国内的研究主要探讨了宿舍管理的全面化、科学化和智能化发展趋势。在市场应用方面,国内研究者主要分析了宿舍管理系统在市场上的运用现状,发现宿舍管理系统的市场前景非常广阔。
与国内相比,国外的研究方向更加多元化。除了宿舍管理系统的设计、技术实现、管理模式等方面的研究,国外学者还研究了宿舍管理系统的安全性、可持续性、性价比等方面。
在宿舍管理系统的设计方面,国外学者提出的设计理念主要有个性化、可持续性、易用性等。在技术实现方面,国外学者研究了宿舍管理系统的互联网应用,推出了许多相应的技术方案。在管理模式方面,国外研究者主要探讨了宿舍管理的能源管理、节约意识等方面的问题。在安全性、可持续性、性价比等方面,国外学者也进行了大量的研究。
目前,随着宿舍管理系统的不断普及,不管国内外学者在该领域的研究都越来越深入。随着信息技术的不断发展,宿舍管理系统将逐渐发展出更加高效、智能的管理模式。因此,未来国内宿舍管理系统的研究前景非常广阔。

第二章 系统分析
2.1 系统的需求分析
根据本校宿舍的工作流程与实际的需求和特色,本系统需满足以下几个方面的要求:
1.查询宿舍学生的基本信息以及各个宿舍的基本信息
2.学生可以提交报修信息
3.学生可以修改自己的密码
4.宿舍管理员可以查询宿舍区域、楼宇、院系、班级等信息
5.宿舍管理员可以查询保修信息的跟进情况
2.1.1 系统功能流程图

图 系统流程图
2.2 系统开发设计思想
系统采用前后端分离技术,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护;
系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。
2.3系统开发步骤
宿舍管理系统的建立与应用可以划分成总体规划、系统开发和系统运行三个阶段,其中系统开发阶段还可进一步分为系统分析、系统设计和系统实施等工作环节。上述各个阶段排列成一个严格的线性开发序列,在每个工作阶段均产生完整的技术文档作为下一阶段工作的指导和依据,每一阶段都应对文档进行评审,确信该阶段工作已完成并达到要求后才能进入下一阶段,同时在以后的工作中不能轻易改变前面经过评审的成果。
上述开发方式的主要优点是便于开发工作的组织和管理,并且可大大降低在线管理系统开发的复杂性。国内外许多系统开发的实例都证明这是一种行之有效的开发方式。

2.4 系统的主要技术
2.4.1 B/S系统的三层体系结构
在B/S的系统中,用户可以通过浏览器向分布在网络上的许多服务器发出请求。B/S结构极大的简化了客户机的工作,客户机上只需安装、配置少量的客户端软件即可,服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。
在B/S三层体系结构下,表示层(view)、功能层(controller)、数据层(model)被分割成三个相对独立的单元:
第一层–表示层:Web浏览器
在表示层中包含系统的显示逻辑,位于客户端。它的任务是由Web浏览器向网络上的某一Web服务器提出服务请求,Web服务器对用户身份进行验证后用HTTP协议把所需的主页传送给客户端,客户机接受传来的主页文件,并把它显示在Web浏览器上。
第二层–功能层:具有应用程序扩展功能的Web服务器
在功能层中包含系统的事务处理逻辑,位于Web服务器端。它的任务是接受用户的请求,首先需要执行相应的扩展应用程序与数据库进行连接,通过SQL等方式向数据库服务器提出数据处理申请,后台数据库服务器将数据处理的结果提交给Web服务器,再由Web服务器传送回客户端。
第三层–数据层:数据库服务器
在数据层中包含系统的数据处理逻辑,位于数据库服务器端。它的任务是接受Web服务器对数据库操纵的请求,实现对数据库查询、修改、更新、删除功能,把运行结果提交给Web服务器。
从上面的分析中可以看出,B/S体系结构是把C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由单独组成的一层来负担其任务,这样客户机的压力大大减轻了,把负荷均衡地分配给了Web服务器,于是由原来的C/S结构转变成B/S结构。
2.4.2springboot简介
SpringBoot是一种全新的框架,目的是为了简化Spring应用的初始搭建以及开发过程。该框架使用特定的方式(集成starter,约定优于配置)来进行配置,从而使开发人员不需要再定义样板化的配置。SpringBoot提供了一种新的编程范式,可以更加快速便捷地开发Spring项目,在开发过程当中可以专注于应用程序本身的功能开发,而无需在Spring配置上花太大的工夫。
SpringBoot基于Sring4进行设计,继承了原有Spring框架的优秀基因。SpringBoot并不是一个框架,而是一些类库的集合。maven或者gradle项目导入相应依赖即可使用SpringBoot,而无需自行管理这些类库的版本。
2.4.3springboot优点
1、为基于Spring的项目开发提供更快捷的入门体验:特别是对于刚开始使用Spring框架的开发人员,无需关心使用Spring框架都需要引入哪些jar包,无需关心Spring框架与其他框架整合时都需要哪些配置文件。SpringBoot会自动配置Spring。
2、无需手动管理依赖jar包的版本:SringBoot通过 spring boot starter管理其提供的所有依赖的版本,当升级SpringBoot时,这些依赖的版本也会随之升级,个人无需指定版本号,但是也可以自定义版本号覆盖SpringBoot的默认值。
3、自动配置,无需XML:SpringBoot尝试根据你添加的jar依赖自动配置你的应用。
4、嵌入式的Tomcat,无需部署war文件。传统的项目我们在启动或者部署的时候,需要将项目的war包放到服务器(如Tomcat、JBoss)的指定目录下,然后再启动服务器。而SpringBoot项目在启动时无需将war文件部署到服务器中。SpringBoot内置了Tomcat和Jetty容器。在服务器启动SpringBoot项目时可以通过jar指令直接启动, 在开发IDE中启动时只需运行Application类的main方法即可。
5、简化Maven配置:SpringBoot通过 spring boot starter管理jar包,无需手动配置jar包的版本。之前我们在进行jar包配置时,需要找到jar包的版本号,而在SpringBoot项目中,则无需去管理版本号。
2.4.4vue
vue是一套构建用户界面的框架。在我看来,渐进式代表的含义是:主张最少。每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。简单说就是对于vue中你不熟悉不太把握的模块或者功能,你可以不用它,或者你可以用你熟悉有把握的技术进行代替 。这样子看来是不是感觉很友好,相对于其他框架硬要求很少了,你可以逐渐性的使用框架。
为了实现前后端分离的开发理念,开发前端 SPA(single page web application) 项目,实现数据绑定,路由配置,项目编译打包等一系列工作的技术框架。
Vue有著名的全家桶系列,包含了vue-router(http://router.vuejs.org),vuex(http://vuex.vuejs.org), vue-resource(https://github.com/pagekit/vue-resource)。再加上构建工具vue-cli,sass样式,就是一个完整的vue项目的核心构成。
2.4.5vue优点
1、轻量级框架
只关注视图层,是一个构建数据的视图集合,大小只有几十kb,Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统
2、简单易学
国人开发,中文文档,不存在语言障碍,易于理解和学习
3、双向数据绑定
也就是所谓的响应式数据绑定。这里的响应式不是@media 媒体查询中的响应式布局,而是指vue.js会自动对页面中某些数据的变化做出同步的响应。
也就是说,vue.js会自动响应数据的变化情况,并且根据用户在代码中预先写好的绑定关系,对所有绑定在一起的数据和视图内容都进行修改。而这种绑定关系,就是以input 标签的v-model属性来声明的,因此你在别的地方可能也会看到有人粗略的称vue.js为声明式渲染的模版引擎。
这也就是vue.js最大的优点,通过MVVM思想实现数据的双向绑定,让开发者不用再操作dom对象,有更多的时间去思考业务逻辑。
4、组件化
在前端应用,我们是否也可以像编程一样把模块封装呢?这就引入了组件化开发的思想。
Vue.js通过组件,把一个单页应用中的各种模块拆分到一个一个单独的组件(component)中,我们只要先在父级应用中写好各种组件标签(占坑),并且在组件标签中写好要传入组件的参数(就像给函数传入参数一样,这个参数叫做组件的属性),然后再分别写好各种组件的实现(填坑),然后整个应用就算做完了。
5、视图,数据,结构分离
使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作
6、虚拟DOM
现在的网速越来越快了,很多人家里都是几十甚至上百M的光纤,手机也是4G起步了,按道理一个网页才几百K,而且浏览器本身还会缓存很多资源文件,那么几十M的光纤为什么打开一个之前已经打开过,已经有缓存的页面还是感觉很慢呢?这就是因为浏览器本身处理DOM也是有性能瓶颈的,尤其是在传统开发中,用JQuery或者原生的JavaScript DOM操作函数对DOM进行频繁操作的时候,浏览器要不停的渲染新的DOM树,导致页面看起来非常卡顿。
而Virtual DOM则是虚拟DOM的英文,简单来说,他就是一种可以预先通过JavaScript进行各种计算,把最终的DOM操作计算出来并优化,由于这个DOM操作属于预处理操作,并没有真实的操作DOM,所以叫做虚拟DOM。最后在计算完毕才真正将DOM操作提交,将DOM操作变化反映到DOM树上。
7、运行速度更快
像比较与react而言,同样都是操作虚拟dom,就性能而言,vue存在很大的优势
2.4.6redis简介
1、Redis 是完全开源免费的,遵守 BSD 协议,是一个灵活的高性能 key-value 数据结构存储,可以用来作为数据库、缓存和消息队列。
2、Redis 比其他 key-value 缓存产品有以下三个特点:
3、Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存使用。
4、Redis 不仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
5、Redis 支持主从复制,即 master-slave 模式的数据备份。
2.5 系统的运行环境和开发平台
2.5.1 硬件设备及操作系统
服务器:inter Xeon e3(或与此相当的CPU)以上配置的高性能PC机,有网络接口卡(NIC),内存应在4g以上,硬盘在1T以上。数据库软件mysql,还可选用备份服务器。
操作系统:OpenSuSE
客户端:i3(或与此相当的CPU)以上配置的PC机,有网络接口卡(NIC),内存应在1g以上,硬盘在80G以上。Windows XP以上操作系统,安装Web浏览器。
网络:服务器和客户端应有网络连通。配置TCP/IP协议。
2.5.2 系统开发工具
电脑配置:thinkpad品牌机CPU: i5 内存:DDR 2G 硬盘:150G
操作系统:win 10
开发环境:idea webstorm
Web服务平台:Tomcat 8.0
数据库:mysql 5.5
jdk:8.0
2.5.3 开发工具简介
(1) Idea概述
IDEA 全称 IntelliJ IDEA,是 Java 语言开发的集成环境,IntelliJ 在业界被公认为最好的 Java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、各类版本工具(git、svn、github 等)、JUnit、CVS 整合、代码分析、 创新的 GUI 设计等方面的功能可以说是超常的。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
利用Idea我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。
(2)Idea功能简介
智能的选取:在很多时候我们要选取某个方法,或某个循环或想一步一步从一个变量到整个类慢慢扩充着选取,IDEA就提供这种基于语法的选择,在默认设置中 Ctrl + W,可以实现选取范围的不断扩充,这种方式在重构的时候尤其显得方便。
1、丰富的导航模式:IDEA 提供了丰富的导航查看模式,例如 Ctrl + E 显示最近打开过的文件,Ctrl + N 显示你希望显示的类名查找框(该框同样有智能补充功能,当你输入字母后IDEA将显示所有候选类名)。在最基本的 Project 视图中,你还可以选择多种的视图方式。
2、 历史记录功能:不用通过版本管理服务器,单纯的 IDEA 就可以查看任何工程中文件的历史记录,在版本恢复时你可以很容易的将其恢复。
3、 JUnit 的完美支持
4、 对重构的优越支持:IDEA 是所有 IDE 中最早支持重构的,其优秀的重构能力一直是其主要卖点之一。
5、 编码辅助:Java 规范中提倡的 toString()、hashCode()、equals() 以及所有的 get/set 方法,你可以不用进行任何的输入就可以实现代码的自动生成,从而把你从无聊的基本方法编码中解放出来。
6、 灵活的排版功能:基本所有的 IDE 都有重排版功能,但仅有 IDEA 的是人性的,因为它支持排版模式的定制,你可以根据不同的项目要求采用不同的排版方式。
7、XML 的完美支持:XML 全提示支持:所有流行框架的 XML 文件都支持全提示,谁用谁知道。
8、动态语法检测:任何不符合 Java 规范、自己预定义的规范、累赘都将在页面中加亮显示。
9、代码检查:对代码进行自动分析,检测不符合规范的,存在风险的代码,并加亮显示。
10、对 JSP 的完全支持:不需要任何的插件,完全支持 JSP。
11、智能编辑:代码输入过程中,自动补充方法或类。
(2) Tomcat8.0概述
Tomcat8.0 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 8.0 支持最新的Servlet 3.0 和JSP 2.2 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
(3) mysql概述
MySQL是一个关系型数据库管理系统,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型系统的开发都选择MySQL作为数据库。

2.6 系统非功能性需求分析
2.6.1 系统兼容性需求
系统兼容性指的是系统在不同软件或者硬件环境下操作,是否对网站的整体功能有影响。一般常见的兼容性就是系统在各大浏览器以及不同电脑系统中的运行情况,系统兼容性是系列计算机的基本特性,是避免用户在老产品型号上开发的软件遭受废弃的一种重要设计思想与技术措施。 它保护了用户的已有资源,节约了厂商和用户的开发投资,加快了计算机的研制过程,促进了计算机产业和应用的发展。在开发网站应当考虑到系统在不同环境下的运行结果是否一致,这直接影响到用户的体验。

2.6.2 系统安全性
安全性是每个领域必须要考虑的事情,系统的安全性直接影响到整个网站的存活。我们在设计网站过程中,安全问题可以分为以下几个方面:
1.账户安全:这直接关系到用户的个人信息泄露以及网站信息丢失。音乐系统在设计登录注册的时候,采用了严格的正则表达式,用户的密码必须是数字、字母加符号组合,而且还控制了密码的长度范围。用户名同样控制了长度。
2.网络环境安全:我们的网站不能在含有恶意病毒的系统上使用,病毒会随时入侵网站,导致网站崩溃等情况出现。
3.硬件安全:指的是我们的电脑或者其他相关的硬件不能放在潮湿或者有化学药品的地方。

2.6.3 技术可行性
技术可行性也称为技术风险分析,研究的对象是信息系统需要实现的功能和性能,以及技术能力约束。技术可行性主要通过考虑以下问题来进行论证:
1) 技术:目前的技术水平和目前的发展状况能否满足整个体系的运行。
2) 目标:因为在项目的可行性分析中,目的是不明确的,所以技术上的可行性与项目的功能、性能和约束条件最好是能够同步。在可行性研究阶段,调整项目目标和选择可行的技术体系都是可以的,而一旦项目进入开发阶段,任何调整都意味着更多的开销[9]。
需要特别指出的是,技术可行性绝不仅仅是论证在技术手段上是否可实现,实际上包含了在当前资源条件下的技术可行性。
对于技术的选择,具体要根据项目的实际情况(例如,开发环境、开发人员的素质、系统的性能要求等)进行决策,但通常的建议是尽可能采用成熟的技术,慎重引入先进技术。IT业界流行的诙谐语“领先一步是先进,领先两步是先烈”讲的就是对技术的选择原则。

2.7 本章小结
这一章是对系统的需求进行了研究,包括对功能和对非功能的要求进行了研究。也就是系统的每个模块需要完成哪些事情,根据市场上的系统综合分析我们的系统主要完成什么样的功能。简单的陈述了每个模块是基于什么技术来设计的,设计这些模块有什么意义。同样也讲述了系统前后期所需要考虑的非功能性系统需求,详细的系统设计过程将在系统设计中具体说明。

第三章 系统设计
3.1系统流程
与本系统相关的角色包括:
系统管理员:管理系统用户、角色与权限、拥有系统全部权限,保证系统正常运行。拥有操作调宿申请,查看报修是否完成,查看用户基本信息等权利。
学生:查看宿舍信息,申请调宿,报修。

3.2 系统功能模块的划分
软件所实现的功能强弱是衡量一个软件的最根本的标准。经过对系统的需求分析和实际应用需求,确定了本子系统的功能模块如图3.2所示:
图3.1 系统功能模块图
3.2.1用户管理
用户管理包括为用户分配账号,修改密码,用户安全退出功能。此模块只能由系统管理员统一配置,用户不能自行注册,但是用户可以修改自己的密码,并且用户密码是经过进行加密处理的。
3.2.3 宿舍管理
可以对宿舍里存在的信息进行登记,登记时需要填选学生的姓名,学生的人数,住宿的人数,报修统计,空宿舍统计等。管理员还可以对宿舍信息进行编辑。
3.2.4 系统管理
本系统角色共分为3种:系统管理员、宿舍管理员和学生。由于各个角色的使用功能不一样,所以要加入权限控制使不同的角色登陆系统后所拥有的权限不同。
3.3数据库设计
数据库的设计十分重要,下面将对本文所使用的数据表进行逐一的介绍。

  1. 用户表及ER图
    表4.1用户表
    字段名 数据类型 长 度 字段含义 是否主键 是否外键
    userid INTEGER 11 用户ID 是
    roleid INTEGER 11 角色id 是
    username VARCHAR 20 用户账户名
    userpwd VARCHAR 20 用户密码
    usertruename VARCHAR 30 真实姓名
    用户表ER图,如图4-4所示:

图4-4 用户表ER图
用户id:每一个登陆的用户都有一个特有的编号;
角色id:学生、超级管理员、试题管理员,三个角色分别对应一个编号;
账号:登录时需要用到的;
密码:密码对应相应的账号;
姓名:用户的真实姓名;
状态:1为正常,0为禁用。

3.3.1数据库需求分析
数据库的设计在一个系统中的作用十分重要,数据库建立的是否完善直接影响到你个系统的实现。数据库的设计既要满足用户的需求又要尽最大可能的降低数据的冗余,尽可能降低数据间的依赖,将他们分离。在各种信息的提供,保存,更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入,收集基本数据,数据结构,以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础.
3.3.2数据库的逻辑设计
逻辑结构设计的原则如下:
(1) 尽可能的减少数据冗余和重复。
(2) 结构设计与操作设计相结合。
(3) 数据结构具有相对的稳定性。
(4) 遵循数据库设计三范式。
3.3.3 用户表及ER图
表3.1用户表admin
字段名 数据类型 长 度 字段含义 是否主键 是否外键
username VARCHAR 20 用户账户名 Y N
name VARCHAR 20 姓名 N N
userpwd VARCHAR 20 用户密码 N N
gender enum 2 性别 N N
age int 11 年龄 N N
phone_num varchar 11 手机号 N N
email varchar 11 邮箱 N N
avatar varchar 255 头像 N N
用户表ER图,如图3-2所示:

图3-2 用户表ER图
用户id:每一个登陆的用户都有一个特有的编号;
账号:登录时需要用到的;
密码:密码对应相应的账号;
姓名:用户的真实姓名;

第四章 系统实现
4.1主要界面实现
本系统的UI设计主要采用element,已经提供好的样式用起来特别方便。
4.1.1用户登陆
输入正确的用户名、密码和所选角色后进行登陆。

4.1.2 首页
登陆成功后进入首页面
图4.1首页效果
4.1.3 宿舍管理-楼宇信息管理

图4.2楼宇信息管理
4.1.4宿舍管理-房间信息管理

图4.3 房间信息管理
4.1.5宿舍管理-学生信息管理
进入角色管理模块,添加角色,宿舍管理员、系统管理员和学生。然后为其分配相应的页面和按钮访问权限。

图4.4 学生信息管理
4.1.6学生-报修申请

图4.5报修申请

4.1.7学生-申请调宿

图4.6申请调宿

4.1.8权限管理-修改密码管理

图4.7修改密码

4.2主要功能程序的实现
4.2.1 数据库连接的建立
本系统在数据库连接方面,使用统一的连接数据库的方法,引入相关的jar包之后,调用其中的类。通过dbconfig.properties配置文件读取数据库信息和登陆数据库帐户的用户名和密码,实现数据库的连接。具体的代码如下:
dbconfig.properties文件的内容如下:
#Tomcat端口号 默认是8080端口
server.port=9090
#mysql
spring.datasource.url=jdbc:mysql://localhost:3306/dormitory?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

4.2.2用户登陆
当用户打开页面将基本信息填写好,点击“提交”按钮之后,在客户端浏览器首先对用户填入的信息进行校验,校验主要包括:用户在必填的选项下是否输入空的内容,是否符合该项所定义的格式要求。如不符合要求,该表单的不会被提交到服务器端去,这样有助于减轻服务器端的压力。
当用户填写的信息正确之后,页面由表单的Action属性确定将用户的请求发送到服务器下的TBBookController这个类下进行处理,当服务器获取到请求之后调用类TBBookController的doAdd方法,在doAdd方法中调用tBBookService类中的save方法,在save方法中调用了CommonServiceImpl类中的save方法,然后将数据插入到数据库中。具体处理过程如下:

/**
 * 管理员登录
 */
@PostMapping("/login")
public Result<?> login(@RequestBody User user, HttpSession session) {

    Object o = adminService.adminLogin(user.getUsername(), user.getPassword());
    if (o != null) {
        System.out.println(o);
        //存入session
        session.setAttribute("Identity", "admin");
        session.setAttribute("User", o);
        return Result.success(o);
    } else {
        return Result.error("-1", "用户名或密码错误");
    }

}
保存成功之后将新添加的数据以不刷新页面的效果展示到页面中,并且提示保存成功,如果保存失败则提示失败信息。

4.2.3宿舍信息相关页面
宿舍后端代码:

package com.example.springboot.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.springboot.common.Result;
import com.example.springboot.entity.DormBuild;
import com.example.springboot.service.DormBuildService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;

@RestController
@RequestMapping(“/building”)
public class DormBuildController {

@Resource
private DormBuildService dormBuildService;

/**
 * 楼宇添加
 */
@PostMapping("/add")
public Result<?> add(@RequestBody DormBuild dormBuild) {
    int i = dormBuildService.addNewBuilding(dormBuild);
    if (i == 1) {
        return Result.success();
    } else {
        return Result.error("-1", "添加失败");
    }
}

/**
 * 楼宇信息更新
 */
@PutMapping("/update")
public Result<?> update(@RequestBody DormBuild dormBuild) {
    int i = dormBuildService.updateNewBuilding(dormBuild);
    if (i == 1) {
        return Result.success();
    } else {
        return Result.error("-1", "更新失败");
    }
}

/**
 * 楼宇删除
 */
@DeleteMapping("/delete/{dormBuildId}")
public Result<?> delete(@PathVariable Integer dormBuildId) {
    int i = dormBuildService.deleteBuilding(dormBuildId);
    if (i == 1) {
        return Result.success();
    } else {
        return Result.error("-1", "删除失败");
    }
}

/**
 * 楼宇查找
 */
@GetMapping("/find")
public Result<?> findPage(@RequestParam(defaultValue = "1") Integer pageNum,
                          @RequestParam(defaultValue = "10") Integer pageSize,
                          @RequestParam(defaultValue = "") String search) {
    Page page = dormBuildService.find(pageNum, pageSize, search);
    if (page != null) {
        return Result.success(page);
    } else {
        return Result.error("-1", "查询失败");
    }
}

/**
 * 首页Echarts 获取楼宇信息
 */
@GetMapping("/getBuildingName")
public Result<?> getBuildingName() {
    List<DormBuild> buildingName = dormBuildService.getBuildingId();
    List<Integer> buildingId = buildingName.stream().map(dormBuildId -> dormBuildId.getDormBuildId()).collect(Collectors.toList());

    if (!buildingId.isEmpty()) {
        return Result.success(buildingId);
    } else {
        return Result.error("-1", "查询失败");
    }

}

}

第五章 系统的测试
5.1 软件测试的目的和原则
在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。
尽管面向对象技术的基本思想保证了软件应该有更高的质量,但无论采用什么样的编程技术,编程人员的错误都是不可避免的,而且由于面向对象技术开发的软件代码重用率高,更需要严格测试,避免错误的繁衍。因此,软件测试在面向对象编程里更具有它的重要性。
与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤地继续。大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。因此,大型软件系统的测试的基本层次如图6-1所示[12]。

图6-1 测试的基本层次

(1) 单元测试 单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。
(2) 集成测试 在这个测试步骤中所发现的往往是概要设计的错误。
(3) 系统测试 在这个测试步骤中所发现的往往是需求规格说明的错误。一般来说,系统测试是功能性测试,不是结构性测试。

第六章 总结
在系统的开发过程中,以前学习感到很抽象的课程,如软件工程、数据库原理、面向对象程序设等变得清晰起来。感觉到这几门理论课程的重要性。
以前做一些应用的系统开发,随意性大,想到那里做到那里,没有统一的规划,一旦系统成型,出现错误返工修改工作量大,最终的系统可靠性不高。另外一直以来,进行程序设计均采用结构化开发方法,对系统的全貌难以在开发前看到,导致实现的系统不满足需求。
这次的毕业设计开发,主要有以下几点收获:
1.学习到了很多Java开发中需要的技术。
2.通过实践,提高了系统分析的能力,对数据流图、数据字典、系统流程图等系统设计工具的使用有了更深刻的认识。为以后的工作、学习的进一步提高打下了坚实的基础。

致谢
感谢学校以认真负责的态度为我们组织这次毕业设计以及毕业论文答辨。你们的严格把关,对我们来说有很大的压力。在这种压力下促使我们以最快的速度融入到软件开发理论的应用中去,通过这次煅炼,使我们的系统开发水平各方面都有了较大的进步。由此积累的经验将对我们以后的学习和生活产生帮助。感谢我的指导老师,在毕业设计时帮助选题,在设计的过程中提出了许多有益的建议和意见,同时他先进的软件开发理念和思维方式也给我很大的启发。

参考文献
[1]侯琳琦. 美国网络音乐发展现状分析[J]. 北京邮电大学学报(社会科学版),2008(01):24-26+31.
[2]胡斌. 流行音乐网站发展现状分析[J]. 中国科技信息,2006(05):324.
[3]冼远清,张旭新.基于Django的图书推荐系统设计[J].电子技术与软件工程,2022(05):216-219.
[4]白相辰. 基于Django框架的Web在线教育平台的设计与实现[D].北京交通大学,2019.DOI:10.26944/d.cnki.gbfju.2019.000099.
[5]韩迎红.基于HTML5技术的移动Web前端设计与开发[J].电子技术与软件工程,2021(22):55-57.
[6]秦秋滢.基于CSS技术的网页设计应用研究[J].电子世界,2020(06):194-195.DOI:10.19353/j.cnki.dzsj. 2020.06.111.
[7]白相辰. 基于Django框架的Web在线教育平台的设计与实现[D].北京交通大学,2019.DOI:10.26944/d.cnki.gbfju.2019.000099.
[8]肖蕾,刘威,黄慧明.多场景环境监测系统的设计与实现[J].信息技术,2019,43(06):96-100+105.DOI:10.13274/j.cnki.hdzj.2019.06.023.
[9]刘忠平. 塑料行业电子商务一体化服务平台的设计与实现[D].天津大学,2012.
[10]高彦刚. 基于SSH框架的陕西省省直机关后勤综合服务平台设计与实现[D].西安电子科技大学,2015.
[11]增强现实地图导航系统的设计与实现[D].大连理工大学,2017.
[12]华磊. 基于CCD的图像采集系统设计与实现[D].西安电子科技大学,2012.
[13]黄筱喆. 基于增强现实的智能视频监控研究与设计[D].电子科技大学,2019.
[14]顾茗思懿,王会鲜.基于Vue+Spring Boot校园求职学习平台的设计与实现[J].电脑知识与技术,2020,16(33):94-96.DOI:10.14004/j.cnki.ckt.2020.
[15] [美]Todd Cook. JSP从入门到精通[M].北京:电子工业出版社,2003. 1-385.
[16] Soren Lauesen.Software Requirements Styles and Techniques[M]. BeiJing: Publishing House of Electronics Industry,2002.10,25-90.
[17] Roger S.Pressman.Software Engineering A Practitioner’s Approach, 5th ed[M].北京:清华大学出版社,2001.1-589.
[18] Hans Bergsten. JavaServer Pages_2nd Edition[M]. O’Reilly, August 2002,1-500.
[19] Kevin Duffey,Vikram Goyal. Professional JSP Site Design[M]. BeiJing: Publishing House of Electronics Industry,2002.1-75.
[20] Paul C.Jorgensen.Software Testing A Craftsman’s Approach(second Edition)[M].China Machine Press,2003,170-175.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/745461.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

70年,800个,全球AI大模型数据可视化;750名工程师透露的AI真相;GenAI将取代初级程序员?NO!出海美国的创始人必读手册 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;ShowMeAI官网 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 1. Anthropic 发布 Claude Artifacts&#xff0c;大模型从「聊天」正式迈入「工作流」 上周&#xff0c;Anthropic 公司发布了最新的大模型 Claude 3.5 Sonnet&am…

2024年【山东省安全员B证】最新解析及山东省安全员B证操作证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【山东省安全员B证】最新解析及山东省安全员B证操作证考试&#xff0c;包含山东省安全员B证最新解析答案和解析及山东省安全员B证操作证考试练习。安全生产模拟考试一点通结合国家山东省安全员B证考试最新大纲及…

AI助手的超级工具箱:Phidata框架实战指南

目录 引言一、Phidata概述二、Phidata的安装与快速入门1、安装Phidata2、环境配置3、快速入门3.1 可以搜索网页的助手3.2 可以查询财务数据的助手 三、Phidata的高级应用1、可以编写和运行Python代码的助手2、可以使用 SQL 分析数据的助手3、可生成 Pydantic 模型的助手4、具有…

探索Uptime命令:Linux系统管理员的必备工具

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 探索Uptime命令&#xff1a;Linux系统管理员的必备工具 前言基本用法语法输出示例输出字段解释系…

【RF Transceiver】ADRV9040 8T8R

具有DFE、400MHz iBW射频收发器的8T8R SoC 特性 8个差分发送器&#xff08;Tx&#xff09; 8个差分接收器&#xff08;Rx&#xff09; 2个观察接收器&#xff08;ORx&#xff09; 单频段和多频段&#xff08;N x 2T2R/4T4R&#xff09;能力 可调范围1内4个波段轮廓 调谐范围&a…

记录一个笔误引发的bug导致生产环境报错,但是本地环境,测试环境运行正常

记录一个笔误引发的bug导致生产环境报错&#xff0c;但是本地环境&#xff0c;测试环境运行正常 因为headers请求头过长导致报错 在feign外调其他系统时候&#xff0c;是重新封装headers 问题在于 MultiValueMap 属于静态变量。这里讲userAgent的内容传递过去。是不断累加的…

Stable Diffusion【进阶篇】:真人漫改之迪士尼风格定制

大家好&#xff0c;我是极客菌 关于真人漫改是一个应用比较多的图片定制方向&#xff0c;本文以及后面的章节我们结合一些具体的大模型或者LORA来更深入的实践一下。 一. 迪士尼风格 在SD的大模型中&#xff0c;实现迪士尼或者皮卡斯风格的图片&#xff0c;首推 Disney Pix…

C# 任务调度 c# TaskScheduler

摘要 在C#中&#xff0c;TaskScheduler是一种非常有用的功能&#xff0c;它允许您在指定的时间或间隔内执行任务。TaskScheduler是一个抽象类&#xff0c;它提供了一个通用的方法来计划和执行任务。您可以使用TaskScheduler来调度多个任务&#xff0c;并且在多线程环境中控制它…

智能体——父亲兴趣爱好助手

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

HDOJ5616 Jam‘s balance

目录 HDOJ5616 Jams balance题目描述背景输入输出 题解解法一解法二优化 打赏 HDOJ5616 Jam’s balance 题目描述 背景 有 N N N个已知质量的砝码&#xff0c;分别询问给出的 M M M个质量能否被称出 输入 第一行输入一个变量 T T T&#xff0c;表示有 T T T组数据&#xf…

LLM生成模型在生物蛋白质应用:ESM3

参考&#xff1a; https://github.com/evolutionaryscale/esm 报告&#xff1a;https://www.evolutionaryscale.ai/blog/esm3-release 通过GPT模型原理&#xff0c;输入蛋白质序列等模态输出预测的蛋白质序列及结构 使用 参考&#xff1a;https://colab.research.google.c…

智能扫地机,让生活电器更加便民-NV040D扫地机语音方案

一、语音扫地机开发背景&#xff1a; 随着人工智能和物联网技术的飞速发展&#xff0c;智能家居设备已成为现代家庭不可或缺的一部分。其中&#xff0c;扫地机作为家庭清洁的重要工具&#xff0c;更是得到了广泛的关注和应用。 然而&#xff0c;传统的扫地机在功能和使用上仍存…

深圳比创达EMC|EMC与EMI滤波器:在电子设备中的平衡之道

随着科技的快速发展&#xff0c;电子设备已经深入到我们生活的方方面面&#xff0c;从家用电器到工业设备&#xff0c;从通信设备到医疗仪器&#xff0c;都离不开电子技术的支持。然而&#xff0c;电子设备在带来便利的同时&#xff0c;也面临着电磁兼容&#xff08;EMC&#x…

一个很好用的地图工具的使用:思极地图,以及vue+思极地图的使用

前言&#xff1a; 随着现在国网等一部分公司的需求&#xff0c;在线地图-思极地图 出现在我们眼前&#xff0c;给我们带来了很多便利&#xff0c;这里分享下他的信息与使用。 实现效果&#xff1a; 相关资料&#xff1a; 1、官网地址 2、在线地址 3、官方api地址 实现步骤-js…

河南资信乙级预评价:人员需缴唯一社保吗?

河南资信乙级预评价中&#xff0c;人员确实需要缴纳唯一社保。以下是详细的解读和归纳&#xff1a; 一、社保唯一性的定义 社保唯一性指的是参与河南资信乙级预评价的咨询工程师&#xff08;投资&#xff09;必须在申请单位有唯一且连续的社保缴纳记录。这一要求旨在确保咨询…

鸿蒙 HarmonyOS NEXT星河版APP应用开发阶段三-热门组件使用及案例

一、样式和结果重用 介绍 /* Extend:扩展组件&#xff08;样式、事件&#xff09; Styles: 抽取通用数据、事件 Builder:自定义构建函数&#xff08;结构、样式、事件&#xff09; */Extend /* 作用&#xff1a;扩展组件&#xff08;样式、事件&#xff09; 场景&#xff1a;…

C语言 | Leetcode C语言题解之第189题轮转数组

题目&#xff1a; 题解&#xff1a; void swap(int* a, int* b) {int t *a;*a *b, *b t; }void reverse(int* nums, int start, int end) {while (start < end) {swap(&nums[start], &nums[end]);start 1;end - 1;} }void rotate(int* nums, int numsSize, int…

JavaScript创建标签式组件

我们本篇将实现下面的这个标签式组件 我们本篇将实现下面的这个标签式组件 ● 当然我们首先将我们需要的元素存储到变量中&#xff0c;方便后面使用 const tabs document.querySelectorAll(.operations__tab); //获取所有的button const tabsContainer document.querySele…

ROS CDK魔法书:点亮博客上云新技能(Python篇)

引言 在数字世界的浩瀚海洋中&#xff0c;信息与数据如同戏剧中的主角&#xff0c;舞动着无形的旋律&#xff0c;构建起信息时代的交响乐。而在这其中&#xff0c;作为一位技术领域的探索者&#xff0c;你的使命便是挥舞着编码的魔杖&#xff0c;创造和守护着这些宝贵的数字灵…

外贸邮件推送有哪些策略?如何提升转化率?

外贸邮件推送的效果怎么优化&#xff1f;邮件推送的技巧有哪些&#xff1f; 外贸邮件推送是一种有效的市场营销策略&#xff0c;可以帮助企业开拓国际市场&#xff0c;增加销售额。然而&#xff0c;成功的外贸邮件推送并不是一蹴而就的&#xff0c;需要精心策划和执行。AokSen…