基于mybatis-jsp-bootstrap-servlet-mysql-maven的Javaweb课程设计--刷题后台管理系统(考试题目管理系统)
第一章需求分析计算机技术没有应用到考试上时,组织一次考试只是要经过五步:人工出题,考生考试,人工阅卷,成绩评估和试卷分析,这是一项十分繁琐和容易出错的工作,教师的工作量非常的大。很明显,传统的考试方式已经不再适应现代考试的需要。如今,信息技术的迅猛发展,应用不断扩大,教学和虚拟大学等相继出现,这些应用正逐步深入到千家万户,人们迫切要求利用这些技术来进行在线考试,以减少教师的工作负担并提高工作效率,
第一章 需求分析
计算机技术没有应用到考试上时,组织一次考试只是要经过五步:人工出题,考生考试,人工阅卷,成绩评估和试卷分析,这是一项十分繁琐和容易出错的工作,教师的工作量非常的大。很明显,传统的考试方式已经不再适应现代考试的需要。如今,信息技术的迅猛发展,应用不断扩大,教学和虚拟大学等相继出现,这些应用正逐步深入到千家万户,人们迫切要求利用这些技术来进行在线考试,以减少教师的工作负担并提高工作效率,同时提高考试的质量,从而使考试更趋于公正,客观,更加激发学生的兴趣。例如,目前许多国际著名的计算机公司所举办的各种认证考试绝大部分是采用这种形式。
1.1 课程设计题目
刷题后台管理系统的设计与实现。
随着互联网的高速发展,人们的日常生活已经与互联网息息相关,许多行业受益于互联网时代带来的便利,后台管理系统也变得越来越完善,传统的管理系统已经不能满足当今数据时代的需求,众多的学科和众多的考题无疑使得纯人工的管理不合实际。而互联网+后台刷题管理系统就解决了这个问题,管理员可以通过这个系统来对用户,以及企业学科等题目进行很方便的管理。这样的模式正在一步步成为全新的经营模式,得益于互联网的数据信息能够有效的交互,确保了数据的可靠性及真实性。
1.2 课程设计任务及要求
随着时代的进步,题目的数量也逐渐变得庞大起来,如何管理好题目信息成为一个亟待解决的问题。在当下这个发展快速的信息化时代,越来越多的机构开始建立或者已经使用起题目信息管理系统,利用计算机和网络对信息进行管理已是大势所趋。题库信息系统必将代替之前繁琐的人工操作模式,实现由复杂、冗余性手工操作向人机简便操作的转化,运用计算机完成数据增加、修改、查询、删除以及统计等工作,提高了管理人员工作效率,避免繁重的业务量造成的人为错误,还可运用信息共享加快数据传递。通过对题库管理系统的操作,既节省大量的人力与物力,又不用保存与整理数据文件,将一切信息转化为数字化,提高了工作效率。
管理员方面:实现管理员登录,对用户,题目,权限控制,等拥有绝对权限。
题目录入员:实现登陆,以及题目的查看,题目的录入,等功能。
题目审核员:实现对录入的题目进行审核,是否有错误或者题目不合适了,以及对题目的审核过程进行日志记录。
1.3 系统开发技术和环境
软件体系:B/S结构[1](Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chorm或[InternetExplorer](https://baike.baidu.com/item/Internet Explorer),服务器安装[SQLServer](https://baike.baidu.com/item/SQL Server)、Oracle、MYSQL等数据库。浏览器通过WebServer同数据库进行数据交互。采用B/S结构是因为该结构在功能拓展和维护方面简单、方便,只需要增加或更改网页,并且B/S结构是以浏览为主,录入简单。而图书管理系统网站就是通过web浏览器访问,选用B/S模式最为合适。
1.3.1 idea与Tomcat简介
IDEA[2] 全称IntelliJ IDEA,是用于java语言开发的集成环境(也可用于其他语言),IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
Tomcat[3]服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
1.3.2 JDK1.8简介
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。JDK1.8相较之前的版本有很大的改进,主要有Lambda表达式的引入,流以及日期时间的改进。
1.3.3 Mybatis简介
MyBatis[4]是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的对象映射成数据库中的记录。
1.3.4 JSP简介
JSP[5]是一种开发动态系统的编程语言,它能嵌入在html中使用,也能单独使用,同时具有多种有优点,可以说,JSP已经成为Web脚本技术的先驱。它融合了现代编程语言(如C,JSP)的一些最佳特性。Linux、JSP、Tomcat和MySQL的组合已经成为Web服务器的一种配置标准。JSP可以用来:收集表单数据、生成动态网页、字符串处理、动态输出图片、处理服务器端文件系统、编写数据库支持的网页、会话跟踪控制、处理XML文件、支持利用大量的网络协议、服务器端的其他相关操作[9]。
1.3.5 MySql数据库简介
MySQL[6]是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
1.3.6 Redis简介
Redis是近几年最流行的非关系型数据库。
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
\1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
\2. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
\3. Redis支持数据的备份,即master-slave模式的数据备份。
1.3.7 SQLyog简介
SQLyog 是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库,由业界著名的Webyog公司出品。
1.3.8 性能需求
该后台管理系统在性能功能上达到如下需求:
操作简单、界面友好[4]:在浏览器上运行,使得题目录入和用户管理更加简便,许多功能包括题目录入、题目审核,用户管理等通过点击输入相关信息就可以完成;另外,查询所有题目信息功能也让管理员随时清楚每一道题的具体情况。对常见系统的后台管理的各个方面:添加、修改、查看和查看考题/用户等方面都大体实现,实现了管理员对后台的管理要求以及用户的考试刷题需求。
即时可见:对考题及用户的所有操作有异常的,都会随时在日志中进行记录,达到“即时操作、即时生效”的功能。
系统运行快速、稳定、高效、可靠。
结构上应具有非常好的可扩展性,便于将来的功能扩展和维护。
根据对后台管理系统需求分析的上述要求,后台管理系统的功能模块分为两个大的部分,用户管理端和题目管理端,其中用户端就是查看所有用户,对异常用户可以进行限制登陆,题目管理端包括题目的录入,题目的审核,增加,删除,以及各种企业,学科题目来源进行各种增删改问题。
第二章 系统设计
2.1 系统设计方法三原则
人类在复杂的工程技术系统如能源、交通等建设方面,积累了丰富的经验,为研究复杂系统如管理系统提供了科学的指导性方法论,其主要原则如下:
(1)整体性原则。系统是相互联系,相互作用的诸要素组成的综合体。我们必须从整体和各组成部分的相互关系来考察事物,从整体目标和功能出发,正确处理系统各组成部分之间的相互关系和相互作用。
(2)分解—协调原则。就是把复杂问题化成若干相对简单的子问题以方便求解。若子系统的问题比较复杂,还可以再分。但在处理各类子问题时,必须根据系统的整体功能和目标,协调各子系统的行为、功能与目标,以保证整体功能目标的实现。
(3)目标优化原则。所谓目标优化原则对简单的系统来说,是求最优解,对复杂系统来说,求的是满意解。一定要注意,目标优化原则并不简单是求最优解的问题。
这里最需要指出的是:以上三原则是系统方法中处理复杂系统问题的三个主要原则,并非是全部原则。在处理实际问题时,还需要在这些原则的指导下,根据问题的特点,确定求解的具体方法和策略。
2.2 系统的功能模块
在线系统方便了题目信息管理,真正使信息得以共享,改变了人们的工作和生活方式。在线管理题目信息是公司管理员管理题目信息提高工作效率的有效方式,同时也为题目的信息保存提供了有力保障。在发展速度快速的今天,人们对题目信息管理的需求有了更大的要求,而题目信息资源庞大、内容参差不齐等特点恰好满足这种要求。所以题目信息管理系统正慢慢成为一种全新的在线工作方式。也正是由于互联网的数据信息能够进行有效交互,确保了在线数据的可靠性。
系统的功能模块分成三大部分,第一部分是平台系统管理信息管理部分,第二部分是题目信息部分,以及第三部分是刷题会员的管理。在平台系统管理信息管理部分可以分成部门管理,用户管理,角色管理,模块管理,以及系统日志管理部门等功能。如图2-1所示。
图2-1 平台系统管理功能模块图
题库信息管理的功能模块分为五个部分,题目学科管理,题目类型管理,企业管理,题目管理以及题目审核日志的管理。系统的功能模块图如图2-2所示。
图2-2 题目信息管理员管理功能模块图
会员信息管理功能模块分为会员账号管理和会员答题信息管理两个部分。系统的功能模块图如图 2-3 所示:
图2-3 题目信息管理员管理功能模块图
2.3 前台页面的设计
前台页面采用Bootstrap[7]前端框架来进行对页面的设计。采用bootstrap的栅格系统进行布局,Bootstrap包含了一个响应式的、移动设备优先的、不固定的栅格系统,可以随着设备或视口大小的增加而适当地扩展到12列。它包含了用于简单的布局选项的预定义类,也包含了用于生成更多语义布局的功能强大的混合类。Bootstrap内置了一套响应式、移动设备优先的流式栅格系统,随着屏幕设备或视口(viewport)尺寸的增加,系统会自动分为最多12列。
我在这里是把Bootstrap中的栅格系统叫做布局。它就是通过一系列的行(row)与列(column)的组合创建页面布局,然后你的内容就可以放入到你创建好的布局当中。
栅格系统的实现原理非常简单,仅仅是通过定义容器大小,平分12份(也有平分成24份或32份,但12份是最常见的),再调整内外边距,最后结合媒体查询,就制作出了强大的响应式栅格系统。Bootstrap框架中的栅格系统就是将容器平分成12份。
2.4 Mybatis框架的使用
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java对象映射成数据库中的记录。
我们把Mybatis的功能架构分为三层:
(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
2.5 log4j日志打印技术的使用
Log4j[8]是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
2.6 系统的过滤器和监听器的使用和设计
2.6.1过滤器的使用
JSP和Servlet[9]中的过滤器都是Java类。
过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。可以将一个或多个过滤器附加到一个Servlet或一组Servlet。过滤器也可以附加到JavaServerPages(JSP)文件和HTML页面。
过滤器是可用于Servlet编程的Java类,可以实现以下目的:在客户端的请求访问后端资源之前,拦截这些请求。在服务器的响应发送回客户端之前,处理这些响应。通过过滤器来对整个页面设置编码格式,确保数据的正常流转。
2.6.2监听器的使用
Servlet监听器[10]用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。Listener是Servlet的监听器,可以监听客户端的请求、服务端的操作等。
web服务器按照它们在jsp页面中注册顺序来加载和注册这些servlet事件监听器。servlet事件监听器的注册和调用过程都是由web容器自动完成的,当发生被监听对象被创建,修改,销毁等事件时,web容器将调用与之相关的servlet事件监听器对象的相应方法。
在该系统中可以通过通过对监听器的使用,监听前台页面向后台发送请求的数据,并以日志文件的形式实时显示在控制台中。保证了该系统的安全性和实现监听数据的行为。
2.7 系统实体类设计
2.7.1 后台业务部分
\1. 目录(学科目录)实体类Catalog.java。
此类里面存储目录类的成员变量、构造方法,用来创建Catalog对象;
2.企业实体类Company.java。
此类里面存储企业类的成员变量、构造方法,用来创建Company对象。
\3. 学科实体类 Course.java
此类里面存储学科类的成员变量,构造方法,用来创建 Course 对象。
\4. 题目实体类 Question.java
此类里面存储题目类的成员变量,构造方法,用来创建 Question对象。
\5. 题目选项实体类 QuestionItem.java
此类里面存储题目选项类的成员变量,构造方法,用来创建 QuestionItem对象。
2.7.2 系统业务部分
\1. 部门实体类 Dept.java
此类里面存储部门类的成员变量,构造方法,用来创建 Dept对象。
\2. (功能)模块类 Module.java
此类里面存储(功能)模块类的成员变量,构造方法,用来创建 Module对象。
\3. 角色类 Role.java
此类里面存储的是角色的成员变量,构造方法,用来创建 Role对象。
\4. 用户类 User.java
此类里面存储的是用户的成员变量,构造方法,用来创建 User对象。
2.8 系统接口设计
2.8.1 持久层接口
1.后台数据操作。
(1)“目录表信息数据库操作”接口:CatalogDao。
(2)“企业表数据库操作”接口:CompanyDao。
(3)“学科表数据库操作”接口:CourseDao。
(4)“题目表数据库操作”接口:QuestionDao。
(5)“题目选项表数据库操作”接口: QuestionItemDao。
\2. 系统数据操作
(1)“部门表信息数据库操作”接口:DeptDao。
(2)“模块表信息数据库操作”接口:ModuleDao。
(3)“角色表信息数据库操作”接口:RoleDao。
(4)“用户表信息数据库操作”接口:UserDao。
2.8.2 业务层接口
\1. 后台业务层接口
(1)“目录业务层操作”接口:CatalogService。
(2)“企业业务层操作”接口:CompanyService。
(3)“学科业务层操作”接口:CourseService。
(4)“题目业务层操作”接口:QuestionService。
(5)“题目选项业务层操作”接口: QuestionItemService。
\2. 系统业务层接口
(1)“部门业务层操作”接口:DeptService。
(2)“模块业务层操作”接口:ModuleService。
(3)“角色业务层操作”接口:RoleService。
(4)“用户业务层操作”接口:UserService。
2.9 系统接口实现类设计
2.9.1 dao层接口实现
Dao层的实现全部交由配置文件进行配置sql语句,然后在mybatis的配置文件中进行配置,在系统启动时会自动帮我们创建实现类。
2.9.2 service层接口实现
\1. 后台部分接口实现类
(1). 目录service层接口:CatalogService,目录service层接口类的实现类是CatalogServiceImpl。
(2). 企业service层接口:ComapnyService,企业service层接口类的实现类是ComapnyServiceImpl。
(3). 学科service层接口:CourseService,目录service层接口类的实现类是CourseServiceImpl。
(4). 题目service层接口:QuestionService,题目service层接口类的实现类是QuestionServiceImpl。
(5). 题目选项service层接口:QuestionItemService,题目选项service层接口类的实现类是QuestionItemServiceImpl。
\2. 系统业务层接口实现类
(1). 部门service层接口:DeptService,部门service层接口类的实现类是DeptServiceImpl。
(2). 模块service层接口:ModuleService,模块service层接口类的实现类是ModuleServiceImpl。
(3). 角色service层接口:RoleService,角色service层接口类的实现类是RoleServiceImpl。
(4). 用户service层接口:UserService,用户service层接口类的实现类是UserServiceImpl。
2.10 系统数据库设计
数据库是由多个相互关联的数据表组成,本数据库利用MySQL实现并完成数据库的设计,在本系统中包括如下:确定数据库内所有数据表的名称及表内所含字段的名称、类型、长度、主键及是否为空;确定数据库文件是否需要建立索引、是否具有外键数据表等等。
2.10.1 数据库结构设计
表结构的设计是系统重要的一环,一个好的系统一定离不开好的数据库表结构。因此软件开发的初始阶段设计好的数据库尤为重要。该系统的数据库设计如图 2-1 所示:
表2-1 数据库结构设计
2.10.2 数据库表设计
1.管理员表(USER)用于存储管理员的相关内容,如表2-2所示:
表2-2 管理员表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | uid | 用户编号 | int | 非空,主键 | |
2 | uname | 用户名 | varchar | 20 | 必填,非空 |
3 | pwd | 密码 | varchar | 20 | 必填,非空 |
4 | age | 年龄 | varchar | 20 | 非空 |
5 | sex | 性别 | varchar | 20 | 非空 |
6 | 邮件 | varchar | 20 | 非空 | |
7 | phone | 电话号码 | varchar | 20 | 非空 |
2.学科目录表(st_catalog)
表2-3 学科目录表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | id | 目录id | varchar | 50 | 非空,主键 |
2 | name | 目录名称 | varchar | 20 | 非空 |
3 | remark | 描述 | varchar | 20 | 非空 |
4 | state | 状态 | varchar | 20 | 非空 |
5 | create_time | 创建时间 | date | 20 | 非空 |
6 | course_id | 所属学科的id | varchar | 20 | 非空 |
3.企业表(st_company)
表2-4 企业表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | id | 企业id | int | 非空,主键 | |
2 | name | 名称 | varchar | 20 | 必填,非空,唯一 |
3 | expiration_date | 注册日期 | date | 20 | 必填,非空 |
4 | Address | 地址 | varchar | 20 | 必填,非空 |
5 | license_id | 营业执照编号 | varchar | 20 | 必填,非空 |
6 | representative | 法人 | varchar | 20 | 非空 |
7 | phone | 电话 | varchar | 20 | 非空 |
8 | company_size | 规模 | varchar | 20 | 非空 |
9 | industry | 所属企业类型 | varchar | 20 | 非空 |
10 | remarks | 备注/描述 | varchar | 非空 | |
11 | state | 状态 | int | 非空 | |
12 | city | 所在地(城市) | varchar | 非空 |
4.课程表(st_course)
表2-5 课程表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | id | 目录id | varchar | 非空,主键 | |
2 | name | 目录名称 | varchar | 20 | 非空 |
3 | remark | 描述 | varchar | 20 | 非空 |
4 | state | 状态 | varchar | 20 | 非空 |
5 | create_time | 创建时间 | date | 20 | 非空 |
5.题目表(st_question)
表2-6 题目表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | id | 题目表 | int | 非空,主键 | |
2 | company_id | 企业id | varchar | 20 | 必填,非空,唯一 |
3 | catelog_id | 题目所属目录id | date | 20 | 必填,非空 |
4 | remark | 题目简介 | varchar | 20 | 必填,非空 |
5 | subject | 题干(问题) | varchar | 20 | 必填,非空 |
6 | analysis | 题目分析 | varchar | 20 | 非空 |
7 | type | 题目类型 | varchar | 20 | 非空 |
8 | difficulty | 题目难易程度 | varchar | 20 | 非空 |
9 | is_classic | 是否经典面试题 | varchar | 20 | 非空 |
10 | state | 题目状态 | varchar | 非空 | |
11 | review_state | 审核状态 | varchar | 非空 | |
12 | create_time | 上传时间 | date | 非空 | |
13 | picture | 图片 | varchar | 非空 |
6.题目选项表(st_question_item)
表2-5 题目选项表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | id | 编号 | varchar | 非空 | |
2 | question_id | 题目id | varchar | 20 | 非空 |
3 | content | 选项内容 | varchar | 20 | 非空 |
4 | picture | 选项图片 | varchar | 20 | 非空 |
5 | is_right | 是否正确答案 | varchar | 20 | 非空 |
7.部门模块表(ss_dept)
表2-6 部门模块表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | id | 编号 | varchar | 20 | 非空 |
2 | dept_name | 部门名称 | varchar | 20 | 非空 |
3 | parent_id | 所属部门id | varchar | 20 | 非空 |
4 | state | 状态 | int | 20 | 非空 |
8.模块表(ss_moudle)
表2-7 模块表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | id | 编号 | varchar | 非空 | |
2 | parent_id | 所属模块id | varchar | 20 | 非空 |
3 | name | 名称 | varchar | 20 | 非空 |
4 | c_type | 类型 | long | 20 | 非空 |
5 | state | 状态 | long | 20 | 非空 |
6 | curl | 请求url | varchar | 非空 | |
7 | remark | 描述 | varchar | 非空 |
9.角色模块表(ss_role)
表2-8 角色模块表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | id | 编号 | varchar | 50 | 非空 |
2 | name | 名称 | varchar | 20 | 非空 |
3 | remark | 描述 | varchar | 20 | 非空 |
4 | create_time | 创建时间 | date | 20 | 非空 |
10.用户模块表(ss_user)
表2-9 用户模块表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | id | 编号 | varchar | 非空,主键 | |
2 | 邮箱 | varchar | 20 | 必填,非空,唯一 | |
3 | user_name | 姓名 | varchar | 20 | 必填,非空 |
4 | password | 密码 | varchar | 20 | 必填,非空 |
5 | state | 状态 | long | 20 | 必填,非空 |
6 | gender | 性别 | varchar | 20 | 非空 |
7 | telephone | 电话 | varchar | 20 | 非空 |
8 | birthday | 出生年月 | date | 20 | 非空 |
9 | join_date | 入职时间 | date | 20 | 非空 |
10 | dept_id | 部门id | varchar |
11.员工信息表(WORKER)用于存储员工的相关信息,如表2-2所示:
表2-10 员工信息表
序号 | 字段名称 | 字段说明 | 类型 | 位数 | 属性 |
---|---|---|---|---|---|
1 | wid | 员工编号 | int | 非空,主键 | |
2 | wname | 员工姓名 | varchar | 20 | 必填,非空,唯一 |
3 | wage | 员工年龄 | varchar | 20 | 必填,非空 |
4 | wsex | 员工性别 | varchar | 20 | 必填,非空 |
5 | wadress | 员工住址 | varchar | 20 | 必填,非空 |
6 | wphone | 手机号码 | varchar | 20 | 非空 |
7 | wbirth | 出生日期 | varchar | 20 | 非空 |
8 | wjob | 工作名称 | varchar | 20 | 非空 |
9 | wemail | 邮箱地址 | varchar | 20 | 非空 |
第三章 详细设计
3.1 题目管理系统的登录界面
后台的用户登录的界面如图所示:
页面如图3-1所示:
图3-1 管理系统的登录界面
3.2 题目管理系统的主界面
用户登录成功后方可进入主界面,拥有的权限不同主界面不同。
超级管理员登录成功后的主页面如图3-2所示:
图3-2 题目信息管理系统的主页面
3.3 部门管理界面
用于对部门的信息进行管理和分配角色,不同的部门负责不同的事项。
页面如图3-3所示:
图3-3 部门管理界面
3.4 角色管理界面
用于管理和查看所有后台用户可以具有的角色的信息。不同角色具有不同的权限,权限低的人无法查看以及对用户进行管理。
页面如图3-4所示:
图3-4 角色管理信息界面
3.5 模块管理界面
模块是当前后台题目系统所具有的功能,模块越多,功能越强大。同样,只有具有该权限的人才能操作这些模块。
页面如图3-5所示:
图3-5 模块管理界面
3.6 题目学科界面
题目可以来源于那些学科。如图3-6所示:
图3-6 题目学科信息界面
3.7 题目类型管理界面
题目可以属于那些目录类型。如图3-7所示:
图3-7 题目类型信息界面
3.8 企业管理界面
题目来源于那些企业,如图3-8所示:
图3-8 企业管理信息界面
3.9 题目管理界面
对题目进行管理以及题目选项的管理,并可以导出题目生成文件,如图3-9所示:
图3-9 题目信息管理界面
3.10 日志信息的输出
管理员在操作该后台系统时,操作信息将会在控制台打印出来,确保系统的安全性要求。
如图3-10所示:
图3-10 日志信息查看
第四章 系统测试
为了更好的完成每个模块的功能测试,运用到了单元测试等一系列的方法。本系统的测试主要采用黑盒测试[10]中的功能测试,测试用例设计采用等价类划分进行设计。
4.1 功能测试结果
4.1.1 后台用户登录
登录功能测试如表4-1、表4-2、表4-3所示:
表4-1 登录描述
用例编号 | 101 |
---|---|
功能名称 | 管理员登录 |
功能描述 | 用于判断、管理员登录信息 |
测试方法 | 黑盒测试 |
表4-2 登录等价类划分
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|---|---|---|---|
用户名 | 用户名正确 | 1 | 用户名有误 | 3 |
密码 | 密码输入正确 | 2 | 密码输入有误 | 4 |
表4-3 测试用例设计
用例编号 | 测试数据 | 预期结果 | 覆盖范围 | 是否通过 |
---|---|---|---|---|
1.1 | Tom,123 | 登录成功 | 1、2 | P |
1.2 | Tom,123 | 系统提示输入错误 | 1、4 | P |
1.3 | Alan,456 | 系统提示输入错误 | 2、3 | P |
1.4 | Alan,456 | 系统提示输入错误 | 3、4 | P |
4.1.2 后台用户功能界面
后台用户功能界面测试如表4-4所示:
表4-4 用户功能界面测试
用例编号 | 102 | 功能名称 | 查看各个功能 | |
---|---|---|---|---|
功能描述 | 是否能查看到各个功能 | |||
测试步骤 | 登录主页面 | 输入用户名、密码进行登录 | ||
浏览 | 是否能查看到各个功能 | |||
测试结果 | 通过 | 发现问题 | 无 | |
4.1.3 添加功能测试
添加员工信息功能测试如表4-5所示:
表4-5 添加功能测试
用例编号 | 103 | 功能名称 | 添加 | |
---|---|---|---|---|
功能描述 | 用户在浏览器界面添加各个模块信息 | |||
测试步骤 | 登录主页面 | 输入用户名、密码进行登录 | ||
添加员工信息 | 能否在数据库里查询到该各个模块信息 | |||
测试结果 | 通过 | 发现问题 | 无 | |
4.1.4 查询功能测试
查询信息界面测试如表4-6所示:
表4-6 查询功能测试
用例编号 | 104 | 功能名称 | 查询 | |
---|---|---|---|---|
功能描述 | 用户(超级管理员)查询数据库中的所有用户信息 | |||
测试步骤 | 登录主页面 | 输入用户名、密码进行登录 | ||
输出 | 浏览器界面显示所有数据库中存储用户的信息 | |||
测试结果 | 通过 | 发现问题 | 无 | |
4.1.5 修改功能测试
修改信息功能界面测试如表4-7、表4-8、表4-9所示:
表4-7 修改信息功能测试
用例编号 | 105 | 功能名称 | 管理员修改用户信息 |
---|---|---|---|
功能描述 | 管理员修改数据库中的用户信息 | 测试方法 | 黑盒测试 |
表4-8 等价类划分
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|---|---|---|---|
要修改的用户姓名 | 输入要修改的用户姓名 | 1 | 编号输入错误 | 3 |
修改后的用户年龄 | 输入修改后的用户年龄 | 2 | ||
修改后的用户手机号码 | 输入修改后的手机号码 | 4 | ||
修改后的家庭住址 | 输入修改后的家庭住址 | 5 | ||
修改后的角色 | 输入修改后的用户角色 | 6 | ||
修改后的性别 | 输入修改后的性别 | 7 | ||
修改后的出生日期 | 输入修改后的出生日期 | 8 |
表4-9 测试用例设计
用例编号 | 测试数据 | 预期结果 | 覆盖范围 | 是否通过 |
---|---|---|---|---|
1.1 | 张三 | 未查找到该用户信息 | 1、3 | P |
1.2 | 李四,18,666,河南省,项目经理,男,2000.1 | 修改成功 | 1、2、4、5、6、7、8 | P |
4.1.6 删除功能测试
删除用户信息功能界面测试如表4-10、表4-11、表4-12所示:
表4-10 删除用户信息功能测试
用例编号 | 106 | 功能名称 | 管理员删除用户信息 | |
---|---|---|---|---|
功能描述 | 管理员删除表中的用户信息 | |||
测试 | 输入 | 要删除的用户名称 | ||
输出 | 删除成功 | |||
测试结果 | 通过 | 发现问题 | 无 | |
表4-11 等价类划分
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|---|---|---|---|
要删除的用户姓名 | 输入用户id | 1 | 主题名称为空 | 3 |
输入用户id介绍 | 2 | 主题id为空 | 4 |
表4-12 测试用例设计
用例编号 | 输入 | 预期输出 | 覆盖范围 | 是否通过 | |
---|---|---|---|---|---|
用户名称 | Wid | ||||
1.1 | 张三 | 1 | 用户信息删除成功 | 1、2 | √ |
第五章 课程设计总结与体会
“实践出真知”通过我们的亲手实践,使我们掌握的知识不再是纸上谈兵,不但加深了对知识的理解,也让我们养成了自主学习的好习惯。时光匆匆,转眼间课程设计的时光已经快要过去,有些不舍,有些激动。通过对课程设计的实践,更加坚定了我对互联网的信心。随着互联网技术的大力发展,人们的日常生活已经离不开网络。未来时代我们的生活和工作一定会更加借助于信息技术的发展,越来越方便、快捷、安全、高效,在线网络的发展过程以及当下的应用情况和发展趋势,我们可以充分地相信网络技术将极大的改变我们的生活和工作方式,使我们的生活变得更加美好、舒适。
5.1 课程设计总结
本次课程设计按照软件开发设计方法,实现了一个刷题后台管理系统。该管理系统采用Mybatis技术,JSP技术以及前端框架等技术,使用数据库MySQL和企业级开发工具idea,实现了查询,修改密码等功能。通过该管理系统,管理员可以进一步添加题目信息、修改题目信息、删除题目信息以及更新题目信息的功能。通过对该系统的测试,完善了系统的设计的严谨性。并且所有功能都可以正常使用。
在信息化的今天,依靠传统人力来进行信息的管理存在太多的弊端,浪费了大量的时间以及金钱。通过人工管理、纸质记录等方式不利于信息的长久保存。所以传统的信息管理必然随着社会的发展而逐渐退出历史舞台。通过管理系统可以极大的解决这一问题,更加高效、更加快捷地对题目信息进行增删改查操作。能供即时掌握题目信息,具有极强的使用价值。
5.2 心得体会
“纸上得来终觉浅,绝知此事要躬行”通过这次课程设计不但加深了相关知识的理解和掌握,而且也让我了解了软件开发的过程,培养了我自主学习的习惯。位我以后的学习拓宽了道路,也为我的人生点明了方向。
在这次课程设计中,我采用了本学习学习到JSP技术开发的刷题后台管理系统,实现了增删改查,文件上传,生成题目报表等功能。在设计整个系统时采用三层架构的模式,从而使整个系统具有“低耦合,高内聚”的特点,也让整个系统巡行起来更加的流畅自如。在数据库设计方面,符合三大范式的要求,数据的冗余度较低,各个字段名设计合理更加有利于数据的读写操作。同时在数据层方面采用了Mybatis框架,消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的映射成数据库中的记录。经过设计,加强了自己之前所学的java知识,也仍自己懂得了程序设计思想的关键所在。通过课程设计让我看到了自己的不足和缺点,应该主动了解和掌握更多的知识。不断丰富自己的经验和熟练自己的技术。
除了学习新的知识的收获外,在编写过程中对于功能的实现、一些异常的处理还有界面的设计。也有着很深的感触。考虑用户的功能需要,分析不同的用户都是要通过网站做什么;对于数据库的操作来说,要向数据库中插入数据,还是更新还是删除。而且要考虑到各个方面异常的处理,比如用户名、密码错误怎么办,输入的信息错误怎么处理,成功更新数据库信息要弹出什么提示框,要转入那个页面等,对于异常处理者需要考虑到出现错误时怎样进行处理,跳转到那个页面进行错误信息的提示。
本次课程设计,不仅提高了我的逻辑思考、实践操作的能力, 而且也增强了我的团队合作意识。更重要的是,我还学会了很多程序学习的好方法,这是一笔宝贵的财富。此外也使我了解到做好一个完整的系统,首先要先对系统的整体框架进行建立,然后分步进行各个系统的实现。面对日益激烈的社会工作岗位竞争,我们要不断地学习、上机,反复扩充自己的专业课知识。最重要的是要有一个清晰的架构,最后进行一系列的分析,最后在进行整个系统的实现。
从现在起,我会积极培养自己对程序设计的兴趣,在日后的专业课学习过程中,多与老师和同学交流,共同提高,共同进步。
参考文献
[1] 陈庆荣. 基于B/S模式应用的研究与设计[J]. 福建电脑, 2018, 34(02): 125-126+67.
[2] . 本系列教程从 IntelliJ IDEA 的安装、卸载、软件设置、项目配置等各个方面进行讲解。通过本系列教程的学习,也希望你能爱上 IntelliJ IDEA,爱上它的体贴。
[3] 余炀, 曲毅, 孙亦乐. 基于ApacheTomcat的一站式Java应用服务器解决方案[J]. 中国金融电脑, 2018(01): 59-63.
[4] 王天顺, 程杰, 张志文. MyBatis在《Web中间件技术》课程中的应用[J].教育教学论坛, 2019(38): 204-205.
[5] 韩思凡. Web开发中的JSP与HTML的基础应用[J]. 科学技术创新, 2020(14): 71-72.
[6] 王珊. 数据库系统概论.
[7] 胡雅丽. 基于BootStrap+JavaScript语言简易计算器的实现[J]. 太原学院学报(自然科学版), 2020, 38(01): 73-76.
[8] 郭节. 基于Log4j改进的日志存储应用研究[J]. 软件导刊, 2011, 10(01): 60-61.
[9] 戎戟. Servlet过滤器应用分析[C]. 办公自动化学会. OA’2007办公自动化学术研讨会论文集. 办公自动化学会: 北京办公自动化杂志社, 2007: 160-162. 崔天鑫. Servlet监听器在基于移动Web在线考试系统中的应用[J]. 电脑编程技巧与维护, 2019(10): 51-53+82.
[10] 滕建华. Web系统功能测试一体化课程开发探索[J]. 信息与电脑(理论版), 2017(24): 232-234.
致谢
在这里我要感谢辛苦帮助我的老师和同学,正是由于他们的无私帮助,我才能顺利完成这次的程序设计。是你们一次又一次帮我讲解在设计过程中遇到的难点和复杂的逻辑结构。至此我依然能够记得老师耐心细致的在讲台上认真讲解本次课程设计的要点,面对同学们的疑惑和不解。您总是不厌其烦耐心的讲解。
古人言“古之学者必有师。师者,所以传道授业解惑也”正是由于老师的辛苦付出,才有我的今天,才有我今日的成果。所以在这里我要感谢我的指导老师。感谢他细致认真的指导和教导以及同学和朋友的无私帮助。
老师是知识的传播者、人类精神大厦的缔造者。没有她们的辛苦教育和教导,我们将会犹如苍茫大海中的孤帆、黑夜中迷失方向的孩童。正是老师的出现给我们拨开云日,指明了方向,才能让我们在知识的海洋里尽情的漫游。老师给我们传授以知识但是也离不开同学和朋友的帮助,正如法国著名作家雨果,“结交志同道合的朋友是你一生的财富”;在做这个项目中不免遇到各种困难,但是同学们相互帮助共同进步的学习氛围,使我深受感动。她们甘愿放弃自己休息的时间来为同学们解疑答惑,对待在困难的难题相互交流,知无不言,言无不尽。在这里请允许我向帮助过我的老师,同学和朋友深深地说一句感谢。
在历时将近2个星期时间终于把JavaWeb设计项目完成了,在这段充满奋斗的历程中,带给我的学习生涯无限的激情和收获。在完成项目的过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。在自习室查找资料的时候,同学们给我提供了很多方面的支持和帮助,尤其是我的指导老师,没有她的帮助,我也不会这么快完成我的项目,再次我向指导和帮助过我的老师们表示最衷心的感谢!至此,我也要感谢我的朋友和同学,她们在我的项目的过程中给予我了很多有用的建议和素材,也在项目的排版和设计过程中提供热情和帮助。
更多推荐
所有评论(0)