项目描述
临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的教务管理系统设计与实现。
功能需求
本教务管理系统通过分析和确定系统的角色和功能划分,按照业务合理区分为不同的菜单功能模块。从教学业务以及学校管理人员的角度出发,对每个功能的需求实现点进行人性化详细的构思。本系统未做完善的用户体系,只是简单的分为了4个用户分别为:
- 系统管理员:顶层管理员,是教务人员的上级,只管理教务中公共基础的数据,例如:角色管理,权限管理等,如果需要配置角色权限,请登录该用户。
- 教务人员:学院级别,每个学院的教务管理员管理自己学院下的相关信息。
- 教师
- 学生
具体功能可以根据角色权限配置菜单按钮。
部分效果图
部分代码
@GetMapping("/data")
@ResponseBody
public Map<String, Object> mainData() {
Map<String, Object> map = new ConcurrentHashMap<>();
MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
MemoryUsage nonHeapMemoryUsage = mem.getNonHeapMemoryUsage();
MemoryUsage heapMemoryUsage = mem.getHeapMemoryUsage();
//初始的总内存
long init = heapMemoryUsage.getInit();
//最大可用内存
long max = heapMemoryUsage.getMax();
//已使用的内存
long used = heapMemoryUsage.getUsed();
long total = heapMemoryUsage.getCommitted();
long max1 = nonHeapMemoryUsage.getMax() / 1024 / 1024;
long free = (nonHeapMemoryUsage.getCommitted() - nonHeapMemoryUsage.getUsed()) / 1024 / 1024;
long used1 = nonHeapMemoryUsage.getUsed() / 1024 / 1024;
long total1 = nonHeapMemoryUsage.getCommitted() / 1024 / 1024;
long totalMemory = total / 1024 / 1024;
long freeMemory = (total - used) / 1024 / 1024;
long maxMemory = max / 1024 / 1024;
long UsedMemory = used / 1024 / 1024;
map.put("totalMemory", totalMemory);
map.put("freeMemory", freeMemory);
map.put("maxMemory", maxMemory);
map.put("UsedMemory", UsedMemory);
map.put("nontotalMemory", total1);
map.put("nonfreeMemory", free);
map.put("nonmaxMemory", max1);
map.put("nonUsedMemory", used1);
return map;
}
@GetMapping("/page/{page}")
public String page(@PathVariable("page") String page) {
return "/web/" + page;
}
@GetMapping("/page/{category}/{page}")
public String page(@PathVariable("category") String category, @PathVariable("page") String page) {
return "/web/" + category + "/" + page;
}
@GetMapping("/findStudentPanel")
public ResponseEntity findStudentPanel() {
DecimalFormat df = new DecimalFormat(".0");
TStudent student = (TStudent) getRealm();
TClasses classes = classesService.findById(student.getClassesId());
TSpecialty specialty = specialtyService.findById(classes.getSpecialtyId());
List<CourseDTO> list = scoreService.findCourseByStudent(student.getId());
StudentPanel studentPanel = new StudentPanel();
studentPanel.setCourseNum(list.size());
studentPanel.setStudent(student);
studentPanel.setSpecialty(specialty);
// 成绩能力模型
int tongshi = 0;
int zhuanye = 0;
int shijian = 0;
int gonggong = 0;
int xueke = 0;
for (CourseDTO courseDTO : list) {
studentPanel.setTotalTime(studentPanel.getTotalTime() + courseDTO.getTotalTime());
if (courseDTO.getScore() >= 60) {
// 合格率
studentPanel.setPassNum(studentPanel.getPassNum() + 1);
}
if (courseDTO.getSystemId().equals("1")) {
gonggong += 1;
studentPanel.setGonggong(studentPanel.getGonggong() + courseDTO.getScore());
}
if (courseDTO.getSystemId().equals("2")) {
zhuanye += 1;
studentPanel.setZhuanye(studentPanel.getZhuanye() + courseDTO.getScore());
}
if (courseDTO.getSystemId().equals("4")) {
tongshi += 1;
studentPanel.setTongshi(studentPanel.getTongshi() + courseDTO.getScore());
}
if (courseDTO.getSystemId().equals("5")) {
shijian += 1;
studentPanel.setShijan(studentPanel.getShijan() + courseDTO.getScore());
}
if (courseDTO.getSystemId().equals("6")) {
xueke += 1;
studentPanel.setXueke(studentPanel.getXueke() + courseDTO.getScore());
}
}
// 缺勤次数
studentPanel.setDisciplinary(student.getAbsent());
// 合格率
studentPanel.setEligiableRate(studentPanel.getPassNum() == 0 ? 0 : Double.valueOf(df.format(studentPanel.getPassNum() / (studentPanel.getCourseNum() * 1.0) * 100)));
// 到课率
studentPanel.setUpCourseRate(studentPanel.getDisciplinary() == 0 ? 0 : Double.valueOf(df.format(100.0 - studentPanel.getDisciplinary() / (studentPanel.getTotalTime() / 2.0) * 100)));
// 成绩能力模型
studentPanel.setGonggongRate(studentPanel.getGonggong() == 0 ? 0 : Double.valueOf(df.format(studentPanel.getGonggong() / (gonggong * 100.0) * 100)));
studentPanel.setZhuanyeRate(studentPanel.getZhuanye() == 0 ? 0 : Double.valueOf(df.format(studentPanel.getZhuanye() / (zhuanye * 100.0) * 100)));
studentPanel.setTongshiRate(studentPanel.getTongshi() == 0 ? 0 : Double.valueOf(df.format(studentPanel.getTongshi() / (tongshi * 100.0) * 100)));
studentPanel.setXuekeRate(studentPanel.getXueke() == 0 ? 0 : Double.valueOf(df.format(studentPanel.getXueke() / (xueke * 100.0) * 100)));
studentPanel.setShijanRate(studentPanel.getShijan() == 0 ? 0 : Double.valueOf(df.format(studentPanel.getShijan() / (shijian * 100.0) * 100)));
// 统计缺勤
int[][] absentCount = absentService.countStudentAbsent(getUserId());
studentPanel.setAbsentCount(absentCount);
return ResponseEntity.ok(studentPanel);
}
@GetMapping("/findUserPanel")
public ResponseEntity findUserPanel() {
JWPanel jwPanel = new JWPanel();
// 统计最近7天缺勤
int[][] absentCount = absentService.countStudentByJW(getRealm());
jwPanel.setAbsentCount(absentCount);
// 统计在校人数
List<Integer> countGrade = studentService.countPeople(getRealm());
jwPanel.setCountGrade(countGrade);
// 统计缺课课时
int[] courseDTOList = courseService.countDownCourseRate(getRealm(), absentCount);
jwPanel.setDownCourseRate(courseDTOList);
// 统计旷课时段
int[] list = teacherCourseService.countDownCourseSection(getRealm(), absentCount);
jwPanel.setDownCourseSectionRate(list);
// 通知公告
List moticeLists = userNoticeService.findNoticeByJW(getRealm());
jwPanel.setNoticeList(moticeLists);
return ResponseEntity.ok(jwPanel);
}
@GetMapping("/findTeacherPanel")
public ResponseEntity findTeacherPanel(String teamId) {
TeacherPanel teacherPanel = new TeacherPanel();
// 通知公告
List moticeLists = userNoticeService.findNoticeByTeacher(getRealm());
teacherPanel.setNoticeList(moticeLists);
// 教学完成进度
TeacherSchedule teacherSchedule = teacherCourseService.countTeacherSchedule(getRealm(), teamId);
// 缺课情况
List<CourseDTO> list = teacherCourseService.countAbsent(getRealm(), teamId);
teacherPanel.setCourseList(list);
teacherPanel.setTeacherSchedule(teacherSchedule);
return ResponseEntity.ok(teacherPanel);
}
安装部署需求
前后端分离,idea运行启动
系统部署
系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装node14并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在idea中运行打包;
本项目用到的技术和框架
1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL5.7
4.框架:SpringBoot+vue
本项目中的关键点
此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。
环境工具
开发工具 IDEA
语言 JDK1.8 、SpringBoot、vue
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。