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:
- 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.
- 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). - 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.
- 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. - 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.
- 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. - 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:
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 |
五、功能模块:
-
用户模块:
分三类角色:教务主任、班主任、任课教师、不同角色对应可访问的功能模块不同,及权限不同。登录模块(shiro) -
院系管理:院系管理(决定课程方向):类似如JAVA、嵌入式、H5,学生专业的增删改查
-
课程管理: 管理维护基本课程信息:类似如JAVA基础、JAVA面向对象核心编程、Mysql数据库编程,增删改查课程
-
班级信息管理: 管理、维护班级信息(信息的增删改查)、指定班主任,增删改查班级信息
-
教室管理:管理维护教室信息;
-
教师信息管理:管理维护教师信息
-
授课信息管理:授课信息管理:管理、维护授课信息、如发布、调整教学计划、打印课程表
-
考勤管理、成绩管理:考勤管理:管理维护学生考勤
成绩管理:管理维护学生所学课程的考核结果,添加修改平时成绩、添加修改考试成绩
下面是一些账号信息,因本系统使用 加密的方式保存密码,所以无法直接从数据库中查看用户的密码信息,故在此备注一些账号密码,后期可自己使用管理员账号添加修改用户密码信息
学生信息管理: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框架进行开发。通过该系统,学校可以更加便捷地管理学生、教师、课程、考试、教学资源等信息,从而实现高效、科学、规范的教务管理。
在项目开发过程中,我们采用了敏捷开发的方法,并以团队合作为核心,保证了项目开发的高效性和质量。我们注重需求分析和设计,通过反复的沟通和讨论,建立了清晰的需求文档和详细的系统设计文档。我们在实现过程中,采用了严谨的开发流程和测试机制,保证了系统的稳定性和安全性。
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