基于javaweb+mysql的springboot学生信息管理系统(java+springboot+html+layui+maven+mysql)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot学生信息管理系统(java+springboot+html+layui+maven+mysql)
一、项目简述
功能包括: 三角色管理: 学生,教师,管理员,在线选课,成绩录入,学生管理,选课管理,教室管理等等。学生管理可以查看所有学生并操作、添加学生;查看学生选报课程详情等等。教师管理可以查看所有教师并操作、添加教师等等。班级管理可以查看所有班级信息并操作、添加班级等等。
二、项目运行
环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等;
/**
*/
@Controller
public class BackController {
@Autowired
NoticeDao noticeDao;
/*
* @Param: []
* @Return: java.lang.String
* @Description: 请求转发到后台主页面
*/
@RequestMapping({"/back", "/back/index.html"})
public String toBack() {
return "back/index";
}
/*
* @Param: [model]
* @Return: java.lang.String
* @Description: 请求转发到后台公告列表页面
*/
@RequestMapping("/back/notice")
public String toNotice(Model model) {
List<Notice> notices = noticeDao.queryAllNotice();
model.addAttribute("notices", notices);
return "back/notice";
}
/*
* @Param: [notice]
* @Return: java.lang.String
* @Description: 发布公告后重定向到公告列表
*/
@PostMapping("/back/notice/add")
list.add(course);
}
} else {
course.setStatus("未开始");
list.add(course);
}
}
return list;
}
@RequestMapping("/front/info")
public String toInfo(HttpSession session, Model model) {
String loginUser = (String) session.getAttribute("LoginUser");
Student student = studentDao.queryStudentByUsername(loginUser);
model.addAttribute("stu", student);
return "front/info";
}
@PostMapping("/front/info")
public String updateInfo(Student student) {
studentDao.updateStudentInfo(student);
return "redirect:/front/info";
}
@PostMapping("/front/info/{studentId}")
public String updatePassword(@PathVariable("studentId") String studentId, @Param("current_password") String current_password, @Param("password") String password) {
studentDao.updateStudentPassword(studentId, password);
return "redirect:/logout";
}
}
/**
*/
* @Description: 转发到帮助导入课程页面
*/
@RequestMapping("/back/help/course")
public String toHelpCourse() {
return "back/help/course";
}
/*
* @Param: []
* @Return: java.lang.String
* @Description: 转发到帮助导入学生页面
*/
@RequestMapping("/back/help/student")
public String toHelpStudent() {
return "back/help/student";
}
/*
* @Param: []
* @Return: java.lang.String
* @Description: 转发到帮助导入教师页面
*/
@RequestMapping("/back/help/teacher")
public String toHelpTeacher() {
return "back/help/teacher";
}
}
/**
}
return false;
}
public void init(FilterConfig config) throws ServletException {
System.out.println("LoginFilter已运行");
String values = config.getInitParameter("paths");
pathList = values.split(",");
}
}
/**
*/
@Controller
public class ClassController {
@Autowired
ClassDao classDao;
@Autowired
CourseDao courseDao;
/*
* @Param: [model]
* @Return: java.lang.String
* @Description: 转发到班级列表页面
*/
@RequestMapping("/back/class/list")
public String toClassList(Model model) {
List<Class> classes = classDao.queryAllClass();
model.addAttribute("classes", classes);
return "back/class/list";
}
/*
* @Param: [addclass]
}
return list;
}
/*
* @Param: [session, model]
* @Return: java.lang.String
* @Description: 前台学生成绩查看
*/
@RequestMapping("/front/student/scoreview")
public String toScoreView(HttpSession session, Model model) {
String loginUser = (String) session.getAttribute("LoginUser");
List<StudentSelectCourses> selectcourses = studentDao.selectcourses();
for (StudentSelectCourses ssc : selectcourses) {
if (ssc.getStudent().getStudentId().equals(loginUser)) {
model.addAttribute("StudentSelectCourses", ssc.getStudentSelectCourses());
return "front/student/scoreview";
}
}
return "front/student/scoreview";
}
/*
* @Param: [session, model]
* @Return: java.lang.String
* @Description: 学生信息页面
*/
@RequestMapping("/front/student/info")
public String toInfo(HttpSession session, Model model) {
String loginUser = (String) session.getAttribute("LoginUser");
Student student = studentDao.queryStudentByUsername(loginUser);
model.addAttribute("stu", student);
List<Class> classes = classDao.queryAllClass();
model.addAttribute("classes", classes);
return "front/student/info";
}
/*
* @Param: [student]
* @Return: java.lang.String
* @Description: 修改学生信息
*/
@PostMapping("/front/student/info")
public String updateInfo(Student student) {
studentDao.updateStudentInfo(student);
return "redirect:/front/student/info";
}
@PostMapping("/back/notice/delete")
public String deleteNotices(@Param("deleteall") String deleteall) {
String[] deleteNotices = deleteall.split(",");
for (String noticeId : deleteNotices) {
noticeDao.deleteNotice(noticeId);
}
return "redirect:/back/notice";
}
/*
* @Param: [notice]
* @Return: java.lang.String
* @Description: 修改公告内容
*/
@PostMapping("/back/notice/info")
public String updateNotice(Notice notice) {
noticeDao.updateNotice(notice);
return "redirect:/back/notice";
}
/*
* @Param: []
* @Return: java.lang.String
* @Description: 转发到帮助导入课程页面
*/
@RequestMapping("/back/help/course")
public String toHelpCourse() {
return "back/help/course";
}
/*
* @Param: []
* @Return: java.lang.String
* @Description: 转发到帮助导入学生页面
*/
/**
*/
@Controller
public class StudentController {
@Autowired
StudentDao studentDao;
@Autowired
ClassDao classDao;
@Autowired
CourseDao courseDao;
/*
* @Param: [model]
* @Return: java.lang.String
* @Description: 请求转发学生列表页面(所查学生顺序为按学号降序)
*/
@RequestMapping("/back/student/list")
public String toStudentList(Model model) {
List<Student> students = studentDao.queryAllStudent();
model.addAttribute("students", students);
List<Class> classes = classDao.queryAllClass();
model.addAttribute("classes", classes);
return "back/student/list";
}
/*
* @Param: [student]
* @Return: java.lang.String
* @Description: 增加学生,并重定向到学生列表页面处理(默认密码为zut+账号后6位)
*/
@PostMapping("/back/student/add")
public String toStudentList(Model model) {
List<Student> students = studentDao.queryAllStudent();
model.addAttribute("students", students);
List<Class> classes = classDao.queryAllClass();
model.addAttribute("classes", classes);
return "back/student/list";
}
/*
* @Param: [student]
* @Return: java.lang.String
* @Description: 增加学生,并重定向到学生列表页面处理(默认密码为zut+账号后6位)
*/
@PostMapping("/back/student/add")
public String addStudent(Student student) {
student.setPassword("zut" + student.getStudentId().substring(student.getStudentId().length() - 6));
studentDao.addStudent(student);
classDao.addStudentToClass(student.getStudentClassId());
return "redirect:/back/student/list";
}
/*
* @Param: [studentId]
* @Return: java.lang.String
* @Description: 按学生ID删除用户及其选课记录并重定向到学生列表页面处理。注意点:删除学生之前需要删除其选课信息。
*/
@GetMapping("/back/student/delete/{studentId}")
public String deleteStudent(@PathVariable("studentId") String studentId) {
String studentClassId = studentDao.queryStudentByUsername(studentId).getStudentClassId();
courseDao.deleteSelectCourseById(studentId);
studentDao.deleteStudent(studentId);
classDao.deleteStudentFromClass(studentClassId);
return "redirect:/back/student/list";
}
/*
* @Param: [deleteall]
* @Return: java.lang.String
* @Description: 批量删除学生。注意点同上
*/
@PostMapping("/back/student/delete")
public String deleteStudents(@Param("deleteall") String deleteall) {
String[] deleteStudents = deleteall.split(",");
for (String studentId : deleteStudents) {
* @Return: java.lang.String
* @Description: 课程添加,后重定向到课程列表
*/
@PostMapping("/back/course/add")
public String addCourse(Course course) {
courseDao.addCourse(course);
if (course.getCourseType().equals("7")) {
List<Student> students = studentDao.queryAllStudent();
for (Student student : students) {
studentDao.setSelectCourse(student.getStudentId(), course.getCourseId());
}
}
return "redirect:/back/course/list";
}
/*
* @Param: [courseId]
* @Return: java.lang.String
* @Description: 课程删除功能,后重定向到课程列表。注意点:删除课程之前需要删除对应的选课信息。
*/
@GetMapping("/back/course/delete/{courseId}")
public String deleteStudent(@PathVariable("courseId") String courseId) {
courseDao.deleteSelectCourse(courseId);
courseDao.deleteCourse(courseId);
return "redirect:/back/course/list";
}
/*
* @Param: [deleteall]
* @Return: java.lang.String
* @Description: 批量删除课程。注意点同上
*/
@PostMapping("/back/course/delete")
public String deleteCourses(@Param("deleteall") String deleteall) {
String[] deletecourses = deleteall.split(",");
for (String courseId : deletecourses) {
courseDao.deleteSelectCourse(courseId);
courseDao.deleteCourse(courseId);
}
model.addAttribute("selectCourseStudents", selectCourseStudents);
List<Class> classes = classDao.queryAllClass();
model.addAttribute("classes", classes);
return "back/course/selectcourse";
}
//更新课程状态
List<SelectCourseStudents> newList(List<SelectCourseStudents> selectCourseStudents) {
List<SelectCourseStudents> list = new ArrayList<>();
long time = new Date().getTime();
for (SelectCourseStudents scs : selectCourseStudents) {
Course course = scs.getCourse();
if (time - course.getBeginDate().getTime() >= 0) {
if (course.getEndDate().getTime() + 1000 * 60 * 60 * 24 > time) {
course.setStatus("进行中");
list.add(0, scs);
} else {
course.setStatus("已结束");
list.add(scs);
}
} else {
course.setStatus("未开始");
list.add(scs);
}
}
return list;
}
}
/*
* @Param: [course]
* @Return: java.lang.String
* @Description: 修改课程信息,后重定向到课程列表
*/
@PostMapping("/back/course/info")
public String updateCourse(Course course) {
courseDao.updateCourse(course);
return "redirect:/back/course/list";
}
/*
* @Param: [model]
* @Return: java.lang.String
* @Description: 查询课程选报情况,并请求转发到课程选报详情页面
*/
@GetMapping("/back/course/selectcourse")
public String toCourseSelectCourse(Model model) {
List<SelectCourseStudents> selectCourseStudents = newList(courseDao.selectCourseStudents());
model.addAttribute("selectCourseStudents", selectCourseStudents);
List<Class> classes = classDao.queryAllClass();
model.addAttribute("classes", classes);
return "back/course/selectcourse";
}
//更新课程状态
List<SelectCourseStudents> newList(List<SelectCourseStudents> selectCourseStudents) {
List<SelectCourseStudents> list = new ArrayList<>();
long time = new Date().getTime();
for (SelectCourseStudents scs : selectCourseStudents) {
Course course = scs.getCourse();
if (time - course.getBeginDate().getTime() >= 0) {
if (course.getEndDate().getTime() + 1000 * 60 * 60 * 24 > time) {
course.setStatus("进行中");
list.add(0, scs);
} else {
course.setStatus("已结束");
list.add(scs);
}
}
String sp = "";
String tp = "";
if (student != null) {
sp = student.getPassword();
}
if (teacher != null) {
tp = teacher.getPassword();
}
if (password.equals(sp)) {
session.setAttribute("LoginUser", username);
session.setAttribute("classify", "student");
session.setAttribute("name", student.getStudentName());
return "redirect:/front/student";
} else if (password.equals(tp)) {
session.setAttribute("LoginUser", username);
session.setAttribute("classify", "teacher");
session.setAttribute("name", teacher.getTeacherName());
return "redirect:/front/teacher";
} else {
model.addAttribute("msg", "账号或密码错误");
model.addAttribute("username", username);
model.addAttribute("password", password);
return "login";
}
}
}
/*
* @Param: [session]
* @Return: java.lang.String
* @Description: 登出功能,清除session内容吗,然后重定向到登录处理
*/
@RequestMapping(value = "/logout")
public String logout(HttpSession session) {
session.removeAttribute("LoginUser");
session.removeAttribute("classify");
session.removeAttribute("name");
return "redirect:/index.html";
}
* @Description: 更新学生信息(不包括密码),并重定向到学生列表页面处理
*/
@PostMapping("/back/student/info")
public String updateStudent(Student student) {
studentDao.updateStudentInfo(student);
return "redirect:/back/student/list";
}
/*
* @Param: [studentId]
* @Return: java.lang.String
* @Description: 按学生ID重置学生密码,默认密码为:zut+账号后6位,后重定向到学生列表页面处理
*/
@GetMapping("/back/student/{studentId}")
public String resetStudentPassword(@PathVariable("studentId") String studentId) {
String password = "zut" + studentId.substring(studentId.length() - 6);
studentDao.updateStudentPassword(studentId, password);
return "redirect:/back/student/list";
}
/*
* @Param: [model]
* @Return: java.lang.String
* @Description: 请求转发到学生选课详情页面
*/
@GetMapping("/back/student/selectcourse")
public String toStudentSelectCourse(Model model) {
List<StudentSelectCourses> selectcourses = studentDao.selectcourses();
model.addAttribute("selectcourses", selectcourses);
List<Class> classes = classDao.queryAllClass();
model.addAttribute("classes", classes);
return "back/student/selectcourse";
}
}
* @Return: java.lang.String
* @Description: 课程删除功能,后重定向到课程列表。注意点:删除课程之前需要删除对应的选课信息。
*/
@GetMapping("/back/course/delete/{courseId}")
public String deleteStudent(@PathVariable("courseId") String courseId) {
courseDao.deleteSelectCourse(courseId);
courseDao.deleteCourse(courseId);
return "redirect:/back/course/list";
}
/*
* @Param: [deleteall]
* @Return: java.lang.String
* @Description: 批量删除课程。注意点同上
*/
@PostMapping("/back/course/delete")
public String deleteCourses(@Param("deleteall") String deleteall) {
String[] deletecourses = deleteall.split(",");
for (String courseId : deletecourses) {
courseDao.deleteSelectCourse(courseId);
courseDao.deleteCourse(courseId);
}
return "redirect:/back/course/list";
}
/*
* @Param: [course]
* @Return: java.lang.String
* @Description: 修改课程信息,后重定向到课程列表
*/
@PostMapping("/back/course/info")
public String updateCourse(Course course) {
courseDao.updateCourse(course);
return "redirect:/back/course/list";
}
/*
* @Param: [model]
* @Return: java.lang.String
* @Description: 查询课程选报情况,并请求转发到课程选报详情页面
*/
@GetMapping("/back/course/selectcourse")
public String toCourseSelectCourse(Model model) {
* @Description: 查询所有课程并请求转发到课程列表页面
*/
@RequestMapping("/back/course/list")
public String toCourseList(Model model) {
List<Course> courses = courseDao.queryAllCourse();
model.addAttribute("courses", courses);
return "back/course/list";
}
/*
* @Param: [course]
* @Return: java.lang.String
* @Description: 课程添加,后重定向到课程列表
*/
@PostMapping("/back/course/add")
public String addCourse(Course course) {
courseDao.addCourse(course);
if (course.getCourseType().equals("7")) {
List<Student> students = studentDao.queryAllStudent();
for (Student student : students) {
studentDao.setSelectCourse(student.getStudentId(), course.getCourseId());
}
}
return "redirect:/back/course/list";
}
/*
* @Param: [courseId]
* @Return: java.lang.String
* @Description: 课程删除功能,后重定向到课程列表。注意点:删除课程之前需要删除对应的选课信息。
*/
@GetMapping("/back/course/delete/{courseId}")
public String deleteStudent(@PathVariable("courseId") String courseId) {
courseDao.deleteSelectCourse(courseId);
courseDao.deleteCourse(courseId);
return "redirect:/back/course/list";
/**
*/
@Controller
public class FrontController {
@Autowired
StudentDao studentDao;
@Autowired
NoticeDao noticeDao;
@Autowired
CourseDao courseDao;
/*
* @Param: [model]
* @Return: java.lang.String
* @Description: 转发到前台主页
*/
@RequestMapping({"/front", "/front/index.html"})
public String toFrontIndex(Model model) {
List<Notice> notices = noticeDao.queryAllNotice();
model.addAttribute("notices", notices);
return "front/index";
}
@RequestMapping({"/front/selectcourse"})
public String toSelectCourse(HttpSession session, Model model) {
long time = new Date().getTime();
List<Course> list = newList(courseDao.queryAllCourse());
model.addAttribute("courses", list);
List<Course> selectCourses = newList(studentDao.querySelectCourseByStudentID((String) session.getAttribute("LoginUser")));
model.addAttribute("selectCourses", selectCourses);
String msg = (String) session.getAttribute("msg");
if (msg != null) {
model.addAttribute("msg", msg);
session.removeAttribute("msg");
}
return "front/selectcourse";
}
@GetMapping("/front/selectcourse/{courseId}")
public String selectCourse(@PathVariable("courseId") String courseId, HttpSession session) {
* @Description: 查询课程选报情况,并请求转发到课程选报详情页面
*/
@GetMapping("/back/course/selectcourse")
public String toCourseSelectCourse(Model model) {
List<SelectCourseStudents> selectCourseStudents = newList(courseDao.selectCourseStudents());
model.addAttribute("selectCourseStudents", selectCourseStudents);
List<Class> classes = classDao.queryAllClass();
model.addAttribute("classes", classes);
return "back/course/selectcourse";
}
//更新课程状态
List<SelectCourseStudents> newList(List<SelectCourseStudents> selectCourseStudents) {
List<SelectCourseStudents> list = new ArrayList<>();
long time = new Date().getTime();
for (SelectCourseStudents scs : selectCourseStudents) {
Course course = scs.getCourse();
if (time - course.getBeginDate().getTime() >= 0) {
if (course.getEndDate().getTime() + 1000 * 60 * 60 * 24 > time) {
course.setStatus("进行中");
list.add(0, scs);
} else {
course.setStatus("已结束");
list.add(scs);
}
} else {
course.setStatus("未开始");
list.add(scs);
}
}
return list;
}
}