校园一卡通应用系统的设计与实现

668 篇文章 8 订阅
484 篇文章 1 订阅

  要

计算机网络与信息化管理相融合,可以有效地提高管理人员的工作效能和改进工作的质量。良好的校园一卡通应用系统可以使相关工作得到更好的管理和应用,有助于管理员更好地管理校园一卡通支付,并有助于解决人力管理中出现的差错等问题。因此一套好的校园一卡通应用系统可以有效提高学校管理水平和质量。

该管理系统利用MVC的编程设计方式,利用了Java语言和MySQL存储数据。该系统采用了一个基于SpringBoot的框架结构,同时实现并完成了该系统的全部功能,系统的首要角色是学生和管理员。

关键词:校园一卡通;MySQL;SpringBoot

 

 ABSTRACT

The combination of computer network and information management can effectively improve the work efficiency and quality of management personnel. A good campus card aggregation payment can enable administrators to better manage and apply their work, help administrators better manage campus card payments, and help solve errors and other issues in human resources management. Therefore, a good set of campus all-in-one card aggregation payments can have a great effect.

The management system utilizes MVC programming design and utilizes Java language and MySQL to store data. The system adopts a SpringBoot based framework structure and implements and completes all the functions of the system. The primary roles of the system are students and administrators.

Keywords campus card;MySQL;SpringBoot

 

目  录

1   ........................................................................................................................ 7

1.1 课题背景......................................................................................................... 7

1.2 研究意义......................................................................................................... 7

1.3 论文结构......................................................................................................... 7

2相关技术简介............................................................................................................. 9

2.1 Idea.................................................................................................................. 9

2.2 Tomcat.............................................................................................................. 9

2.3 MySQL数据库............................................................................................... 9

2.4 MVC框架....................................................................................................... 9

2.5 Spring框架.................................................................................................... 10

2.6 Vue框架........................................................................................................ 10

2.7 SpringBoot框架............................................................................................ 10

3 需求分析.................................................................................................................. 11

3.1 功能需求....................................................................................................... 11

3.2 可行性分析................................................................................................... 12

3.2.1 经济可行性研究................................................................................ 12

3.2.2技术上的可行性研究......................................................................... 12

3.2.3操作的可行性研究............................................................................. 12

3.3 非功能需求................................................................................................... 12

4 总体设计.................................................................................................................. 14

4.1 系统架构设计............................................................................................... 14

4.2 功能需求....................................................................................................... 14

4.2.1 功能需求分析.................................................................................... 14

4.2.2 功能结构............................................................................................ 19

4.3 数据库设计................................................................................................... 19

4.3.1 概念模型设计.................................................................................... 19

4.3.2 数据库表............................................................................................ 20

4.3.3 数据库安全设计................................................................................ 22

5 系统实现.................................................................................................................. 23

5.1 管理员模块................................................................................................... 23

5.1.1 登录.................................................................................................... 23

5.1.2 学生管理............................................................................................ 23

5.1.3 校园卡管理........................................................................................ 24

5.1.4 充值信息管理.................................................................................... 24

5.1.5 扣费信息管理.................................................................................... 25

5.2 学生功能模块............................................................................................... 26

5.2.1 校园卡管理........................................................................................ 26

5.2.2 充值信息管理.................................................................................... 26

5.2.3 挂失申请管理.................................................................................... 27

6 系统测试.................................................................................................................. 28

6.1 测试目的....................................................................................................... 28

6.2 测试方法....................................................................................................... 28

6.3 测试用例....................................................................................................... 28

  ............................................................................................................................ 1

      ............................................................................................................ 2

  ............................................................................................................................ 3

[1] 

1  

1.1 课题背景

随着信息技术的不断发展和应用,世界各地的校园一卡通应用系统体系都大有可为。同时,我国的学校规模也在不断地增长,校园一卡通应用系统的产生,说明了校园一卡通应用系统的发展前景良好。在现代社会,科技的发展,电脑的使用已经成为了一个必然的潮流和方向。当今,在信息日益丰富的今天,管理员方面的工作效率受到越来越多的重视[1]。

由于传统的手工管理方式会耗费大量的资源和人员,使管理人员出现管理上的不规范,严重地会对校园一卡通应用系统的运行产生一定的负面作用。通过充分发挥信息技术优势,实现网上校园一卡通支付的信息化。为便于管理人员进行大规模的业务操作,可以借助电脑中庞大的数据资源。在顾及到用户的便利时,也必须将用户使用的安全性问题加以考量[2]。

伴随着对各种不同的模型进行了探讨,以及信息科技的发展,同时还探讨了在大量资料中如何更有效地储存这些资料,因此我们也提出了许多方法。把软件和相关硬件与数据库相融合,开发出一系列可以满足业务需求的功能,通过这些点,从而推动了整个校园一卡通应用系统的发展。这样既可以满足用户的需要,又可以减少人为的失误。

1.2 研究意义

21世纪是一个庞大的数据世界,在海量的数据管理中,管理者要进行大量的数据管理。由于电脑的优点是可以进行数据的自动化,所以许多人都会采用电脑来进行海量的数据的处理,从而大大地改善了系统的运行效率和安全。

越是复杂的资料,就越是显示电脑的优势。一开始的时候,管理员们都是通过手工的方法来管理这些资料,但因为大量的资料都是手工操作的,所以很多事情都是靠人力去做,而这些资料一旦被隐藏了,就很难再被发现了,所以管理员们的工作也就变得很慢了[3]。

1.3 论文结构

关于这篇文章的设计安排有以下几章:

第一章为绪论。为本文的研究背景、意义、研究现状以及本文的框架。

第二章介绍了该软件的开发平台和技术。主要阐述了校园一卡通应用系统的开发背景以及所采用的技术。

第三章为研究对象的需求分析。对系统的功能和非功能要求进行了详细的阐述,并给出了系统的功能模块图。

第四章对整个体系系统进行了整体的设计。完成了各子系统的功能模块的划分与数据库的开发。

第五章为本论文的研究内容。该章主要介绍了各功能模块在校园一卡通应用系统中的作用。

第六章对本论文进行了详细的论述。这一章介绍了如何利用黑盒来进行系统的试验。

 

2相关技术简介

2.1Idea

这个数据库的主要功能是Idea,该软件包含了测试、代码编写、封装发行等功能,可以为JavaEE系统提供一个非常好的继承资源。现在Idea可以提供很多的能力,比如JavaEE架构,比如DB链接,Idea几乎包含了 Eclipse的全部特性。

2.2 Tomcat

Tomcat是一种Web服务,它可以利用B/S格式的网络程序,该网站采用 Tomcat作为该网站的服务器。Tomcat的基础部分被用来作为Servlet的服务组件来完成。

我们可以假设,如果我们将Apache服务器部署在同一个服务器上,则 Apache Server对应的Html页也可以使用。Tomcat是Apache的一个延伸,而 Tomcat则与Apache完全无关。在Apache中,Tomcat的线程与Apache是不一样的,它可以在Apache中独立地执行JSP和 Servlet,而 Apache则为 HTML网页提供了支持。

2.3 MySQL数据库

MySQL数据库具有海量的数据储存功能,在运行过程中既简单又快速,若要提高查询效率,可以在数据库中添加一个方便的索引。在系统中,当有必要增加数据时,可以调用插入式数据来进行数据库的数据更新步骤。MySQL是一个自由开放的开放的数据库系统,它可以根据规范的SQL陈述来提供有关系统的资讯信息,并且可以更容易地进行MySQL的设置与配置。基于开放源码架构的数据处理程序,可以将其转换成基于开放源码架构的SQL。MySQL与开放源码架构相结合,可以很容易地更改数据库的记录从而更方便的对其开展修改。

2.4 MVC框架

MVC架构可以实现对管理员的超级连接,在此基础上,用户可以通过表格向前页提交的要求进行处理,但必须将其传送到后台控制器进行处理,然后再回到前面的网页,之后再通过后台的框架对来自前面的网页的要求进行相应的处理。采用了后台结构,可以防止用户对前端网页进行直接的存取,从而极大地增强了系统的安全性能。

2.5 Spring框架

Spring的相依性嵌入可以将校园一卡通应用系统中的各部件松散地连接起来,而组件和组件的组合则取决于Spring的依赖性,Spring框架中采用了许多界面设计,可以减少重新构建的费用,便于以后的系统更改。

Spring架构的事务宣告架构可以在交易中使用,若有声明式事务,就不必将事务政策与程式码相融合,藉由配置文件的实现让业务逻辑元件集中于执行商业逻辑的实现,可以降低程式设计师的研发工作难度。

2.6 Vue框架

Vue Framework是一个渐进的框架,它可以用来建立一个用户接口,而不是在编写后台的代码,而是建立在前面的接口,然后和一个第三方的 View数据库结合在一起,这样可以增加一个很好的扩展性,而使用一个向上的递增的开发方法可以帮助降低系统的冗余。Vue是一种与静止网页不同的技术。编程人员将 Vue与后台的框架相组合,可以让数据在前端和后端开发之间进行互动,从而使数据的处理变得更加容易。前面的开发人员必须承担起撰写前端网页的责任职能,而不必再撰写逻辑性的商业处理程式码,这一工作将会交给后台的开发人员完成。Vue架构不但可以写出一个动态网页,而且可以和前面的网页相融合,从而帮助以后的程序扩充。Vue架构可以从Vue架构中剥离出Vue架构和商业架构,从而降低了大量的HTML编码。

2.7 SpringBoot框架

SpringBoot的架构在经历了几年的改进之后,变得非常的成熟,它与Spring的结构相比较之处在于它内置了Tomcat,无需另外的Tomcat来执行,并且可以通过R物件来执行代码的动作,SpringBoot开发的软件,可以轻松地与前面的网页进行互动,并且可以很好地捕捉到一些异常,SpringBoot是通过界面来进行互动的,所以在以后的编辑中,可以更容易地进行更改和使用。

 

3 需求分析

3.1 功能需求

学生:个人中心、校园卡管理、充值信息管理、扣费信息管理、挂失申请管理

图3-1 学生用例图

管理员:学生管理、个人中心、校园卡管理、充值信息管理、扣费信息管理、挂失申请管理

图3-2 管理员用例图

3.2 可行性分析

3.2.1 经济可行性研究

管理员有了这个管理软件,就可以对校园一卡通应用系统进行管理,节约了大量的经费。为了有效地克服由于传统方式所造成的额外的财务开支,特别是在人员方面所造成的费用开支,本文对此进行了研究和探讨。由于采用传统的管理方式,不但耗费了大量的人员,还常常要求管理员进行人工记录。该系统的设计与实施旨在减少软件开发费用,节约管理员工作时间,增强用户体验。鉴于现有的因特网开放源码架构及软体装置,因此在经济性上是可以做到的[6]。

3.2.2技术上的可行性研究

通过对校园一卡通应用系统的早期功能进行了初步的研究,最终选定了适合于系统的体系结构和技术来进行系统的开发。结合目前各学校已有的校园一卡通应用系统,本文所采用的技术已大致具有可行性,可以达到降低开发和学习费用的目的。这种方法可以迅速建立起一个新的体系,可以借鉴很多成熟的方法,可以方便地进行后期的维护和更新。

3.2.3操作的可行性研究

由于校园一卡通应用系统的部分功能是面向用户进行操作而开发的,在进行校园一卡通应用系统的管理时,必须考虑到用户对其进行操作和存取等方面的影响因素,一般都可以采用信息技术进行操作和使用,这样就可以降低用户的学习费用和一些繁琐步骤。该系统在设计中没有太多繁琐的操作和步骤,所用的操作接口和按键也比较简洁和易懂,参照了很多主要的校园一卡通应用系统,具有很好的操作性。

3.3 非功能需求

进行校园一卡通支付管理的过程中,不仅要考虑到校园一卡通应用系统的功能要求,而且要考虑到系统的实际应用效果。

(1)相容

一般的软件系统,可以分为两个部分,一个是服务器,一个是客户,一个是客户端,一个是显示一个界面,主要是把一个电脑放在一个机房里,一个是软件开发人员平时要维护的方面,而这个界面,就是由一个客户端来操作的界面。要改善校园一卡通应用系统的兼容性,就必须要注意在实现代码时,与前端接口之间的风格是否可以互相匹配。

(2)扩充

随着信息技术的不断发展,软件系统会不断地进行系统的升级,这一点也是如此,当需求变化时,必须对其进行相应的功能的修改。在应用OOP方式的情况下,可以利用界面技术,严格按照软件的发展要求进行最终的系统的调整。

在今后的实际管理过程中,校园一卡通应用系统的管理工作必须要适应不断改变的需求。从另一个方面来说,系统必须具备可扩充的能力。所以在开发过程中,必须要按照软件的规格来进行,这样才能方便地进行后续的修改。

(3)信赖度

软件必须有可靠度,不然许多实际的管理就会失败,导致无法进行有效的运行。系统的可靠程度主要体现在硬件能力、应用和数据等方面。一个系统的稳定性,意味着它可以从一个不正常的状态变成一个可以正常运转的系统,它的可用性和实用性都会得到提升。

(4)可用性

软件开发者在设计软件的过程中,不仅要确保软件的运行性能,还要尽可能地简化软件的运行,在设计过程中,如果把软件的功能设定得太过繁琐,会让大部分的用户无法使用。

 

4 总体设计

在对系统进行需求分析和分析后,需要对整个系统进行整体的分析,每一个角色都有自己的特点,每一个模块都有自己的专用代码。

4.1 系统架构设计

在此基础上,本文提出了一种基于 B/S技术的校园一卡通应用系统,B/S模式最大的优势在于,如果系统是有网络的,可以使用它。该系统依靠网络技术,所以当系统管理员不需要再设置更多的专门的程序,而且管理员也不会浪费时间去进行软件的维护。

同时,在为用户设置操作接口的同时,也要保留用户所输入的所有资料,并对用户提出的要求进行相应的处理,而由服务逻辑对接收到的资料进行相应的运算,最终将所得到的结果呈现在用户面前。而服务器方则负责接收来自于用户的点击。最后,向数据库端提出了一个要求,要求数据库服务器完成相应的数据记录,然后将采集到的数据进行处理,便可以将相应的结果反馈给浏览器。

数据库

返回操作结果

开源框架操作

浏览器

服务器

返回操作结果

操作请求

图4-1 架构设计图

4.2 功能需求

4.2.1 功能需求分析

校园一卡通应用系统主要是对日常一卡通管理工作进行管理,并对其进行分析,发现其经营主体有多种角色。所以,在校园一卡通应用系统中,首先要保证不同的角色的权限,为了给不同的用户提供相应的权限,为了区分不同的角色,需要使用用户的表格,而在用户的表格中,则要将用户的个人信息保存在一个特定的列表中。

(1)注册

通过在校园一卡通应用系统的登记按钮进行登记,在登录页面上按下登记键即可进入登录页面,并在登录页面上填写相关的资料。

输入用户相关信息

提示错误

结束

添加成功

用户表中是否存在用户

用户注册页面

开始

是否在校大学生

验证成功

图4-2 注册流程图

(2)登录

如果用户所录入的信息与数据库中数据库中的信息相符,那么就表示其身份验证完毕,数据库也将会被系统的数据库所收录。在离开之前,用户需要点击“退出”。

提示用户名和密码错误

结束

将用户名写入session

跳转至首页面

用户记录

刷新登录界面

获取用户名和密码

开始

图4-3 登录流程图

(3)充值校园卡

用户输入用户名和密码可以登录到系统,登录系统之后可以充值校园卡。

开始

输入用户信息

显示登录界面

进入系统

输入是否正确

结束

充值校园卡

图4-4 充值校园卡流程图

(4)学生管理

在后台注册了该系统以后,管理员可以进行管理。

结束

查询学生信息

删除学生信息

修改学生信息

增加学生信息

选择要进行的操作

进入学生管理页面

开始

图4-5 学生管理流程图

4.2.2 功能结构

图4-6 功能模块图

4.3 数据库设计

数据库设计中的信息安全是确保数据库中存储的数据受到保护和安全的重要方面之一。以下是一些与信息安全相关的数据库设计内容:

数据库加密:数据库加密是一种保护数据库中敏感数据的常见方法。通过使用加密算法,将数据转换为密文形式,即使数据库被未经授权的人员访问,也无法读取或解密数据。数据库加密可以应用于整个数据库、特定表、列或敏感数据字段。

账号安全管理:账号安全管理是确保用户账号和访问权限的合理使用和保护的过程。这包括以下方面:

强密码策略:要求用户创建强密码,并定期更新密码。

多因素身份验证:要求用户提供多个验证要素(如密码、短信验证码、指纹等)来验证身份。

访问控制:根据用户角色和权限设置细粒度的访问控制,以限制用户对数据库的操作。

审计和日志记录:记录用户的登录、操作和系统事件,以便进行审计和检查潜在的安全问题。

数据备份和恢复:定期备份数据库是信息安全的重要措施之一。通过定期备份数据,可以在数据意外删除、数据库崩溃或系统故障时进行数据恢复,确保数据的完整性和可用性。

4.3.1 概念模型设计

数据库的概念模型可以通过E-R图表来表达,也就是所谓的实体-联系模式。E-R图表通常包括实体,联系和属性。在概念上,可以从实体、关联、属性等方面反映出系统中各个实体之间的关系,从而体现出数据库的信息结构。

图4-7 数据库E-R图

4.3.2 数据库表

(1)充值信息表

表4-1 充值信息表

列名

数据类型

长度

字段说明

id

bigint

主键

addtime

timestamp

创建时间

kahao

varchar

200

卡号

xuehao

varchar

200

学号

xingming

varchar

200

姓名

jine

int

金额

chongzhiriqi

datetime

充值日期

ispay

varchar

200

是否支付

(2)学生信息表

表4-2 学生信息表

列名

数据类型

长度

字段说明

id

bigint

主键

addtime

timestamp

创建时间

xuehao

varchar

200

学号

mima

varchar

200

密码

xingming

varchar

200

姓名

xingbie

varchar

200

性别

touxiang

longtext

200

头像

xueyuan

varchar

200

学院

zhuanye

varchar

200

专业

shouji

varchar

200

手机

(3)校园卡信息表

表4-3 校园卡信息表

列名

数据类型

长度

字段

id

bigint

主键

addtime

timestamp

创建时间

kahao

varchar

200

卡号

xuehao

varchar

200

学号

xingming

varchar

200

姓名

jine

int

金额

banlishijian

datetime

办理时间

sfsh

varchar

200

是否审核

shhf

longtext

200

审核回复

(4)扣费信息表

表4-4 扣费信息表

列名

数据类型

长度

字段说明

id

bigint

主键

addtime

timestamp

创建时间

kahao

varchar

200

卡号

xuehao

varchar

200

学号

xingming

varchar

200

姓名

jine

int

金额

koufeishijian

datetime

扣费时间

koufeishuoming

longtext

200

扣费说明

(5)挂失申请信息表

表4-5 挂失申请信息表

列名

数据类型

长度

字段说明

id

bigint

主键

addtime

timestamp

创建时间

biaoti

varchar

200

标题

kahao

varchar

200

卡号

xuehao

varchar

200

学号

xingming

varchar

200

姓名

guashineirong

longtext

200

挂失内容

guashishijian

datetime

挂失时间

sfsh

varchar

200

是否审核

shhf

longtext

200

审核回复

4.3.3 数据库安全设计

要确保校园一卡通应用系统的数据库设计,必须采用访问控制和用户认证等手段来增强对其的安全防护。

(1)访问和访问控制:访问控制方式可以给不同的用户以对应的访问控制。本文所开发的校园一卡通应用系统,对用户和管理员的权限进行了严格的限定,以确保其数据的安全性。

(2)识别用户:数据库用户资料中有用户的资料,用户数据库必须有用户的资料,用户必须使用用户的资料,并将用户所填写之用户名称及用户的口令,与数据库用户数据库内的资料相符,方可进行登入方面的操作。用户识别是一种最基础的安全措施,在登录的过程中,必须要经过身份认证,这样就可以避免恶意篡改。

 

5 系统实现

在进行校园一卡通应用系统的规划过程中,经过了需求的剖析和整体的规划,就有了系统的实施。在实施过程中,要按照系统的整体结构和需求的分析来完成。

5.1 管理员模块

5.1.1 登录

在此系统中,要实现系统的安全操作,首先要经过用户的登录认证,在登录时必须用 login页来表达,在 login标签上要有 CSS标记,这样才能显示前面的网页,在 login标记中,CSS标记的定义使得登录接口可以在浏览器内被展示,并且必须要有一个窗体的定义。在登录接口上的输入方块要求用户通过 placeholder来进行输入。在用户单击登录键时,必须向loginForm发送一条消息。

图5-1 登录界面

5.1.2 学生管理

在学生的界面上,需要先将风格与script标记相结合,以进行调用。学生的浏览取决于form标记来展示学生的资料,而CSS风格则必须在form标记上进行说明,这样可以使表单在接口上正常地呈现。增加的按键必须是 button,在增加的时候要设定单击的时间,并且要有对应的方式来对加入到前面的网页的学生的资料进行操作。学生的详细资料页需要设定详细资料页以表示,使用CSS风格设定学生资讯,后端则会将数据库纪录所取得的资讯,呈现在网页的前端。管理员要查找学生的资料,就必须将学生的账号输入到业务逻辑模块中,然后按照SQL语句进行查询,并将所搜寻的资料传送至前端网页以供用户显示。

图5-2 学生管理界面

5.1.3 校园卡管理

在校园卡的管理接口中,必须采用boostrap框来代表该接口的风格,增加一个校园卡的输入框必须通过 input标记来完成,并且用户所输入的数据必须可以被储存在一个校园卡中,通过 input标记被传送给一个校园卡,这样就可以在一个实体中进行储存,单击“提交”键,就必须进入form表单所规定的通道,将资料传送至后台的逻辑处理程式,并在前面的网页上设定侦测用户所输入的资料是否准确,若用户所填资料为空白,则用layer来提醒。

图5-3 校园卡管理界面

5.1.4 充值管理

在用户的界面上,需要先将风格与script标记相结合,以进行调用。用户的浏览取决于form标记来展示用户的资料,而CSS风格则必须在form标记上进行说明,这样可以使表单在接口上正常地呈现。增加的按键必须是 button,在增加的时候要设定单击的时间,并且要有对应的方式来对加入到前面的网页的充值信息的资料进行操作。充值信息的详细资料页需要设定详细资料页以表示,使用CSS风格设定用户资讯,后端则会将数据库纪录所取得的资讯,呈现在网页的前端。管理员要查找充值信息的资料,就必须将充值信息的账号输入到业务逻辑模块中,然后按照SQL语句进行查询,并将所搜寻的资料传送至前端网页以供用户显示。

图5-4 充值信息管理界面

5.1.5 扣费管理

在扣费信息的管理接口中,必须采用boostrap框来代表该接口的风格,增加一个扣费信息的输入框必须通过 input标记来完成,并且用户所输入的数据必须可以被储存在一个扣费信息中,通过 input标记被传送给一个扣费信息,这样就可以在一个实体中进行储存,单击“提交”键,就必须进入form表单所规定的通道,将资料传送至后台的逻辑处理程式,并在前面的网页上设定侦测用户所输入的资料是否准确,若用户所填资料为空白,请用layer来提醒。

图5-5 扣费信息管理界面

5.2 学生功能模块

5.2.1 校园卡管理

学生要查询的话可以直接进入校园一卡通应用系统,在系统的搜索栏里键入卡号或者姓名来查询校园卡的相关资料,只要符合资料库的目录,就可以查询到相关的校园卡资料。学生用户还可以进行充值、挂失、扣费等操作。

图5-6 校园卡管理界面

5.2.2 充值管理

   学生要查询的话可以直接进入校园一卡通应用系统,在系统的搜索栏里键入卡号或者充值日期来查询充值信息的相关资料,只要符合资料库的目录,就可以查询到相关充值信息资料。

图5-7 充值信息管理界面

5.2.3 挂失申请管理

   学生要查询的话可以直接进入校园一卡通应用系统,在系统的搜索栏里键入卡号或者标题来查询挂失申请的相关资料,只要符合资料库的目录,就可以查询到相关挂失申请资料。

图5-8 挂失申请管理界面

 

6 系统测试

在软件开发完毕后,要对其进行检测,一旦出现问题,可以采用截止点的方法对其进行分析。由于校园一卡通应用系统的实际设计和实施存在着一些可能出现的差错,所以相应的检测是必不可少的。只有经过了软件的调试,软件方可以投入使用,否则后期的维护成本就会大大增加。该试验是根据实际使用的测试用例来实现对功能的检验,从而确定能否满足功能需求,并对软件进行检测,从而使其在运行前实现。

6.1 测试目的

在系统运行完毕后,还要进行软件的调试。因为在开发的时候,会出现一些隐藏的缺陷bug和漏洞,如果不及时的处理,那么以后的应用就会受到很大的阻碍。尽管系统软件已开发完毕,但最终还要看应用效果。通过软件的检测,可以从某种意义上确保系统的性能。测试的终极目标是,在系统开始运行前,尽量找出可能出现的问题[8]。

6.2 测试方法

边界值分析方法,它可以把软件的工作分成相同的格式,对用户的输入进行检验,也可以在相同的类别范围内选取一个等效的扣费信息,其结果表明了它的有效性[9]。

通过将各种情况结合起来生成各种不同的试验案例,生成各种判断表,可以对各种程序的输入状态进行检测,利用正交表对各种数据进行分析,从而达到增加测试覆盖范围。

根据错误推理,推断出管理员的错误,并制定出相应的处理解决方案,列出软件中大量的错误,并据此来选取合适的检测,错误推断方法的基本核心是列出一个程序中大量出现的故障,并据此选取合适的试验案例[10]。

6.3 测试用例

(1) 用户登录测试用例

表6-1 登录用例表

测试用例

步骤

预期结果

实际结果

如果用户未键入用户名称及密码

在登录界面中没有输入用户名和密码,点击对应的登录按钮

登录失败

登录失败

如果用户输入用户的名字和密码

在登录页面键入用户名称及口令,然后单击相应的登录键

登录成功

登录成功

若用户所输入的用户名称符合数据库记录,则密码有误

在登录页面键入用户名称及密码,并按下相应的登入键

登录失败

登录失败

如果用户输入的密码与数据库记录一致,则用户名称有误

如果使用的密码与数据库记录一致,点击对应的登录按钮

登录失败

登录失败

(2)校园卡管理测试用例

表6-2 校园卡管理用例表

测试用例

步骤

预期结果

实际结果

如果管理员要查找相关的校园卡,那么就必须在搜索栏中键入校园卡的相关信息

在校园卡的管理接口中,所录入的校园卡与数据库中的学习数据不一致

搜索失败

搜索失败

如果管理员要查找相关的校园卡,那么就必须在搜索栏中键入校园卡的相关信息

在校园卡的管理接口中,所录入的校园卡与数据库中的学习数据一致

搜索成功

搜索成功

如果管理员要在“加入”键上增加相关的内容,那么就必须在“加入”按钮的基础上键入相关的内容。

在校园卡的管理接口中,所录入的校园卡与数据库中的数据有所冲突

添加失败

添加失败

如果管理员要在“加入”键上增加相关的内容,那么就必须在“加入”按钮的基础上键入相关的内容。

在校园卡的管理接口中,所录入的校园卡与数据库中的数据不同

添加成功

添加成功

如果管理员希望移除校园卡的资讯,请单击“移除”键

单击“删除”键,校园卡管理界面中,如果“删除”的校园卡与“其他“数据”相关

删除失败

删除失败

如果管理员希望移除校园卡的资讯,请单击“移除”键

单击“删除”键,校园卡管理界面中,如果“删除”的校园卡与“其他“数据”无相关

删除成功

删除成功

如果管理员要更改校园卡的信息,请单击“更改”键,然后输入新的校园卡

在校园卡的管理接口中,所录入的校园卡与数据库中的数据发生了冲突

修改失败

修改失败

如果管理员要更改校园卡的信息,请单击“更改”键,然后输入新的校园卡

在校园卡的管理接口中,所录入的校园卡与数据库中的数据不同

修改成功

修改成功

(3)学生管理测试用例

表6-3 学生管理用例表

测试用例

步骤

预期结果

实际结果

如果管理员要查找相关的学生,那么就必须在搜索栏中键入学生的相关信息

在学生的管理接口中,所录入的学生与数据库中的学习数据不一致

搜索失败

搜索失败

如果管理员要查找相关的学生,那么就必须在搜索栏中键入学生的相关信息

在学生的管理接口中,所录入的学生与数据库中的学习数据一致

搜索成功

搜索成功

如果管理员要在“加入”键上增加相关的内容,那么就必须在“加入”按钮的基础上键入相关的内容。

在学生的管理接口中,所录入的学生与数据库中的数据有所冲突

添加失败

添加失败

如果管理员要在“加入”键上增加相关的内容,那么就必须在“加入”按钮的基础上键入相关的内容。

在学生的管理接口中,所录入的学生与数据库中的数据不同

添加成功

添加成功

如果管理员希望移除学生的资讯,请单击“移除”键

单击“删除”键,学生管理界面中,如果“删除”的学生与“其他“数据”相关

删除失败

删除失败

如果管理员希望移除学生的资讯,请单击“移除”键

单击“删除”键,学生管理界面中,如果“删除”的学生与“其他“数据”无相关

删除成功

删除成功

如果管理员要更改学生的信息,请单击“更改”键,然后输入新的学生

在学生的管理接口中,所录入的学生与数据库中的数据发生了冲突

修改失败

修改失败

如果管理员要更改学生的信息,请单击“更改”键,然后输入新的学生

在学生的管理接口中,所录入的学生与数据库中的数据不同

修改成功

修改成

 

     

[1]贾香娟.计算机网页设计中的布局与排版[J].信息与电脑(理论版).2020,32(09).

[2]胡开华,张玉静,陈明禄,何文鑫.基于Vue.js的Web应用开发教学案例设计与实现[J].信息与电脑(理论版).2021,33(18).

[3]刘子凡,郭昱君.基于SpringBoot+Mybatis的个人博客系统设计与实现[J].现代信息科技.2021,5(08).

[4]钟怡旸,郭昱君.基于SpringBoot的博客管理系统设计与实现[J].现代信息科技,2021,5(07).

[5]方生.基于“Vue.js”前端框架技术的研究[J].电脑知识与技术.2021,17(19).

[6]冯冬艳.MySQL集群主从复制的原理、实现与常见故障排除[J].陕西电子技术.2021(6).

[7]向福川,方玉,刘浪,唐振云,练瑶.基于SpringBoot+Vue框架的协同育才系统设计与开发[J].现代信息科技.2021,5(14).

[8]张景辉.基于Java的数据库开发技巧[J].电脑知识与技术.2021,17(33).

[9]刘超慧,杨雨涵,邢丹阳,解秋寒,李舶永.基于SpringBoot的教学资源平台设计与实现[J].科技风,2021,(11).

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

   录

重置信息:

/** 创建校园卡管理、学生信息管理、管理员模块初始函数空文件 **/

@RestController

@RequestMapping("/chongzhixinxi")

public class ChongzhixinxiController {

    @Autowired

    private ChongzhixinxiService chongzhixinxiService;

    /** 管理员通过邮箱进行身份验证 **/

    @RequestMapping("/page")

    public R page(@RequestParam Map<String, Object> params,ChongzhixinxiEntity chongzhixinxi,

                @RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date chongzhiriqistart,

                @RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date chongzhiriqiend,

              HttpServletRequest request){

              String tableName = request.getSession().getAttribute("tableName").toString();

              if(tableName.equals("xuesheng")) {

                     chongzhixinxi.setXuehao((String)request.getSession().getAttribute("username"));

              }

        EntityWrapper<ChongzhixinxiEntity> ew = new EntityWrapper<ChongzhixinxiEntity>();

                if(chongzhiriqistart!=null) ew.ge("chongzhiriqi", chongzhiriqistart);

                if(chongzhiriqiend!=null) ew.le("chongzhiriqi", chongzhiriqiend);

              PageUtils page = chongzhixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chongzhixinxi), params), params));

        return R.ok().put("data", page);

    }

   

    /** 返回输入函数值,进行个人验证,输入错误会提示报错!**/

       @IgnoreAuth

    @RequestMapping("/list")

    public R list(@RequestParam Map<String, Object> params,ChongzhixinxiEntity chongzhixinxi,

                @RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date chongzhiriqistart,

                @RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date chongzhiriqiend,

              HttpServletRequest request){

        EntityWrapper<ChongzhixinxiEntity> ew = new EntityWrapper<ChongzhixinxiEntity>();

                if(chongzhiriqistart!=null) ew.ge("chongzhiriqi", chongzhiriqistart);

                if(chongzhiriqiend!=null) ew.le("chongzhiriqi", chongzhiriqiend);

              PageUtils page = chongzhixinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chongzhixinxi), params), params));

        return R.ok().put("data", page);

    }

       /** 对所有表格进行信息格式化 **/

  学生管理:

/** 录取充值信息,扣费信息,交易信息 **/

    private XueshengService xueshengService;

       private TokenService tokenService;

      

       /** 对学生信息禁止对外调用 **/

       @IgnoreAuth

       @RequestMapping(value = "/login")

       public R login(String username, String password, String captcha, HttpServletRequest request) {

              XueshengEntity u = xueshengService.selectOne(new EntityWrapper<XueshengEntity>().eq("xuehao", username));

              if(u==null || !u.getMima().equals(password)) {

                     return R.error("充值成功");

              }

             

              String token = tokenService.generateToken(u.getId(), username,"xuesheng",  "" );

              return R.ok().put("token", token);

       }

       /** 进行余额充值并查看余额 **/

       @IgnoreAuth

    @RequestMapping("/register")

    public R register(@RequestBody XueshengEntity xuesheng){

          //ValidatorUtils.validateEntity(xuesheng);

          XueshengEntity u = xueshengService.selectOne(new EntityWrapper<XueshengEntity>().eq("xuehao", xuesheng.getXuehao()));

              if(u!=null) {

                     return R.error("");

              }

              Long uId = new Date().getTime();

              xuesheng.setId(uId);

        xueshengService.insert(xuesheng);

        return R.ok();

    }

      

       /** 对学生的交易信息进行记录并保存 **/

       RequestMapping("/logout")

       public R logout(HttpServletRequest request) {

              request.getSession().invalidate();

              return R.ok("信息保存成功!");

       }

    public R page(@RequestParam Map<String, Object> params,XueshengEntity xuesheng,

              HttpServletRequest request){

        EntityWrapper<XueshengEntity> ew = new EntityWrapper<XueshengEntity>();

              PageUtils page = xueshengService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xuesheng), params), params));

        return R.ok().put("data", page);

}

校园卡信息管理:

/** 添加学生对校园卡的挂失申请,扣费信息查询,充值信息查询 **/

    public R page(@RequestParam Map<String, Object> params,XiaoyuankaEntity xiaoyuanka,

             HttpServletRequest request){

             String tableName = request.getSession().getAttribute("tableName").toString();

             if(tableName.equals("xuesheng")) {

                    xiaoyuanka.setXuehao((String)request.getSession().getAttribute("username"));

             }

        EntityWrapper<XiaoyuankaEntity> ew = new EntityWrapper<XiaoyuankaEntity>();

             PageUtils page = xiaoyuankaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiaoyuanka), params), params));

        return R.ok().put("data", page);

    }

   

/** 在学生管理页面添加校园卡挂失申请,进入校园卡子系统中查询之前录入的消费信息 **/

      @IgnoreAuth

    @RequestMapping("/list")

    public R list(@RequestParam Map<String, Object> params,XiaoyuankaEntity xiaoyuanka,

             HttpServletRequest request){

        EntityWrapper<XiaoyuankaEntity> ew = new EntityWrapper<XiaoyuankaEntity>();

             PageUtils page = xiaoyuankaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiaoyuanka), params), params));

        return R.ok().put("data", page);

    }

      /** 对校园卡进行挂失,禁止信息对外改动达到挂失目的 **/

    @RequestMapping("/lists")

    public R list( XiaoyuankaEntity xiaoyuanka){

             EntityWrapper<XiaoyuankaEntity> ew = new EntityWrapper<XiaoyuankaEntity>();

      ew.allEq(MPUtil.allEQMapPre( xiaoyuanka, "xiaoyuanka"));

        return R.ok().put("data", xiaoyuankaService.selectListView(ew));

    }

    @RequestMapping("/query")

    public R query(XiaoyuankaEntity xiaoyuanka){

        EntityWrapper< XiaoyuankaEntity> ew = new EntityWrapper< XiaoyuankaEntity>();

            ew.allEq(MPUtil.allEQMapPre( xiaoyuanka, "xiaoyuanka"));

             XiaoyuankaView xiaoyuankaView =  xiaoyuankaService.selectView(ew);

             return R.ok("申请解封").put("data", xiaoyuankaView);

    }

     

    /** 向管理员提出申请对挂失卡的解封 **/

    @RequestMapping("/info/{id}")

    public R info(@PathVariable("id") Long id){

        XiaoyuankaEntity xiaoyuanka = xiaoyuankaService.selectById(id);

        return R.ok().put("data", xiaoyuanka);

    }

      @IgnoreAuth

    @RequestMapping("/detail/{id}")

    public R detail(@PathVariable("id") Long id){

        XiaoyuankaEntity xiaoyuanka = xiaoyuankaService.selectById(id);

        return R.ok().put("data", xiaoyuanka);

    }

   

    /** 重新输入id进行身份认证 **/

    @RequestMapping("/save")

    public R save(@RequestBody XiaoyuankaEntity xiaoyuanka, HttpServletRequest request){

         xiaoyuanka.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());

         //ValidatorUtils.validateEntity(xiaoyuanka);

        xiaoyuankaService.insert(xiaoyuanka);

        return R.ok();

    }

   

    /** 学生进入校园卡系统提出解封申请 **/

    @RequestMapping("/add")

    public R add(@RequestBody XiaoyuankaEntity xiaoyuanka, HttpServletRequest request){

         xiaoyuanka.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());

         //ValidatorUtils.validateEntity(xiaoyuanka);

        xiaoyuankaService.insert(xiaoyuanka);

        return R.ok();

    }

    @RequestMapping("/update")

    @Transactional

    public R update(@RequestBody XiaoyuankaEntity xiaoyuanka, HttpServletRequest request){

        //ValidatorUtils.validateEntity(xiaoyuanka);

        xiaoyuankaService.updateById(xiaoyuanka);      

 return R.ok();

    }

管理员模块:

/** 在管理员子系统中添加个人中心,学生管理,挂失申请管理 **/

@RequestMapping("users")

@RestController

public class UsersController{

     

      @Autowired

      private UsersService userService;

     

      @Autowired

      private TokenService tokenService;

      @IgnoreAuth

      @RequestMapping(value = "/login")

      public R login(String username, String password, String captcha, HttpServletRequest request) {

             UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));

             if(user==null || !user.getPassword().equals(password)) {

                    return R.error("登录成功!");

             }

             String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());

             return R.ok().put("token", token);

      }

     

      /** 设置账号和登录密码并进行验证 **/

      @IgnoreAuth

      @PostMapping(value = "/register")

      public R register(@RequestBody UsersEntity user){

//       ValidatorUtils.validateEntity(user);

         if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {

                return R.error("账号或密码有错,请重新输入!");

         }

        userService.insert(user);

        return R.ok();

    }

      /** 同意挂失申请 **/

      @GetMapping(value = "logout")

      public R logout(HttpServletRequest request) {

             request.getSession().invalidate();

             return R.ok("挂失申请已通过。");

      }

     

      /** 处理学生的挂失申请,进行信息回执。**/

    @IgnoreAuth

      @RequestMapping(value = "/resetPass")

    public R resetPass(String username, HttpServletRequest request){

         UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));

         if(user==null) {

                return R.error("校园卡信息有误,请重新提交申请!");

         }

         user.setPassword("123456");

        userService.update(user,null);

           }

     

    @RequestMapping("/page")

    public R page(@RequestParam Map<String, Object> params,UsersEntity user){

        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();

        PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));

        return R.ok().put("data", page);

    }

      /** 管理员查看学生个人信息 **/

    @RequestMapping("/list")

    public R list( UsersEntity user){

             EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();

      ew.allEq(MPUtil.allEQMapPre( user, "user"));

        return R.ok().put("data", userService.selectListView(ew));

    }

    @RequestMapping("/info/{id}")

    public R info(@PathVariable("id") String id){

        UsersEntity user = userService.selectById(id);

        return R.ok().put("data", user);

    }

   

    /** 连接学生管理,管理员对学生基本信息进行修改 **/

    @RequestMapping("/session")

    public R getCurrUser(HttpServletRequest request){

         Long id = (Long)request.getSession().getAttribute("userId");

        UsersEntity user = userService.selectById(id);

        return R.ok().put("data", user);

    }

    @PostMapping("/save")

    public R save(@RequestBody UsersEntity user){

//       ValidatorUtils.validateEntity(user);

         if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {

                   }

        userService.insert(user);

        return R.ok("更改成功!");

    }


 [1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值