基于Java和Servlet实现的教务管理系统
第1章 引言
1.1 开发背景
随着科技的发展,基本上所有的具有一定数据的机构都开始使用计算机数据库来做管理,几乎所有学校也都已经在使用计算机管理数据的机制,大大减小的学校工作人员管理信息的工作量。通过本次课程设计,应该达到理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。
1.2 目的及意义
-
通过动手实践,培养动手能力
-
更加熟练的掌握eclipse的使用
-
掌握Servlet编程技术
-
更加深入的了解java web开发的过程
第2章 需求分析
2.1 概述
本系统主要围绕排课管理来制作,其中涉及到的信息有登录用户角色、课程、教室、考试等,因此需要建立一个用户表、课程信息表、教室信息表和考试信息表。排课的信息主要通过课程与教室的中间表来维护,以方便记录教室及课程的多种状态(教室的状态有点复杂,每一天的每一节课的状态都在变化),考试安排也是类似。由于排课功能要基于选课的基础上,所以通过增、删、改、查对课程信息、考试信息的维护。
2.2 可行性分析
从技术层面上看,这个项目利用了Java程序开发技术。Java语言面向对象、有很好的解释功能、安全性能也不错,最重要的是Java语言有很好的适应能力,不挑平台,平台兼容性功能强大。都可以运行,这对我们程序员来说,使用起来非常方便,后台数据库的开发运用了MYSQL集成化的数据控制,这样便于操作,同时也能够轻松的移植到别的数据库系统里。MYSQL是目前强大的数据库管理工具,而且还是开源的。
Tomcat服务器是我们所使用的,该款服务器并不大,功能也不是很强,所以它的应用也是有限制的,只能用于一些小型的系统,它的相关配置也不复杂,设置好以后,响应一些简单的页面访问请求还是不成问题的,本次设计中采用它来开发和调程序。
开发工具我们使用eclipse。eclipse是IBM公司集成了Eclipse的基础上它很好的扩展了Eclipse IDE的功能,通过eclipse,来整合一些应用程序。它是拥有丰富功能的Java EE集成开发环境,包括完全支持HTML,Struts,JSP,CSS,Java脚本,Spring,SQL和Hibernate的编码,调试,测试和发布功能。
其中很多技术都是本专业专业课上教的或者涉及的知识,所以项目的的技术可行性能够保证。
从经济上来看,作为一个软件工程专业的大三学生,在大学经历的一系列专业知识的学习,有一定的编程开发能力。另外,指导老师也会对自己的不足和困惑进行指正和解答,图书馆有丰富的资料可以借鉴参考。且本项目采用的技术框架以及技术工具,都是网络上开源的。不存在项目上的额外费用。所以,开发一个简单的教务系统排课管理模块可行的
2.3 总体目标
该软件的主要功能是,可以根据学生选课来给每门课排课,首先要选择要安排的课程名称,然后选择星期几和第几节课,最后系统自动筛选出可以选的教室(当天当节没课的教室),最后将信息录入数据库,实现持久化。
主要功能:
-
实现课程信息的录入、修改、删除、查询等基本操作
-
实现教室信息的录入、修改、删除、查询等基本操作
-
实现考试信息的录入、修改、删除、查询等基本操作
-
学生可以查看自己的课程表
-
课程管理员可以对课程信息进行操作,并进行排课
-
教室管理员可以对所有教室进行维护
-
系统管理员可以给用户分配角色,给角色分配权限
2.4 具体目标
-
用户基本情况录入模块 :主要功能用来对用户的信息进行收集和录入。在用户信息保存在系统中的前 提下,需要录入id,姓名,性别,地址,登录名,密码
-
课程信息的录入模块 :主要功能用来对课程信息的收集和录入。把收集的课程信息录入数据库的课程表,需要录入id,名称,学分,任课教师
-
教室信息的录入模块 :主要功能是用来对教室信息的收集和录入。把收集的教室信息录入数据库的教室表,需要录入id,名称,容量
-
排课功能模块 :主要功能是,可以根据学生选课来给每门课排课,首先要选择要安排的课程名称,然后选择星期几和第几节课,最后系统自动筛选出可以选的教室(当天当节没课的教室),最后将信息录入数据库,实现持久化
2.5 非功能性需求
本系统采用JAVA实现的基于B/S的教务系统排课模块。基于Servlet编程,采用Controller、Service、Dao三层架构实现MVC模型,严格遵守其思维逻辑来完成所有功能。
2.6 环境需求
开发运行环境 :eclipse、tomcat8、jdk1.8、mysql、浏览器。
第3章 系统分析与设计
3.1 功能模块设计
根据系统设计的说明及要求来设计,从而设计了几大功能模块,有学教室调度、排课管理、考试管理、课表查询、教室信息维护。
3.2 数据库设计
部分数据库表展示:
user表
sql
`userId` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
`sex` varchar(255) DEFAULT NULL COMMENT '性别',
`adress` varchar(255) DEFAULT NULL COMMENT '地址',
`tel` varchar(255) DEFAULT NULL COMMENT '电话',
`userName` varchar(255) DEFAULT NULL COMMENT '登录名',
`password` varchar(255) DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`userId`)
course表
sql
`courseId` int(11) NOT NULL AUTO_INCREMENT,
`courseName` varchar(255) DEFAULT NULL,
`courseTeacher` varchar(255) DEFAULT NULL,
`score` varchar(255) DEFAULT NULL,
`state` varchar(255) DEFAULT '0',
PRIMARY KEY (`courseId`)
classroom表
sql
`roomId` int(11) NOT NULL AUTO_INCREMENT,
`roomName` varchar(255) DEFAULT NULL,
`capacity` varchar(255) DEFAULT NULL,
`state` varchar(255) DEFAULT '0',
`date` varchar(255) DEFAULT '0',
PRIMARY KEY (`roomId`)
3.2.1 表结构
角色表
用户表
角色权限表
用户权限表
管理员表
3.2.2 E-R图
3.4 系统功能菜单
-
系统管理 :用户管理、角色管理、权限管理
-
课程信息管理 :课程信息管理
-
教室信息管理 :教室信息管理
-
考试管理 :考试管理、考试信息查询
-
学生课表 :个人课表查询
-
排课管理 :排课管理
3.5 系统实现
```java private static final long serialVersionUID = -9140233584632967003L; public int getPC(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String value = req.getParameter("pc"); if (value == null || value.trim().isEmpty()) { return 1; } return Integer.parseInt(value);
}
// 1.查询 public String list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ // 1、接受数据 // a、 获取页面传递的pc:当前页码(page code) int pc = getPC(req, resp); // b、给定ps的值:每页记录数(page size) int ps = 6;
// 3、调用业务
PageBean<Exam> pageBean = examService.queryAllPage(pc, ps);
req.setAttribute("pb", pageBean);
// 3、调用业务
List<Exam> exam_db_list = examService.queryAllExam();
// for (User user : user_db_list) { // System.out.println("----------list()-----------" + user); // } // 返回数据到页面 req.setAttribute("exam_db_list", exam_db_list);
// 2、跳转页面
return "view/system/exam/examList.jsp";
}
// 2.增加
public String add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
// a、 获取页面传递的pc:当前页码(page code)
int pc = getPC(req, resp);
// b、给定ps的值:每页记录数(page size)
int ps = 6;
// 3、调用业务
PageBean<Exam> pageBean = examService.queryAllPage(pc, ps);
req.setAttribute("pb", pageBean);
// 1、接受数据
String examName = req.getParameter("examName");
String examType = req.getParameter("examType");
String examState = req.getParameter("examState");
// 装载
Exam exam = new Exam();
exam.setExamName(examName);
exam.setExamType(examType);
exam.setExamState(examState);
// System.out.println("-----------add()----------" + user);
// 3、调用业务
int n = examService.addExamByExam(exam);
// 返回数据到页面
List<Exam> exam_db_list = examService.queryAllExam();
req.setAttribute("exam_db_list", exam_db_list);
// 2、跳转页面
resp.sendRedirect("http://localhost:8080/XGYQSystem13/examControl.do?method=list");
return "";
}
// 3.删除
public String delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
// a、 获取页面传递的pc:当前页码(page code)
int pc = getPC(req, resp);
// b、给定ps的值:每页记录数(page size)
int ps = 6;
// 3、调用业务
PageBean<Exam> pageBean = examService.queryAllPage(pc, ps);
req.setAttribute("pb", pageBean);
// 1、接受数据
String examIdStr = req.getParameter("examIdStr");
// System.out.println("-----------delete()----------" + userIdStr); // 字符类型转成数字类型 int examId = Integer.parseInt(examIdStr);
// 3、调用业务
int m = examService.deleteExamByExamId(examId);
// 返回数据到页面
List<Exam> exam_db_list = examService.queryAllExam();
req.setAttribute("exam_db_list", exam_db_list);
// 2、跳转页面
resp.sendRedirect("http://localhost:8080/XGYQSystem13/examControl.do?method=list");
return "";
}
// 4.修改ui
public String updateUI(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
// a、 获取页面传递的pc:当前页码(page code)
int pc = getPC(req, resp);
// b、给定ps的值:每页记录数(page size)
int ps = 6;
// 3、调用业务
PageBean<Exam> pageBean = examService.queryAllPage(pc, ps);
req.setAttribute("pb", pageBean);
// 1、接受数据
String examIdStr = req.getParameter("examIdStr");
// 字符转成数字类型
int examId = Integer.parseInt(examIdStr);
// 3、调用业务
Exam exam_db = examService.queryExamByExamId(examId);
// System.out.println("-------------update()--------" + exam_db);
// 返回数据到页面
req.setAttribute("exam_db", exam_db);
// 2、跳转页面
return "view/system/exam/updateExams.jsp";
}
// 4.修改
public String update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
// a、 获取页面传递的pc:当前页码(page code)
int pc = getPC(req, resp);
// b、给定ps的值:每页记录数(page size)
int ps = 6;
// 3、调用业务
PageBean<Exam> pageBean = examService.queryAllPage(pc, ps);
req.setAttribute("pb", pageBean);
// 1、接受数据
String examIdStr = req.getParameter("examIdStr");
int examId = Integer.parseInt(examIdStr);
String examName = req.getParameter("examName");
String examType = req.getParameter("examType");
String examState = req.getParameter("examState");
// 实例化
Exam exam = new Exam();
exam.setExamId(examId);
exam.setExamName(examName);
exam.setExamType(examType);
exam.setExamState(examState);
// System.out.println("-------------update()--------" + user); // 3、调用业务 int n = examService.updateExamByExam(exam);
// 2、跳转页面
// 返回数据到页面
List<Exam> exam_db_list = examService.queryAllExam();
req.setAttribute("exam_db_list", exam_db_list);
// 2、跳转页面
resp.sendRedirect("http://localhost:8080/XGYQSystem13/examControl.do?method=list");
return "";
}
```
第4章 系统展示
功能描述
登录
4.1 学生用户
课表查询
4.2 教室管理员用户
教室管理
4.3 课表管理员
课程查询
课表查询
排课管理
4.4 系统管理员
主页
用户管理
权限管理
角色管理
课表管理
教室管理
考试管理
课表管理
排课管理
第5章 总结
关于用户管理中分配角色的设计,建立了user表 role表和user-role中间表这三个表进行角色的分配。核心思路,通过SQL内连接的方式,将role 和user-role连接起来,用userID来查用户的角色,进而实现对角色的分配。当然每一次对角色的分配都需要删除原来的角色用户的对应关系。
用户管理和角色管理类似的思想完成,不过加了ArrayList集合对权限菜单的管理遍历,权限管理就是对权限数据表中的数据渲染到前端进行展示,并有修改和删除功能。通过写pagebean<?>bean来来实现的分页功能,推出登录是直接跳转到登录页面,首页用了一点json的方式渲染数据。
参考文献
- 基于J2EE的高校课堂教学管理系统设计与分析(电子科技大学·张霖婧)
- 基于J2EE的教务管理信息系统的设计与实现(电子科技大学·管潇慧)
- 基于MVC的教务管理系统的研究与实现(太原理工大学·刘飞飞)
- 基于Java与Web模式的教务管理系统的设计与实现(华东师范大学·王洪龄)
- 基于Web的教务管理系统的设计与实现(厦门大学·陶鑫)
- 辽宁科技学院综合教务管理系统设计与实现(电子科技大学·赵宝军)
- 教务管理系统的设计与实现(电子科技大学·刘畅)
- 辽宁科技学院综合教务管理系统设计与实现(电子科技大学·赵宝军)
- 基于J2EE的教务管理信息系统的设计与实现(电子科技大学·管潇慧)
- 基于Spring MVC的教务信息管理系统的设计与实现(电子科技大学·于子贻)
- 山东杏林科技职业学院教务信息管理系统的设计与实现(山东大学·高静)
- 基于B/S模式的教务管理系统的设计与实现(电子科技大学·陈林会)
- 教务管理系统的设计与实现(电子科技大学·刘畅)
- 基于Java与Web模式的教务管理系统的设计与实现(华东师范大学·王洪龄)
- 基于Struts2的高校教学管理系统的设计与实现(华中科技大学·李丽)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码货栈 ,原文地址:https://bishedaima.com/yuanma/35555.html