基于javaweb+mysql的springboot教务管理系统(java+springboot+thymeleaf+layui+html+mysql)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot教务管理系统(java+springboot+thymeleaf+layui+html+mysql)
项目介绍
1.系统默认超级管理员账号为admin,默认密码为123456 系统配置:用户管理、角色管理、权限管理 默认已配置好基本数据:用户默认只有一个超级管理员,角色有三种:管理员、教师、学生,权限已按照角色分配完成。 2.系统建设 a.建设简介: 学校建设需要按照系部 > 专业 > 年级 > 班级的顺序进行建设。每项管理均提供精确/条件查询,可快速定位所需信息。 b.系部建设 c.专业建设 d.年级建设 3,课目建设 a.课目介绍 b.添加必修课目 c.添加选修课目 d.课目启动与暂停 4.教师管理 a.教师授课管理 b.录入教师 c.教师信息查询 5.学生管理: a,退学信息 b.录入学生 c.学生信息查询 6.成绩管理 a.学生成绩管理 b.教师成绩管理 7.校园新闻: a,新闻管理
b.发布新闻
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
-
后端:SpringBoot+Thymeleaf
-
前端:HTML+CSS+jQuery+LayUI
使用说明
-
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
-
使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
- 将项目中application.yml配置文件中的数据库配置改为自己的配置;注:要修改最下方profiles:dev相关的配置; 4. 运行项目,输入localhost:8080/home 登录 管理员账号/密码:admin/123456 教师账号/密码:2020001/123456 学生账号/密码:15020002/123456
return "该学生已经选过这门课";
} else {
int dropcou = selCourseManageService.changesCou(ccd, sid, cid);
if (dropcou > 0) {
return "换课成功";
} else {
return "退课失败,请稍后再试或联系管理员";
}
}
}
}
package com.nsapi.niceschoolapi.controller;
@Controller
public class StudentController extends BaseController {
@Autowired
private StudentService studentService;
// 跳转学生查询页面
@RequestMapping("/selectStudent")
public String selectStudent(){
return "view/student/selStudent";
}
// 查询所有学生
@RequestMapping("selStudent")
@ResponseBody
public LayuiResult<Map> selectStu(pageCount pageCount, StudentVO studentVO){
LayuiResult<Map> result = new LayuiResult<>();
List<Map> list = studentService.selStudent(studentVO,pageCount);
int count = studentService.selCount(studentVO);
result.setData(list);
result.setCount(count);
return result;
}
int stui = addStudentService.selStuid(studentVO.getGid());
studentVO.setStuid(String.valueOf(stui));
studentVO.setSid(stui);
// 根据前台传来信息添加学生
Integer addStudent = addStudentService.addStudent(studentVO);
// 获取学号
String stuid = studentVO.getStuid();
// 根据学号查询学生id编号
Integer sid = addStudentService.selectSid(stuid);
// 获取所选专业id
Integer mid = studentVO.getMid();
// 根据学生专业查询该专业开设的必修课程
List<CourseDB> selCourse = addStudentService.selCourse(mid);
for(CourseDB cou : selCourse){
// 将学生id以及必修课程的id添加至学生选课表
Integer addStuCourse = addStudentService.addStuCourse(sid,cou.getCid());
System.out.println(addStuCourse);
}
// 班级人数+1
Integer selClassinfo = addStudentService.selecteClassinfo(studentVO.getClassid());
// 年级人数+1
Integer selGrade = addStudentService.selecteGrade(studentVO.getGid());
// 专业人数+1
Integer selMajor = addStudentService.selecteMajor(studentVO.getMid());
// 系部人数+1
Integer selDepartment = addStudentService.selecteDepartment(studentVO.getDid());
// 根据学号查询信息
List<StudentDB> stu = addStudentService.selectMessage(stuid);
// 查询sys_role角色id
String id = addStudentService.selectRole();
result.setData(stu);
result.setMsg(id);
return result;
}
}
package com.nsapi.niceschoolapi.controller;
int addnum = selectCourseService.addCourse(stuCourseDB);
if(addnum==1){
int updatenum = selectCourseService.updateCount(stuCourseDB);
if(updatenum==1){
msg="已选择";
}
}
}
}
return msg;
}
}
package com.nsapi.niceschoolapi.controller;
@Controller
public class AddTeacherController {
@Autowired
private StudentService studentService;
@Autowired
private AddTeacherService addTeacherService;
@RequestMapping("/addTeacherPage")
public String addTeacherPage(Model model){
// 查询政治面貌表
List<PoliticsTypeDB> stupol = studentService.selPolitics();
}
/*******************************************************************条件查询*********************************************************************/
/**
* 条件查询班级
*/
@RequestMapping("tjselclass")
@ResponseBody
public Object tjSelClass(SchoolManageVO schoolManageVO, Integer page, Integer limit) {
PageHelper.startPage(page, limit);
List<SchoolManageVO> listAll = schoolManageService.tjSelClass(schoolManageVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> classData = new HashMap<String, Object>();
classData.put("code", 0);
classData.put("msg", "");
classData.put("count", pageInfo.getTotal());
classData.put("data", pageInfo.getList());
return classData;
}
/**
* 条件查询系部
*/
@RequestMapping("tjseldpm")
@ResponseBody
public Object tjSelDpm(SchoolManageVO schoolManageVO, Integer page, Integer limit) {
PageHelper.startPage(page, limit);
List<SchoolManageVO> listAll = schoolManageService.tjSelDpm(schoolManageVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> dpmData = new HashMap<String, Object>();
dpmData.put("code", 0);
dpmData.put("msg", "");
dpmData.put("count", pageInfo.getTotal());
dpmData.put("data", pageInfo.getList());
return dpmData;
}
/**
* 条件查询专业
*/
@RequestMapping("tjselmajor")
@ResponseBody
public Object tjSelMajor(SchoolManageVO schoolManageVO, Integer page, Integer limit) {
PageHelper.startPage(page, limit);
List<SchoolManageVO> listAll = schoolManageService.tjSelMajor(schoolManageVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> majorData = new HashMap<String, Object>();
majorData.put("code", 0);
@RequestMapping("selCou")
public String selCourse(){
// System.out.println("---------------------------------------------------------------------------------------------------------------");
return "selCou";
}
@RequestMapping("sel")
@ResponseBody
public Object sel(Integer page, Integer limit, coursel coursel, String cname){
coursel.setCname(cname);
PageHelper.startPage(page, limit);
List<com.nsapi.niceschoolapi.entity.coursel> cs = courselService.selCourse(coursel);
PageInfo pageInfo = new PageInfo(cs);
Map<String, Object> tableData = new HashMap<String, Object>();
//这是layui要求返回的json数据格式
tableData.put("code", 0);
tableData.put("msg", "");
//将全部数据的条数作为count传给前台(一共多少条)
tableData.put("count", pageInfo.getTotal());
//将分页后的数据返回(每页要显示的数据)
tableData.put("data", pageInfo.getList());
System.out.print(cs);
return tableData;
}
@RequestMapping("selJson")
@ResponseBody
public Object selJson(){
List<MajorDB> major =courselService.selJson();
return major;
}
@RequestMapping("selCoutu")
@ResponseBody
public Object selCoutu(){
List<CourseTypeDB> coursetype=courselService.selCoutu();
return coursetype;
}
@RequestMapping("update")
@ResponseBody
public Object update(coursel coursel){
int update = courselService.update(coursel);
if(update==1){
return "修改成功";
// 查询教师信息
@RequestMapping("selTeacher")
@ResponseBody
public LayuiResult<Map> selTeacher(TeacherDB teacherDB, pageCount pageCount){
LayuiResult<Map> result = new LayuiResult<>();
// 查询所有教师信息/模糊查询教师信息
List<Map> list = lxxTeacherService.selTeacher(teacherDB,pageCount);
// 查询符合条件的教师数量
int count = lxxTeacherService.selTeacherCount(teacherDB);
result.setData(list);
result.setCount(count);
return result;
}
// 根据教师编号查询教师信息
@RequestMapping("/selTeacherId")
public String selTeacherId(Integer id, Model model){
List<TeacherDB> tea = lxxTeacherService.selTeacherId(id);
// 查询政治面貌
List<PoliticsTypeDB> selpol = lxxStudentService.selPolitics();
model.addAttribute("tea",tea);
model.addAttribute("selpol",selpol);
return "view/teacher/updTeacher";
}
// 根据教师编号查询教师详细信息
@RequestMapping("/selectTeaMessage")
public String selectTeaMessage(Integer id, Model model){
List<TeacherDB> tea = lxxTeacherService.selTeacherId(id);
// 查询政治面貌
List<PoliticsTypeDB> selpol = lxxStudentService.selPolitics();
model.addAttribute("tea",tea);
model.addAttribute("selpol",selpol);
return "view/teacher/selTchMessage";
}
// 修改教师信息
@RequestMapping("/updateTeacher")
@ResponseBody
public LayuiResult<TeacherDB> updTeacher(TeacherDB teacherDB, String birthday) throws Exception{
LayuiResult result= new LayuiResult();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date=format.parse(birthday);
teacherDB.setTbirthday(date);
@RequestMapping("addoneev")
@ResponseBody
public Object addOneEv(EvaluateListDB evaluateListDB){
int r = appraiseService.addOneEv(evaluateListDB);
if(r==1){
return true;
}else{
return false;
}
}
/**
* 删除问题
* */
@RequestMapping("deleteoneev")
@ResponseBody
public Object deleteOneEv(Integer elid){
int r = appraiseService.deleteOneEv(elid);
if(r==1){
return true;
}else{
return false;
}
}
/**
* 编辑问题
*/
@RequestMapping("editoneev")
@ResponseBody
public Object editOneEv(EvaluateListDB evaluateListDB){
int r = appraiseService.editOneEv(evaluateListDB);
if(r==1){
return true;
}else{
return false;
}
}
/**
* 获取教评教师列表
*/
@RequestMapping("findalltch")
@ResponseBody
public Object findalltch(SelEvRecardVO selEvRecardVO){
return false;
}
}else{
return false;
}
}
}
}
/**
* 查询指定老师教授所有课程
*/
@RequestMapping("findcoursebytch")
@ResponseBody
public Object findCourseByTch(TchCourseVO tchCourseVO,Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<TchCourseVO> listAll = tchCourseService.findCourseByTch(tchCourseVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> sData = new HashMap<String, Object>();
sData.put("code", 0);
sData.put("msg", "");
sData.put("count", pageInfo.getTotal());
sData.put("data", pageInfo.getList());
return sData;
}
/**
* 教师授课及班级删除
*/
@RequestMapping("deltchcourse")
@ResponseBody
public Object delTchCourse(TchCourseVO tchCourseVO){
int flag = tchCourseService.delTchCourse(tchCourseVO);
if(flag>0){
return true;
}else {
return false;
}
}
}
package com.nsapi.niceschoolapi.common.realm;
}
@RequestMapping("update")
@ResponseBody
public Object update(coursel coursel){
int update = courselService.update(coursel);
if(update==1){
return "修改成功";
}else{
return "修改失败";
}
}
@RequestMapping("addcou")
@ResponseBody
public Object addcou(coursel coursel){
int addcou = courselService.addcou(coursel);
if(addcou==1){
return "添加成功";
}else{
return "添加失败";
}
}
@RequestMapping("delcou")
@ResponseBody
public Object delcou(Integer cid){
int delercou = courselService.delercou(cid);
//System.out.println(delercou);
if(delercou>0){
return "✖ 该课程有人在读不可删除";
}else {
int add = courselService.delcou(cid);
if(add==1){
//return sys.succ;
return "删除成功";
}else{
return "删除失败";
}
}
}
@RequestMapping("hfcou")
}
@RequestMapping("edit")
public String edit(String id,ModelMap modelMap){
Menu menu = menuService.selectById(id);
modelMap.addAttribute("menu",menu);
return "admin/menu/edit";
}
@RequiresPermissions("sys:menu:edit")
@PostMapping("edit")
@ResponseBody
@SysLog("保存编辑菜单数据")
public ResponseEntity edit(Menu menu){
if(StringUtils.isBlank(menu.getId())){
return ResponseEntity.failure("菜单ID不能为空");
}
if (StringUtils.isBlank(menu.getName())) {
return ResponseEntity.failure("菜单名称不能为空");
}
Menu oldMenu = menuService.selectById(menu.getId());
if(!oldMenu.getName().equals(menu.getName())) {
if(menuService.getCountByName(menu.getName())>0){
return ResponseEntity.failure("菜单名称已存在");
}
}
if (StringUtils.isNotBlank(menu.getPermission())) {
if(!oldMenu.getPermission().equals(menu.getPermission())) {
if (menuService.getCountByPermission(menu.getPermission()) > 0) {
return ResponseEntity.failure("权限标识已经存在");
}
}
}
if(menu.getSort() == null){
return ResponseEntity.failure("排序值不能为空");
}
menuService.saveOrUpdateMenu(menu);
return ResponseEntity.success("操作成功");
}
@RequiresPermissions("sys:menu:delete")
@PostMapping("delete")
* 获取班级列表
*/
@RequestMapping("findallclass")
@ResponseBody
public Object findAllClass(SchoolManageVO schoolManageVO, Integer page, Integer limit) {
PageHelper.startPage(page, limit);
List<SchoolManageVO> listAll = schoolManageService.findAllClass(schoolManageVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> classData = new HashMap<String, Object>();
classData.put("code", 0);
classData.put("msg", "");
classData.put("count", pageInfo.getTotal());
classData.put("data", pageInfo.getList());
return classData;
}
/**
* 级联获取年级列表
*/
@RequestMapping("jlselgrade")
@ResponseBody
public Object jlSelGrade(SchoolManageVO schoolManageVO, Integer page, Integer limit) {
PageHelper.startPage(page, limit);
List<SchoolManageVO> listAll = schoolManageService.jlSelGrade(schoolManageVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> jlgradeData = new HashMap<String, Object>();
jlgradeData.put("code", 0);
jlgradeData.put("msg", "");
jlgradeData.put("count", pageInfo.getTotal());
jlgradeData.put("data", pageInfo.getList());
return jlgradeData;
}
/**
* 编辑班级
*/
@RequestMapping("editoneclass")
@ResponseBody
public Object editOneClass(ClassinfoDB classinfoDB) {
int check = schoolManageService.checkOneClass(classinfoDB);
if (check > 0) {
return false;
} else {
int r = schoolManageService.editOneClass(classinfoDB);
if (r == 1) {
return true;
if (r == 1) {
return true;
} else {
return false;
}
}
}
/**
* 获取班级列表
*/
@RequestMapping("findallclass")
@ResponseBody
public Object findAllClass(SchoolManageVO schoolManageVO, Integer page, Integer limit) {
PageHelper.startPage(page, limit);
List<SchoolManageVO> listAll = schoolManageService.findAllClass(schoolManageVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> classData = new HashMap<String, Object>();
classData.put("code", 0);
classData.put("msg", "");
classData.put("count", pageInfo.getTotal());
classData.put("data", pageInfo.getList());
return classData;
}
/**
* 级联获取年级列表
*/
@RequestMapping("jlselgrade")
@ResponseBody
public Object jlSelGrade(SchoolManageVO schoolManageVO, Integer page, Integer limit) {
PageHelper.startPage(page, limit);
List<SchoolManageVO> listAll = schoolManageService.jlSelGrade(schoolManageVO);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> jlgradeData = new HashMap<String, Object>();
jlgradeData.put("code", 0);
jlgradeData.put("msg", "");
jlgradeData.put("count", pageInfo.getTotal());
jlgradeData.put("data", pageInfo.getList());
return jlgradeData;
}
/**
* 编辑班级
*/
//更新成绩
int res_updOneTchExam = appraiseService.updOneTchExam(evTchVO);
if(res_addOneAppraise==1&&res_updOneTchExam==1){
return true;
}else{
return false;
}
}else if(res1==0){
//添加记录
int res_addOneAppraise = appraiseService.addOneAppraise(evTchVO);
evTchVO.setPcount(1);
evTchVO.setExam(evTchVO.getErexam());
//新增成绩
int res_addOneTchExam = appraiseService.addOneTchExam(evTchVO);
if(res_addOneAppraise==1&&res_addOneTchExam==1){
return true;
}else{
return false;
}
}else {
return false;
}
}
}
package com.nsapi.niceschoolapi.controller;
@Controller
public class SelCourseManController {
@Autowired
private SelCourseManageService selCourseManageService;
@RequestMapping("selCourses")
public String selCourses(){
System.out.println("----------------------");
return "SelCourseMan";
menuService.saveOrUpdateMenu(menu);
return ResponseEntity.success("操作成功");
}
}
package com.nsapi.niceschoolapi.controller;
@Controller
@RequestMapping("appraise")
public class AppraiseController extends BaseController {
@Autowired
private AppraiseService appraiseService;
/**
* 进入查询教评教师页面
*/
@RequestMapping("seltch")
public String seltch() {
return "view/appraise/seltch";
}
/**
* 进入教评问题管理页面
*/
@RequestMapping("evlistcontrol")
public String evListControl() {
return "view/appraise/evlistcontrol";
}
/**
* 添加问题
*/
@RequestMapping("addoneev")
@ResponseBody
public Object addOneEv(EvaluateListDB evaluateListDB){
selectCourseVo.setStuid(MySysUser.loginName());
PageHelper.startPage(page, limit);
List<SelectCourseVo> listAll = selectCourseService.sel(selectCourseVo);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> tableData = new HashMap<String, Object>();
//这是layui要求返回的json数据格式
tableData.put("code", 0);
//tableData.put("msg", "");
//将全部数据的条数作为count传给前台(一共多少条)
tableData.put("count", pageInfo.getTotal());
//将分页后的数据返回(每页要显示的数据)
tableData.put("data", pageInfo.getList());
return tableData;
}
//查询课程类别
@ResponseBody
@RequestMapping("seltype")
public Object selType(){
List<CourseTypeDB> selType = selectCourseService.selType();
Map<String, Object> tableData = new HashMap<String, Object>();
//这是layui要求返回的json数据格式
tableData.put("code", 0);
tableData.put("data", selType);
return tableData;
}
//查询是否有该课程
@ResponseBody
@RequestMapping("selcourse")
public Object selcourse(StuCourseDB stuCourseDB, CourseDB courseDB, SelectCourseVo selectCourseVo){
String msg="";
if(courseDB.getCselcount().equals(courseDB.getCmaxcount())){
msg="该课程已选满";
}
else {
int num = selectCourseService.selCourse(stuCourseDB);
if(num==1){
msg="您已选择过该课程";
}
else{
int addnum = selectCourseService.addCourse(stuCourseDB);
}
// 根据id查询一条学生信息以此进行修改
@RequestMapping("/selStudentId")
public String selStudentId(Integer id, Model model){
// 查询学生信息
List<StudentDB> stu = studentService.selStudentId(id);
// 查询班级
List<ClassinfoDB> cls = studentService.selClass();
// 查询政治面貌表
List<PoliticsTypeDB> stupol = studentService.selPolitics();
model.addAttribute("stu",stu);
model.addAttribute("cls",cls);
model.addAttribute("stupol",stupol);
return "view/student/updStudent";
}
// 根据id查询显示学生详细信息
@RequestMapping("/selectMessage")
public String selectMessage(Integer id, Model model){
// 查询学生信息
List<StudentDB> stu = studentService.selStudentId(id);
// 查询班级
List<ClassinfoDB> cls = studentService.selClass();
// 查询政治面貌表
List<PoliticsTypeDB> stupol = studentService.selPolitics();
model.addAttribute("stu",stu);
model.addAttribute("cls",cls);
model.addAttribute("stupol",stupol);
return "view/student/selStuExam";
}
// 修改用户信息
@RequestMapping("/updateStudent")
@ResponseBody
public LayuiResult<StudentDB> updateStudent(StudentDB studentDB, String birthday) throws Exception{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date=format.parse(birthday);
studentDB.setSbirthday(date);
studentService.updateStudent(studentDB);
@Autowired
private TchCourseService tchCourseService;
/**
* 进入教师授课管理页面
*/
@RequestMapping("tchcoursemanage")
public String classmanage() {
return "view/teacher/tchcoursemanage";
}
/*******************************************************************查询*********************************************************************/
/**
* 查询全部教师
*/
@RequestMapping("findalltch")
@ResponseBody
public Object findAllTch(TeacherDB teacherDB, Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<TeacherDB> listAll = tchCourseService.findAllTch(teacherDB);
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> tchData = new HashMap<String, Object>();
tchData.put("code", 0);
tchData.put("msg", "");
tchData.put("count", pageInfo.getTotal());
tchData.put("data", pageInfo.getList());
return tchData;
}
/**
* 查询全部教师姓名
*/
@RequestMapping("findalltchbyname")
@ResponseBody
public Object findAllTchByName(Integer page, Integer limit){
PageHelper.startPage(page, limit);
List<TeacherDB> listAll = tchCourseService.findAllTchByName();
PageInfo pageInfo = new PageInfo(listAll);
Map<String, Object> tchData = new HashMap<String, Object>();
tchData.put("code", 0);
tchData.put("msg", "");
tchData.put("count", pageInfo.getTotal());
tchData.put("data", pageInfo.getList());
return tchData;
}
/**
* 通过专业查询全部课程
*/
@RequestMapping("findallcoursebymajorname")
@ResponseBody
public Object findAllCourseByMajorName(TchCourseVO tchCourseVO,Integer page, Integer limit){
PageHelper.startPage(page, limit);
@Controller
public class courseController {
@Autowired
private com.nsapi.niceschoolapi.service.courselService courselService;
@RequestMapping("selCou")
public String selCourse(){
// System.out.println("---------------------------------------------------------------------------------------------------------------");
return "selCou";
}
@RequestMapping("sel")
@ResponseBody
public Object sel(Integer page, Integer limit, coursel coursel, String cname){
coursel.setCname(cname);
PageHelper.startPage(page, limit);
List<com.nsapi.niceschoolapi.entity.coursel> cs = courselService.selCourse(coursel);
PageInfo pageInfo = new PageInfo(cs);
Map<String, Object> tableData = new HashMap<String, Object>();
//这是layui要求返回的json数据格式
tableData.put("code", 0);
tableData.put("msg", "");
//将全部数据的条数作为count传给前台(一共多少条)
tableData.put("count", pageInfo.getTotal());
//将分页后的数据返回(每页要显示的数据)
tableData.put("data", pageInfo.getList());
System.out.print(cs);
return tableData;
}
@RequestMapping("selJson")
@ResponseBody
public Object selJson(){
List<MajorDB> major =courselService.selJson();
return major;
}
@RequestMapping("selCoutu")
@ResponseBody
public Object selCoutu(){
List<CourseTypeDB> coursetype=courselService.selCoutu();
return coursetype;
}
@RequestMapping("update")
@ResponseBody