基于SSM的教务管理系统

基于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<String, Object> login(String username, String password, String remember) {
        Map<String, Object> 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")
    @ResponseBody
    public Map<String,Object> getOne(int studentId){
        Map<String,Object> 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")
    @ResponseBody
    public Map<String,Object>updateByClassId(String className,int studentId){
        Map<String,Object>result=new HashMap<>();
       System.out.println(className);
       System.out.println(studentId);
       //根据班级姓名查询班级ID
        int 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")
    @ResponseBody
    public Map<String,Object> queryAll(){
        List<Course> courses = courseService.queryAll();
//        System.out.println(courses  +"========================");

        Map<String,Object> result = new HashMap<>();
        result.put("code",0);
        result.put("message","获取用户数据成功");
        result.put("courseList",courses);
        return result;
    }
    @RequestMapping("queryAllCourseDepartment")
    @ResponseBody
    public Map<String,Object> queryAllCourseDepartment(){
        List<CourseInfo> courses =  courseService.queryAllCourseDepartment();

        Map<String, Object> result = new HashMap<>();
        result.put("code",0);
        result.put("message","获取用户数据成功");
        result.put("courseList",courses);
        return result;
    }

    //添加课程专业信息
    @RequestMapping("addCourseDepartment")
    @ResponseBody
    public Map<String, Object> addCourseDepartment(CourseInfo courseInfo){
//        System.out.println(courseInfo);
        courseService.addCourseDepartment(courseInfo);

        Map<String, Object> result = new HashMap<>();
        result.put("code",0);
        result.put("message","添加课程信息成功");
        return result;
    }

班级信息管理
        @Override
    public int deleteClassInfoByClassId(Integer classId) {
        return classManagementDao.deleteClassInfoByClassId(classId);
    }

    @Override
    public int updateHeadmasterStateByClassId(Integer classId) {
        return classManagementDao.updateHeadmasterStateByClassId(classId);
    }


    @Override
    public List<Headmaster> getOneHeadmasterInfoByClassId( ) {
        return classManagementDao.getOneHeadmasterInfoByClassId();
    }



    @Override
    public List<Class> getOneClassInfo(Integer classId) {
        return classManagementDao.getOneClassInfo(classId);
    }

    @Override
    public int updateHeadmasterInfo(Headmaster headmaster) {
        return classManagementDao.updateHeadmasterInfo(headmaster);
    }
教室管理
        public Map<String,Object>updateByClassId(String className,int studentId){
        Map<String,Object>result=new HashMap<>();
       System.out.println(className);
       System.out.println(studentId);
       //根据班级姓名查询班级ID
        int 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")
    @ResponseBody
    public Map<String,Object> seletedByName(String studentName){
        Map<String, Object> result = new HashMap<>();
       Set<StudentClassDepartment> 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<String> roles=new ArrayList<>();
        Set<String> 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<String, Object> login(String username, String password, String remember) {
        Map<String, Object> 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框架进行开发。通过该系统,学校可以更加便捷地管理学生、教师、课程、考试、教学资源等信息,从而实现高效、科学、规范的教务管理。

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

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

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

八、代码下载:

代码下载:点击获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值