(附源码)springboot高校宿舍交电费系统 毕业设计 031552

news/2024/5/18 23:14:09/文章来源:https://blog.csdn.net/WeiXin_DZbishe/article/details/126986254

Springboot高校宿舍交电费系统

摘  要

科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Springboot框架建设高校宿舍交电费系统。

本设计主要实现集人性化、高效率、便捷等优点于一身的高校宿舍交电费系统,完成首页、用户管理、宿舍分配管理、宿舍楼管理、宿舍电费、在线缴费、通知公告管理等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的、便捷的服务提高电费管理工作效率,减少了数据存储上的错误和遗漏。高校宿舍交电费系统开发是采用java语言,基于MVVM模式进行开发,采取MySQL作为后台数据的主要存储单元,采用Springboot框架实现了本系统的全部功能。

关键词 高校宿舍电费;数据库;Springboot技术 

Springboot college dormitory electricity payment system

Abstract

  The rapid development of scientific and technological progress has caused great changes in people's daily life. The rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The advent of the information age has become an irresistible fashion trend, and the history of human development is entering a new era. In practical application, according to the working rules and development steps of the application software, the springboot framework is used to build the college dormitory electricity payment system.

This design mainly realizes the college dormitory electricity payment system with the advantages of humanization, high efficiency and convenience, and completes the functional modules such as home page, user management, dormitory distribution management, dormitory building management, dormitory electricity charge, online payment, notice and announcement management. The system communicates with the server through the browser to realize the interaction and change of data. The system improves the efficiency of electricity charge management through scientific and convenient services, and reduces errors and omissions in data storage. The development of college dormitory electricity payment system adopts Java language and MVVM mode. MySQL is used as the main storage unit of background data, and the springboot framework is used to realize all the functions of the system.

Key words:Electricity charge of university dormitory; database Springboot Technology

目    录

1 概述

1.1课题目的及意义

1.2 开发现状

1.3 主要工作内容

2 系统开发环境

2.1 java简介

2.2 Mysql数据库

2.3 B/S结构

2.4 Spring boot框架

3 系统分析 6

3.1 可行性分析 6

3.1.1 技术可行性 6

3.1.2操作可行性 6

3.1.3 经济可行性 7

3.1.4 法律可行性 7

3.2系统流程分析 7

3.2.1系统开发流程 7

3.2.2 用户登录流程

3.2.3 系统操作流程

3.2.4 添加信息流程

3.2.5 修改信息流程

3.2.6 删除信息流程

3.3系统用例分析

3.3.1管理员用例图

3.3.2用户前台用例图

4 系统设计

4.1 系统概述

4.2 系统结构设计

4.3数据库设计 14

4.3.1 数据库设计原则

4.3.2 数据库实体

4.3.3 数据库表设计

5系统统详细设计 25

5.1用户前台功能模块 25

5.2管理员功能模块 28

6系统测试 33

6.1系统测试的意义

6.2 测试方法 34

6.3测试分析

     35

     36

参考文献 37

1 概述

1.1课题目的及意义

对于学校宿舍处而言,宿舍日常用电管理也是非常重要的一项管理工作,涉及到宿舍分配、宿舍电费信息、通知公告、电费异议等信息的管理。如果使用一般的方法来管理,会比较繁琐,管理起来也很有可能出错。为了方便宿舍人员的管理工作提高工作效率,同时为了更好地为学生提供服务,让学生可以在线进行宿舍电费信息查询以及可以在线缴费操作,有必要开发宿舍交电费系统,使学校的宿舍的用电信息管理走上信息化之路,克服人为的种种弊端。

校园宿舍交电费系统的开发不仅可以减少人力、物力和财力资源的浪费,更重要的是有助于提高宿舍电费信息以及缴费信息管理的效率。系统主要功能主要有:宿舍管理、宿舍分配、宿舍电费、电费异议等模块。

1.2 开发现状

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

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

1.3 主要工作内容

高校宿舍交电费系统的开发及实现,所需要的工作内容:

(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。

(2)系统确认完成后,结合系统开发的需求进行确认系统开发所使用的技术,高校宿舍交电费系统的开发使用Springboot框架,数据库进行平台的搭建开发,确认好使用的技术进行技术分析,所使用的技术是否可以完成系统的实现。

(3)确定好系统使用的技术,进行在线确认系统所划分的用户角色,并且根据用户角色划分确定所要设计的功能模块,对高校宿舍交电费系统的设计主要划分别为管理员和用户角色,并所使用的功能模块也相应不同,但是系统的数据库实现的内容是交互的,用户可以随时根据自己的需求进行课程信息,对于系统工作人员可以根据自己的分管内容进行在线信息的处理及操作,管理员获取到所有用户的详细数据信息,并根据需求进行第一时间处理解决。

(4)系统的功能模块确认完成后进行程序及界面的设计,设计完成后,并且通过测试来判断程序是否完善,对于系统测试,需要不同的用户进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞,并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。

2 系统开发环境  

2.1 java简介

Java语言是在二十世纪末由Sun公司发布的,而且公开源代码,这一优点吸引了许多世界各地优秀的编程爱好者,也使得他们开发出当时一款又一款经典好玩的小游戏。Java语言是纯面向对象语言之一,从发布初期到现今,可以说有将近20多年的历史,已发展成为人类计算机编程语言发展史上的一个深远影响。

Java语言具有非常多种的特性:(1)跨平台的无关性;(2)面向对象; (3)安全性得以保障;(4)支持多个任务;(5)多种编写方式,代码编写简单。对比其他的低级语言、高级语言,Java语言具有明显的显著优势以及未来开阔的前景,可以广泛的应用在个人笔记本电脑、大数据、大型游戏等等。

首先,Java语言具有面向对象的特性,并且易于理解。关于对象,其实可以理解成每一种事物都是一种对象,包括我们人类自身都是一种对象。利用面向对象语言的基本特征来解决软件开发中的实际问题,为有效软件开发提供了技术支持。

其次,Java 语言具有很好的跨平台无关性。所编写出来的应用程序是Java语言编写的,那么就无需再使用编译器来修改程序代码,可以直接在任何计算机系统中运行,Windows系统可以运行,在Linux系统中也可以,也就是经过一次编译,可以到处运行,所以Java语言具有卓越的可移植性,可以很好的跨平台实现。

2.2 Mysql数据库

Mysql是一个多用户、多线程的服务器,采用SQL的数据库,数据库管理系统是基于SQL的用户以及服务器模式的关系,它的优点有强大的功能、操作简单、管理方便、可靠安全、运行较快、多线程、跨平台性、完全网络化、稳定性等,非常适合Web站点或者其他应用软件,在数据库后端的开发。此外,利用许多语言,会员可以编写和访问Mysql数据库的程序。Mysql数据库也是开放源代码的,开发者越来越喜欢使用Mysql关系数据库,应用范围也被推而广之。这是由于速度快和易用性, Web站点或应用软件的数据库后端的开发也都在使用它。

mysql 数据库它有很多的优点,例如它在操作上能够让人通俗易懂、功能强大、信息储存量高等优点。所以被人们广泛应用,对于mysql数据库来说它一般主要是对数据进行编码和查询,而且在很多的设计当中都应用到了该数据库,在此过程当中我们可以对常规的数据进行查询和组合,所以我们在进行使用mysql数据库的时候只要对编写一小段的数据就能实现相应的功能。数据库,就是数据存储的储藏室,只不过数据是存储在计算机上的,而不是现实中的储藏室,数据的存放是按固定格式,而不是无序的,则定义就是 :长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要包括数据表的建立,数据存储、修改和增加数据,为了使数据库系统能够正常运行,相关人员进行的管理工作。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。

2.3 B/S结构

BROWSER/SERVER程序架构方式是使用电脑中安装的各种浏览器来进行访问和使用的,相比C/S的程序结构不需要进行程序的安装就可以直接使用。BROWSER/SERVER架构的运行方式是在远程的服务器上进行安装一个,然后在任何接入互联网的电脑上访问和使用。BROWSER/SERVER架构的开发方式给用户带来了极大的便利,在任何时间和地点都可以使用开发的程序系统。

在B/S的结构中,用户可以在任何可以上网的地方访问和使用系统网站的功能,没有地域和时间等方面的限制,B/S结构是把程序完整放置到计算机网络的服务器上,通过计算机互联网给用户提供远程的网络服务。在三层体系结构的B/S系统中,通过浏览器,会员可以对很多服务器发出请求, B/S系统会很大程度的降低工作量,用户只需要安装运行较少的用户端即可,大量的工作将由服务器承担,另外,服务器也完成包括访问数据库,执行应用程序的工作等等。

B/S结构主要有三层,分别为数据层、控制逻辑层和视图层。用户通过视图层,让控制层调用数据层的数据,从而达到整个访问过程。三层相互独立,维护方便,使用安全,三层有互相调用,提高效率。

2.4 Spring 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。

3 系统分析

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

3.1 可行性分析

高校宿舍交电费系统主要目标是实现学生管理、宿舍分配、宿舍楼信息、宿舍电费、电费异议、系统管理的相关信息管理服务。在确定了目标后,我们从以下四方面对能否实现本系统目标进行可行性分析。

3.1.1 技术可行性

高校宿舍交电费系统主要采用Springboot框架,基于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所示

 

图3-1系统开发流程图

3.2.2 用户登录流程

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

 

图3-2 登录流程图

3.2.3 系统操作流程

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

 

图3-3 系统操作流程图

3.2.4 添加信息流程

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

 

图3-4 添加信息流程图

3.2.5 修改信息流程

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

 

图3-5 修改信息流程图

3.2.6 删除信息流程

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

 

图3-6 删除信息流程图

3.3系统用例分析

3.3.1管理员用例图

系统中的核心用户系统管理员,管理员登录后,通过管理员菜单来管理后台系统。主要功能有:首页、学生管理、宿舍分配管理宿舍楼管理、宿舍电费管理、通知公告管理、电费异议管理等功能。管理员用例如图3-7所示。

 

图3-7 管理员用例图

3.3.2学生前台用例图

学生前台进入系统可以进行首页宿舍分配、宿舍电费、电费异议、通知公告等。学生前台用例如图3-8所示。

 

图3-8 学生前台用例图

4 系统设计

4.1 系统概述

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

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

高校宿舍交电费系统工作原理图如图4-1所示:

 

图4-1 系统工作原理图

4.2 系统结构设计

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

 

图4-2 系统结构图

4.3数据库设计

数据库是计算机信息系统的基础。目前,电脑系统的关键与核心部分就是数据库。数据库开发的优劣对整个系统的质量和速度有着直接影响。

4.3.1 数据库设计原则

数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。在系统设计当中数据库起着决定性的因素。下面设计出这几个关键实体的实体—关系图

4.3.2 数据库实体

数据模型中的实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。

本系统的E-R图如下图所示:

1、宿舍分配实体图如图4-3所示:

 

图4-3宿舍分配实体图

2、用户信息实体图如图4-4所示:

 

 

图4-4用户信息实体图

3宿舍电费实体图如图4-5所示:

 

图4-5宿舍电费实体图

4.3.3 数据库表设计

名称

类型

长度

不是null

主键

注释

student_id

int

11

学生ID

student_number

varchar

64

学号

student_name

varchar

64

学生姓名

class_name

varchar

64

班级名称

gender

varchar

64

性别

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

notice_announcement_id

int

11

通知公告ID

title

varchar

64

标题

relevant_attachments

varchar

255

相关附件

publisher

varchar

64

发布人

release_time

date

0

发布时间

content

text

0

内容

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

electricity_charge_of_dormitory_id

int

11

宿舍电费ID

building

varchar

64

楼栋

dormitory_no

varchar

64

宿舍号

student

int

11

学生

bed

varchar

64

床位

payment_cycle

varchar

64

缴费周期

amount_of_money

int

11

金额

bill

varchar

255

票据

pay_state

varchar

16

支付状态

pay_type

varchar

16

支付类型:

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

electricity_charge_objection_id

int

11

电费异议ID

building

varchar

64

楼栋

dormitory_no

varchar

64

宿舍号

student

int

11

学生

bed

varchar

64

床位

payment_cycle

varchar

64

缴费周期

amount_of_money

varchar

64

金额

relevant_vouchers

varchar

255

相关凭证

objection_content

text

0

异议内容

examine_state

varchar

16

审核状态

examine_reply

varchar

255

审核回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

dormitory_management_id

int

11

宿舍管理ID

building

varchar

64

楼栋

category

varchar

64

类别

dormitory_no

varchar

64

宿舍号

total_number_of_beds

int

11

总床位数

number_of_empty_beds

int

11

空床位数

empty_bed_number

varchar

64

空床位号

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

dormitory_building_management_id

int

11

宿舍楼管理ID

building

varchar

64

楼栋

floor

varchar

64

楼层

number_of_rooms

varchar

64

房间数

houseparent_

varchar

64

宿管员

contact_number

varchar

64

联系电话

category

varchar

64

类别

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

dormitory_allocation_id

int

11

宿舍分配ID

building

varchar

64

楼栋

dormitory_no

varchar

64

宿舍号

student

int

11

学生

bed

varchar

64

床位

check_in_date

date

0

入住日期

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

5统详细设计

5.1用户前台功能模块

校园宿舍交电费系统,在系统首页可以查看宿舍分配、宿舍信息、宿舍用电、电费异议等内容,如图5-1所示。用户需要注册后方可登录系统。

 

图5-1用户前台功能界面图

用户注册关键代码如下所示。

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

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

        query.put("username",user.getUsername());

        List list = service.select(query, new HashMap<>()).getResultList();

        if (list.size()>0){

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

        }

        user.setUserId(null);

        user.setPassword(service.encryption(user.getPassword()));

        service.save(user);

        return success(1);

}

/**

     * 用户ID:[0,8388607]用户获取其他与用户相关的数据

     */

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "user_id")

    private Integer userId;

    /**

     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

     */

    @Basic

    @Column(name = "state")

    private Integer state;

    /**

     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @Basic

    @Column(name = "user_group")

    private String userGroup;

    /**

     * 上次登录时间:

     */

    @Basic

    @Column(name = "login_time")

    private Timestamp loginTime;

    /**

     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "phone")

    private String phone;

    /**

     * 手机认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "phone_state")

    private Integer phoneState;

    /**

     * 用户名:[0,16]用户登录时所用的账户名称

     */

    @Basic

    @Column(name = "username")

    private String username;

    /**

     * 昵称:[0,16]

     */

    @Basic

    @Column(name = "nickname")

    private String nickname;

    /**

     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

     */

    @Basic

    @Column(name = "password")

    private String password;

    /**

     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "email")

    private String email;

    /**

     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "email_state")

    private Integer emailState;

    /**

     * 头像地址:[0,255]

     */

    @Basic

    @Column(name = "avatar")

    private String avatar;

    /**

     * 创建时间:

     */

    @Basic

    @Column(name = "create_time")

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Timestamp createTime;

    @Basic

    @Transient

    private String code;

}

登录页面通过填写账号、密码等信息完成登录,如图5-2所示宿舍分配信息页面可以查看宿舍分配列表信息等内容。如图5-3所示。

 

图5-2登录界面图

用户登录的关键代码如下。

 /**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

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

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

            map.put("username", username);

            resultList = service.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-3宿舍分配界面图

宿舍用电展示,在用电信息列表页面可以查看宿舍号、楼栋、缴费周期、金额信息等,对宿舍用电信息,如图5-4所示。通知公告页面浏览最新公告信息内容,如图5-5所示。

 

图5-4宿舍用电界面图

 

图5-5通知公告界面图

通知公告的逻辑代码如下:

  @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

    @Transactional

    public Map<String, Object> addMap(Map<String,Object> map){

        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){

        StringBuffer sql = new StringBuffer("INSERT INTO ");

        sql.append("`").append(table).append("`").append(" (");

        for (Map.Entry<String,Object> entry:body.entrySet()){

            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");

        }

        sql.deleteCharAt(sql.length()-1);

        sql.append(") VALUES (");

        for (Map.Entry<String,Object> entry:body.entrySet()){

            Object value = entry.getValue();

            if (value instanceof String){

                sql.append("'").append(entry.getValue()).append("'").append(",");

            }else {

                sql.append(entry.getValue()).append(",");

            }

        }

        sql.deleteCharAt(sql.length() - 1);

        sql.append(")");

        log.info("[{}] - 插入操作:{}",table,sql);

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

        query.executeUpdate();

    }

5.2管理员功能模块

管理员登录,通过填写注册时输入的用户名、密码进行登录,如图5-6所示。

 

图5-6管理员登录界面图

管理员登录进入高校宿舍交电费系统后的主要功能是:学生管理、宿舍管理、楼栋管理、宿舍电费管理、电费异议管理等。如图5-7所示。宿舍分配管理主要是对学生宿舍进行分配管理。入图5-8所示。

 

图5-7管理员功能界面图

 

图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-9所示。

 

图5-9宿舍楼管理界面图

宿舍管理,在宿舍管理页面中可以发布楼栋、类别、窗外数等信息,并可根据需要对宿舍信息修改或删除等详细操作,如图5-10所示。

 

图5-10宿舍管理界面图

宿舍管理界面逻辑代码如下:

@RestController

@RequestMapping("auth")

public class AuthController extends BaseController<Auth, AuthService> {

    /**

     * 服务对象

     */

    @Autowired

    public AuthController(AuthService service) {

        setService(service);

    }

}

宿舍电费管理,在宿舍电费页面中对楼栋、宿舍号、学生、床位、缴费周期、金额、票据信息进行维护管理,如图5-11所示。

 

图5-11宿舍电费管理界面图

管理员可以在此页面进行通知公告的管理,通过新建操作可在通知公告中加入新的图片,还可以对以上传的公告信息进行修改操作如图5-12所示。

 

图5-12通知公告管理界面图

电费异议管理,在电费异议页面中可以电费异议信息进行维护管理,如图5-13所示。

 

图5-13电费异议管理界面图

电费异议管理界面关键代码如下:

@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);

}

6系统测试

系统开发的最后一个步骤就是系统测试,系统测试也是整个系统十分重要的一个环节,测试的好坏关系到产品的发展。用户对软件的质量、性能和可靠性等需求就要通过测试来实现。测试过程要必须遵循严谨性、完善性、规范性的原则,测试的主要目的就是看看在系统运行中,是否会出现bug,然后对出现的bug进行调试,直到程序完美运行。但是软件的测试只能尽可能的减少bug,理论上来说是无法达到消除bug。但是bug越少,系统出错的几率就越低,用户使用起来也更方便、更安全。

近年来,软件包含测试从现在的检验当中来看,系统接近预期目标可能出现的问题,并对这些错误做出相应的修正,假如我们不进行早期的测试错误就会延续下去,最后所做出的成品就会有很大的困难。

我们要在这个测试的过程当中找出错误。测试成软件开发的主要一部分,自从有了程序的设计那天开始,它就成为了重要的组成部分。经过统计来看,软件测试可以占据这个系统45%的工作量,而在软件开发的成本当中,对于测试成本来说它包含了很多的测试工作。每个程序测试时都会出现和遇到错误。在整个程序的开发过程当中,人为去查找错误是非常复杂和困难的,所以我们一般都会找一些测试的工具来进行测试

6.1系统测试的意义

随着现代信息的快速发展,在社会各大领域中已经都开始应用网络信息技术,在应用网络技术的同时人们也开始把软件的质量问题作为了一个重要焦点来关注,因为一个软件的好与坏它决定着这个系统在市场上的生存,所以我们必须要把软件质量来做好,这样才有一定的生存能力。对于用户来说它们首先选用的都是保证这个系统软件的质量问题,因为一个系统的软件质量决定着用户在后期上成本经济的问题。

6.2 测试方法

具体测试方法包括:黑盒测试和白盒测试。

黑盒测试又被人们称作为功能测试,通常是在程序的接口来做一些测试的方法,它一般包括对程序的功能和使用的方法来做出一些数据的接受和输出,同时还可以做出正确的输出信息,并保证与外部信息的完整性。

白盒测试通常被人们称作为结构测试,在整个程序的结构和处理当中它是由程序当中的逻辑测试和检验程序来完成一些正确的工作。

具体的功能测试它是包括:系统的适用性、准确性、安全性等功能测试。

6.3测试分析

高校宿舍交电费系统满足相关信息的管理需求,在设计时借鉴了国内外优秀网站的优点,从界面到系统设计都保证了管理员以及用户能够方便操作。系统的主要特点和优点归纳如下:

(1)本系统用的移置性和针对性都比较高,因为针对性高可以提供更好的服务而移置性可以在多个系统上运行,更给用户带来了极大的方便。

(2)该高校宿舍交电费系统内容全面,管理方便可以及时的全面的处理各种错误,异常,这样避免了很多因用户的马虎操作而出现的失误,其操作方便,用户界面友好,能够上网的人都可以很好的进行操作。

经过对上述的测试结果分析,所有基本功能齐全,操作简单,系统运行性能良好,系统安全可靠,能促进高校宿舍交电费系统的发展,发展前景广阔。

结    论

本系统通过对java和Mysql数据库的简介,从硬件和软件两反面说明了高校宿舍交电费系统的可行性,本文结论及研究成果如下:实现了java与Mysql相结合构建的高校宿舍交电费系统,网站可以响应式展示。通过本次高校宿舍交电费系统的研究与实现,我感到学海无涯,学习是没有终点的,而且实践出真知,只有多动手才能尽快掌握它,经验对系统的开发非常重要,经验不足,就难免会有许多考虑不周之处。比如要有美观的界面,更完善的功能,才能吸引更多的用户

由于在此之前对于java知识没有深入了解,所以从一开始就碰到许多困难,例如一开始的页面显示不规范、数据库连接有问题已经无法实现参数的传递等等,不过通过在网上寻找有关资料以及同学的帮助下最后都得到了解决,在此过程中,我不仅学到了很多知识,也提高了自己解决问题的能力,尤其是学会如何从大量的信息中筛选出所需有用的信息,同时我更加深刻的体会到了,虽然书本上的大部分知识都是有价值,正确的,但实际上每个人编程的思路和对数据处理的方法、思想都是不同的,这就要求我们一定要通过实践才能找到解决问题的方案。在此次毕业设计活动中,我不断的提高了自己,也得到了宝贵的经验,我相信这些对我以后的发展都会有很大帮助。

通过这次高校宿舍交电费系统的开发,我参考了很多相关系统的例子,取长补短,吸取了其他系统的长处,逐步对该系统进行了完善,但是该系统还是有很多的不足之处,有待以后进一步学习。

实践证明,高校宿舍交电费系统有着非常好的发展前景,经过测试运行,系统各项功能都十分完善,界面漂亮,使用方便,操作容易,在技术理论上已经成熟。

致    谢

大学的学习生活在这个季节将结束,但是在我的生命这仅仅只是一个逗号,我将面对的旅程的另一个的开始。通过这次毕业设计的整个开发过程,从需求分析到具体功能实现,再到最终测试和维护的理解有了很大的进步,让我对系统开发有了更深刻的认识,对我个人的实践能力和解决问题的能力,都有了很大的帮助。这是这次毕业设计最大的收获。

首先要感谢我的指导老师,他在论文写作上,给予了我各种无私的帮助,治学严谨,严格要求,使我获得了很大的收获。老师深厚的理论知识和丰富的实践经验,都深深的影响到我,在这方面,我谨表示衷心的感谢。

其次,我还要对所有的老师和同学表示感谢,他们在我学习的过程中,都积极的提供了很多帮助,无论是专业知识,还是实践操作技能,也能够让我在论文写作中,遇到的一些难题迎刃而解。

最后,对阅读和评审本论文的各位老师表示衷心的感谢!

参考文献 

[1]霍福华,韩慧.基于SpringBoot微服务架构下前后端分离的MVVM模型[J].电子技术与软件工程,2022(01):73-76.

[2]柯翔,王左东.ETC门架收费系统监测平台的建设探讨[J].互联网周刊,2021(22):50.

[3]单树倩,任佳勋.基于SpringBoot和Vue框架的数据库原理网站设计与实现[J].电脑知识与技术,2021,17(30):40-41+50.

[4]韩策,张娜,王松亭,张凯,何方,袁峰.SpringBoot OPC客户端设计与研究[J].电子世界,2021(19):25-26.

[5]喻佳,吴丹新.基于SpringBoot的Web快速开发框架[J].电脑编程技巧与维护,2021(09):31-33.

[6]门小骅,柴洪峰,才华,孙权.基于定位技术的自由流收费系统研究[J].交通企业管理,2021,36(05):83-85.

[7]李鹏.基于SpringBoot快速开发平台的实现[J].电子技术与软件工程,2021(12):36-37.

[8]王炯.从交电费看时代变迁[J].农电管理,2020(12):78.

[9].新型电费缴费方式大盘点[J].大众用电,2020,29(08):14.

[10]吴天琪. 社区电超市代收电费系统的研究与应用[D].电子科技大学,2020.

[11]于莉馨,张守梅. 省内首台自助交电费系统“安家”雪城[N]. 牡丹江日报,2019-02-14(002).

[12]梅华威. 采用电子商务理论的网络收电费系统的研究与实现[D].华北电力大学(河北),2019.

[13]杨晓山,张象露.供电企业电费帐务计算机管理以及与银行联网划拨电费系统[J].山西电力技术,2018(05):62-65.

[14]Xiaochen Geng,Sha Liu. Application of Modular Interface Design in Student Dormitory Management System[C]//Proceedings of 4th International Conference on Culture,Education and Economic Development of Modern Society(ICCESE 2020)(Advances in Social Science,Education and Humanities Research,VOL.416).Proceedings of 4th International Conference on Culture,2020:173-180.

[15]Wang Xi,Wang De. Research of Student Management Mechanism under the Background of Credit System Based on Student Dormitory[C]//Proceedings of the 14th International Conference on Innovation and Management.,2017:1676-1680.

免费领取本源代码,请关注点赞+私聊

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

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

相关文章

低通滤波,高通滤波,中值滤波

低通滤波和高通滤波 【参考:图像处理之高通滤波及低通滤波】 低通滤波和高通滤波需用到傅里叶变换知识,可参考这里。 图像在频域里面,频率低的地方说明它是比较平滑的,因为平滑的地方灰度值变化比较小,而频率高的地方通常是边缘或者噪声,因为这些地方往往是灰度值突变的。…

用户终身价值利用xgboost进行LTV预测

在对用户进行细分的时候需要衡量用户的一个重要指标就是用户生命周期价值。不管是什么投入最终的目的是为了盈利,当然如何识别正确的用户周期价值就至关重要了。 其中用户的终身价值计算就非常容易。可以通过一个时间窗口期,即具体的时间可以是年,可以是月,也可以是日计算…

数字藏品app开发

目前大平台的数字藏品主要功能分为三个大体的方向&#xff1a; 1.建立独立的电商平台&#xff0c;平台方组织发行并销售或者赠送&#xff0c;这种玩的方式是国内的主流运行方向&#xff1b; 2.用户将持有的数字藏品引入到了社交平台&#xff0c;国外平台允许用户验证所…

React教程之每个开发人员都应该使用的可扩展和可维护的 React 项目结构

一个好的项目结构可以对项目在理解代码库、灵活性和维护方面的成功程度产生巨大影响。没有良好结构和维护的项目很快就会变成一团糟和可怕的遗产,没有人愿意与之合作。 现在,我将向您展示我在项目中经常使用的结构,并解释其背后的原因。这种结构应该是大型应用程序的一个很…

endpoint is blank

报错图 问题:简单来说使用nacos作为注册中心的时候 并没有对注册中心进行配置而出现的报错 nacos注册中心采用bootstrap.yml或者bootstrap.properties文件进行配置,所以有的人在application.yml或application.properties进行配置了 还是会报同样的错误 nacos正确的配置应该使…

使用RestfulTool插件模拟前端向后端发送请求体,通过SpringMVC结合MyBaits响应返回体

✨✨博主简介:一个会bbox的&#x1f468;‍&#x1f4bb; ✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f496;&#x1f496;如果文章对你有所帮…

Nacos2.0.3 单例模式mysql配置启动,完整版

一、copy配置文件application.properties 从运行的容器中把application.properties文件copy到虚拟机指定目录&#xff1a;/opt/nacos/conf/ docker cp nacos:/home/nacos/conf/application.properties /opt/nacos/conf/application.properties二、修改配置文件 application.…

外汇天眼:美联储如预期再次加息75个基点 并誓言进一步加息以对抗通胀

当地时间周三下午&#xff0c;美联储(Federal Reserve)将基准利率再上调75个基点&#xff0c;并暗示将继续在远高于当前水平的水平上加息。为了降低接近上世纪80年代初以来最高水平的通货膨胀率&#xff0c;美联储将联邦基金利率上调至3%-3.25%的区间&#xff0c;为2008年初以来…

计算机专业毕业设计怎么选?计算机本科毕业设计选题 2023年选题推荐

计算机专业毕业设计怎么选?计算机本科毕业设计选题 2023年选题推荐前言 现在已经迎来2023年的毕业季,很多同学咨询“IT跃迁谷毕设展”关于计算机毕业设计选题方面的问题。例如计算机毕设选题什么好?计算机毕设选题选什么新颖一些?计算机毕设选题如何好过关一些?等等一些问…

Fabric.js 喷雾笔刷 从入门到放肆

theme: smartblue 我报名参加金石计划1期挑战——瓜分10万奖池&#xff0c;这是我的第18篇文章&#xff0c;点击查看活动详情 本文简介 点赞 关注 收藏 学会了 喷雾笔刷 SprayBrush 是 fabric.js 提供的一个很好玩的工具&#xff0c;而且 fabric.js 也封装好了很多非常方便的…

ASP.NET 错误机制

部分包括设置为 On 的 mode 属性。mode 属性用于控制错误重定向发生的方式。例如&#xff0c;如果您正开发应用程序&#xff0c;则很可能希望查看实际的 ASP.NET 错误信息&#xff0c;并且不希望被重定向到更用户友好的错误页。mode 属性包括以下设置&#xff1a; On&#xff1…

【C语言】规范掌握C语言函数|数组名的妙用|指针快速入门|综合使用小案例

✅作者简介&#xff1a;热爱后端语言的大学生&#xff0c;CSDN内容合伙人 ✨精品专栏&#xff1a;C面向对象 文章目录1、函数的结构1.1、无参无返1.2、无参有返1.3、有参无返1.4、有参有返1.5、主函数中的调用及运行效果2、C语言数组创建和基本操作2.1、数组创建的方式2.2、数组…

CVE-2017-0143(永恒之蓝)漏洞复现By metasploit

一、永恒之蓝介绍 永恒之蓝是在Windows的SMB服务处理SMB v1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码。通过永恒之蓝漏洞会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控…

笔记-设备相关知识

目录 设备类 接口类 Windows 如何安装设备 步骤 1&#xff1a;标识设备 步骤 2&#xff1a;选择设备的驱动程序包 搜索驱动程序包 选择驱动程序 步骤 3&#xff1a;已安装设备的驱动程序包 硬件 为设备创建硬件 ID 根枚举设备的硬件 ID 获取设备的硬件 ID 列表 硬件…

低浓度阿拉特津(ATZ)诱导MCF-7细胞增殖的生物标志物发现及其代谢组学机制探究

低浓度阿拉特津&#xff08;ATZ&#xff09;诱导MCF-7细胞增殖的生物标志物发现及其代谢组学机制探究 文章标题&#xff1a;Integrated metabolomics and transcriptomics analysis reveals new biomarkers and mechanistic insights on atrazine exposures in MCF7 cells 发…

【转】详谈判断点在多边形内的七种方法

原帖地址: https://blog.csdn.net/WilliamSun0122/article/details/77994526 射线法时间复杂度:O(n) 适用范围:任意多边形算法思想:以被测点Q为端点,向任意方向作射线(一般水平向右作射线),统计该射线与多边形的交点数。如果为奇数,Q在多边形内;如果为偶数,Q在多边…

用工具刺探主机通信和用系统ping命令有何区别(新人常犯的错误)

ping是操作系统自带的命令,经常用来刺探对端主机是否在线,通信能否畅通。它的原理是在调用ping命令时驱动TCP/IP协议栈的ICMP模块发送icmp echo request消息,待对方主机的ICMP模块收到后,会自动回复icmp echo response消息。本方收到icmp echo response即可确认对方主机在线…

15天深度复习JavaWeb的详细笔记(十)——Filter、Listener、Ajax

文章目录demo10-Filter、Listener、Ajax1&#xff0c;Filter1.1 Filter概述1.2 Filter快速入门1.2.1 开发步骤1.2.2 代码演示1.3 Filter执行流程1.4 Filter拦截路径配置1.5 过滤器链1.5.1 概述1.5.2 代码演示2&#xff0c;Listener2.1 概述2.2 分类2.3 代码演示3&#xff0c;Aj…

Dev C++中窗口输出中文问题解决

1、window+R+regedit调出注册表 2、点击Dec_Dev-Cpp_ConsolePauser.exe 3、鼠标左键双击“CodePage”,弹出设置页面。选择“十进制”,输入65001 4、右键点击运行窗口的图标,选择属性,取消使用旧版控制台5、重新运行完美!!!

vue后台系统管理项目-角色权限分配管理功能

⭐️⭐️⭐️ 作者&#xff1a;船长在船上 &#x1f6a9;&#x1f6a9;&#x1f6a9; 主页&#xff1a;来访地址船长在船上的博客 &#x1f528;&#x1f528;&#x1f528; 简介&#xff1a;CSDN前端领域优质创作者&#xff0c;资深前端开发工程师&#xff0c;专注前端开发…