学生课程表管理系统——stage 2 核心代码

时间:2024-02-22 21:19:35

AdminController

 

package com.system.controller;

import com.system.exception.CustomException;
import com.system.po.*;
import com.system.service.*;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.annotation.Resource;
import java.util.List;


@Controller
@RequestMapping("/admin")
public class AdminController {

@Resource(name = "studentServiceImpl")
private StudentService studentService;

@Resource(name = "teacherServiceImpl")
private TeacherService teacherService;

@Resource(name = "courseServiceImpl")
private CourseService courseService;

@Resource(name = "collegeServiceImpl")
private CollegeService collegeService;

@Resource(name = "userloginServiceImpl")
private UserloginService userloginService;

/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<学生操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/

// 学生信息显示
@RequestMapping("/showStudent")
public String showStudent(Model model, Integer page) throws Exception {

List<StudentCustom> list = null;
//页码对象
PagingVO pagingVO = new PagingVO();
//设置总页数
pagingVO.setTotalCount(studentService.getCountStudent());
if (page == null || page == 0) {
pagingVO.setToPageNo(1);
list = studentService.findByPaging(1);
} else {
pagingVO.setToPageNo(page);
list = studentService.findByPaging(page);
}

model.addAttribute("studentList", list);
model.addAttribute("pagingVO", pagingVO);

return "admin/showStudent";

}

// 添加学生信息页面显示
@RequestMapping(value = "/addStudent", method = {RequestMethod.GET})
public String addStudentUI(Model model) throws Exception {

List<College> list = collegeService.finAll();

model.addAttribute("collegeList", list);

return "admin/addStudent";
}

// 添加学生信息操作
@RequestMapping(value = "/addStudent", method = {RequestMethod.POST})
public String addStudent(StudentCustom studentCustom, Model model) throws Exception {

Boolean result = studentService.save(studentCustom);

if (!result) {
model.addAttribute("message", "学号重复");
return "error";
}
//添加成功后,也添加到登录表
Userlogin userlogin = new Userlogin();
userlogin.setUsername(studentCustom.getUserid().toString());
userlogin.setPassword("123");
userlogin.setRole(2);
userloginService.save(userlogin);

//重定向
return "redirect:/admin/showStudent";
}

// 修改学生信息页面显示
@RequestMapping(value = "/editStudent", method = {RequestMethod.GET})
public String editStudentUI(Integer id, Model model) throws Exception {
if (id == null) {
//加入没有带学生id就进来的话就返回学生显示页面
return "redirect:/admin/showStudent";
}
StudentCustom studentCustom = studentService.findById(id);
if (studentCustom == null) {
throw new CustomException("未找到该名学生");
}
List<College> list = collegeService.finAll();

model.addAttribute("collegeList", list);
model.addAttribute("student", studentCustom);


return "admin/editStudent";
}

// 修改学生信息处理
@RequestMapping(value = "/editStudent", method = {RequestMethod.POST})
public String editStudent(StudentCustom studentCustom) throws Exception {

studentService.updataById(studentCustom.getUserid(), studentCustom);

//重定向
return "redirect:/admin/showStudent";
}

// 删除学生
@RequestMapping(value = "/removeStudent", method = {RequestMethod.GET} )
private String removeStudent(Integer id) throws Exception {
if (id == null) {
//加入没有带学生id就进来的话就返回学生显示页面
return "admin/showStudent";
}
studentService.removeById(id);
userloginService.removeByName(id.toString());

return "redirect:/admin/showStudent";
}

// 搜索学生
@RequestMapping(value = "selectStudent", method = {RequestMethod.POST})
private String selectStudent(String findByName, Model model) throws Exception {

List<StudentCustom> list = studentService.findByName(findByName);

model.addAttribute("studentList", list);
return "admin/showStudent";
}

/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<教师操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/

// 教师页面显示
@RequestMapping("/showTeacher")
public String showTeacher(Model model, Integer page) throws Exception {

List<TeacherCustom> list = null;
//页码对象
PagingVO pagingVO = new PagingVO();
//设置总页数
pagingVO.setTotalCount(teacherService.getCountTeacher());
if (page == null || page == 0) {
pagingVO.setToPageNo(1);
list = teacherService.findByPaging(1);
} else {
pagingVO.setToPageNo(page);
list = teacherService.findByPaging(page);
}

model.addAttribute("teacherList", list);
model.addAttribute("pagingVO", pagingVO);

return "admin/showTeacher";

}

// 添加教师信息
@RequestMapping(value = "/addTeacher", method = {RequestMethod.GET})
public String addTeacherUI(Model model) throws Exception {

List<College> list = collegeService.finAll();

model.addAttribute("collegeList", list);

return "admin/addTeacher";
}

// 添加教师信息处理
@RequestMapping(value = "/addTeacher", method = {RequestMethod.POST})
public String addTeacher(TeacherCustom teacherCustom, Model model) throws Exception {

Boolean result = teacherService.save(teacherCustom);

if (!result) {
model.addAttribute("message", "工号重复");
return "error";
}
//添加成功后,也添加到登录表
Userlogin userlogin = new Userlogin();
userlogin.setUsername(teacherCustom.getUserid().toString());
userlogin.setPassword("123");
userlogin.setRole(1);
userloginService.save(userlogin);

//重定向
return "redirect:/admin/showTeacher";
}

// 修改教师信息页面显示
@RequestMapping(value = "/editTeacher", method = {RequestMethod.GET})
public String editTeacherUI(Integer id, Model model) throws Exception {
if (id == null) {
return "redirect:/admin/showTeacher";
}
TeacherCustom teacherCustom = teacherService.findById(id);
if (teacherCustom == null) {
throw new CustomException("未找到该名学生");
}
List<College> list = collegeService.finAll();

model.addAttribute("collegeList", list);
model.addAttribute("teacher", teacherCustom);


return "admin/editTeacher";
}

// 修改教师信息页面处理
@RequestMapping(value = "/editTeacher", method = {RequestMethod.POST})
public String editTeacher(TeacherCustom teacherCustom) throws Exception {

teacherService.updateById(teacherCustom.getUserid(), teacherCustom);

//重定向
return "redirect:/admin/showTeacher";
}

//删除教师
@RequestMapping("/removeTeacher")
public String removeTeacher(Integer id) throws Exception {
if (id == null) {
//加入没有带教师id就进来的话就返回教师显示页面
return "admin/showTeacher";
}
teacherService.removeById(id);
userloginService.removeByName(id.toString());

return "redirect:/admin/showTeacher";
}

//搜索教师
@RequestMapping(value = "selectTeacher", method = {RequestMethod.POST})
private String selectTeacher(String findByName, Model model) throws Exception {

List<TeacherCustom> list = teacherService.findByName(findByName);

model.addAttribute("teacherList", list);
return "admin/showTeacher";
}

/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<课程操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/

// 课程信息显示
@RequestMapping("/showCourse")
public String showCourse(Model model, Integer page) throws Exception {

List<CourseCustom> list = null;
//页码对象
PagingVO pagingVO = new PagingVO();
//设置总页数
pagingVO.setTotalCount(courseService.getCountCouse());
if (page == null || page == 0) {
pagingVO.setToPageNo(1);
list = courseService.findByPaging(1);
} else {
pagingVO.setToPageNo(page);
list = courseService.findByPaging(page);
}

model.addAttribute("courseList", list);
model.addAttribute("pagingVO", pagingVO);

return "admin/showCourse";

}

//添加课程
@RequestMapping(value = "/addCourse", method = {RequestMethod.GET})
public String addCourseUI(Model model) throws Exception {

List<TeacherCustom> list = teacherService.findAll();
List<College> collegeList = collegeService.finAll();

model.addAttribute("collegeList", collegeList);
model.addAttribute("teacherList", list);

return "admin/addCourse";
}

// 添加课程信息处理
@RequestMapping(value = "/addCourse", method = {RequestMethod.POST})
public String addCourse(CourseCustom courseCustom, Model model) throws Exception {

Boolean result = courseService.save(courseCustom);

if (!result) {
model.addAttribute("message", "课程号重复");
return "error";
}


//重定向
return "redirect:/admin/showCourse";
}

// 修改教师信息页面显示
@RequestMapping(value = "/editCourse", method = {RequestMethod.GET})
public String editCourseUI(Integer id, Model model) throws Exception {
if (id == null) {
return "redirect:/admin/showCourse";
}
CourseCustom courseCustom = courseService.findById(id);
if (courseCustom == null) {
throw new CustomException("未找到该课程");
}
List<TeacherCustom> list = teacherService.findAll();
List<College> collegeList = collegeService.finAll();

model.addAttribute("teacherList", list);
model.addAttribute("collegeList", collegeList);
model.addAttribute("course", courseCustom);


return "admin/editCourse";
}

// 修改教师信息页面处理
@RequestMapping(value = "/editCourse", method = {RequestMethod.POST})
public String editCourse(CourseCustom courseCustom) throws Exception {

courseService.upadteById(courseCustom.getCourseid(), courseCustom);

//重定向
return "redirect:/admin/showCourse";
}

// 删除课程信息
@RequestMapping("/removeCourse")
public String removeCourse(Integer id) throws Exception {
if (id == null) {
//加入没有带教师id就进来的话就返回教师显示页面
return "admin/showCourse";
}
courseService.removeById(id);

return "redirect:/admin/showCourse";
}

//搜索课程
@RequestMapping(value = "selectCourse", method = {RequestMethod.POST})
private String selectCourse(String findByName, Model model) throws Exception {

List<CourseCustom> list = courseService.findByName(findByName);

model.addAttribute("courseList", list);
return "admin/showCourse";
}

/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<其他操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/

// 普通用户账号密码重置
@RequestMapping("/userPasswordRest")
public String userPasswordRestUI() throws Exception {
return "admin/userPasswordRest";
}

// 普通用户账号密码重置处理
@RequestMapping(value = "/userPasswordRest", method = {RequestMethod.POST})
public String userPasswordRest(Userlogin userlogin) throws Exception {

Userlogin u = userloginService.findByName(userlogin.getUsername());

if (u != null) {
if (u.getRole() == 0) {
throw new CustomException("该账户为管理员账户,没法修改");
}
u.setPassword(userlogin.getPassword());
userloginService.updateByName(userlogin.getUsername(), u);
} else {
throw new CustomException("没找到该用户");
}

return "admin/userPasswordRest";
}

// 本账户密码重置
@RequestMapping("/passwordRest")
public String passwordRestUI() throws Exception {
return "admin/passwordRest";
}


}
  该代码实现的是管理员界面能够实现的所有功能,包括学生、课程和老师页面的显示、添加、修改、删除、搜索功能,还提供了用户密码的重置功能

                                                             LoginController
package com.system.controller;

import com.system.po.Userlogin;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class LoginController {

//登录跳转
@RequestMapping(value = "/login", method = {RequestMethod.GET})
public String loginUI() throws Exception {
return "../../login";
}

//登录表单处理
@RequestMapping(value = "/login", method = {RequestMethod.POST})
public String login(Userlogin userlogin) throws Exception {

//Shiro实现登录
UsernamePasswordToken token = new UsernamePasswordToken(userlogin.getUsername(),
userlogin.getPassword());
Subject subject = SecurityUtils.getSubject();

//如果获取不到用户名就是登录失败,但登录失败的话,会直接抛出异常
subject.login(token);

if (subject.hasRole("admin")) {
return "redirect:/admin/showStudent";
} else if (subject.hasRole("teacher")) {
return "redirect:/teacher/showCourse";
} else if (subject.hasRole("student")) {
return "redirect:/student/showCourse";
}

return "/login";
}

}
  本段代码实现了利用Shiro技术来实现登陆,包括登陆表单的处理、登陆的跳转和异常的处理

                                      ResetPasswordController
package com.system.controller;

import com.system.exception.CustomException;
import com.system.po.Userlogin;
import com.system.service.UserloginService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.annotation.Resource;

@Controller
public class RestPasswordController {

@Resource(name = "userloginServiceImpl")
private UserloginService userloginService;

// 本账户密码重置
@RequestMapping(value = "/passwordRest", method = {RequestMethod.POST})
public String passwordRest(String oldPassword, String password1) throws Exception {
Subject subject = SecurityUtils.getSubject();
String username = (String) subject.getPrincipal();

Userlogin userlogin = userloginService.findByName(username);

if (!oldPassword.equals(userlogin.getPassword())) {
throw new CustomException("旧密码不正确");
} else {
userlogin.setPassword(password1);
userloginService.updateByName(username, userlogin);
}

return "redirect:/logout";
}

}
  本段代码是密码重置过程的实现


                                      StudentController
package com.system.controller;

import com.system.exception.CustomException;
import com.system.po.*;
import com.system.service.CourseService;
import com.system.service.SelectedCourseService;
import com.system.service.StudentService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import java.util.List;


@Controller
@RequestMapping(value = "/student")
public class StudentController {

@Resource(name = "courseServiceImpl")
private CourseService courseService;

@Resource(name = "studentServiceImpl")
private StudentService studentService;

@Resource(name = "selectedCourseServiceImpl")
private SelectedCourseService selectedCourseService;

@RequestMapping(value = "/showCourse")
public String stuCourseShow(Model model, Integer page) throws Exception {

List<CourseCustom> list = null;
//页码对象
PagingVO pagingVO = new PagingVO();
//设置总页数
pagingVO.setTotalCount(courseService.getCountCouse());
if (page == null || page == 0) {
pagingVO.setToPageNo(1);
list = courseService.findByPaging(1);
} else {
pagingVO.setToPageNo(page);
list = courseService.findByPaging(page);
}

model.addAttribute("courseList", list);
model.addAttribute("pagingVO", pagingVO);

return "student/showCourse";
}

// 选课操作
@RequestMapping(value = "/stuSelectedCourse")
public String stuSelectedCourse(int id) throws Exception {
//获取当前用户名
Subject subject = SecurityUtils.getSubject();
String username = (String) subject.getPrincipal();

SelectedCourseCustom selectedCourseCustom = new SelectedCourseCustom();
selectedCourseCustom.setCourseid(id);
selectedCourseCustom.setStudentid(Integer.parseInt(username));

SelectedCourseCustom s = selectedCourseService.findOne(selectedCourseCustom);

if (s == null) {
selectedCourseService.save(selectedCourseCustom);
} else {
throw new CustomException("该门课程你已经选了,不能再选");
}

return "redirect:/student/selectedCourse";
}

// 退课操作
@RequestMapping(value = "/outCourse")
public String outCourse(int id) throws Exception {
Subject subject = SecurityUtils.getSubject();
String username = (String) subject.getPrincipal();

SelectedCourseCustom selectedCourseCustom = new SelectedCourseCustom();
selectedCourseCustom.setCourseid(id);
selectedCourseCustom.setStudentid(Integer.parseInt(username));

selectedCourseService.remove(selectedCourseCustom);

return "redirect:/student/selectedCourse";
}

// 已选课程
@RequestMapping(value = "/selectedCourse")
public String selectedCourse(Model model) throws Exception {
//获取当前用户名
Subject subject = SecurityUtils.getSubject();
StudentCustom studentCustom = studentService.findStudentAndSelectCourseListByName((String) subject.getPrincipal());

List<SelectedCourseCustom> list = studentCustom.getSelectedCourseList();

model.addAttribute("selectedCourseList", list);

return "student/selectCourse";
}

// 已修课程
@RequestMapping(value = "/overCourse")
public String overCourse(Model model) throws Exception {

//获取当前用户名
Subject subject = SecurityUtils.getSubject();
StudentCustom studentCustom = studentService.findStudentAndSelectCourseListByName((String) subject.getPrincipal());

List<SelectedCourseCustom> list = studentCustom.getSelectedCourseList();

model.addAttribute("selectedCourseList", list);

return "student/overCourse";
}

//修改密码
@RequestMapping(value = "/passwordRest")
public String passwordRest() throws Exception {
return "student/passwordRest";
}



}
  本段代码是学生页面功能的实现,其中包括选课、退课、查询已选课程、查询已修课程和修改密码。


                                      TeacherComtroller
package com.system.controller;

import com.system.exception.CustomException;
import com.system.po.*;
import com.system.service.CourseService;
import com.system.service.SelectedCourseService;
import com.system.service.StudentService;
import com.system.service.TeacherService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.annotation.Resource;
import java.util.List;

@Controller
@RequestMapping(value = "/teacher")
public class TeacherController {

@Resource(name = "teacherServiceImpl")
private TeacherService teacherService;

@Resource(name = "courseServiceImpl")
private CourseService courseService;

@Resource(name = "selectedCourseServiceImpl")
private SelectedCourseService selectedCourseService;

// 显示我的课程
@RequestMapping(value = "/showCourse")
public String stuCourseShow(Model model) throws Exception {

Subject subject = SecurityUtils.getSubject();
String username = (String) subject.getPrincipal();

List<CourseCustom> list = courseService.findByTeacherID(Integer.parseInt(username));
model.addAttribute("courseList", list);

return "teacher/showCourse";
}

// 显示成绩
@RequestMapping(value = "/gradeCourse")
public String gradeCourse(Integer id, Model model) throws Exception {
if (id == null) {
return "";
}
List<SelectedCourseCustom> list = selectedCourseService.findByCourseID(id);
model.addAttribute("selectedCourseList", list);
return "teacher/showGrade";
}

// 打分
@RequestMapping(value = "/mark", method = {RequestMethod.GET})
public String markUI(SelectedCourseCustom scc, Model model) throws Exception {

SelectedCourseCustom selectedCourseCustom = selectedCourseService.findOne(scc);

model.addAttribute("selectedCourse", selectedCourseCustom);

return "teacher/mark";
}

// 打分
@RequestMapping(value = "/mark", method = {RequestMethod.POST})
public String mark(SelectedCourseCustom scc) throws Exception {

selectedCourseService.updataOne(scc);

return "redirect:/teacher/gradeCourse?id="+scc.getCourseid();
}

//修改密码
@RequestMapping(value = "/passwordRest")
public String passwordRest() throws Exception {
return "teacher/passwordRest";
}

}
  本程序是教师页面功能的实现,包括显示教师本人的课程、显示成绩、对课程进行打分和修改(教师的)密码。