java基于ssm的学校教务管理系统的设计与实现

学校教务管理系统的设计与实现

摘 要
学校教务管理信息化是提高办公效率的主要途径,随着我国高等教育的快速发展,学校办学规模的不断扩大,在校学生人数不断增多,办学层次出现多元化,由一地办学发展到多地多点办学,同时进一步推行学分制。这些变化是教务管理部门的管理任务越来越繁重,不仅增加了工作量,更增加了工作难度和复杂度,按传统的管理模式,只靠有限的工作人员已无法进行学校管理,学校教务管理信息化已成为教学管理现代化的迫切需求。通过完善管理信息化的制度,可以规范管理,保证教学效果,提高管理效率,有效地提学校教务管理工作的规范化和现代化水平,使教务管理工作走上良性循环的轨道。
经过分析,我们使用 SUN公司的JSP开发工具, 强大的MYSQL查询语言实现建立关系数据库,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成满意的可行系统。设计研发了一套基于MVC的学校教务管理系统。该系统运用的开发环境是MyEclipse,使用的数据库管理系统是Mysql,使用的JavaWeb服务器是Apache,Tomcat,运用了MVC的思想。为了迎合现在的互联网的形势。
学校教务管理系统采用的是B/S的结构。系统管理员具有用户信息的管理、课程的管理、教师的管理、学生的管理等功能。本系统界面简单直观,易于操作和使用,交互性强。
关键词:JSP,MYSQ,数据库,学校教务管理

Design and Implementation of Community Management System

Abstract
With the continuous development and wide application of computers, people’s working efficiency has been constantly improved. The development of the Internet has shortened the distance between people. How to make full use of the Internet is a question of common concern. This article mainly introduced the realization method about the small area management system, designed and planned the small area management system webpage, carries on the management by the Internet form each kind of information.
After analysis, we use the SUN’s JSP development tools, powerful MYSQL query language to build a relational database, use of its object-oriented development tools, especially data window this can convenient and simple manipulation database intelligent objects, first of all, establish a system application prototype in a short time, then, to the initial prototype system needs iteration, constantly revised and improved, until form satisfactory feasible system. Design and develop a set of campus community management system based on MVC. The development environment used in this system is MyEclipse, the database management system used is Mysql, the JavaWeb server used is Apache, Tomcat, and the MVC idea is applied. In order to meet the current situation of the Internet.
B/S structure is adopted in the cell management system. System administrator has owner management, corridor information, room information, fare information, payment information, repair management, message management, complaints management and other functions. The system interface is simple and intuitive, easy to operate and use, interactive.
Key words: JSP MYSQL database Community management
目 录
摘 要 I
Abstract II
第1章 项目概述 1
1.1 问题描述 1
1.2 项目目标 1
1.3 项目适用范围 1
1.4 涉众 1
第2章 需求分析 2
2.1 业务需求 2
2.1.1 业务流程 2
2.1.2 业务对象 2
2.2 功能性需求 3
2.3 非功能性需求 9
2.4 运行环境 9
第3章 系统设计 11
3.1 技术路线 11
3.1.1 JSP技术 11
3.1.2 B/S结构 11
3.1.3JAVA简介 11
3.2 软件体系结构设计 12
3.2.1 功能结构 12
3.2.2 系统架构 12
3.3 数据库设计 13
3.3.1数据库概念设计 13
3.3.2 表的详细设计 15
3.4 用例实现 19
3.4.1 用户注册用例实现 19
3.4.2 用户登录用例实现 20
3.4.3 普通用户发起活动用例实现 20
3.4.4 管理员审批活动用例实现 21
3.4.5 管理员用户修改个人信息用例实现 21
3.4.6 管理员创建小区用例实现 22
3.5 对象设计 22
3.5.1模块设计 22
3.5.2业务实体类的设计 23
3.5.3业务处理类的设计 23
3.5.4类的描述 24
第4章 系统实现 28
4.1核心功能实现 28
4.1.1普通用户登录功能的实现 28
4.1.2普通用户发起活动功能的实现 29
4.1.3管理员用户审批活动功能的实现 31
4.1.4普通用户修改个人信息功能的实现 33
4.2 关键技术难点与解决方案 35
4.2.1 网页部分技术难点 35
4.2.2统一网站风格 36
4.2.3云平台站点的搭建 36
第5章 系统测试 37
5.1 功能测试 37
5.2 非功能测试 38
5.3 测试总结 39
第6章 结论与展望 46
参考文献 47
致 谢 48

第1章 项目概述
1.1 问题描述
在学校,教务管理工作是非常重要的一项工作,它负责整个学校的日常教学安排,学生的信息管理等等。以前都是人工进行操作。随着学校规模扩大,教务处的教务管理工作量大大加重。随着计算机应用的发展,教务工作者急切希望能够将大部分繁琐的工作交由计算机的处理,已减轻人工的压力并提高工作效率。而计算机的普及更加快了教务管理系统的产生。
上一代的教务管理系统主要为单机单用户的系统,其数据库主要采用Foxbase或FoxPro,系统开发环境也是数据库内置的开发工具。其特点是单机单用户方式,开发简单,能充分利用数据库的特性。其缺点是开发出的系统依赖性强,运行必须依托数据库环境;不容易升级与扩展;无法实现数据的共享与并行操作;代码重用性差。
随着计算机网络的发展,特别是校园网的建立。原有教务管理系统数据共享差的问题更加突出,而新需求的提出也越来越多,越来越频繁。这就要求系统在可扩展性和标准化的要求更高。而原有的系统由于其与生俱来的缺点而无法在适应现有的需求了。
因此,使用现在的新技术,开发出适应新的需求的新系统的任务刻不容缓。
1.2 项目目标
学校教务管理系统旨在改善教务管理系统,提高管理效率,实现大学校园教务管理的电子化,协同化,网络化,使教务部门能更有效地管理和监督各院系的教学、学籍、成绩、课表等其他事务管理,使管理人员及时而充分地获取自己的工作日程、通知、会议等,更好地向社会宣传学校教务的工作成果,促进校内外交流。
《高校教务管理系统》系统是高校教学、教务管理应用软件。熟悉教务管理工作的全部过程,从教务工作的实际出发,解决工作中关键性的难点问题,并充分利用计算机网络功能,实现教务工作全过程的计算机管理,帮助具体管理人员从复杂烦琐工作中解放出来。使得教务管理走向无纸化办公和规范化、现代化管理。
1.3 项目适用范围
该管理系统广泛适用于各个高校,和学校,以及对整个学校建设和信息化管理表示关心的群体,个人,组织。
1.4 涉众
本系统主要分两种用户类型。
(1)系统教师用户:用户登录后,可以修改个人信息,查询自己的课程,和添加详细的课程,安排排课信息。
(2) 系统学生用户:用户登录后,可以修改个人的信息,并且可以查询自己的选课的成绩,还可选择自己的选修和必修课程。
(3) 系统管理员:主要通过后台来管理本系统所有的功能,具有最高权限,可以对信息增删改查。
第2章 需求分析
2.1 业务需求
2.1.1 业务流程
学校教务管理系统的总体业务流程如图2.1所示。
在这里插入图片描述

图2.1 总体业务流程图
2.1.2 业务对象
通过对系统的需求分析,构造出了三个实体类,每个实体类之间的关联。从而绘制出相应的类图。用户通过管理员和用户通过ID进行区分和管理,管理员可以对学生和教师进行操作和管理。对象角色之间关系图的领域模型如图2.2所示。
在这里插入图片描述

2.2 功能性需求
2.2.1 用例概述
在图2.3高层用例图中抽取了满足用户基本业务需求的基本用例。这些用例可以从用户登录、课程管理、系统管理三个方面完成整个管理系统的正常运作。
在这里插入图片描述

图2.3高层用例图
用例摘要描述如表2.1所示。
表2.1用例摘要描述
用例标识(UC) 用例名称 摘要描述
1.0 注册 用户进行系统注册,申请系统的使用权
1.1 登录 使用系统前的身份验证
1.2 查看课程信息 用户可以查找相关课程信息,并可以获得包括课程名、教师、课程介绍等信息。
1.3 课程的添加 教师可以发布课程。
1.4 录入成绩 教师可以根据自己的课程录入成绩
1.5 课程审核 管理员可以对教师添加的课程进行审核。
1.6 个人资料管理 对个人密码进行设置。
1.7 教师管理 管理员可以对教师修改添加编辑
2.0 班级管理 管理员可以对班级修改添加编辑
2.1 课程管理 管理员可以对课程修改添加编辑
2.2 排课 管理员可以对课程进行排课
2.3 查看成绩 学生可以查看成绩
2.2.2 用例描述
(1)登录用例
普通用户可以通过正确的用户名、密码登录到系统。细化用例图如图2.4所示。

图2.4登录用例图
普通用户登录用例描述如表2.2所示。
表2.2 登录用例
用例标志 1.1
用例名称 登录
参与者 用户
前置条件 已经在系统注册过
后置条件 正常的显示网站内容
用例概述 使用系统前的身份验证
基本时间流 1.用户在系统首页点击用户登录按钮。
2.用户输入用户名,密码后点击登录按钮。
3.系统校验用户名密码。
4.跳转到点击用户登录按钮的之前的页面。
5.网页显示当前用户名以及个人主页。
备选时间流 4a.输入的用户名或密码不匹配
(2)学生选课用例
学生可以通过教务管理系统选择自己的课程。细化用例图如图2.5所示。
在这里插入图片描述

图2.5 学生选课用例图
学生选课信息用例描述如表2.3所示。
表2.3 学生选课用例
用例标志 1.5
用例名称 学生选课
参与者 学生用户
前置条件 已经使用学生用户正常登录
后置条件 选课中显示发起的选课操作
用例概述 学生使用系统发起一个选择课程的操作
基本时间流 1.学生用户登录系统。
2.学生点击选课模块。
3.系统跳转到所有课程界面。
4.学生用户选择一个课程,点击提交,选课成功
备选时间流 4a 选课未打钩,点击提交按钮显示,选课失败。
(3)学生查看成绩用例
学生可以通过教务管理系统来查看自己的课程成绩。用例描述如表2.4所示。

表2.4 学生查看成绩用例
用例标志 1.6.1
用例名称 学生查看成绩信息
参与者 学生用户
前置条件 已使用学生用户身份登录
后置条件 查看成绩
用例概述 学生查看成绩
基本时间流 1.学生用户登录系统后。
2.点击成绩查询模块。
3.系统显示课程成绩的详细内容。

备选时间流
(4)教师添加课程用例
教师用户可以通过系统界面添加课程。细化用例图,如图2.6所示。

图2.6教师添加课程细化用例图
教师添加课程用例描述,如表2.5所示。
表2.5教师添加课程用例描述
用例标志 2.0.1
用例名称 教师添加课程
参与者 教师用户
前置条件 已经使用教师用户登录系统
后置条件 添加成功,活动显示。
用例概述 教师用户添加课程
基本时间流 1.教师用户在后台管理界面,点击课程管理。
2.系统显示全部课程列表。
3.管理员教师用户点击添加按钮。
4.系统跳转到添加页面。
5.教师用户填写内容,点击保存按钮。
6.系统跳转到所有课程列表界面。
备选时间流
(5)教师录入成绩用例
教师用户可以通过系统进行课程成绩的录入。用例描述,如表2.6所示。

表2.6 教师录入成绩用例
用例标志 2.0.2
用例名称 教师录入成绩
参与者 教师用户
前置条件 已使用教师身份登录
后置条件 成绩录入成功
用例概述 教师用户录入成绩
基本时间流 1.教师用户在系统界面,点击学生管理。
2.系统显示所有学生课程列表。
3.教师点击录入成绩。
4.系统跳到录入成绩界面。
5.教师录入成绩。
6.点击保存,录入成绩成功
备选时间流
(6)管理员排课用例
管理员用户可以通过管理员界面安排课程信息。细化用例图,如图2.7所示。

图2.7 管理员排课用例
管理员排课用例描述如表2.7所示。
表2.7 管理员排课用例
用例标志 2.3.1
用例名称 管理员排课
参与者 管理员用户
前置条件 已经使用管理员身份登录
后置条件 系统显示排课界面
用例概述 管理员安排课程信息
基本时间流 1.管理员用户在系统后台主界面,点击课程管理。
2.系统显示所有的课程信息。
3.管理员用户选择一个课程。
4.管理员点击排课按钮。
5.系统跳转到排课界面。
6.管理员排课完成后,点击提交,排课成功
备选时间流
2.3 非功能性需求
正确性:不允许出现业务和逻辑错误。
健壮性:在系统出现故障时,系统必须提供相应的数据保护措施,不能丢失数据,并提供重新恢复正常工作的机制。
性能:系统处理业务时间正常业务量的情况下不超过2秒,繁忙业务情况下最迟时间不可超过5秒。
安全性:用户信息具有保密性,用户信息只能由网站内部管理员使用。
兼容性:可运行在Windows7以上操作系统中。
2.4 运行环境
本系统运行环境包括硬件环境和软件环境。
2.4.1硬件环境
CPU:Pentium4或更高
硬盘:320G或更多
内存:1G或更高(建议使用2G)
网络类型:TCP/IP
2.4.2软件环境
操作系统:Windows7
Web服务器: Tomcat
数据库:MySQL
浏览器:IE7.0

第3章 系统设计
3.1 技术路线
学校教务管理系统在实现过程中采用了以下机种技术。前台页面的设计用JavaScript技术和HTML和CSS技术,通过HTML和CSS技术实现对前台页面的布局和界面美观的操控,JavaScript主要是用来在前台中动态页面的实现,通过对菜单进行动态的操作实现对每个模板进行管理,JavaScript它主要运行于浏览器端。此次设计主要采用B/S模式,Eclipse,作为开发工具,Tomcat作为服务器进行,MySQL作为数据库存储,页面视图主要使用JSP技术完成,主要用了SSM三大框架完成项目。
3.1.1 JSP技术
本设计选用JSP作为开发本系统的服务器端页面技术。使用JavaScript,EL表达式和JSTL与之配合使用,使页面表现更加丰富,人机交互更加人性化。
JSP全名为Java Server Pages,在传统的网页HTML文件中加入Java程序片段和JSP标签,就构成了JSP网页。JSP网页是由传统的HTML文件中加入Java程序片段和JSP标签组成的。Java程序用来操作数据库,实现建立动态网页的功能。
JavaScript是一种基于对象的,动态的客户端脚本语言。主要目的是为了解决服务器端语言遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,验证步骤繁杂,浪费的时间太多。于是加入了Javascript,提供了页面数据验证的基本功能。
JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,其中core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。简化了JSP和Web应用程序的开发。
3.1.2 MySQL
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和甜业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。独立又相互关联。
3.1.3框架技术
Spring是一个轻量级的IOC和AOP容器框架:轻量级,程序实现不是很复杂,代码不是很多,占用资源不是很多,没有侵入性;IOC(Inversion of Control 控制反转):对象创建责任的反转(重点,核心);Aop(Aspect Oriented Programming):一种面向横切面编程的思想方式,可以进行功能性扩展。另外容器可以容纳对象,并且可以控制对象的生命周期。
SpringMVC框架也是一个基于请求驱动的Web框架,并且也使用了前端控制器模式来进行设计,再根据请求映射规则分发给相应的页面控制器(动作/处理器)进行处理。
MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。
3.2 软件体系结构设计
3.2.1 功能结构
根据需求调研结果确定本系统主要包括以下功能模块,如图3.1所示。
在这里插入图片描述

图3.1系统功能结构图
3.2.2 系统架构
由于小区管理系统采用了MVC三层架构开发,运用SSM框架搭建系统,集成SSM框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。其Spring主要负责业务控制的跳转,MyBatis框架对持久层提供支持,Spring主要对MyBatis和SpringMVC进行管理,所以每层各有自己的分工。表示层为用户提供交互操作界面,方便用户操作,业务逻辑层主要负责关键业务的处理和数据的传递,数据访问层负责对数据的访问。系统架构图如图3.2所示。
在这里插入图片描述

图3.2 系统架构图
3.3 数据库设计
3.3.1数据库概念设计
本系统采用概念结构模型,首先需要创建数据库,数据库设计表是根据用户的需求抽象出来的,是一种线性表。根据项目中功能结构构建各个实体,并且确立实体之间的对应关系,整个项目的所有实体的各种字段和属性都存储在数据库表中,运用 ER 模型把问题转化成现实的问题。概念模型(E-R图)如图3.3所示。
在这里插入图片描述

图3.3 概念模型
3.3.2 表的详细设计
通过对领域对象、业务对象及对象间关联的分析,对本系统的数据库表进行了设计,本系统数据库管理采用MySQL。
(1)用户信息表(user)
系统用户信息表主要用于保存系统用户的信息,主要字段包括:用户ID、用户名、登录密码、用户类型、角色身份、性别、电话、用户名、头像。表结构如表3.1所示。
表3.1 用户信息表(user)
列名 数据类型 长度 允许空 是否主键 说明
id int 11 否 是 用户ID
name varchar 255 是 否 用户名
password varchar 255 是 否 登录密码
usertype varchar 255 是 否 用户类型
(2)教师信息表(teacher)
教师信息表主要用于保存教师的信息,主要字段包括:教师的ID、教师名、教师类型、教师登录名、登录密码 。表结构如表3.2所示。
表3.2 教师信息表(teacher)
列名 数据类型 长度 允许空 是否主键 说明
id int 11 否 是 小区ID
name datetime 0 是 否 小区创建时间
usertype int 11 否 否 成员人数
loginname text 0 是 否 小区介绍
password varchar 255 是 否 小区负责人
(3)学生信息表(student)
学生信息表主要用于保存学生的基本信息,主要字段包括:学生ID、学生名、性别、学生地址、联系方式、班级id、用户类型、密码、登录名。表结构如表3.3所示。
表3.3 学生信息表(student)
列名 数据类型 长度 允许空 是否主键 说明
Id int 11 否 是 学生ID
name varchar 255 是 否 学生名
sex varchar 255 是 否 性别
address varchar 255 是 否 地址
tel varchar 255 是 否 联系方式
classid varchar 255 是 否 班级id
usertype varchar 255 是 否 用户类型
password varchar 255 是 否 密码
loginname varchar 255 是 否 登录名
(4)成绩信息表(grade)
成绩信息表主要用于学生成绩信息,主要字段包括:成绩ID、学生id、课程id、教师id、平均成绩、最高成绩、最低成绩。如表3.4所示。
表3.4 成绩信息表(grade)
列名 数据类型 长度 允许空 是否主键 说明
id int 11 否 是 成绩ID
sid int 11 是 否 学生id
cid int 11 是 否 课程id
tid int 11 是 否 教师id
pgrade double 255 是 否 平均成绩
kgrade double 255 是 否 最低成绩
zgrade double 255 是 否 最高成绩
(5)课程信息表(course)
课程信息表主要用于保存课程信息,主要字段包括:课程ID、课程名、课程类型。表结构如表3.5所示。
表3.5 课程信息表(course)
列名 数据类型 长度 允许空 是否主键 说明
Id int 11 否 是 课程ID
name varchar 255 是 否 课程名
type varchar 255 是 否 课程类型
(6)班级信息表(classes)
班级信息表主要用于保存班级的基本信息,主要字段包括:班级ID、班级名、班级类型、班级状态。表结构如表3.6所示。
表3.6 班级信息表(classes)
列名 数据类型 长度 允许空 是否主键 说明
id int 11 否 是 班级ID
name varchar 11 否 否 班级名
type varchar 255 是 否 班级类型
status varchar 255 是 否 班级状态
(7)排课信息表(ctc)
排课信息表主要用于保存排课的信息,主要字段包括:排课id、教师id、课程id。表结构如表3.7所示。
表3.7 排课信息表(ctc)
列名 数据类型 长度 允许空 是否主键 说明
couid int 11 否 是 排课ID
tid int 11 是 否 教师id
claid int 11 是 否 课程id
3.4 用例实现
本系统的功能包括注册,教师用户登录,学生用户登录,管理员管理系统所以功能权限,教师用户可以添加课程,排课等,管理员用户修改个人信息,学生用户可以选课,查看成绩。
3.4.1 用户注册用例实现
用户注册用例的实现顺序图如图3.8所示。
在这里插入图片描述

图3.8用户注册用例顺序图
用户在登录主页之后,可以点击按钮进入注册页面,来注册自己的账号。
3.4.2 用户登录用例实现
用户登录用例的实现顺序图如图3.9所示。
在这里插入图片描述

图3.9用户登录用例顺序图
用户先登录到首页,然后点击登陆按钮,跳转到登录界面,然后输入用户名跟密码,后台对比用户名密码是否正确,最后跳转到该用户的主界面。
3.4.3 学生查看成绩用例实现
学生用户发起查看成绩用例的实现顺序图如图3.10所示。
在这里插入图片描述

图3.10学生查看成绩用例顺序图
学生用户先登录到自己的主界面,然后点击查看成绩模块,界面跳转到成绩列表界面,可以查看到学生的所有课程的成绩详情。点击查看成绩,服务端将查询到的数据,返回到前端,并返回到成绩列表页面。
3.4.4 学生选课用例实现
学生选课用例的实现顺序图如图3.11所示。
在这里插入图片描述

图3.11学生选课用例顺序图
学生用户登录到系统管理主页面,然后点击选课模块,界面刷新,打开全部课程页面,选择需要的课程,然后点击提交按钮。后台将特定的修改字段拿到后,更新数据库信息。选课通过。
3.4.5 教师录入成绩用例实现
教师用户录入成绩信息用例的实现顺序图如图3.12所示。

图3.12教师录入成绩用例顺序图
教师用户点击登录到系统的主页面,然后点击学生管理,然后页面跳转到学生所有课程的信息界面,然后点击录入按钮,最后点击提交按钮。后台将特定的修改字段拿到后,更新数据库中的信息,然后修改成功。
3.4.6 教师添加课程用例实现
教师用户添加课程用例的实现顺序图如图3.13所示。

图3.13教师添加课程用例顺序图
教师用户点击登录到系统的主页面,然后点击课程管理,点击添加按钮,然后页面跳转到填写课程信息界面,然后填写课程信息,最后点击提交按钮。后台将特定的修改字段拿到后,更新数据库中的信息,然后修改成功。
3.5 对象设计
3.5.1模块设计
本系统由多模块构成,controller模块负责请求接入以及部分业务实体,service用来存放业务实体,mapper模块存放调用数据库的请求方法。各模块间依赖关系如图3.14所示。
在这里插入图片描述

图3.14模块依赖关系图
3.5.2业务实体类的设计
业务实体包括学校教务管理系统系统部分业务中涉及到的独立实体,业务实体设计及各个业务实体之间的关系如图3.15所示。
在这里插入图片描述

图3.15业务实体及实体间关系图
3.5.3类的描述
(1)controller包中类的描述
Controller包中类的描述如表3.12所示。
表3.12 action包中类的描述
类名 属性/方法 描述
ClassesController list() 对前端传回来的数据进行处理
add() 将处理之后的数据匹配对应的方法,指向service层的
editSave() 用来接收前端传来的特定参数
CourseController loadMethod() 对前端传回来的数据进行处理
onLoad() 将处理之后的数据匹配对应的方法,指向BLL层
Excute() 用来接收前端传来的特定参数
StudentController loadMethod() 对前端传回来的数据进行处理
onLoad() 将处理之后的数据匹配对应的方法,指向BLL层的对应方法
TeacherController loadMethod() 对前端传回来的数据进行处理
onLoad() 将处理之后的数据匹配对应的方法,指向BLL层的对应方法
UserController loadMethod() 对前端传回来的数据进行处理
onLoad() 将处理之后的数据匹配对应的方法,指向BLL层的对应方法
Excute() 用来接收前端传来的特定参数
(2)service包中类的描述
Service包中类的描述如表3.13所示。
表3.13 BLL包中类的描述
类名 属性/方法 描述
ClassesService List getAllClasses() 得到所有班级请求处理
int getClassesCount() 得到班级数量请求处理
int update(Classes entity) 更新班级信息请求处理
Classes getStuByid(int id) 加根据学生id获得班级请求处理
CourseService Course getCourseId(int id) 根据课程id得到课程请求处理
int insert(Course entity) 添加新的课程请求处理
int delete(int id) 根据id删除课程请求处理
int update(Course entity) 更新课程请求处理

int getCourseCount() 得到课程数量请求处理

StudentService List getMycourses(int classid,int stuid 得到我的课程信息请求处理
Student stulogin(Student student) 学生登录请求处理
List getStuByCid(int id) 根据学生id得到学生请求处理
TeacherService
Teacher getTeacherId(int id) 根据教师id得到教师请求处理
int insert(Teacher entity) 添加教师请求处理
int update(Teacher entity) 更新教师请求处理
List getAllTeacher() 得到所有教师请求处理
Teacher loginTea(Teacher tea) 教师登录请求处理
int getMyStuCount(int id) 得到学生数量请求处理
UserService User userlogin(User user) 用户登录请求处理
User getUserDetail(Integer id) 查看用户详情请求处理

第4章 系统实现
4.1核心功能实现
4.1.1教师用户添加课程功能的实现
(1)获取数据界面
教师在主页面点击课程管理按钮,然后跳转到课程管理界面,可以对课程进行编辑,删除和添加等操作,点击添加按钮,界面跳转到添加课程详细界面如图4.1所示,输入课程名称和课程类别,实现教师用户对课程的添加功能。

在这里插入图片描述

图4.1教师用户添加课程界面原型图
(2)实现过程
教师用户在输入课程信息后,点击保存按钮,触发controller,将form表单参数传向后台,然后利用实体类在各个层中传递信息,最后将实体类的信息与数据库中的信息做对比,最后返回参数确定添加成功或者失败。
(3)核心代码
教师用户添加课程核心代码如下。
/*
* 添加
*/
@RequestMapping(“/add”)
public String add(Model model){
model.addAttribute(“entity”, new Course());
return “course/add”;
}

/*
 * 添加保存
 */
@RequestMapping("/addSave")
public String addSave(Model model,@ModelAttribute("entity") @Valid Course entity,BindingResult bindingResult){
    //如果模型中存在错误
    if(bindingResult.hasErrors()){
    	 model.addAttribute("entity", entity);
         return "course/add";
       
    }else{
    	courseService.insert(entity);
         return "redirect:/cou/list";    
         
    }
}

4.1.2教师用户发排课功能的实现
(1)获取数据界面
教师用户在登录之后,点击课程管理模块,跳转到课程管理主页面,然后点击排课按钮,跳转到编排课程的界面,如图4.2所示,输入一些排课的基本信息,点击保存完成排课功能的过程。
在这里插入图片描述

图4.2教师用户发起排课功能 界面原型图
(2)实现过程
用户在登录系统之后,点击发起活动,跳转到发起活动页面,在填写完所有需要填写的参数之后,点击提交,触发表单的form里的action将前端界面获取到的参数以及用户名id传向后台,然后利用实体类在各个层中传递信息,最后将实体类的信息更新到数据库中。
(3)核心代码
用户发起排课功能代码如下
p //排课
@RequestMapping(“/setTeacher/{id}”)
public String setTeacher(Model model,@PathVariable int id){
Course course=courseService.getCourseId(id);
model.addAttribute(“entity”,course);
List tlist=teacherService.getAllTeacher();
List clist=classesService.getAllClasses();
model.addAttribute(“tlist”, tlist);
model.addAttribute(“clist”, clist);
return “course/setct”;
}
/*
* 管理员安排课程,教师,和班级
* 排课功能
* */
@RequestMapping(“editSavect”)
public String editSavect(Model model,@ModelAttribute(“entity”) Course entity,RedirectAttributes redirectAttributes){
//Course course=entity;
String classid=entity.getClasses();
String[] classids=classid.split(“,”);
List ctclist=new ArrayList();
for(int i=0;i<classids.length;i++){
CtcKey c=new CtcKey();
c.setCouid(entity.getId());
c.setClaid(Integer.parseInt(classids[i]));
c.setTid(entity.getTeacher().getId());
ctclist.add©;
}
try{
courseService.insertBatch(ctclist);
}catch(Exception e){
redirectAttributes.addFlashAttribute(“msg”, “排课存在冲突,请核对后重新选!”);
}
return “redirect:/cou/list”;
}
4.1.3管理员用户课程审核功能的实现
(1)获取数据界面
管理员用户在登录之后,点击课程管理界面中的课程审核按钮,然后跳转到课程管理界面列表如图4.3所示,然后选择需要审核的课程,点击课程审核按钮,系统显示审核成功,教师和学生用户就可以看到审核过的课程信息。
在这里插入图片描述

图4.3管理员课程审核界面原型图
(2)实现过程
管理员用户在登录系统之后,点击活动管理,跳转到活动管理页面,然后点击审批活动,界面跳转出详细的活动内容,点击提交审批触发表单的form里的action将前端界面获取到的参数state以及用户名id活动的id传向后台,然后利用实体类在各个层中传递信息,最后将实体类的信息更新到数据库中。
(3)核心代码
管理员课程审核功能代码如下
@RequestMapping(“/getCouByName”)
public String getCouByName(Model model,String couName,HttpServletRequest req){
// HttpSession session=req.getSession();
// Student student=(Student) session.getAttribute(“user”);
List<Map<String,Object>> coulist=courseService.getCouByName(couName);
model.addAttribute(“coulist”, coulist);
return “student/cslist”;

     }
    
    /*
	 * 课程审核
	 * */
	
	    @RequestMapping("/setCoure")
	    public String setCoure(Model model,Integer id,Course c,HttpServletRequest req){

// HttpSession session=req.getSession();
// Student student=(Student) session.getAttribute(“user”);
c.setId(id);
c.setShenhe(1);
courseService.setCoure©;

			return "redirect:/cou/list";
	        
	     }

4.1.4学生用户选课功能的实现
(1)获取数据界面
普通用户在登录之后,点击信息修改,然后跳转到填写个人信息界面如图4.5所示,输入需要修改的个人信息,点击提交完成修改个人信息的过程。
在这里插入图片描述

图4.5学生用户选课功能界面原型图
(2)实现过程
学生用户在登录系统之后,点击选课按钮,跳转到全部课程列表界面,可以在此界面选择合适的课程,点击提交,触发表单的form里的action将前端界面获取到的个人信息参数以及用户名seedid传向后台,然后利用实体类在各个层中传递信息,最后将实体类的信息更新到数据库中。
(3)核心代码
学生用户选课功能代码如下
/*
* 选课功能
* /
@RequestMapping(“/getXuXiu”)
public String getXuXiu(Model model,HttpServletRequest req){
HttpSession session=req.getSession();
Student student=(Student) session.getAttribute(“user”);
List clist= studentService.getXuxiu(student.getClassid());
model.addAttribute(“colist”, clist);
return “student/colist”;
}
/

* 选课提交功能
* */
@RequestMapping(value=“/semycou”,produces=“text/html;charset=utf8”)
@ResponseBody
public String semycou(@RequestParam(“cou”) String[] ct,HttpServletRequest req){
System.out.println(“String[] ct:”+ct);
HttpSession session=req.getSession();
Student student=(Student) session.getAttribute(“user”);
List sclist=new ArrayList();
for(int i=0;i<ct.length;i++){
Sc sc=new Sc();
String cteveryone=ct[i];
String[] ctarray=cteveryone.split(“_”);
sc.setCid(Integer.parseInt(ctarray[0]));
sc.setTid(Integer.parseInt(ctarray[1]));
sc.setSid(student.getId());
sclist.add(sc);
}
String msg=“”;
try{
studentService.inserBatch(sclist);
msg=“选课成功!”;
}catch(Exception e){
msg=“选课可能有重复,请审核后重试!”;
}
return msg;
}
4.2 关键技术难点与解决方案
难点:记录请求日志
解决方案:项目开发需要记录日志,也就是记录每次请求的日志,因为Controller层全是用注解接收参数,不引入HttpRequest和HttpResponse对象。这时候遇到一个问题,前端请求的流经过apache tomcat的包装之后不可重复读。也就是说ServletInputStream不可重复读。后来的解决方法就是首先重写ServletInputStream,使其变得可读(使用ByteArrayInputStream),然后重写DispatcherServlet的doDispatch()方法,传入重写之后的流,这样就可读了。

第5章 系统测试
学校教务管理管理系统的测试跟随着软件开发的生命周期,每开发一个模块就对该模块进行测试用例的覆盖,在整个系统开发完成后又进行了一次回归测试。主要围绕着黑盒测试的方法对本系统进行测试。
5.1 功能测试
本系统对管理员,老师和学生的操作进行了功能测试,测试设计如下所示:
(1)管理员登录模块功能测试
管理员登录功能测试,对系统进行操作。测试用例设计如表5.1所示。
表5.1管理员登录功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
DL001 正确填写用户名密码 正确的输入用户名和密码,点击登录 学生成绩管理系统首页 通过
DL002 不输入用户名和密码 不输入用户名和密码直接点击登录 系统不作出反应 通过
DL003 输入用户名,不输入密码 输入用户名,不输入密码,点击登录 系统不作出反应 通过
DL004 不输入用户名,输入密码 不输入用户名,输入密码,点击登录 提示用户名或密码不正确 通过
DL005 输入错误的用户名和密码 输入不存在的用户名和任意的密码,点击登录 提示用户名或密码不正确 通过
DL006 输入正确的用户名错误的密码 输入正确的用户名错误的密码,点击登录 提示用户名或密码不正确 通过
(2)管理员功能测试
管理员登录进入功能测试包括页面测试。测试用例设计如表5.2所示。
表5.2 管理员功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
SY001 点击学生管理 点击学生管理按钮 出现所有学生信息列表 通过
SY002 点击班级管理 点击班级管理按钮 进入对应的页面 通过
SY003 点击退出 点击退出按钮 退出系统,返回登录页面 通过
(4)老师登录模块功能测试
老师登录功能测试包括老师登录,对系统进行操作。测试用例设计如表5.4所示。

表5.4 老师登录功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
DB001 正确填写用户名密码 正确的输入用户名和密码,点击登录 学生成绩管理系统首页 通过
DB002 不输入用户名和密码 不输入用户名和密码直接点击登录 系统不作出反应 通过
DB003 输入用户名,不输入密码 输入用户名,不输入密码,点击登录 系统不作出反应 通过
DB004 不输入用户名,输入密码 不输入用户名,输入密码,点击登录 提示用户名或密码不正确 通过
DB005 输入错误的用户名和密码 输入不存在的用户名和任意的密码,点击登录 提示用户名或密码不正确 通过
DB006 输入正确的用户名错误的密码 输入正确的用户名错误的密码,点击登录 提示用户名或密码不正确 通过
(5)老师功能测试
老师登录进入功能测试包括页面测试。测试用例设计如表5.5所示。
表5.5 老师功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
ST001 点击老师名字 点击老师名字 出现用户的基本信息 通过
ST002 点击管理菜单 点击管理菜单的每一项 进入对应的页面 通过
ST003 点击退出 点击退出按钮 退出系统,返回登录页面 通过
(6)课程管理模块功能测试
课程管理功能测试包括对课程的增删改。测试用例设计如表5.6所示。
表5.6 课程信息管理功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
SP001 添加课程管理类别列表展示 1.老师登录系统
2.点击添加按钮 页面包括:题目名称,题目选项,题目种类,答案。 通过
SP002 不填写任何信息点击保存 1.老师登录系统
2.点击添加按钮
3.点击保存按钮 提示请填写答案 通过
SP003 填写题目名称不填写其他 1.老师登录系统
2.点击添加按钮
3.填写题目名称
4.点击保存按钮 提示请填写答案 通过
续表5.6 课程信息管理功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
SP004 填写题目名称和答案不填写其他 1.老师登录系统
2.点击添加按钮
3.填写题目名称和答案
4.点击保存按钮 保存成功 通过
SP005 编辑课程 1.老师登录系统
2.点击编辑按钮
3.修改题目信息
4.点击保存按钮 保存成功 通过
SP006 删除课程 1.老师登录系统
2.点击删除按钮
3.点击确定 删除成功 通过
(7)学生登录模块功能测试
学生登录功能测试。测试用例设计如表5.7所示。
表5.7 学生登录功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
DD001 正确填写用户名密码 正确的输入用户名和密码,点击登录 学生成绩管理系统首页 通过
DD002 不输入用户名和密码 不输入用户名和密码直接点击登录 系统不作出反应 通过
DD003 输入用户名,不输入密码 输入用户名,不输入密码,点击登录 系统不作出反应 通过
DD004 不输入用户名,输入密码 不输入用户名,输入密码,点击登录 提示用户名或密码不正确 通过
DD005 输入错误的用户名和密码 输入不存在的用户名和任意的密码,点击登录 提示用户名或密码不正确 通过
DD006 输入正确的用户名错误的密码 输入正确的用户名错误的密码,点击登录 提示用户名或密码不正确 通过
(8)学生功能测试
学生登录进入管理系统。测试用例设计如表5.8所示。
表5.8学生功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
SY001 查看课表 点击查看课表模块 出现课表的基本信息 通过
SY002 点击成绩查询 点击成绩查询模块 显示学生选修的所有课程成绩 通过
SY003 点击退出 点击退出按钮 退出系统,返回登录页面 通过
5.2 测试总结
学校教务管理系统一共产生30个bug,通过测试发现在登录注册界面产生5个bug,管理员界面产生5个bug,课程界面产生4个bug,教师管理界面产生6个bug,班级管理界面产生2个bug,公告管理界面产生5个bug,修改个人界面产生3个bug,通过修改都已经处理了所有bug,并且做了回归测试,整个系统运行的很稳定。测试结束后,在测试总结中通过按版本统计结果、按等级统计结果角度对测试情况进行了客观的统计和分析,具体按版本统计bug的结果,如图5.1所示。
在这里插入图片描述

图5.1 按版本统计bug数
按等级统计bug的结果,如图5.2所示。
在这里插入图片描述

图5.2 按问题等级统计bug数
按类型统计bug的结果,如图5.3所示。

图5.3 按类型统计bug数
由上面统计图的结果可以看出,学校教务管理系统功能测试有多出Bug,需要对功能进行修改,确保每个功能按键都好使,满足项目需求。性能和可用性bug较少,基本满足项目需要。通过多次修改后,bug逐渐减少,从而使系统更好用,性能更稳定,以后开发其他软件的时候,要尽量避免功能上的bug让软件性能有所提高。

第6章 结论与展望
本系统在当今信息化时代是非常方便有效的,以前在纸上记录学生成绩的方法在当今社会是不适用的,浪费了大量的人力财力,使用大量的纸张,破坏环境,而且也容易出错,不能随时的查询成绩和随地的进行模拟测试。这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。运用该系统可以有效的方便老师同学查看成绩,可以让学生随时的进行模拟考试并且查看成绩,更好的进行复习。学生查询考试成绩也不用找到老师查看成绩单,可以登录网站进行查询。运用学生成绩管理维护系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够节省时间,还能使学生更好的查看自己的成绩变化。
经过三个多月的开发和设计,翻阅了大量的书籍和搜索了很多的网络资料,基本上完成了学生成绩管理系统的基本功能。本系统分为三种用户,三种用户各自有各自的功能,学生可以模拟考试和查询模拟考试成绩,老师可以对学生进行成绩管理,题目管理和课程管理,而管理员可以进行人员管理,角色管理和系统日志的维护。根据需求对业务和用例上进行了分析,在系统设计方面对数据库和系统的功能做了详细的设计分析,以及系统中题目管理、角色管理、人员管理、课程管理、模拟考试等所用到的关键技术,在系统实现方面,以系统的核心模块为例阐述了系统的具体实现过程。通过本文研究的内容,能够减轻学校很大的重复性的工作,大大提高工作的效率。
但是由于毕业设计时间较短,加之本人水平所限,此系统只能初步运用JSP强大功能的小部分,界面的美观程度并不是很高,系统的兼容性也没有达到可以在任意浏览器上都可以准确呈现,以及对系统的数据保护和系统的维护未进行更好的处理,因此在设计过程中可能会有一些令人不满意的地方,这有待于以后进一步完善和不断的学习。

参考文献
[1] 吕学婷. 基于Springmvc和Mybatis框架的门户网站及其内容管理系统的设计与实现[D]. 东华理工大学, 2016.
[2] 李枭, 任维政. 基于SpringMVC的多平台J2EE开发方式研究[J]. 吉林大学学报(信息科学版), 2017, 35(5):569-575.
[3] 张世博, 周树杰, 闵艳. 基于Java的MVC框架结构与实现[J]. 北京石油化工学院学报, 2016, 14(01):14-17.
[4] 杨海青. 浅析计算机软件工程管理及应用[J]. 中小企业管理与科技, 2016(2):218-218.
[5] 王东, 孙彬. 基于Ajax的MVC框架的改造分析[J]. 计算机应用, 2017, 27(b06):293-295.
[6] 李杉, 贾彦平, 达虎. Mybatis逆向工程在JavaEE中的应用[J]. 通讯世界, 2017(24):342-342.
[7] 张丽君. Java语言程序设计课程教学改革探索[J]. 中国管理信息化, 2017, 20(3):208-209.
[8] 熊慧. jQuery技术在网页美工中的应用[J]. 中国新通信, 2018(6).
[9] 余炀, 曲毅, 孙亦乐. 基于Apache Tomcat的一站式Java应用服务器解决方案[J]. 中国金融电脑, 2018(1).
[10] Leroy X. Java Bytecode Verification: An Overview[J]. Lecture Notes in Computer Science, 2017, 2102:265-285.
致 谢
转眼间,大学生活即将结束,回首过去四年的大学生活,真是有苦也有乐,然而更多的则是收获,感谢母校的各位老师不但无私地传授给我们知识,也教会了我们如何做人。管理信息系统专业的毕业设计任务繁重,但正是在这几个月紧张而充实的设计中,我感到自己的知识得到了一次升华,我相信:我的毕业设计会给我的四年大学画上一个圆满的句号。
感谢学校为毕业设计提供的良好环境,此次毕业设计乃是大学生涯的最后阶段,在这段时间内,我学到了很多知识,得到了许多帮助,尤其是王法胜老师对我的悉心指导,对我的整个毕业设计有着极大的帮助。我从指导老师身上学到认真负责的工作态度,严谨的治学精神,对我有着很大的帮助。这对于我以后的工作和学习都十分有用。感谢老师细心而又耐心的辅导。
最后,在这次毕业设计中同学也给了我很大的帮助,和同学们一起学习是十分快乐有趣的事情,感谢陪伴我四年的同学们。

  • 1
    点赞
  • 8
    收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论 3

打赏作者

QQ1039692211

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值