SSM-based Educational Affairs Management System

Based on ssm educational affairs management system

1. Project background introduction:

The educational administration management system is a management tool based on information technology, which can be used to manage information on students, teachers, courses, examinations, teaching resources, etc., in order to achieve efficient, scientific and standardized educational administration management. With the rapid development of information technology, educational affairs management system has become one of the necessary facilities in modern universities.

The emergence of educational affairs management system aims to help schools better manage and utilize teaching resources, and improve teaching quality and efficiency. The educational administration management system can share and exchange information through the network platform, effectively solving a series of problems in the traditional educational administration management methods, such as untimely information, duplication of labor, irregular management and so on.

In the educational administration management system, students can realize self-management through functions such as online course selection, querying course information, and grade query; teachers can realize teaching management through functions such as publishing course information, online homework assignments, and student grade management; administrators can maintain student , teachers, courses, examinations and other information to realize the whole process of educational administration management.

Therefore, the educational administration management system is of great significance for improving school management efficiency and teaching quality. At the same time, the educational administration system is also an important part of the school's information construction. With the development and popularization of information technology, the functions and applications of the educational administration management system are constantly expanding and improving.

This paper aims to discuss the development, current situation, advantages and future trends of the educational administration management system, and deeply analyze the influence and function of the educational administration management system on education and teaching. At the same time, we will take the educational affairs management system of a university as an example to introduce its design and implementation process, as well as its application effect and significance.

2. Technical introduction of the project:

  1. JAVA: Java is an object- oriented programming language . It not only absorbs various advantages of the C++ language , but also abandons concepts such as multiple inheritance and pointers that are difficult to understand in C++. Therefore, the Java language has two characteristics : powerful and easy to use . As a representative of the static object-oriented programming language, the Java language perfectly implements the object-oriented theory and allows programmers to perform complex programming in an elegant way of thinking.
  2. Mybatis: MyBatis was originally iBatis, an open source project of apache. In 2010, this project was migrated from apache software foundation to google code and renamed MyBatis. Migrated to Github in November 2013.
    The word iBATIS comes from the combination of "internet" and "abatis", which is a Java-based persistence layer framework. The persistence layer framework provided by iBATIS includes SQL Maps and Data Access Objects (DAOs).
  3. Mybatis-Plus: MyBatis-Plus (MP for short) is an enhancement tool for MyBatis. Based on MyBatis, only enhancements are made without changes. It was born to simplify development and improve efficiency.
  4. Jsp: JSP (full name JavaServer Pages) is a dynamic web page technology standard created by Sun Microsystems. JSP is deployed on the web server, can respond to the request sent by the client, and dynamically generate a web page of HTML, XML or other format documents according to the content of the request, and then return it to the requester. JSP technology uses the Java language as a scripting language to provide services for users' HTTP requests, and can work with other Java programs on the server to handle complex business requirements.
    JSP embeds Java code and specific changing content into a static page, and realizes using the static page as a template to dynamically generate part of the content. JSP introduces XML tags called "JSP actions" to call built-in functions. Alternatively, you can create JSP tag libraries and use them like standard HTML or XML tags. Tag libraries can enhance functionality and server performance without being limited by cross-platform issues. JSP files are converted into more primitive Servlet code by their compiler at runtime. The JSP compiler can compile the JSP file into a Servlet written in Java code, and then compile it into binary machine code that can be executed quickly by the Java compiler, or directly compile it into binary code.
  5. Spring-Mvc: Spring MVC is a follow-up product of SpringFrameWork, which has been integrated into Spring Web Flow. The Spring framework provides a full-featured MVC module for building web applications. Using Spring's pluggable MVC architecture, you can choose to use Spring's Spring MVC framework or integrate other MVC development frameworks when using Spring for WEB development.
  6. Html: The full name of HTML is Hypertext Markup Language, which is a markup language. It includes a series of tags. Through these tags, the document format on the network can be unified, and the scattered Internet resources can be connected into a logical whole. HTML text is a descriptive text composed of HTML commands, which can explain text, graphics, animations, sounds, tables, links, etc.
    .
    Hypertext is a way of organizing information. It associates text, graphics and other information media in the text through hyperlinks. These interrelated information media may be in the same text, or may be other files, or files on a computer located at a geographically distant location. This way of organizing information connects information resources distributed in different locations in a random way, providing convenience for people to search and retrieve information.
  7. shiro: Apache Shiro is a powerful and easy-to-use Java security framework that performs authentication, authorization, password and session management. Using Shiro's easy-to-understand API, you can quickly and easily get any app, from the smallest mobile app to the largest web and enterprise app.

3. Introduction of system function modules:

Functional block diagram

4. Database design:

1:absence(absence)

field name type Defaults column comment
absence_id int NULL Absence Form ID
student_id int NULL student ID
student_name varchar NULL student name
course_id int NULL Course ID
absence_time varchar NULL absence time

2:class(class)

field name type Defaults column comment
class_id int NULL class ID
class_name varchar NULL class name
department_id int NULL professional name
creation_time date NULL class creation time
creat_number int NULL The number of people who created the class
class_deleted int NULL flag field for deletion

3:classroom(classroom)

field name type Defaults column comment
classroom_id int NULL Classroom ID
classroom_name varchar NULL classroom name
classroom_state int NULL Available status of the classroom, the default is 0 empty
classroom_contain int NULL Classroom Capacity
classroom_phone varchar NULL The classroom logistics phone
classroom_deleted int NULL Classroom Delete Status

4:course(course)

field name type Defaults column comment
course_id int NULL Course ID
course_name varchar NULL course name
department_id int NULL Professional ID
state int NULL The current course is occupied by the teacher, 0 means no teacher occupies, 1 means the teacher occupies

5:department(department)

field name type Defaults column comment
department_id int NULL Professional ID
department_name varchar NULL professional name

6:headmaster(headmaster)

field name type Defaults column comment
headmaster_id int NULL Head teacher ID
headmaster_name varchar NULL Class teacher name
class_id int NULL Teacher ID
heademaster_deleted int NULL Class teacher status
headmaster_phone bigint NULL Class teacher contact number
headmaster_sex int NULL gender
headmaster_state int NULL

7:image_user(image_user)

field name type Defaults column comment
image_id int NULL image id
image_name varchar NULL picture name
user_id int NULL user id

8:permission(permission)

field name type Defaults column comment
permission_id int NULL Permission id, primary key
name varchar NULL permission name
parent_pid int NULL parent permission id
type varchar NULL Permission type: menu: menu, button: button, page: page
url varchar NULL The url resources accessed by the authority
sort tinyint NULL Serial number, used for sorting menus and buttons, behind the big ones
state tinyint NULL Status, 1 available, 0 not available

9:record(record)

field name type Defaults column comment
record_id int NULL Course Information ID
teacher_id int NULL Teacher ID
class_id int NULL class ID
course_id int NULL Course ID
classroom_id int NULL Classroom ID
record_date date NULL teaching date
record_index int NULL which class

10:register(register)

field name type Defaults column comment
registrar_id int NULL Dean ID
registrar_name varchar NULL Dean's name
registrar_sex int NULL Dean's gender
department_id int NULL Management department
registrar_phone bigint NULL 教务主任电话
registrar_deleted int NULL 逻辑删除

11:role(role)

字段名 类型 默认值 列注释
role_id int NULL 角色id
name varchar NULL 角色名
state tinyint NULL 状态,1可用,0不可用

12:role_permission(role_permission)

字段名 类型 默认值 列注释
id int NULL 主键
role_id int NULL 关联role表的角色id
permission_id int NULL 关联permission表的权限id

13:score(score)

字段名 类型 默认值 列注释
score_id int NULL 成绩表ID
score_GPA int NULL 平时成绩
score_exam int NULL 考试成绩
absence int NULL 缺勤次数
student_id int NULL 学生ID
course_id int NULL 课程id

14:student(student)

字段名 类型 默认值 列注释
student_id int NULL 学生ID
student_name varchar NULL 学生姓名
student_age int NULL 学生年龄
student_phone bigint NULL 学生电话
class_id int NULL 班级ID
student_sex int NULL 性别,0为女
student_deleted int NULL 学生状态,默认1为未删除

15:teacher(teacher)

字段名 类型 默认值 列注释
teacher_id int NULL 教师ID
teacher_name varchar NULL 教师姓名
teacher_sex int NULL 教师性别0女
course_id int NULL 课程ID
teacher_deleted int NULL 教师状态
teacher_phone varchar NULL 教师联系电话

16:user(user)

字段名 类型 默认值 列注释
user_id int NULL 用户ID
user_name varchar NULL 用户登录名
user_password varchar NULL 用户密码
user_nickname varchar NULL 用户昵称
user_deleted int NULL 用户状态

17:user_headmaster(user_headmaster)

字段名 类型 默认值 列注释
user_headmaster_id int NULL 用户班主任关联表ID
user_id int NULL 用户ID
headmaster_id int NULL 班主任ID

18:user_registrar(user_registrar)

字段名 类型 默认值 列注释
user_registrar_id int NULL 用户教务主任关联表ID
user_id int NULL 用户ID
registrar_id int NULL 教务主任ID

19:user_role(user_role)

字段名 类型 默认值 列注释
id int NULL
user_id int NULL 用户ID
role_id int NULL 角色ID

20:user_student(user_student)

字段名 类型 默认值 列注释
user_student_id int NULL 用户学生表ID
user_id int NULL 用户ID
student_id int NULL 学生ID

21:user_teacher(user_teacher)

字段名 类型 默认值 列注释
user_teacher_id int NULL 关联表ID
user_id int NULL 用户ID
teacher_id int NULL 教师ID

五、功能模块:

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

    user module

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

    Department Management

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

    course management

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

    Class information management

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

    classroom management

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

    Teacher Information Management

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

    Lecture information management

  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教务主任).

Attendance management, performance management

六、代码示例:

用户模块
 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框架进行开发。通过该系统,学校可以更加便捷地管理学生、教师、课程、考试、教学资源等信息,从而实现高效、科学、规范的教务管理。

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

In the final result of the project, we provided a comprehensive, efficient, and easy-to-use educational administration system that can meet the various needs of the school's educational administration. The system provides a series of functions such as student selection, grade inquiry, course management, and examination arrangement. Teachers can publish course information, assign homework, manage grades, etc. through the system. At the same time, system administrators can also maintain and manage through the system. We also provide multi-dimensional data analysis and visual report functions to facilitate administrators to analyze and evaluate educational affairs management.

In short, our project team has put a lot of effort into this project and successfully developed a high-quality and efficient educational administration management system, which can help schools manage and utilize teaching resources more conveniently and improve teaching quality and efficiency. We believe this system will have a positive impact on students, teachers and administrators.

8. Code download:

Code download: click to get

Guess you like

Origin blog.csdn.net/weixin_46228112/article/details/131534072