基于ssm教务管理系统
创始人
2024-06-02 23:50:58
0

基于ssm教务管理系统

一、项目背景介绍:

教务管理系统是一种基于信息技术的管理工具,可以用来管理学生、教师、课程、考试、教学资源等方面的信息,以实现高效、科学、规范的教务管理。随着信息技术的迅速发展,教务管理系统已经成为现代高校的必备设施之一。

教务管理系统的出现,旨在帮助学校更好地管理和利用教学资源,提高教学质量和效率。教务管理系统可以通过网络平台进行信息共享和交流,有效地解决了传统教务管理方式中存在的一系列问题,例如信息不及时、重复劳动、管理不规范等等。

在教务管理系统中,学生可以通过在线选课、查询课程信息、成绩查询等功能实现自我管理;教师可以通过发布课程信息、在线作业布置、学生成绩管理等功能实现教学管理;管理人员可以通过维护学生、教师、课程、考试等信息,实现教务管理的全过程。

因此,教务管理系统对于提高学校管理效率和教学质量具有重要意义。同时,教务管理系统也是学校信息化建设中的重要组成部分。随着信息技术的发展和普及,教务管理系统的功能和应用也在不断拓展和完善。

本篇论文旨在探讨教务管理系统的发展、现状、优势和未来趋势,深入分析教务管理系统对教育教学的影响和作用。同时,我们将以某高校的教务管理系统为例,介绍其设计与实现过程,以及其应用效果和意义。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  3. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
  4. Jsp:JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
    JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
  5. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。
  6. Html:HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。

    超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。
  7. shiro:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:absence(absence)

字段名类型默认值列注释
absence_idintNULL缺勤表ID
student_idintNULL学生ID
student_namevarcharNULL学生姓名
course_idintNULL课程ID
absence_timevarcharNULL缺勤时间

2:class(class)

字段名类型默认值列注释
class_idintNULL班级ID
class_namevarcharNULL班级名
department_idintNULL专业名
creation_timedateNULL班级的创建时间
creat_numberintNULL班级的创建人数
class_deletedintNULL用于删除的标志字段

3:classroom(classroom)

字段名类型默认值列注释
classroom_idintNULL教室ID
classroom_namevarcharNULL教室名
classroom_stateintNULL教室可用状态,默认为0空
classroom_containintNULL教室可容纳人数
classroom_phonevarcharNULL本教室后勤电话
classroom_deletedintNULL教室删除状态

4:course(course)

字段名类型默认值列注释
course_idintNULL课程ID
course_namevarcharNULL课程名
department_idintNULL专业ID
stateintNULL当前课程被老师占用状态,0为没有老师占用,1为老师占用

5:department(department)

字段名类型默认值列注释
department_idintNULL专业ID
department_namevarcharNULL专业名

6:headmaster(headmaster)

字段名类型默认值列注释
headmaster_idintNULL班主任ID
headmaster_namevarcharNULL班主任姓名
class_idintNULL教师ID
heademaster_deletedintNULL班主任状态
headmaster_phonebigintNULL班主任联系电话
headmaster_sexintNULL性别
headmaster_stateintNULL

7:image_user(image_user)

字段名类型默认值列注释
image_idintNULL图片id
image_namevarcharNULL图片名字
user_idintNULL用户id

8:permission(permission)

字段名类型默认值列注释
permission_idintNULL权限id,主键
namevarcharNULL权限名称
parent_pidintNULL父级权限id
typevarcharNULL权限类型: menu:菜单, button:按钮, page:页面
urlvarcharNULL权限访问的url资源
sorttinyintNULL序号,菜单、按钮排序用,大的排后面
statetinyintNULL状态,1可用,0不可用

9:record(record)

字段名类型默认值列注释
record_idintNULL授课信息ID
teacher_idintNULL教师ID
class_idintNULL班级ID
course_idintNULL课程ID
classroom_idintNULL教室ID
record_datedateNULL授课日期
record_indexintNULL第几节课

10:registrar(registrar)

字段名类型默认值列注释
registrar_idintNULL教导主任ID
registrar_namevarcharNULL教导主任名字
registrar_sexintNULL教导主任性别
department_idintNULL管理院系
registrar_phonebigintNULL教务主任电话
registrar_deletedintNULL逻辑删除

11:role(role)

字段名类型默认值列注释
role_idintNULL角色id
namevarcharNULL角色名
statetinyintNULL状态,1可用,0不可用

12:role_permission(role_permission)

字段名类型默认值列注释
idintNULL主键
role_idintNULL关联role表的角色id
permission_idintNULL关联permission表的权限id

13:score(score)

字段名类型默认值列注释
score_idintNULL成绩表ID
score_GPAintNULL平时成绩
score_examintNULL考试成绩
absenceintNULL缺勤次数
student_idintNULL学生ID
course_idintNULL课程id

14:student(student)

字段名类型默认值列注释
student_idintNULL学生ID
student_namevarcharNULL学生姓名
student_ageintNULL学生年龄
student_phonebigintNULL学生电话
class_idintNULL班级ID
student_sexintNULL性别,0为女
student_deletedintNULL学生状态,默认1为未删除

15:teacher(teacher)

字段名类型默认值列注释
teacher_idintNULL教师ID
teacher_namevarcharNULL教师姓名
teacher_sexintNULL教师性别0女
course_idintNULL课程ID
teacher_deletedintNULL教师状态
teacher_phonevarcharNULL教师联系电话

16:user(user)

字段名类型默认值列注释
user_idintNULL用户ID
user_namevarcharNULL用户登录名
user_passwordvarcharNULL用户密码
user_nicknamevarcharNULL用户昵称
user_deletedintNULL用户状态

17:user_headmaster(user_headmaster)

字段名类型默认值列注释
user_headmaster_idintNULL用户班主任关联表ID
user_idintNULL用户ID
headmaster_idintNULL班主任ID

18:user_registrar(user_registrar)

字段名类型默认值列注释
user_registrar_idintNULL用户教务主任关联表ID
user_idintNULL用户ID
registrar_idintNULL教务主任ID

19:user_role(user_role)

字段名类型默认值列注释
idintNULL
user_idintNULL用户ID
role_idintNULL角色ID

20:user_student(user_student)

字段名类型默认值列注释
user_student_idintNULL用户学生表ID
user_idintNULL用户ID
student_idintNULL学生ID

21:user_teacher(user_teacher)

字段名类型默认值列注释
user_teacher_idintNULL关联表ID
user_idintNULL用户ID
teacher_idintNULL教师ID

五、功能模块:

  1. 用户模块:
    分三类角色:教务主任、班主任、任课教师、不同角色对应可访问的功能模块不同,及权限不同。登录模块(shiro)

    用户模块

  2. 院系管理:院系管理(决定课程方向):类似如JAVA、嵌入式、H5,学生专业的增删改查

    院系管理

  3. 课程管理: 管理维护基本课程信息:类似如JAVA基础、JAVA面向对象核心编程、Mysql数据库编程,增删改查课程

    课程管理

  4. 班级信息管理: 管理、维护班级信息(信息的增删改查)、指定班主任,增删改查班级信息

    班级信息管理

  5. 教室管理:管理维护教室信息;

    教室管理

  6. 教师信息管理:管理维护教师信息

    教师信息管理

  7. 授课信息管理:授课信息管理:管理、维护授课信息、如发布、调整教学计划、打印课程表

    授课信息管理

  8. 考勤管理、成绩管理:考勤管理:管理维护学生考勤
    成绩管理:管理维护学生所学课程的考核结果,添加修改平时成绩、添加修改考试成绩
    下面是一些账号信息,因本系统使用 加密的方式保存密码,所以无法直接从数据库中查看用户的密码信息,故在此备注一些账号密码,后期可自己使用管理员账号添加修改用户密码信息

学生信息管理:ryj,123(java1班班主任),headmaster22,123(嵌入式1班班主任)
教室管理:ryj,123(Java1班班主任)
教师信息管理:persist,123(Java教务主任),registrar3,123(嵌入式教务主任)
考勤管理:ryj,123(java1班班主任)headmaster22,123456(嵌入式1班班主任)
院系管理:persist,123(java教务主任),registrar3 123456(嵌入式教务主任)
H5教务主任:登录名:zhulaoshi 密码:123
java教务主任:登录名:zh_test: 密码:123
成绩管理 teacher122 123(任课教师)
班级管理 persist 123 (Java教务主任) zhulaoshi 123(H5教务主任).

考勤管理、成绩管理

六、代码示例:

用户模块
public Map login(String username, String password, String remember) {Map result = new HashMap<>();//获取shiro框架认为的当前用户Subject cuurentUser = SecurityUtils.getSubject();//判断是否已经认证过,认证过,就不需要再次认证了if (!cuurentUser.isAuthenticated()) {//当没有认证过时,使用用户输入的用户名和密码进行认证UsernamePasswordToken token = new UsernamePasswordToken(username, password);if (remember.equals("yes")) {token.setRememberMe(true);}//shiro执行登录操作try {cuurentUser.login(token);} catch (UnknownAccountException e) {//用户不存在result.put("code", -1);result.put("message", "账号错误!");return result;} catch (IncorrectCredentialsException e) {//密码错误result.put("code", -2);result.put("message", "密码错误!");return result;} catch (AuthenticationException e) {//抛出错误e.printStackTrace();result.put("code", -3);result.put("message", "登录失败!");return result;}}User user = (User) cuurentUser.getSession().getAttribute("user");result.put("code", 1);result.put("message", "登录成功!");result.put("user", user);return result;}
院系管理
@RequestMapping("/getone")@ResponseBodypublic Map getOne(int studentId){Map result=new HashMap<>();//根据学生的id查询出学生的基本信息StudentInfo student = departmentService.getById(studentId);if (student==null){result.put("code",-1);result.put("message","无此学生");} else {result.put("code",0);result.put("student",student);}System.out.println(result);return result;}@RequestMapping("/updateok")@ResponseBodypublic MapupdateByClassId(String className,int studentId){Mapresult=new HashMap<>();System.out.println(className);System.out.println(studentId);//根据班级姓名查询班级IDint classId = departmentService.getClassIdByClassName(className);int i = departmentService.updateByClassId(classId, studentId);if (i>0){result.put("code",0);}else {result.put("code",-1);result.put("massage","修改失败");}return result;}
课程管理
@RequestMapping("queryAll")@ResponseBodypublic Map queryAll(){List courses = courseService.queryAll();
//        System.out.println(courses  +"========================");Map result = new HashMap<>();result.put("code",0);result.put("message","获取用户数据成功");result.put("courseList",courses);return result;}@RequestMapping("queryAllCourseDepartment")@ResponseBodypublic Map queryAllCourseDepartment(){List courses =  courseService.queryAllCourseDepartment();Map result = new HashMap<>();result.put("code",0);result.put("message","获取用户数据成功");result.put("courseList",courses);return result;}//添加课程专业信息@RequestMapping("addCourseDepartment")@ResponseBodypublic Map addCourseDepartment(CourseInfo courseInfo){
//        System.out.println(courseInfo);courseService.addCourseDepartment(courseInfo);Map result = new HashMap<>();result.put("code",0);result.put("message","添加课程信息成功");return result;}
班级信息管理
        @Overridepublic int deleteClassInfoByClassId(Integer classId) {return classManagementDao.deleteClassInfoByClassId(classId);}@Overridepublic int updateHeadmasterStateByClassId(Integer classId) {return classManagementDao.updateHeadmasterStateByClassId(classId);}@Overridepublic List getOneHeadmasterInfoByClassId( ) {return classManagementDao.getOneHeadmasterInfoByClassId();}@Overridepublic List getOneClassInfo(Integer classId) {return classManagementDao.getOneClassInfo(classId);}@Overridepublic int updateHeadmasterInfo(Headmaster headmaster) {return classManagementDao.updateHeadmasterInfo(headmaster);}
教室管理
        public MapupdateByClassId(String className,int studentId){Mapresult=new HashMap<>();System.out.println(className);System.out.println(studentId);//根据班级姓名查询班级IDint classId = departmentService.getClassIdByClassName(className);int i = departmentService.updateByClassId(classId, studentId);if (i>0){result.put("code",0);}else {result.put("code",-1);result.put("massage","修改失败");}return result;}
教师信息管理
        @RequestMapping("/seletedByName")@ResponseBodypublic Map seletedByName(String studentName){Map result = new HashMap<>();Set student = departmentService.getByName(studentName);System.out.println(student);if (student!=null && !student.isEmpty()){result.put("code",0);result.put("student",student);}else {result.put("code",-1);result.put("message","本专业无此人");}return result;}
授课信息管理
        @RequestMapping("teaching/beforeGet")public String beginGet(Model model){Session session= SecurityUtils.getSubject().getSession();List roles=new ArrayList<>();Set permissions=new HashSet<>();User user= (User) session.getAttribute("user");for(Role r:user.getRoles()){roles.add(r.getName());Role role1=roleService.queryRoleInfoByRoleId(r.getRoleId());if (role1.getPermissions()!=null) {for (Permission per : role1.getPermissions()) {permissions.add(per.getName());}}}session.setAttribute("roles",roles);session.setAttribute("permissions",permissions);model.addAttribute("dateStr",new SimpleDateFormat("yyyy-MM-dd").format(new Date()));return "teaching/tabs";}
考勤管理、成绩管理
public Map login(String username, String password, String remember) {Map result = new HashMap<>();//获取shiro框架认为的当前用户Subject cuurentUser = SecurityUtils.getSubject();//判断是否已经认证过,认证过,就不需要再次认证了if (!cuurentUser.isAuthenticated()) {//当没有认证过时,使用用户输入的用户名和密码进行认证UsernamePasswordToken token = new UsernamePasswordToken(username, password);if (remember.equals("yes")) {token.setRememberMe(true);}//shiro执行登录操作try {cuurentUser.login(token);} catch (UnknownAccountException e) {//用户不存在result.put("code", -1);result.put("message", "账号错误!");return result;} catch (IncorrectCredentialsException e) {//密码错误result.put("code", -2);result.put("message", "密码错误!");return result;} catch (AuthenticationException e) {//抛出错误e.printStackTrace();result.put("code", -3);result.put("message", "登录失败!");return result;}}User user = (User) cuurentUser.getSession().getAttribute("user");result.put("code", 1);result.put("message", "登录成功!");result.put("user", user);return result;}

七、项目总结:

本项目是基于信息技术实现的教务管理系统,旨在提高学校教务管理的效率和质量。项目采用了Java语言和Spring框架进行开发。通过该系统,学校可以更加便捷地管理学生、教师、课程、考试、教学资源等信息,从而实现高效、科学、规范的教务管理。

在项目开发过程中,我们采用了敏捷开发的方法,并以团队合作为核心,保证了项目开发的高效性和质量。我们注重需求分析和设计,通过反复的沟通和讨论,建立了清晰的需求文档和详细的系统设计文档。我们在实现过程中,采用了严谨的开发流程和测试机制,保证了系统的稳定性和安全性。

在项目的最终结果中,我们提供了一个全面、高效、易用的教务管理系统,能够满足学校教务管理的各项需求。系统中提供了学生选课、成绩查询、课程管理、考试安排等一系列功能,教师可以通过该系统发布课程信息、布置作业、管理成绩等,同时系统管理员也可以通过该系统进行维护和管理。我们还提供了多维度的数据分析和可视化报表功能,方便管理员对教务管理进行分析和评估。

总之,我们的项目团队在这个项目中付出了很多努力,并成功地开发了一个高质量、高效的教务管理系统,该系统可以帮助学校更加便捷地管理和利用教学资源,提高教学质量和效率。我们相信这个系统将对学生、教师和管理人员产生积极的影响。

相关内容

热门资讯

122.(leaflet篇)l... 听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
Vue使用pdf-lib为文件... 之前也写过两篇预览pdf的,但是没有加水印,这是链接:Vu...
PyQt5数据库开发1 4.1... 文章目录 前言 步骤/方法 1 使用windows身份登录 2 启用混合登录模式 3 允许远程连接服...
Android studio ... 解决 Android studio 出现“The emulator process for AVD ...
Linux基础命令大全(上) ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维...
再谈解决“因为文件包含病毒或潜... 前面出了一篇博文专门来解决“因为文件包含病毒或潜在的垃圾软件”的问题,其中第二种方法有...
南京邮电大学通达学院2023c... 题目展示 一.问题描述 实验题目1 定义一个学生类,其中包括如下内容: (1)私有数据成员 ①年龄 ...
PageObject 六大原则 PageObject六大原则: 1.封装服务的方法 2.不要暴露页面的细节 3.通过r...
【Linux网络编程】01:S... Socket多进程 OVERVIEWSocket多进程1.Server2.Client3.bug&...
数据结构刷题(二十五):122... 1.122. 买卖股票的最佳时机 II思路:贪心。把利润分解为每天为单位的维度,然后收...
浏览器事件循环 事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间࿰...
8个免费图片/照片压缩工具帮您... 继续查看一些最好的图像压缩工具,以提升用户体验和存储空间以及网站使用支持。 无数图像压...
计算机二级Python备考(2... 目录  一、选择题 1.在Python语言中: 2.知识点 二、基本操作题 1. j...
端电压 相电压 线电压 记得刚接触矢量控制的时候,拿到板子,就赶紧去测各种波形,结...
如何使用Python检测和识别... 车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计...
带环链表详解 目录 一、什么是环形链表 二、判断是否为环形链表 2.1 具体题目 2.2 具体思路 2.3 思路的...
【C语言进阶:刨根究底字符串函... 本节重点内容: 深入理解strcpy函数的使用学会strcpy函数的模拟实现⚡strc...
Django web开发(一)... 文章目录前端开发1.快速开发网站2.标签2.1 编码2.2 title2.3 标题2.4 div和s...