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

表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 点击管理菜单 点击管理菜单的每一项 进入对应的页面 通过

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。

关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。

image

这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

进入阿里一直到现在。**

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-rX47k2XZ-1712851600072)]
[外链图片转存中…(img-mUEazE88-1712851600073)]
[外链图片转存中…(img-zTxWVSSE-1712851600073)]
[外链图片转存中…(img-O7ozYG73-1712851600074)]
[外链图片转存中…(img-gUgglRub-1712851600074)]
[外链图片转存中…(img-tZ9nLMkA-1712851600074)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-4q6MhaUu-1712851600075)]

最后

小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。

关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。

[外链图片转存中…(img-yIpae85z-1712851600075)]

这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-afTDCPKO-1712851600075)]

  • 36
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘 要II Abstract III 第一章 引言 1 1.1 课题背景 1 1.2 课题目的和意义 1 1.3 本文结构 1 第二章 系统应用的关键技术 2 2.1 JSP技术介绍 2 2.1.1 JSP的概述 2 2.1.3 JSP的强势与劣势 3 2.1.4 JSP与ASP的比较 3 2.2 Java组件JavaBeans 4 2.2.1 什么是JavaBeans 4 2.2.2 JSP与JavaBeans的关系 4 2.3 J2EE概述 4 2.4关于Struts 5 2.4.1 Struts简介 5 2.4.2 Struts的主要功能 5 2.4.3 Struts工作原理 6 2.5 关于Spring 7 2.5.1 Spring简介 7 2.5.2 为什么需要Spring 8 2.5.3 Spring带给我们什么 8 2.6 关于B/S开发模式 9 2.6.1为什么引入B/S开发模式 9 2.7.1 mysql的特点 9 2.7.2 mysql的安装和配置(部分截图)[12] 10 2.8 Tomcat服务器 12 2.8.1 Tomcat 服务器简介 12 2.8.2 Tomcat的特点 12 2.8.3 Tomcat的优势 12 2.8.4 Tomcat服务器的安装和配置 12 小结 13 第三章 系统需求分析和总体设计 14 3.1 系统功能需求 14 3.2 系统角色及其功能分析 14 3.2.1 系统的2个角色: 14 3.2.2 系统角色的功能 14 3.3 总体设计思想概述 15 3.4 数据库设计 16 3.4.1 E-R图 16 3.4.2数据表的设计 16 3.5 系统的类设计 18 3.5.1 DAO类设计 18 3.5.2 connDB类设计(部分) 18 3.5.3 过滤器类设计 19 3.5.4 监听器类设计 19 3.6系统的用例图 20 3.6.1 总体用例分析 20 3.6.2 用户管理用例分析 21 3.6.3 考试管理用例分析 21 3.6.4 考试题目管理用例分析 22 3.6.5 成绩管理用例分析 22 小结 22 第四章 系统的详细设计 23 4.1 数据库与connDB类映射的实现 23 4.2 主要模块设计说明与界面 24 4.2.1用户管理模块 24 4.2.2考试管理模块 29 4.2.3 题目管理模块 31 4.3 系统的测试 37 小结 38 第五章 总结与展望 38 5.1 工作总结 38 5.2 后续工作展望 39 参考文献 40 附录 41 致谢 44

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值