随着互联网的不断发展与微信及微信小程序的普遍应用,教育行业发生了重大变化,有关IT方面的线下培训机构也随之增加。如果线下IT培训机构可以利用线上管理取代传统的人工管理,那么将可以大大地降低工作量,提高整个机构的工作效率,还可以更好地对人员信息进行管理,同时也扩充了招生范围,有利于线下IT培训机构的工作更好地开展,因此开发一个培训机构管理系统是很有必要的。
首先对当前线下培训机构所使用的的管理系统进行调研和分析,然后对软件的开发平台和技术、数据库等技术方面进行了研究,提出了基于Idea与微信小程序平台,采用了SSM(Spring+SpringMVC+Mybatis)框架与Shrio框架开发系统后端,采用Bootstrap框架和微信小程序开发前端,并采用MySQL5.6数据库管理数据的开发方案;再次,采用UML建模技术对系统进行需求分析、功能设计以及类的设计;最后,实现了一个具有学员管理、课程管理、讲师管理、成绩管理、考试管理、订单管理、数据统计的基于微信小程序的线下IT培训机构管理系统。
关键词: 线下 IT培训 SSM 微信小程序
【java毕业设计】java线下IT培训机构平台ssm培训课程成绩管理系统微信小程序
系统部署说明:
打开IntelliJ IDEA,导入Examination_System项目,找到jdbc.properties配置文件,将实际mysql地址,mysql账号密码以及端口号配置上去,修改完成之后再次重启tomcat即可。
打开微信开发者工具,导入wxapp-training-master项目后运行即可。
打开MySQL,导入examination_system.sql文件即可。
访问后台:http://localhost:8080/login,输入系统管理员账号admin和密码123即可。
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.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
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 org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@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;
@Resource(name = "selectedCourseServiceImpl")
private SelectedCourseService selectedCourseService;
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<学生操作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
@RequestMapping("/showStudent")
public String showStudent(Model model, Integer page) throws Exception {
List<StudentCustom> list = null;
//页码对象
PagingVO pagingVO = new PagingVO();
//设置总页数
pagingVO.setTotalCount(this.studentService.getCountStudent());
if (page == null || page == 0) {
pagingVO.setToPageNo(1);
list = studentService.findByPaging(1);
} else {
pagingVO.setToPageNo(page);
list = studentService.findByPaging(page);
}
/* if (page != null && page.intValue() != 0){
pagingVO.setToPageNo(page);
list = this.studentService.findByPaging(1);
}else{
pagingVO.setToPageNo(Integer.valueOf(1));
list = this.studentService.findByPaging(Integer.valueOf(1));
}*/
model.addAttribute("studentList", list);
model.addAttribute("pagingVO", pagingVO);
Object principal = SecurityUtils.getSubject().getPrincipal();
Subject subject = SecurityUtils.getSubject();
if (subject.hasRole("admin")) {
return "/admin/showStudent";
} else{
return "/teacher/showStudent";
}
}
// 添加学生信息页面显示
@RequestMapping(value = "/addStudent", method = {RequestMethod.GET})
public String addStudentUI(Model model) throws Exception {
List<College> list = collegeService.finAll();
model.addAttribute("collegeList", list);
Object principal = SecurityUtils.getSubject().getPrincipal();
Subject subject = SecurityUtils.getSubject();
if (subject.hasRole("admin")) {
return "/admin/addStudent";
} else{
return "/teacher/addStudent";
}
}
// 添加学生信息
@RequestMapping(value = "/addStudent", method = {RequestMethod.POST})
public String addStudent(StudentCustom studentCustom, Model model) throws Exception {
studentCustom.setCollegeid(1);
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) {
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(this.teacherService.getCountTeacher());
if (page != null && page.intValue() != 0) {
pagingVO.setToPageNo(page);
list = this.teacherService.findByPaging(page);
} else {
pagingVO.setToPageNo(Integer.valueOf(1));
list = this.teacherService.findByPaging(Integer.valueOf(1));
}
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.getCountCourse());
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.updateById(courseCustom.getCourseid(), courseCustom);
//重定向
return "redirect:/admin/showCourse";
}
// 删除课程
@RequestMapping("/removeCourse")
public String removeCourse(Integer id) throws Exception {
if (id == null) {
//加入没有带教师id就进来的话就返回教师显示页面
throw new CustomException("查询该课程失败");
}
courseService.removeById(id);
return "redirect:/admin/showCourse";
}
//查询课程
@RequestMapping(value = "selectCourse", method = {RequestMethod.POST})
private String selectCourse(String findByName, Model model) throws Exception {
Object principal = SecurityUtils.getSubject().getPrincipal();
List<CourseCustom> list = courseService.findByName(findByName);
Subject subject = SecurityUtils.getSubject();
model.addAttribute("courseList", list);
if (subject.hasRole("admin")) {
return "/admin/showCourse";
} else if (subject.hasRole("teacher")) {
return "/teacher/showCourse";
} else if (subject.hasRole("student")) {
return "/student/showCourse";
}
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";
}
//添加考试
@RequestMapping("/addExam")
public String addExam(Model model) throws Exception {
List<CourseCustom> byPaging = courseService.findAll();
model.addAttribute("courseList",byPaging);
Object principal = SecurityUtils.getSubject().getPrincipal();
Subject subject = SecurityUtils.getSubject();
if (subject.hasRole("admin")) {
return "/admin/addExam";
} else{
return "/teacher/addExam";
}
}
@RequestMapping("/datacount")
public String datacount() throws Exception {
return "/admin/datacount";
}
@Autowired
JdbcTemplate jdbcTemplate;
//统计图
@RequestMapping("/datacountList")
@ResponseBody
public List<Map<String, Object>> datacountList() throws Exception {
String sql = "select c.courseName as name ,count(c.courseName) as value from `order` o left join course c on c.courseID = o.courseId group by c.courseName";
return jdbcTemplate.queryForList(sql);
}
//查询成绩
@RequestMapping("/queryScode")
public String queryScode(Model model,String name,Integer page ) {
Object principal = SecurityUtils.getSubject().getPrincipal();
Subject subject = SecurityUtils.getSubject();
try{
if(!subject.hasRole("admin")&&!subject.hasRole("teacher")){
page = -1;
}
List<SelectedCourseCustom> courseCustoms = selectedCourseService.selectInner(null,name,page);
model.addAttribute("selectedCourseList" , courseCustoms);
PagingVO pagingVO = new PagingVO();
if(page!=null&&page!=0){
pagingVO.setToPageNo(page);
}
pagingVO.setTotalCount(selectedCourseService.getCount());
model.addAttribute("pagingVO" , pagingVO);
}catch (Exception e){
e.printStackTrace();
}
if (subject.hasRole("admin")) {
return "/admin/overCourse";
} else{
return "/teacher/overCourse";
}
}
@Resource(name = "examServiceImpl")
private ExamService examService;
//添加成绩
@RequestMapping("/luruScode")
public String luruScode(Model model,Integer id) throws Exception {
List<Exam> exams = examService.selectByExample(new ExamExample());
model.addAttribute("examList" ,exams);
model.addAttribute("studentId" ,id);
Object principal = SecurityUtils.getSubject().getPrincipal();
Subject subject = SecurityUtils.getSubject();
if (subject.hasRole("admin")) {
return "/admin/addScode";
} else{
return "/teacher/addScode";
}
}
//保存成绩
@RequestMapping("/saveScode")
public String saveScode(Model model,Selectedcourse selectedcourse) throws Exception {
selectedCourseService.save(selectedcourse);
Object principal = SecurityUtils.getSubject().getPrincipal();
Subject subject = SecurityUtils.getSubject();
return "redirect:/admin/showStudent";
}
//更新成绩
@RequestMapping("/updateScode")
public String updateScode(Model model,Selectedcourse selectedcourse) throws Exception {
try {
selectedCourseService.updataOne(selectedcourse);
}catch (Exception e){
e.printStackTrace();
}
return "redirect:/admin/queryScode";
}
//删除成绩
@RequestMapping("/removeScode")
public String removeScode(Model model,Integer id) throws Exception {
try {
selectedCourseService.removeById(id);
return "redirect:/admin/queryScode";
}catch (Exception e){
e.printStackTrace();
}
return "redirect:/admin/queryScode";
}
//修改成绩
@RequestMapping("/editScodeAction")
public String updateScode(Model model,SelectedCourseCustom selectedcourse) throws Exception {
model.addAttribute("socde",selectedcourse);
List<Exam> exams = examService.selectByExample(new ExamExample());
model.addAttribute("examList" ,exams);
Object principal = SecurityUtils.getSubject().getPrincipal();
Subject subject = SecurityUtils.getSubject();
if (subject.hasRole("admin")) {
return "/admin/editScode";
} else{
return "/teacher/editScode";
}
}
}