自学内容网 自学内容网

基于springboot学生宿舍管理系统

1 概述

1.1课题背景与意义

对于学校宿舍处而言,最主要的是管理宿舍的信息。如果使用一般的方法来管理,会比较繁琐,管理起来也很有可能出错。为了方便宿舍人员的管理工作,提高工作效率,同时为了更好地为学生提供服务,有必要开发学生宿舍管理系统,使学校的宿舍管理走上信息化之路,克服人为的种种弊端。

学生宿舍管理系统的开发不仅可以减少人力、物力和财力资源的浪费,更重要的是有助于提高宿舍管理的效率。宿舍管理人员管理学生信息、管理宿舍信息时是一项复杂的组织工作,这种复杂性不仅仅指学生学籍变更快,变更人数众多,更突出地表现在宿舍管理主要对象(即学生)的数据量大,管理起来带来不便,所以开发一个实用、高效的宿舍管理信息系统是很有必要的。

1.2 研究现状

目前我国各行各业的信息化建设开展得如火如荼,这种信息化的发展已经影响到了各学校。学校在对学生宿舍进行管理时,学生宿舍的管理一直都是很麻烦的事情,不仅仅管理起来不易修改和更新,而且学生需要了解本宿舍的信息时,也需要去学校宿舍处找专门人员。由于这些操作的繁琐性,学生宿舍管理系统的开发成为各学校必须的事情,特别是各个高校。

然而目前许多学生宿舍管理系统在使用时,效率低下容易出错,学生、教师资料不易整理,大量丢失,这些无疑都已成为管理学生宿舍的障碍。这就要求学校能够建立高效的学生宿舍管理系统,对学生的宿舍、管理等操作及流程进行规范化管理,简化业务流程,提高工作效率并防止中间的漏洞;迅速、准确地捕捉用户要求,并加以高效回应。同时需要不断完善系统,增加模块,更好的满足用户需求,简化宿舍人员的管理工作,尽量做到一切信息化。

1.3本文的组织结构

第一章是绪论,本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。

第二章研究了学生宿舍管理系统的所采用的开发技术和开发工具。

第三章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。

第四章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。

第五章是系统的具体实现,介绍系统的各个模块的具体实现。

第六章在前几章的基础上对系统进行测试和运行。

最后对系统进行了认真的总结,以此对未来有一个新的展望。

2 关键技术介绍

2.1开发技术

本系统前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型。后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技术。

2.2 MVVM模式

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频视频3D动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

2.3 MySQL数据库

科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的计算机硬件售卖系统也需要这项技术的支持。

用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。

2.4 B/S结构

B/S(浏览器/服务器)结构是目前主流的网络化的结构模式,它能够把系统核心功能集中在服务器上面,可以帮助系统开发人员简化操作,便于维护和使用。只需要用户在客户端安装360浏览器、谷歌浏览器、QQ浏览器等当前大众浏览器,在电脑里面安装sqlserver、mysql数据库等数据库。安装好的浏览器与服务器端的数据库进行信息数据的交互。很多专门软件能够做到的事情,采用B/S结构模式也能实现,它能够结合Web浏览器技术,ActiveX技术以及多种脚本语言等技术。帮助程序开发者节约了不少开发成本。目前B/S结构成为程序开发主流结构,它最好的地方就是没有地点限制还不用专门安装软件,笔记本或者电脑能够上网就能访问系统。系统使用B/S进行开发在后期系统维护上面就会很省事,不用什么问题都在服务器上面操作,简单的客户端处理就解决部分问题,开发出来的程序跟用户交互性上面也会增强,还可以实时刷新浏览器进行程序局部的数据信息更新。

desc图1-1 B/S模式三层结构图

2.5spring boot框架介绍

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。

2.6 Vue.js 主要功能

Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。

Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能驱动复杂的单页应用。

3 系统分析

所谓系统分析就是,需求人员通过与客户的沟通,所获取的信息,然后把这些信息通过需求说明书的方式展示给用户和开发人员。在软件功能发展的历史长河中,很长时间,特别是最开始的时候,需求分析的重要性并不被人们所认同,例如当时美国IBM公司为英国电信公司开发一套信息管理系统,在需求不明确的情况下开始开发,最初的工期为一年,由于需求获取不清晰导致工期推迟了半年多,造成巨大损失。我们很多软件公司也存在这种情况,边需求,边开发,甚至与客户没有沟通清楚的情况下,直接照搬同类型的项目进行更改,导致到系统验收的时候,重新更改,造成了人力、物力的极大浪费。而导致这一切后果的原因就是需求获取不及时、不清楚、不全面。

3.1 可行性分析

学生宿舍管理系统主要目标是实现预约教室相关信息管理服务。在确定了目标后,我们从以下四方面对能否实现本系统目标进行可行性分析。

3.1.1 技术可行性

学生宿舍管理系统主要采用java技术,基于B/S结构,Mysql数据库,对于应用程序的开发要求具备完整功能,使用简单的特点,并建立一个数据完整安全稳定的数据库。学生宿舍管理系统的开发技术具有很高可行性,且开发人员掌握了一定的开发技术,所以系统的开发具有可行性。

3.1.2操作可行性

学生宿舍管理系统的登录界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,会员只要平时使用过电脑都能进行访问操作。此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。本系统具有易操作、易管理、交互性好的特点,在操作上是非常简单的。因此本系统可以进行开发。

3.1.3 经济可行性

学生宿舍管理系统是基于B/S模式,采用Mysql数据库储存数据,所要求的硬件和软件环境,市场上都很容易购买,程序开发主要是管理系统的开发和维护。所以程序在开发人力、财力上要求不高,而且此系统不是很复杂,开发周期短,在经济方面具有较高的可行性。

3.1.4 法律可行性

此学生宿舍管理系统是自己设计的管理系统,具有很大的实际意义。因为无论是软件还是数据库,采用的都是开源代码,因此这个系统的开发和设计,并不存在侵权等问题,在法律上完全具有可行性。

综上所述,学生宿舍管理系统在技术、经济、操作和法律上都具有很高的可行性,开发此程序是可行的。

3.2系统流程分析

3.2.1系统开发流程

学生宿舍管理系统开发时,首先进行需求分析,进而对系统进行总体的设计规划,设计系统功能模块,数据库的选择等,本系统的开发流程如图3-1所示

desc
图3-1系统开发流程图

3.2.2 用户登录流程

为了保证系统的安全性,要使用本系统对系统信息进行管理,必须先登陆到系统中。如图3-2所示。

desc
图3-2 登录流程图

3.2.3 系统操作流程

用户打开并进入系统后,会先显示登录界面,输入正确的用户名和密码,系统自动检测信息,若信息无误,则用户会进入系统功能界面,进行操作,否则会提示错误无法登录,操作流程如图3-3所示。

desc
图3-3 系统操作流程图

3.2.4 添加信息流程

管理员可以对信息等进行信息的添加,用户也可以对自己权限内的信息进行添加,输入信息后,系统会自行验证输入的信息和数据,若信息正确,会将其添加到数据库内,若信息有误,则会提示重新输入信息,添加信息流程如图3-4所示。

desc
图3-4 添加信息流程图

3.2.5 修改信息流程

管理员可以对信息等进行的修改,用户也可以对自己权限内的信息进行修改,首先进入修改信息界面,输入修改信息数据,系统进行数据的判断验证,修改信息合法则修改成功,信息更新至数据库,信息不合法则修改失败,重新输入。修改信息流程图如图3-5所示。

desc
图3-5 修改信息流程图

3.2.6 删除信息流程

管理员可以对信息等进行信息的删除,对要删除的信息进行选中后,点击删除按钮,系统会询问是否确定,若点击确定,则系统会删除掉选中的信息,并在数据库内对信息进行删除,删除信息流程图如图3-6所示。

desc
图3-6 删除信息流程图

3.3系统用例分析

管理员用例图

系统中的核心用户是系统管理员,管理员登录后,通过管理员菜单来管理后台系统。主要功能有:首页、用户管理(管理员、学生、宿管人员)更多管理(宿舍信息、宿舍报修、宿舍分配、宿舍通知)等功能。管理员用例如图3-7所示。

desc
图3-7 管理员用例图

学生用例图

学生进入系统可以进行首页、宿舍分配、宿舍报修、宿舍通知、个人中心等功能操作。学生用例如图3-8所示。

desc
图3-8学生用例图

4 系统设计

4.1 系统概述

进过系统的分析后,就开始记性系统的设计,系统设计包含总体设计和详细设计。总体设计只是一个大体的设计,经过了总体设计,我们能够划分出系统的一些东西,例如文件、文档、数据等。而且我们通过总体设计,大致可以划分出了程序的模块,以及功能。但是只是一个初步的分类,并没有真正的实现。

整体设计,只是一个初步设计,而且,对于一个项目,我们可以进行多个整体设计,通过对比,包括性能的对比、成本的对比、效益的对比,来最终确定一个最优的设计方案,选择优秀的整体设计可以降低开发成本,增加公司效益,从这一点来讲,整体设计还是非常重要的。

学生宿舍管理系统工作原理图如图4-1所示:

desc
图4-1 系统工作原理图

4.2 系统结构设计

系统架构图属于系统设计阶段,系统架构图只是这个阶段一个产物,系统的总体架构决定了整个系统的模式,是系统的基础。学生宿舍管理系统的整体结构设计如图4-2所示。

desc 图4-2 系统结构图

4.3数据库设计

数据库是信息系统的基础和核心。数据库设计的好坏直接影响到信息系统开发的成败。创建数据库表首先确定实体的属性和实体之间的关系。根据关系创建一个数据表。

4.3.1实体ER图

数据库是整个软件编程中最重要的一个步骤,对于数据库问题主要是判定数据库的数量和结构公式的创建。展示系统使用的是Mysql进行对数据库进行管理,进行保证数据的安全性、稳定性等。

概念模型的设计是为了抽象真实世界的信息,并对信息世界进行建模。它是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。而且Mysql数据库是自我保护能力比较强的数据库,下图主要是对数据库实体的E-R图:

1.宿舍报修信息实体图如图4-3所示:

desc
图4-3宿舍报修信息实体图

2.宿舍分配信息实体图如图4-4所示:

desc
图4-4宿舍分配实体图

4.3.3 数据库表设计

数据库的表信息属于设计的一部分,下面介绍数据库中的各个表的详细信息。

student表:

名称

类型

长度

不是null

主键

注释

student_id

int

11

学生ID

gender

varchar

64

性别

age

varchar

64

年龄

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

housekeeping_personnel表:

名称

类型

长度

不是null

主键

注释

housekeeping_personnel_id

int

11

宿管人员ID

gender

varchar

64

性别

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

dormitory_repair表

名称

类型

长度

不是null

主键

注释

dormitory_repair_id

int

11

宿舍报修ID

building

varchar

64

楼栋

floor

varchar

64

楼层

room_number

varchar

64

房号

repair_type

varchar

64

报修类型

housekeeping_personnel

int

11

宿管人员

student

int

11

学生

repair_reason

text

0

报修原因

examine_state

varchar

16

审核状态

examine_reply

varchar

255

审核回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

dormitory_notice表:

名称

类型

长度

不是null

主键

注释

dormitory_notice_id

int

11

宿舍通知ID

number

varchar

64

编号

notification_type

varchar

64

通知类型

notice_title

varchar

64

通知标题

housekeeping_personnel

int

11

宿管人员

notice_content

longtext

0

通知内容

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

dormitory_information表:

名称

类型

长度

不是null

主键

注释

dormitory_information_id

int

11

宿舍信息ID

building

varchar

64

楼栋

floor

varchar

64

楼层

room_number

varchar

64

房号

room_type

varchar

64

房间类型

number_of_beds

int

11

床位数

housekeeping_personnel

int

11

宿管人员

remarks

text

0

备注

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

dormitory_allocation表:

名称

类型

长度

不是null

主键

注释

dormitory_allocation_id

int

11

宿舍分配ID

building

varchar

64

楼栋

floor

varchar

64

楼层

room_number

varchar

64

房号

room_type

varchar

64

房间类型

bed_number

varchar

64

床位号

seize_a_seat

int

11

占位

student_account

int

11

学生账号

housekeeping_personnel

int

11

宿管人员

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

5系统详细设计

5.1登录模块的实现

系统的登录窗口是用户的入口,用户只有在登录成功后才可以进入访问。通过在登录提交表单,后台处理判断是否为合法用户,进行页面跳转,进入系统中去。

登录合法性判断过程:用户输入账号和密码后,系统首先确定输入输入数据合法性,然后在login.jsp页面发送登录请求,调用src下的mainctrl类的dopost方法来验证。

用户登录模块的IPO如下所示:

输入:用户名和密码。

处理:

1)检测用户输入的账号、密码是否正确及在数据库已对应存在。

2)从数据库中提取记录,并储存在本地的session中(timeout默认=30min)。

3)根据用户名,将其显示在系统首页上。

输出:是否成功的信息。

登录流程图如下所示。

desc
图5-1登录流程图

系统登录界面如下所示。

desc
图5-1管理员登录界面图

管理员登录关键代码如下所示。

/**

 \* 登录

 \* @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.select(map, new HashMap<>()).getResultList();

    }

    else if(email != null && "".equals(email) == false){

        map.put("email", email);

        resultList = service.select(map, new HashMap<>()).getResultList();

    }

    else if(phone != null && "".equals(phone) == false){

        map.put("phone", phone);

        resultList = service.select(map, new HashMap<>()).getResultList();

    }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.select(groupMap, new HashMap<>()).getResultList();

    if (groupList.size()<1){

        return error(30000,"用户组不存在");

    }

    UserGroup userGroup = (UserGroup) groupList.get(0);

    //查询用户审核状态

    if (!StringUtils.isEmpty(userGroup.getSourceTable())){

        String sql = "select examine\_state from "+ userGroup.getSourceTable() +" WHERE user\_id = " + byUsername.getUserId();

        String res = String.valueOf(service.runCountSql(sql).getSingleResult());

        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, "账号或密码不正确");

    }

}

5.2用户子系统模块的实现

5.2.1用户首页模块

系统呈现出一种简洁大方的首页:界面简约、鳞次栉比,用户能轻车熟路的使用。出于对系统使用群体广泛的顾虑,应有良好性能的后台

如下图所示为系统的首页界面。

desc
图5-3系统首页界面图

首页代码如下。

@SpringBootApplication

@EnableJpaRepositories

public class Application {

public static void main(String\[\] args) {

    SpringApplication.run(Application.class,args);

}

}

5.2.2宿舍信息模块

宿舍信息过程中,首先通过宿舍ID得到宿舍数据,将宿舍数据赋值给宿舍信息,调用insert方法将入住数据插入入住表中,最后查看个人历史宿舍信息记录,可以销毁历史入住数据。

宿舍信息流程图如下所示。

desc
图5-4宿舍信息流程图

宿舍信息管理界面如图所示。

desc
图5-5宿舍信息管理界面图

desc
图5-6宿舍信息添加界面图

宿舍信息关键代码如下所示。

@RequestMapping(value = {“/sum_group”, “/sum”})

public Map<String, Object> sum(HttpServletRequest request) {

    Query count = service.sum(service.readQuery(request), service.readConfig(request));

    return success(count.getResultList());

}

5.2.3宿舍分配模块

宿舍分配过程中,首先通过宿舍ID得到分配数据,将宿舍数据赋值给宿舍分配,调用insert方法将晚归数据插入分配表中,最后查看个人历史宿舍分配记录,可以销毁历史分配数据。

宿舍分配流程图如下所示。

desc
图5-7宿舍分配流程图

宿舍分配管理界面如图所示。

desc
图5-8宿舍分配管理界面图

宿舍分配关键代码如下所示。

@RequestMapping(value = {“/avg_group”, “/avg”})

public Map<String, Object> avg(HttpServletRequest request) {

    Query count = service.avg(service.readQuery(request), service.readConfig(request));

    return success(count.getResultList());

}

5.3管理员子系统模块的实现

5.3.1学生管理模块

管理员对系统学生的管理,包括管理员学生管理,注册学生管理、登录密码修改,在yhzhgl.aspx.cs实现管理员学生的管理,包括录入、删除、修改,修改密码通过SESSION获取学生名,然后输入新密码,提交到mod.aspx.cs中,使用sql命令更新密码添加学生后,学生也可以使用账号和密码登录系统。

学生管理界面如下图所示。

desc
图5-9学生管理界面图

学生管理关键代码如下所示。

@RequestMapping(value = “/del”)

@Transactional

public Map<String, Object> del(HttpServletRequest request) {

    service.delete(service.readQuery(request), service.readConfig(request));

    return success(1);

}

@Transactional

public void delete(Map<String,String> query,Map<String,String> config){

    StringBuffer sql = new StringBuffer("DELETE FROM ").append("\`").append(table).append("\`").append(" ");

    sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP\_BY))));

    log.info("\[{}\] - 删除操作:{}",table,sql);

    Query query1 = runCountSql(sql.toString());

    query1.executeUpdate();

}
5.3.2个人资料模块

用户点击登录填写账号信息登录后,会切换内容为“某某用户欢迎您”和历史订单,并给出注销链接。当用户登录成功后会将个人信息保存在session作用域中,点击自己的用户名时,会跳转到个人详细信息页面,由后台通过Freemarker取出session作用域中的用户信息进行动态渲染,例如,邮箱、电话号码、用户名等等。同时页面上会显示修改个人信息和修改密码的按钮,这时客户可以修改自己的登录密码以保障账号的安全性,防止被人窃取账号,通过updatePassword()方法实现,同时也可以根据自己的个人信息是否变动做出相应的修改,通过updateUserInfo()方法实现。

密码修改流程图如下所示。

desc
图5-10密码修改流程图

密码修改关键代码如下所示。

/**

 \* 修改密码

 \* @param data

 \* @param request

 \* @return

 \*/

@PostMapping("change\_password")

public Map<String, Object> change\_password(@RequestBody Map<String, String> data, HttpServletRequest request){

    // 根据Token获取UserId

    String token = request.getHeader("x-auth-token");

    Integer userId = tokenGetUserId(token);

    // 根据UserId和旧密码获取用户

    Map<String, String> query = new HashMap<>();

    String o\_password = data.get("o\_password");

    query.put("user\_id" ,String.valueOf(userId));

    query.put("password" ,service.encryption(o\_password));

    Query ret = service.count(query, service.readConfig(request));

    List list = ret.getResultList();

    Object s = list.get(0);

    int count = Integer.parseInt(list.get(0).toString());

    if(count > 0){

        // 修改密码

        Map<String,Object> form = new HashMap<>();

        form.put("password",service.encryption(data.get("password")));

        service.update(query,service.readConfig(request),form);

        return success(1);

    }

    return error(10000,"密码修改失败!");

}
5.3.3宿舍报修管理模块

添加宿舍报修信息时,输入必填字段后,表现层接受传过来的宿舍报修信息参数,再调用业务层的addSushe方法,经过业务层到持久层的处理,完成对整个添加宿舍报修信息的操作。addSushe方法也和用户管理中的addUser方法类似,同时做添加和修改工作。

修改宿舍报修信息时,选择需要修改的宿舍报修进行修改,调用业务层的editSushe方法,拿到该宿舍原本的信息并显示到页面,管理员再对需要修改的宿舍报修信息字段进行修改,完成后调用addSushe方法,调用业务层的updateByKey方法,更新数据库的宿舍报修表的数据。

宿舍报修管理流程图如下所示。

desc
图5-11宿舍报修管理流程图

宿舍报修管理界面如下图所示。

desc
图5-12宿舍报修管理界面图

宿舍报修管理关键代码如下所示。

@RequestMapping(value = “/del”)

@Transactional

public Map<String, Object> del(HttpServletRequest request) {

    service.delete(service.readQuery(request), service.readConfig(request));

    return success(1);

}

@Transactional

public void delete(Map<String,String> query,Map<String,String> config){

    StringBuffer sql = new StringBuffer("DELETE FROM ").append("\`").append(table).append("\`").append(" ");

    sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP\_BY))));

    log.info("\[{}\] - 删除操作:{}",table,sql);

    Query query1 = runCountSql(sql.toString());

    query1.executeUpdate();

}

6系统测试

一个系统设计好后,就会进入测试阶段,测试的目标是检验设计好的网站是否可以正常无误的运行,尽可能的发现网站的问题,已使后期网站投入使用后网站尽少出错。

6.1 测试定义

系统测试主要是判断系统是否可以正常运行,功能模块是否可以实现操作。程序代码中是否有错误出现。测试程序是开发过程中的一个主要问题。就算系统完成的再好,再进行程序测试时也会发现一个从来没有被发现的错误信息。

测试不仅是系统开发的开始,而且应该贯穿整个系统的整个生命周期。评估系统质量的方法不局限于系统编码和过程,应该与软件设计工作和历史需求分析密切相关。系统错误,不一定是代码错误,可能是阶段的设计摘要和设计细节存在问题,问题也可能出现在需求分析阶段。从实际情况来看,最初的问题很可能是一个小错误,根据按钮的原理,按钮后的按钮位错将是所有位错。该系统的原因也同样适用,随着后续的开发工作,误差将越来越严重。因此就应该对系统进行测试,在一开始就发现系统中存在的问题,就能保证以后系统能够正常稳定的运行。在测试系统中,开发人员应该站在用户的角度来处理测试工作,而现在主要的测试方法是黑盒测试。测试的目的可以概括为以下几点:首先,用户界面和用户需求是一致的,设置界面和设计风格统一;第二,创新设计接口规范设计标准,具有独特的审美特征;最后,人类传统的接口以满足审美需求,不能盲目地追求一种独特的,合理的规划布局,符合审美标准。

6.2 测试目的

测试的目的在于要对系统的稳定和可操作性能进行对照检查。对于软件的开发利用最终的目的在最后的测试和试用,这是一个不可缺少的重要环节。对于软件开发者而言,在对每一个单独的功能进行编排时候,都要有单独的测试,并通过测试阶段才可以研发多个功能性软件,这样既缩短了研发时间,也可以在的单个的早期测试中发现问题,以免融合后的软件,在查找问题时就很难快速解决或者急速定位问题。

学生宿舍管理系统开发设计完成后,需要对其进行系统测试,测试的主要目的就是发现并找出系统中存在的问题,并及时的进行解决,确保系统可以正常稳定的运行下去,在进行系统测试的时候,在一定要非常的认真、仔细,切记不能粗心,不能放过一个漏洞,测试时候一定不要着急,要按照之前指定好的测试步骤一步一步进行,并且将测试的结果进行详细的记录,我们在进行测试的时候做好选择自动化的测试,这样既可以节省时间而且也能确保测试的准确性,如果采用人工测试的方法就不会这么的方便,由于人工测试有很多不确定的因素,在测试过程中很可能会出现一些问题,用机器测试就不会出现任何的问题,而且机器不会疲惫会一直二等工作下去。在测试的时候一定要非常专注,时刻关注着测试的结果,一但发现异常及时进行修改,最后,测试完之后的文档应该保存下来,方便以后测试时用到。系统测试的方法有很多,对于本学生宿舍管理系统 的测试,我们使用了测试用得最多的黑盒测试方法来对该系统进行测试。

6.3测试方案

对测试计划的把握是测试方案的重中之重。所有的技术难点应该都被包含在这个测试计划之中。而且我们要保证能与目标形成一致性,以至于能够测试出一些主要存在的错误和一些错误的漏洞。可以完美解决这些问题就只有白盒测试或者黑盒测试[14]。

构造测试是白盒测试的另一个名字,了解与分析程序的结构以及性能功用的,从而我们可以得到最终想要的结果并且观察出是不是每一条程序都能得到。

性能测试是黑盒测试别称,程序本身的运作通过程序的进程来观察,主要是看一下程序是不是能够像我们预期的目标那样发展,看一看我们的程序最终能不能完整的得到我们最后想要的功能和储存想得到的数据,到最后看一下我们的这个程序完整性能不能达到要求。

(1)模块测试

单元测试就是模块测试,顾名思义就是测试每个模块所承担的功能是否能够实现,这个测试就是为了找出代码在实际的设计运转中某一些小的程序所出现的偏差,很好地改正这些错误,就说明我们模块测试进行很成功过。

(2)集成测试:

集成测试就是对系统的测试以及对他子系统的一些性能测试,他检查的事系统的包装程序信息。找出其中的问题。他的优势主要有以下这几点:

软件耗费较少。
该项目转自链接
可以提前发现端口的错误。

更好的地位系统中错误的位置。

从底部往上面进行的方案针对于偏下层的结构,而中间的结构就采用折中的方法。

(3)验收测试:

终于到了结尾性的工作了。就是为了给用户看一下我们的系统功能是否达到了预期的效果。我采用了性能测试也就是黑盒测试对系统进行测试。

其结果是分别是:

有一定的差异在用户的需求。

再者就是结果与之差不了多少。

到了最后了,我们发现的问题都是与用户的需求存在一定的关联。

1、登录测试

测试点:登录

测试的目标:输入账号密码以及验证码后系统会自动进行验证是否正确。

所用的环境:Windows10和IE浏览器。

输入信息:用户名、密码。

步骤:

(1)首先我们打来浏览器,进入该系统的登录界面。

(2)在进入页面登录部分以后可以进行对用户名、密码进行测试,具体测试输入情况如下表6.1所示。

表6.1 登录测试

情况

用户名输入

密码输入

期望结果

(1)

15546219225

1244566

提示“用户名或者密码错误,或账号未经审核”

(2)

aaaaa

123456

提示“用户名或密码错误,或者账号未经审核”

(3)

15546219225

hangguowei

登陆成功

2、教室预约信息测试:

表6.2 教室预约管理测试用例表

用例编号

UC-TEST-003

测试名称

客户信息

前提条件

教室预约管理

步骤

操作描述

数据

期望结果

1

点击教室预约管理查看详情按钮

跳转到教室预约管理详情

2

点击添加按钮

跳转到添加页面

3

选中添加后按钮

跳转到教室预约管理页面

测试说明

用户未登录时到步骤3跳转到登录页面

测试结果

成功

测试人

6.4系统分析

本学生宿舍管理系统设计要求基本都可以达到,此系统具有完整的软件功能,良好的用户界面,能够正确的处理错误信息,而且能够准确的提出错误的种类。但是系统测试时也出现了一些系统的不足和缺陷,所以在今后的日子里我会对其视觉上的不足作出修改,其次系统的代码和数据库出现了非常多的冗余现象,都是因为对编程技术的应用不够熟练,在日后我会加强自己的自身学习和能力,减少这样的冗余现象。


原文地址:https://blog.csdn.net/weixin_42182741/article/details/144367610

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!