基于javaweb+mysql的ssm学生成绩信息管理系统(java+ssm+html+layui+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM学生成绩信息管理系统(java+ssm+html+layui+mysql)
项目介绍
本项目分为管理员、教师、学生三种角色, 管理员角色包含以下功能: 公告管理,写公告,学生增删改查,教师增删改查,查看成绩报表,管理员首页,课程表增删改查等功能。 教师角色包含以下功能: 修改密码,按照条件查询,查看学生信息,管理课程,登陆页面等功能。 学生角色包含以下功能: 查看成绩信息,查看课程信息,选课操作等功能。
环境需要
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项目:否;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:HTML+LayUI
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
@Controller
@RequestMapping(value="/score")
public class ScoreController {
@Autowired
private ScoreService scoreService;
@ResponseBody
@RequestMapping(value="/list")
public String getScoreList(Integer curr, Integer nums, ScoreVo scoreVo) {
System.out.println(scoreVo);
Pagination<ScoreVo> page = new Pagination<ScoreVo>();
page.setTotalItemsCount(scoreService.getTotalItemsCount(scoreVo));
page.setPageSize(nums);
page.setPageNum(curr);
List<ScoreVo> list = scoreService.getScoreList(page, scoreVo);
String jsonStr = StrUtil.RETURN_JONS_PRE_STR
+ page.getTotalItemsCount()
+ StrUtil.RETURN_JONS_MID_STR
+ JSON.toJSONString(list)
+ StrUtil.RETURN_JONS_END_STR;
System.out.println(jsonStr);
return jsonStr;
}
@ResponseBody
@RequestMapping("/export")
public void export(HttpServletRequest request, HttpServletResponse response, ScoreVo scoreVo)
throws ClassNotFoundException, IntrospectionException,
IllegalAccessException, ParseException, InvocationTargetException {
response.reset(); // 清除buffer缓存
// 设置文件名
response.setHeader("Content-Disposition", "attachment;filename="
+ System.currentTimeMillis() + ".xls");
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
XSSFWorkbook workbook = null;
// 导出Excel对象
workbook = scoreService.exportExcelInfo(scoreVo);
OutputStream output;
try {
output = response.getOutputStream();
BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output);
bufferedOutPut.flush();
workbook.write(bufferedOutPut);
bufferedOutPut.close();
} catch (IOException e) {
e.printStackTrace();
@RequestMapping(value="/system")
public ModelAndView toSystemListPage(ModelAndView mav) {
mav = new ModelAndView("systemAuth");
return mav;
}
}
@Controller
@RequestMapping(value="/pswd")
public class PasswordController {
@Autowired
AdminService adminService;
@Autowired
TeacherService teacherService;
@Autowired
StudentService studentService;
@RequestMapping(value="/page")
public ModelAndView toPswdPage(ModelAndView mav) {
mav = new ModelAndView("changePwd");
+StrUtil.RETURN_JONS_END_STR;
} finally {
if (in != null)
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Controller
@RequestMapping(value="/login")
public class LoginController {
@Autowired
AuthService authService;
@Autowired
AdminService adminServiceImpl;
@Autowired
TeacherService teacherServiceImpl;
teacher.setPassword(MD5Util.MD5("123456"));
if (teacherService.updateTeacher(teacher) > 0) return StrUtil.RESULT_TRUE;
return "修改失败!";
}
@ResponseBody
@RequestMapping(value="/delete")
public String deleteStudnet(Teacher t) {
if (teacherService.deleteTeacher(t) > 0) return StrUtil.RESULT_TRUE;
return "删除失败!";
}
/**
* 批量删除
* @param tIds
* @return
*/
@ResponseBody
@RequestMapping(value="/deleteList")
public String deleteStudnetList(String tIds) {
List<String> list = new ArrayList<String>();
try {
String[] ids = tIds.split(",");
for (String id: ids) {
list.add(id);
}
if (teacherService.deleteTeacher(list) > 0) {
return StrUtil.RESULT_TRUE;
}
} catch (Exception e) {
e.printStackTrace();
return "删除失败!参数出错!";//
}
return "删除失败!";
}
@ResponseBody
@RequestMapping("/import")
public String impotr(HttpServletRequest request, MultipartFile file) {
//获取上传的文件
InputStream in = null;
try {
in = file.getInputStream();
//数据导入
int res = teacherService.importExcelInfo(in,file);
if (res > 0) {
return StrUtil.RETURN_JONS_PRE_STR+"0"
+StrUtil.RETURN_JONS_MID_STR+"true"
+StrUtil.RETURN_JONS_END_STR;
@Controller
@RequestMapping(value="/course")
public class CourseController {
@Autowired
CourseService courseService;
@ResponseBody
@RequestMapping(value="/list")
public String getCourseList(@RequestParam(defaultValue="0")int curr,
@RequestParam(defaultValue="20")int nums,
@RequestParam(defaultValue="")String searchKey) {
Pagination<Course> page = new Pagination<Course>();
page.setTotalItemsCount(courseService.getTotalItemsCount(searchKey));
page.setPageSize(nums);
page.setPageNum(curr);
List<Course> list = courseService.getCourseList(page,searchKey);
String jsonStr = StrUtil.RETURN_JONS_PRE_STR
+ page.getTotalItemsCount()
+ StrUtil.RETURN_JONS_MID_STR
+ JSON.toJSONString(list)
+ StrUtil.RETURN_JONS_END_STR;
System.out.println(jsonStr);
return jsonStr;
}
/**
* 返回教师自己教的课程列表
*/
@ResponseBody
@RequestMapping(value="/getMyCourse")
public String getMyCourse(@RequestParam(defaultValue="0")int curr,
@RequestParam(defaultValue="10")int nums, HttpSession session) {
Pagination<Course> page = new Pagination<Course>();
Teacher t = (Teacher) session.getAttribute(StrUtil.USER);
page.setTotalItemsCount(courseService.getTotalItemsCountByTid(t.getId()));
/**
* 批量删除
* @param tIds
* @return
*/
@ResponseBody
@RequestMapping(value="/deleteList")
public String deleteStudnetList(String tIds) {
List<String> list = new ArrayList<String>();
try {
String[] ids = tIds.split(",");
for (String id: ids) {
list.add(id);
}
if (teacherService.deleteTeacher(list) > 0) {
return StrUtil.RESULT_TRUE;
}
} catch (Exception e) {
e.printStackTrace();
return "删除失败!参数出错!";//
}
return "删除失败!";
}
@ResponseBody
@RequestMapping("/import")
public String impotr(HttpServletRequest request, MultipartFile file) {
//获取上传的文件
InputStream in = null;
try {
in = file.getInputStream();
//数据导入
int res = teacherService.importExcelInfo(in,file);
if (res > 0) {
return StrUtil.RETURN_JONS_PRE_STR+"0"
+StrUtil.RETURN_JONS_MID_STR+"true"
+StrUtil.RETURN_JONS_END_STR;
} else {
return StrUtil.RETURN_JONS_PRE_STR+"0"
+StrUtil.RETURN_JONS_MID_STR+"false"
+StrUtil.RETURN_JONS_END_STR;
}
} catch (Exception e) {
e.printStackTrace();
return StrUtil.RETURN_JONS_PRE_STR+"0"
@Controller
@RequestMapping(value="/pswd")
public class PasswordController {
@Autowired
AdminService adminService;
@Autowired
TeacherService teacherService;
@Autowired
StudentService studentService;
@RequestMapping(value="/page")
public ModelAndView toPswdPage(ModelAndView mav) {
mav = new ModelAndView("changePwd");
return mav;
}
@ResponseBody
@RequestMapping(value="/setting")
public String setting(HttpSession session, String oldPswd, String newPswd) {
oldPswd = oldPswd.toUpperCase();
newPswd = newPswd.toUpperCase();
User user = (User) session.getAttribute(StrUtil.USER);
int res = 0;
if (StrUtil.ADMIN.equals(user.getUserType())) {
Admin admin = (Admin)user;
if(admin.getPassword().equals(oldPswd)) {
admin.setPassword(newPswd);
session.setAttribute(StrUtil.USER, admin);
res = adminService.update(admin);
if (res > 0) return StrUtil.RESULT_TRUE;
} else {
return "密码错误!";
}
} else if (opType == 1) {
teacher.setPassword(null);
res = teacherService.updateTeacher(teacher);
if (res > 0) return StrUtil.RESULT_TRUE;
return "修改失败!";
}
return "error";
}
/**
* 重置密码
* @param id
* @return
*/
@ResponseBody
@RequestMapping(value="/resetPswd")
public String resetPasswrd(String id) {
Teacher teacher = new Teacher();
teacher.setId(id);
teacher.setPassword(MD5Util.MD5("123456"));
if (teacherService.updateTeacher(teacher) > 0) return StrUtil.RESULT_TRUE;
return "修改失败!";
}
@ResponseBody
@RequestMapping(value="/delete")
public String deleteStudnet(Teacher t) {
if (teacherService.deleteTeacher(t) > 0) return StrUtil.RESULT_TRUE;
return "删除失败!";
}
/**
* 批量删除
* @param tIds
* @return
*/
@ResponseBody
@RequestMapping(value="/deleteList")
public String deleteStudnetList(String tIds) {
List<String> list = new ArrayList<String>();
try {
String[] ids = tIds.split(",");
for (String id: ids) {
list.add(id);
}
return mav;
}
}
@Controller
@RequestMapping(value="/pswd")
public class PasswordController {
@Autowired
AdminService adminService;
@Autowired
TeacherService teacherService;
@Autowired
StudentService studentService;
@RequestMapping(value="/page")
public ModelAndView toPswdPage(ModelAndView mav) {
mav = new ModelAndView("changePwd");
return mav;
}
@ResponseBody
@RequestMapping(value="/setting")
public String setting(HttpSession session, String oldPswd, String newPswd) {
page.setTotalItemsCount(teacherService.getTotalItemsCount(searchKey));
page.setPageSize(nums);
page.setPageNum(curr);
List<Teacher> list = teacherService.getTeacher(page, searchKey);
String jsonStr = StrUtil.RETURN_JONS_PRE_STR + page.getTotalItemsCount()
+ StrUtil.RETURN_JONS_MID_STR
+ JSON.toJSONString(list) + StrUtil.RETURN_JONS_END_STR;
return jsonStr;
}
@ResponseBody
@RequestMapping(value="/listForSelect")
public String getTeacherListForSelect(@RequestParam(defaultValue="") String searchKey) {
List<Teacher> list = teacherService.getTeacherForSelect(searchKey);
String jsonStr = StrUtil.RETURN_JONS_PRE_STR + list.size()
+ StrUtil.RETURN_JONS_MID_STR
+ JSON.toJSONString(list) + StrUtil.RETURN_JONS_END_STR;
return jsonStr;
}
@RequestMapping(value="/addPage")
public ModelAndView toAddPage() {
return new ModelAndView("/teacherAdd");
}
/**
* 增加,或者修改teacher
* @param opType
* @param teacher
* @return
*/
@ResponseBody
@RequestMapping(value="/add")
public String addTeacher(@RequestParam(defaultValue="2") int opType, Teacher teacher) {
int res = 0;
if (opType == 0) {
try {
teacher.setPassword(teacher.getPassword().toUpperCase());
res = teacherService.addTeacher(teacher);
} catch (Exception e) {
System.out.println("添加失败!学号重复!");
return "添加失败!工号重复!";
}
if (res > 0)
return StrUtil.RESULT_TRUE;
return "添加失败";
} else if (opType == 1) {
teacher.setPassword(null);
res = teacherService.updateTeacher(teacher);
if (res > 0) return StrUtil.RESULT_TRUE;
return "修改失败!";
@RequestMapping(value="/delete")
public String deleteStudnet(BaseCourse t) {
if (baseCourseService.deleteBaseCourse(t) > 0) return StrUtil.RESULT_TRUE;
return "删除失败!";
}
/**
* 批量删除
* @param tIds
* @return
*/
@ResponseBody
@RequestMapping(value="/deleteList")
public String deleteStudnetList(String cIds) {
List<Integer> list = new ArrayList<Integer>();
try {
String[] ids = cIds.split(",");
for (String id: ids) {
list.add(Integer.parseInt(id));
}
if (baseCourseService.deleteBaseCourse(list) > 0) {
return StrUtil.RESULT_TRUE;
}
} catch (Exception e) {
e.printStackTrace();
return "删除失败!参数出错!";//
}
return "删除失败!";
}
@ResponseBody
@RequestMapping("/import")
public String impotr(HttpServletRequest request, MultipartFile file) {
//获取上传的文件
InputStream in = null;
try {
in = file.getInputStream();
//数据导入
int res = baseCourseService.importExcelInfo(in,file);
if (res > 0) {
return StrUtil.RETURN_JONS_PRE_STR+"0"
+StrUtil.RETURN_JONS_MID_STR+"true"
+StrUtil.RETURN_JONS_END_STR;
} else {
return StrUtil.RETURN_JONS_PRE_STR+"0"
+StrUtil.RETURN_JONS_MID_STR+"false"
+StrUtil.RETURN_JONS_END_STR;
}
} catch (Exception e) {
e.printStackTrace();
return StrUtil.RETURN_JONS_PRE_STR+"0"
+StrUtil.RETURN_JONS_MID_STR+"error"
+StrUtil.RETURN_JONS_END_STR;
@Controller
@RequestMapping(value="/basecourse")
public class BaseCourseController {
@Autowired
private BaseCourseService baseCourseService;
@ResponseBody
@RequestMapping(value="/list")
public String getBaseCourseList(@RequestParam(defaultValue="0")int curr,@RequestParam(defaultValue="10")int nums,
@RequestParam(defaultValue="")String searchKey) {
Pagination<BaseCourse> page = new Pagination<BaseCourse>();
page.setTotalItemsCount(baseCourseService.getTotalItemsCount(searchKey));
page.setPageSize(nums);
page.setPageNum(curr);
List<BaseCourse> list = baseCourseService.getBaseCourse(page, searchKey);
String jsonStr = StrUtil.RETURN_JONS_PRE_STR + page.getTotalItemsCount()
+ StrUtil.RETURN_JONS_MID_STR
+ JSON.toJSONString(list) + StrUtil.RETURN_JONS_END_STR;
System.out.println(jsonStr);
return jsonStr;
}
System.out.println(jsonStr);
return jsonStr;
}
@RequestMapping(value="/addPage")
public ModelAndView toAddPage() {
return new ModelAndView("courseAdd");
}
/**
* 增加,或者修改Course
* @param Course
* @return
*/
@ResponseBody
@RequestMapping(value="/add")
public String addCourse(Course course) {
int res = 0;
if (course.getId() == null || course.getId().equals("")) {
try {
res = courseService.addCourse(course);
} catch (Exception e) {
e.printStackTrace();
System.out.println("添加失败!");
return "添加失败!";
}
if (res > 0)
return StrUtil.RESULT_TRUE;
return "添加失败";
} else {
res = courseService.updateCourse(course);
if (res > 0) return StrUtil.RESULT_TRUE;
return "修改失败!";
}
}
@ResponseBody
@RequestMapping(value="/complete")
public String complete(Course course) {
int res = courseService.completeCourse(course);
if (res > 0) return StrUtil.RESULT_TRUE;
return "操作失败!";
}
@ResponseBody
@RequestMapping(value="/delete")
public String deleteStudnet(Course c) {
if (courseService.deleteCourse(c) > 0) return StrUtil.RESULT_TRUE;
return "删除失败!";
}
/**
@Controller
@RequestMapping(value="/score")
public class ScoreController {
@Autowired
private ScoreService scoreService;
@ResponseBody
@RequestMapping(value="/list")
public String getScoreList(Integer curr, Integer nums, ScoreVo scoreVo) {
System.out.println(scoreVo);
Pagination<ScoreVo> page = new Pagination<ScoreVo>();
page.setTotalItemsCount(scoreService.getTotalItemsCount(scoreVo));
page.setPageSize(nums);
page.setPageNum(curr);
List<ScoreVo> list = scoreService.getScoreList(page, scoreVo);
String jsonStr = StrUtil.RETURN_JONS_PRE_STR
+ page.getTotalItemsCount()
+ StrUtil.RETURN_JONS_MID_STR
+ JSON.toJSONString(list)
+ StrUtil.RETURN_JONS_END_STR;
System.out.println(jsonStr);
return jsonStr;
}
@ResponseBody
@RequestMapping("/export")
public void export(HttpServletRequest request, HttpServletResponse response, ScoreVo scoreVo)
throws ClassNotFoundException, IntrospectionException,
IllegalAccessException, ParseException, InvocationTargetException {
return new ModelAndView("404");
}
mav = new ModelAndView("notice");
mav.addObject("notice", notice);
return mav;
}
@RequestMapping(value="/look")
public ModelAndView showNotice(){
return new ModelAndView("notice");
}
@RequestMapping(value="/addPage")
public ModelAndView toAddPage() {
return new ModelAndView("noticeAdd");
}
/**
* 增加,或者修改notice
* @param opType
* @param notice
* @return
*/
@ResponseBody
@RequestMapping(value="/add")
public String addNotice(@RequestParam(defaultValue="2")Integer opType, Notice notice) {
int res = 0;
if (opType == 0) {
try {
res = noticeService.addNotice(notice);
} catch (Exception e) {
System.out.println("添加失败!");
return "添加失败!";
}
if (res > 0)
return StrUtil.RESULT_TRUE;
return "添加失败";
} else if (opType == 1) {
res = noticeService.updateNotice(notice);
if (res > 0) return StrUtil.RESULT_TRUE;
return "修改失败!";
}
return "error";
}
@ResponseBody
@RequestMapping(value="/delete")
public String deleteNotice(Notice notice) {
if (noticeService.deleteNotice(notice) > 0) return StrUtil.RESULT_TRUE;
+ JSON.toJSONString(list)
+ StrUtil.RETURN_JONS_END_STR;
System.out.println(jsonStr);
return jsonStr;
}
/**
* 学生选课
* @param session
* @param id
* @return
*/
@ResponseBody
@RequestMapping(value="/choiceCourse")
public String choiceCourse(HttpSession session,
@RequestParam(defaultValue="")Integer id) {
if (id != null) {
Student s = (Student) session.getAttribute(StrUtil.USER);
Score score = new Score();
score.setsId(s.getId());
score.setcId(id);
int res = scoreService.choiceCourse(score);
if (res > 0) return StrUtil.RESULT_TRUE;
else return StrUtil.RESULT_FALSE;
}
return "参数错误!";
}
/**
* 学生取消选课
* @param id
* @return
*/
@ResponseBody
@RequestMapping(value="/delete")
public String deleteCourse(@RequestParam(defaultValue="")Integer id, HttpSession session) {
Student stu = (Student) session.getAttribute(StrUtil.USER);
Score s = new Score();
s.setcId(id);
s.setsId(stu.getId());
if (id != null) {
int res = scoreService.deleteScore(s);
if (res > 0) return StrUtil.RESULT_TRUE;
else return StrUtil.RESULT_FALSE;
}
return "参数错误!";
}
/**
* 评分
* @param score
* @return
public ModelAndView showNoticeInfo(HttpSession session, Integer nId, ModelAndView mav) {
User user = (User) session.getAttribute(StrUtil.USER);
Integer auth = null;
if (user.getUserType().equals(StrUtil.ADMIN)) {
auth = AUTH_A;
} else if (user.getUserType().equals(StrUtil.TEACHER)) {
auth = AUTH_T;
} else if (user.getUserType().equals(StrUtil.STUDENT)) {
auth = AUTH_S;
}
Notice notice = noticeService.getNotice(nId);
//无权限查看
if (auth < notice.getAuth()) {
return new ModelAndView("404");
}
mav = new ModelAndView("notice");
mav.addObject("notice", notice);
return mav;
}
@RequestMapping(value="/look")
public ModelAndView showNotice(){
return new ModelAndView("notice");
}
@RequestMapping(value="/addPage")
public ModelAndView toAddPage() {
return new ModelAndView("noticeAdd");
}
/**
* 增加,或者修改notice
* @param opType
* @param notice
* @return
*/
@ResponseBody
@RequestMapping(value="/add")
public String addNotice(@RequestParam(defaultValue="2")Integer opType, Notice notice) {
int res = 0;
if (opType == 0) {
try {
res = noticeService.addNotice(notice);
} catch (Exception e) {
System.out.println("添加失败!");
return "添加失败!";
}