基于javaweb+mysql的ssm+maven毕业设计管理系统(java+ssm+tomcat+maven+mysql+html)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven毕业设计管理系统(java+ssm+tomcat+maven+mysql+html)
登录页面:http://localhost:8080/graduation/login.html
学生,教师统一使用该登录界面进行登录
graduation
毕业设计管理系统可以分为五个模块:登录模块,选题模块,信息管理模块,流程管理模块,文件管理模块。
- 该系统在技术上使用Spring+SpringMVC+MyBatis整合框架作为后台开发框架,AmazeUI作为前端开发框架。
并使用Ehcache作为项目的缓存,druid作为项目的数据库连接池,使用FreeMarker实现word的导出,使用Shiro完成项目的登录认证,数据库使用的则是MySQL。
-
该系统可以分为三类角色:学生,教师,教务管理员。
-
该系统前端界面使用纯HTML实现,与后台的交互则都是通过Ajax完成。
登录模块
登录模块主要完成教务管理员,教师,学生用户的登录功能,每个角色登录之后会看到不同的操作界面。
选题模块
选题模块主要完成师生双选这一业务流程。
信息管理模块
信息管理模块主要完成对各种信息的crud操作。
流程管理模块
流程管理主要完成对开题报告,中期检查,免答辩申请,验收/答辩,论文审核,盲审的流程的管理。
文件管理模块
文件管理模块主要对文件的上传与下载。
部分界面
-
登录(学生,教师统一使用该登录界面进行登录)
-
主页(主页可以看到一些内容概要与相关提示)
-
教师列表(通过选择某一教师进而选择其课题)
-
申报课题(教师只有填写课题名之后才可以申报课题)
static {
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
try {
configuration.setDirectoryForTemplateLoading(new File(templateFolder));
} catch (IOException e) {
e.printStackTrace();
}
}
private WordUtils() {
throw new AssertionError();
}
public static void exportMillCertificateWord(HttpServletRequest request, HttpServletResponse response,
Map map, String templeteName, String fileName) throws IOException {
//Template freemarkerTemplate = configuration.getTemplate("开题报告.ftl");
Template freemarkerTemplate = configuration.getTemplate(templeteName);
File file = null;
InputStream fin = null;
ServletOutputStream out = null;
try {
// 调用工具类的createDoc方法生成Word文档
file = createDoc(map, freemarkerTemplate);
fin = new FileInputStream(file);
// response.setCharacterEncoding("utf-8");
response.setContentType("application/msword;charset=utf-8");
// 设置浏览器以下载的方式处理该文件名
// String fileName = "开题报告.doc";
response.setHeader("Content-Disposition", "attachment;filename="
// .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
.concat(String.valueOf(Utils.filenameEncoding(fileName, request))));
out = response.getOutputStream();
byte[] buffer = new byte[512]; // 缓冲区
int bytesToRead = -1;
// 通过循环将读入的Word文件的内容输出到浏览器中
while ((bytesToRead = fin.read(buffer)) != -1) {
out.write(buffer, 0, bytesToRead);
}
} finally {
if (fin != null) fin.close();
if (out != null) out.close();
if (file != null) {
//file.delete(); // 删除临时文件
}
}
}
private static File createDoc(Map<?, ?> dataMap, Template template) {
String name = "test.doc";
File f = new File(name);
if(user!=null) {
Teacher teacher = teacherService.findTeacherByUserId(user.getUserId());
if(teacher!=null) {
project.setTeacherId(teacher.getTeacherId());
if(project.getProjectId()!=null) {
return projectService.updateByPrimaryKeySelective(project);
}else {
return projectService.insertSelective(project,teacher.getTeacherId());
}
}
}
return false;
}
@ResponseBody
@RequestMapping(value="/getProjectByTeacherId")
public List<Project> getProjectByTeacherId(HttpSession session){
User user=(User) session.getAttribute("user");
if(user!=null) {
Teacher teacher = teacherService.findTeacherByUserId(user.getUserId());
if(teacher!=null) {
return projectService.getProjectByTeacherId(teacher.getTeacherId());
}
}
return null;
}
}
return true;
}
return false;
}
@ResponseBody
@RequestMapping("/getStuAndProject")
public Student getStuAndProject(HttpSession session,HttpServletResponse response,String studentId) {
if(studentId!=null&&studentId!="") {
return studentService.getStuAndProject(studentId);
}
User user=(User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
if(student.getProjectId()!=null&&student.getProjectId()!=0) {
Student newStu = studentService.getStuAndProject(student.getStudentId());
return newStu;
}
}
}
return new Student();
}
@ResponseBody
@RequestMapping("/getStuAndProjectAndTeacher")
public Student getStuAndProjectAndTeacher(HttpSession session,HttpServletResponse response) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
if(student.getProjectId()!=null&&student.getProjectId()!=0) {
Student newStu = studentService.getStuAndProjectAndTeacher(student.getStudentId());
return newStu;
}
}
}
return new Student();
}
String password=user.getUserPassword();
if(password!=null&&!password.isEmpty()) {
user.setUserPassword(Utils.md5(password));
boolean bool = userService.updateUserInfo(user);
if(bool==true) {
session.removeAttribute("user");
return true;
}
}
return false;
}
}
@Controller
@RequestMapping("/lunwenController")
public class LunwenController {
@Autowired
private LunwenService lunwenService;
public class ProjectController {
@Autowired
private ProjectService projectService;
@Autowired
private TeacherService teacherService;
@Autowired
private StudentService studentService;
@ResponseBody
@RequestMapping(value="/getProjectListByTeacherId",method=RequestMethod.GET)
public PageInfo<Project> getProjectListByTeacherId(@RequestParam(required=true)String teacherId,
@RequestParam(defaultValue="1")int pageNum,@RequestParam(defaultValue="8")int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<Project> list = projectService.getProjectListByTeacherId(teacherId);
return new PageInfo<>(list);
}
@ResponseBody
@RequestMapping(value="/getCountProjectNum",method=RequestMethod.GET)
public int getCountProjectNum() {
return projectService.getCountProjectNum();
}
@ResponseBody
@RequestMapping(value="/thisTeacherYesProjectNum",method=RequestMethod.GET)
public int thisTeacherYesProjectNum(HttpSession session) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Teacher teacher = teacherService.findTeacherByUserId(user.getUserId());
if(teacher!=null) {
String teacherId = teacher.getTeacherId();
return projectService.thisTeacherYesProjectNum(teacherId);
}
}
return 0;
}
@ResponseBody
@RequestMapping(value="/thisTeacherUndefinedStudentNum",method=RequestMethod.GET)
public int thisTeacherUndefinedStudentNum(HttpSession session) {
@Controller
@RequestMapping("/zqjcController")
public class ZqjcController {
@Autowired
private ZqjcService zqjcService;
@Autowired
private StudentService studentService;
@ResponseBody
@RequestMapping(value="/insertSelective",method=RequestMethod.POST)
public boolean insertSelective(Zqjc zqjc) {
if(zqjc.getZqjcId()==null) {
return zqjcService.insertSelective(zqjc);
}else {
return zqjcService.updateByPrimaryKeySelective(zqjc);
}
}
@ResponseBody
@RequestMapping("/getzqjcByStudentId")
public Zqjc getzqjcByStudentId(@RequestParam(value="studentId",required=false)String studentId,
HttpSession session) {
if(studentId!=null&&!studentId.isEmpty()) {
Zqjc zqjc = zqjcService.getzqjcByStudentId(studentId);
if(zqjc!=null) {
return zqjc;
}
}else {
User user = (User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
Zqjc zqjc = zqjcService.getzqjcByStudentId(student.getStudentId());
if(zqjc!=null) {
return zqjc;
}
}
}
@Controller
@RequestMapping("/teacherController")
public class TeacherController {
@Autowired
private TeacherService teacherService;
@ResponseBody
@RequestMapping(value="/getSubTeacher",method=RequestMethod.GET)
public PageInfo<Teacher> getSubTeacher(@RequestParam(defaultValue="1")int pageNum,@RequestParam(defaultValue="8")int pageSize){
PageHelper.startPage(pageNum, pageSize);
List<Teacher> list = teacherService.getSubTeacher();
return new PageInfo<Teacher>(list);
}
@ResponseBody
@RequestMapping(value="/findTeacherByTeacherName",method=RequestMethod.GET)
public PageInfo<Teacher> findTeacherByTeacherName(String teacherName,HttpServletResponse response,
@RequestParam(defaultValue="1")int pageNum,@RequestParam(defaultValue="8")int pageSize){
response.setContentType("application/json");
PageHelper.startPage(pageNum, pageSize);
List<Teacher> list = teacherService.findTeacherByTeacherName(teacherName);
return new PageInfo<>(list);
}
@ResponseBody
@RequestMapping("/findTeacherAndProject")
public Teacher findTeacherAndProject(HttpSession session) {
User user = (User) session.getAttribute("user");
if(user!=null) {
Teacher teacher = teacherService.findTeacherByUserId(user.getUserId());
if(teacher!=null) {
Teacher teacherPlus = teacherService.findTeacherAndProject(teacher.getTeacherId());
if(teacherPlus!=null) {
return teacherPlus;
}
}
}
return null;
}
@ResponseBody
@RequestMapping("/findTeacher")
public Teacher findTeacher(HttpSession session) {
User user = (User) session.getAttribute("user");
if(user!=null) {
Teacher teacher = teacherService.findTeacherByUserId(user.getUserId());
if(teacher!=null) {
Teacher teacherPlus = teacherService.findTeacherByTeacherId(teacher.getTeacherId());
if(teacherPlus!=null) {
return teacherPlus;
}
@Controller
@RequestMapping("/downController")
public class DownController {
@Autowired
private DownService downService;
@ResponseBody
@RequestMapping(value="/getSubDown",method=RequestMethod.GET)
public PageInfo getSubDown(@RequestParam(defaultValue="1")int pageNum,
@RequestParam(defaultValue="6")int pageSize,@RequestParam(defaultValue="1")int navigatePages) {
PageHelper.startPage(pageNum, pageSize);
List<Down> list = downService.getAllDown();
return new PageInfo<>(list, navigatePages);
}
@RequestMapping("/downloadResource")
public @ResponseBody String downloadResource(HttpSession session,HttpServletResponse response,
HttpServletRequest request,@RequestParam(required=true)String fileName) throws Exception {
if(fileName==null||fileName=="") {
return null;
}
String dataDir=request.getServletContext().getRealPath("/WEB-INF/file");
Path path=Paths.get(dataDir, fileName);
if(Files.exists(path)) {
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename="+Utils.filenameEncoding(fileName, request));
@RequestMapping(value="/getSubInform",method=RequestMethod.GET)
public PageInfo getSubInform(int pageNum,int pageSize,int navigatePages) {
//传入当前页和每页记录数
PageHelper.startPage(pageNum, pageSize);
List<Inform> list = informService.getAllInfrom();
PageInfo pageInfo=new PageInfo(list,navigatePages);
return pageInfo;
}
@ResponseBody
@RequestMapping(value="/getSubInformById",method=RequestMethod.GET)
public Inform getSubInformById(int informId) {
return informService.getSubInformById(informId);
}
}
@Controller
@RequestMapping("/yansouController")
public class YansouController {
@Autowired
private YansoouService yansoouService;
@Autowired
private StudentService studentService;
@ResponseBody
@RequestMapping("/selectYanSouInfoByid")
public YansouTeam selectYanSouInfoByid(HttpSession session) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
if(student.getYansouTeamId()!=null&&!student.getYansouTeamId().isEmpty()) {
return yansoouService.selectYanSouInfoByid(Integer.parseInt(student.getYansouTeamId()));
}
public class StudentController {
@Autowired
private StudentService studentService;
@Autowired
private ProjectService projectService;
@ResponseBody
@RequestMapping("/hasChooseProject")
public Student hasChooseProject(HttpSession session,HttpServletResponse response) {
response.setContentType("application/json;charset=utf-8");
User user=(User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
Project project = projectService.getProjectByStudentId(student.getStudentId());
if(project!=null) {
return student;
}
}
}
return new Student();
}
@ResponseBody
@RequestMapping(value="/updateProjectByStudentId/{projectId}",method=RequestMethod.PUT)
public boolean updateProjectByStudentId(HttpSession session,@PathVariable("projectId")String projectId) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
if(!student.getStudentId().isEmpty()) {
return projectService.updateStudentIdByProjectId(student.getStudentId(), projectId);
}
}
}
return false;
}
@ResponseBody
@RequestMapping(value="/updateTeacherId")
public boolean updateTeacherId(HttpSession session,String teacherId) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
return studentService.updateTeacherId(teacherId,student.getStudentId());
}
@Controller
@RequestMapping("/projectController")
public class ProjectController {
@Autowired
private ProjectService projectService;
@Autowired
private TeacherService teacherService;
@Autowired
private StudentService studentService;
@ResponseBody
@RequestMapping(value="/getProjectListByTeacherId",method=RequestMethod.GET)
public PageInfo<Project> getProjectListByTeacherId(@RequestParam(required=true)String teacherId,
@RequestParam(defaultValue="1")int pageNum,@RequestParam(defaultValue="8")int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<Project> list = projectService.getProjectListByTeacherId(teacherId);
return new PageInfo<>(list);
}
@ResponseBody
@RequestMapping(value="/getCountProjectNum",method=RequestMethod.GET)
public int getCountProjectNum() {
return projectService.getCountProjectNum();
}
@ResponseBody
@RequestMapping(value="/thisTeacherYesProjectNum",method=RequestMethod.GET)
public int thisTeacherYesProjectNum(HttpSession session) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Teacher teacher = teacherService.findTeacherByUserId(user.getUserId());
if(teacher!=null) {
String teacherId = teacher.getTeacherId();
return projectService.thisTeacherYesProjectNum(teacherId);
}
}
return 0;
}
@ResponseBody
@RequestMapping(value="/thisTeacherUndefinedStudentNum",method=RequestMethod.GET)
public int thisTeacherUndefinedStudentNum(HttpSession session) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Teacher teacher = teacherService.findTeacherByUserId(user.getUserId());
if(teacher!=null) {
String teacherId = teacher.getTeacherId();
return studentService.thisTeacherUndefinedStudentNum(teacherId);
}
}
.concat(String.valueOf(Utils.filenameEncoding(fileName, request))));
out = response.getOutputStream();
byte[] buffer = new byte[512]; // 缓冲区
int bytesToRead = -1;
// 通过循环将读入的Word文件的内容输出到浏览器中
while ((bytesToRead = fin.read(buffer)) != -1) {
out.write(buffer, 0, bytesToRead);
}
} finally {
if (fin != null) fin.close();
if (out != null) out.close();
if (file != null) {
//file.delete(); // 删除临时文件
}
}
}
private static File createDoc(Map<?, ?> dataMap, Template template) {
String name = "test.doc";
File f = new File(name);
Template t = template;
try {
// 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开
Writer w = new OutputStreamWriter(new FileOutputStream(f), "utf-8");
t.process(dataMap, w);
w.close();
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
return f;
}
}
if(user!=null) {
return userService.ispassword(Utils.md5(password),user.getUserId());
}
return false;
}
@ResponseBody
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(HttpSession session,String randStr,String account,String password) {
String randStr2=(String) session.getAttribute("randStr");
if(randStr2!=null&&randStr2.equals(randStr)) {
password=Utils.md5(password);
Subject currentUser = SecurityUtils.getSubject();
if (!currentUser.isAuthenticated()) {
//把用户名和密码封装为UsernamePasswordToken
UsernamePasswordToken token = new UsernamePasswordToken(account, password);
try {
//执行登录
currentUser.login(token);
return toUI(session,account,password);
}
//用户不存在
catch (UnknownAccountException ae) {
return "passwordError";
}
//用户被锁定
catch (LockedAccountException e) {
return "passwordError";
}
}else {
return toUI(session,account,password);
}
}else {
return "randStrError";
}
}
private String toUI(HttpSession session,String account,String password) {
User user = userService.login(account, password);
if(user!=null) {
if(2==user.getUserRoles()) {
session.setAttribute("user", user);
return "student/sindex.html";
}
if(1==user.getUserRoles()) {
session.setAttribute("user", user);
return "teacher/tindex.html";
}
Student newStu = studentService.getStuAndProject(student.getStudentId());
return newStu;
}
}
}
return new Student();
}
@ResponseBody
@RequestMapping("/getStuAndProjectAndTeacher")
public Student getStuAndProjectAndTeacher(HttpSession session,HttpServletResponse response) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
if(student.getProjectId()!=null&&student.getProjectId()!=0) {
Student newStu = studentService.getStuAndProjectAndTeacher(student.getStudentId());
return newStu;
}
}
}
return new Student();
}
@ResponseBody
@RequestMapping("/getStudentAndKtbgBySid")
public Student getStudentAndKtbgBySid(String studentId) {
return studentService.getStudentAndKtbgBySid(studentId);
}
@ResponseBody
@RequestMapping("/getStudentAndZqjcBySid")
public Student getStudentAndZqjcBySid(String studentId) {
return studentService.getStudentAndZqjcBySid(studentId);
}
@ResponseBody
@RequestMapping("/findStudent")
public Student findStudent(HttpSession session) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
@Controller
@RequestMapping("/teacherController")
public class TeacherController {
@Autowired
private TeacherService teacherService;
@ResponseBody
@RequestMapping(value="/getSubTeacher",method=RequestMethod.GET)
public PageInfo<Teacher> getSubTeacher(@RequestParam(defaultValue="1")int pageNum,@RequestParam(defaultValue="8")int pageSize){
PageHelper.startPage(pageNum, pageSize);
List<Teacher> list = teacherService.getSubTeacher();
return new PageInfo<Teacher>(list);
}
return null;
}
@ResponseBody
@RequestMapping(value="/updateTeacherInfo",method=RequestMethod.POST)
public boolean updateTeacherInfo(Teacher teacher,
@RequestParam(value="portrait",required=false)MultipartFile portrait,HttpServletRequest request) {
if(portrait!=null&&portrait.getSize()>0) {
if(portrait.getSize()>(10*1024*1024)) {
return false;
}
String filename=portrait.getOriginalFilename();
String dbPath=request.getServletContext().getContextPath()+"/portrait/"+teacher.getUser().getUserId();
String basePath=request.getServletContext().getRealPath("/portrait/"+teacher.getUser().getUserId());
new File(basePath).mkdir();
File portraitFile=new File(basePath,filename);
try {
portrait.transferTo(portraitFile);
teacher.getUser().setUserPortrait(dbPath+"/"+filename);
return teacherService.updateTeacherInfo(teacher);
} catch (Exception e) {
e.printStackTrace();
}
}
return teacherService.updateTeacherInfo(teacher);
}
@ResponseBody
@RequestMapping("/getTeacherYansouInfo")
public YansouTeam getTeacherYansouInfo(HttpSession session){
User user = (User) session.getAttribute("user");
if(user!=null) {
Teacher teacher = teacherService.findTeacherByUserId(user.getUserId());
if(teacher!=null) {
return teacherService.getTeacherYansouInfo(teacher.getTeacherId());
}
}
return null;
}
@ResponseBody
@RequestMapping("/thisTeacherisLeader")
public YansouTeacher thisTeacherisLeader(HttpSession session){
User user = (User) session.getAttribute("user");
if(user!=null) {
@RequestMapping("/getYansouTeamStu")
public PageInfo<Student> getYansouTeamStu(HttpSession session,
@RequestParam(defaultValue="1")int pageNum, @RequestParam(defaultValue="8")int pageSize){
User user = (User) session.getAttribute("user");
if(user!=null) {
Teacher teacher = teacherService.findTeacherByUserId(user.getUserId());
if(teacher!=null) {
PageHelper.startPage(pageNum, pageSize);
List<Student> list = teacherService.getYansouTeamStu(teacher.getTeacherId());
return new PageInfo<Student>(list);
}
}
return null;
}
}
@Controller
@RequestMapping("/userController")
public class UserController {
@Autowired
private YansoouService yansoouService;
@Autowired
private StudentService studentService;
@ResponseBody
@RequestMapping("/selectYanSouInfoByid")
public YansouTeam selectYanSouInfoByid(HttpSession session) {
User user=(User) session.getAttribute("user");
if(user!=null) {
Student student = studentService.getStudentByUserId(user.getUserId());
if(student!=null) {
if(student.getYansouTeamId()!=null&&!student.getYansouTeamId().isEmpty()) {
return yansoouService.selectYanSouInfoByid(Integer.parseInt(student.getYansouTeamId()));
}
}
}
return null;
}
}
public class Utils {
public static String getUUID() {
return UUID.randomUUID().toString().replaceAll("-", "");
}
public static String md5(String password) {
//return DigestUtils.md5DigestAsHex(password.getBytes());
return password;
}