基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现
🍅 作者主頁:Java李楊勇?
🍅 簡介:Java領域優質創作者🏆、【java李楊勇】公號作者? ?簡歷模板、學習資料、面試題庫【關注我,都給你】
🍅文末獲取源碼聯系🍅
前言:
? ? ? 隨著信息時代計算機網絡技術的發展給人們帶來了極大的方便,傳統的畢業設計過程在很大程度上給學生、教師和管理人員帶來了不便。而畢業論文對于高校學生而言是對自己在學校所學的專業知識和技能的總結,對高校的教育而言是對畢業學生最后的一次全面的考核。在畢業論文完成整個的過程中,需要學生與導師、人員的密切合作。但在現實中,某個環節內的角色由于某些原因不能一直保持著工作狀態,會導致畢業論文完成的停滯。為了避免這種情況的發生,為方便教師、學生和管理者順利完成對應角色的任務,高校需要一個專業的針對畢業論文的管理系統把完成畢業論文的所有操作都集中到一個系統中。與此同時,各種信息網站的普及給許多企業或用戶帶來了良好的體驗和高效的管理。本系統針對現代高校計算機技術的發展,為了應對過去高校畢業生在畢業設計管理過程中遇到的效率低、交互性差、工作量大等問題而采用軟件工程的設計思想,構建一個適合高校使用的基于javaweb的畢業設計管理系統。本系統是基于Windows操作系統作為服務平臺,后臺數據庫采用MySQL數據庫,服務器使用Tomcat容器、Eclipse開發工具創建java語言來構建服務頁面。選擇畢業設計課題管理、績效管理等功能模塊及其關系。本次畢業設計的目的是運用現代網絡管理技術解決畢業設計管理中存在的問題,減少學生選擇畢業設計選題的時間,和加強畢業設計過程的監控,降低教師和管理人員的工作強度。采用SpringMVC框架提高了系統開發的效率,降低了系統的復雜性,使數據庫訪問更加靈活。通過測試,系統的應用方便了教師和學生之間的交流,加強了過程管理,方便了結果的保存和顯示。
功能設計:
1.用戶模塊管理:用戶登錄、多角色登錄、用戶的查詢、刪除操作、用戶分為不同權限、可以通過角色來靈活控制。
2.導師管理:管理員登錄后可以對導師信息進行管理和添加。
3.學生管理:管理員以及老師登錄后可以對學生信息進行管理和添加。
4.公告管理:管理員及老師登錄后可以對公告進行管理和添、學生可以查看。
5.數據分析:管理員登錄后可以查看數據分析和分數占比等。
6.審核選題:管理員登錄后可以進行審核操作、同意或拒絕。
7.論文管理:管理員登錄后可以查看下載論文
8.修改資料:用戶可以修改自己的密碼。
9.課程管理:老師上傳選題課程、及查看改課程是否通過選題。
10.發布內容:老師發布任務書、開題報告、需求分析和數據庫設計等。
11.審核文檔:老師可以審核任務書、開題報告、需求分析和數據庫設計等。
12.文檔管理:老師可以查看和上傳學生的論文文檔。
13.提問管理:老師可以查看和回答學生的提問信息、學生可以提問
14.成績管理:老師可以管理和查看學生的成績信息。
15.畢業設計管理:老師可以審核學生論文及查看答辯資格名單。
16.進度管理:學生可以查看各文檔的進度完成情況、比如任務書、開題等。
視頻演示:java計算機畢業設計之高校畢業設計論文管理系統【源碼+論文】實戰_嗶哩嗶哩_bilibili很不錯的一個高校畢業設計管理系統!適合畢業設計和課程設計篇【源碼+論文】三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連三連https://www.bilibili.com/video/BV1x5411f7G6?spm_id_from=333.999.0.0
功能截圖:
系統首頁
分角色登錄、不同角色不同權限功能
管理員主要功能設計
數據分析:
審核選題:
學生管理:
添加導師:
學生用戶主要功能:
修改個人資料:
查看選題:
文檔管理:各文檔完成情況、查看課題資料和下載等
上傳各階段文檔:和查看已經上傳的文檔
畢業設計提問以及查看問題老師回答:
查看公告信息、成績信息和自己的答辯資格
老師端主要功能設計:
課題管理:
學生管理:
發布內容:
審核文檔:
文檔管理:
成績管理:
公告管理:
論文審核及查看答辯資格:
主要數據庫設計:
表t_announcement(公告表)
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | 公告表 |
| 2 | context | varchar | 300 | 0 | Y | N | 內容 |
| 3 | inputMan | varchar | 20 | 0 | Y | N | 發布者 |
| 4 | lastModifyTime | datetime | 19 | 0 | Y | N | 時間 |
表t_department
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | 院系表,id為主鍵 |
| 2 | departmentName | varchar | 30 | 0 | Y | N | 名稱 |
表t_doubt
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | Id主鍵 |
| 2 | studentId | int | 10 | 0 | N | N | 學生id |
| 3 | studentDoubt | varchar | 255 | 0 | Y | N | 提問 |
| 4 | answer | varchar | 255 | 0 | Y | N | 回答 |
表t_major
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | 專業表,id為主鍵 |
| 2 | majorName | varchar | 30 | 0 | Y | N | 名稱 |
| 3 | departmentId | int | 10 | 0 | Y | N | 關聯院系 |
表t_project_source
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | 項目源碼表 |
| 2 | studentId | int | 10 | 0 | N | N | 學生id |
| 3 | projectScore | varchar | 100 | 0 | Y | N | 分數 |
| 4 | description | varchar | 300 | 0 | Y | N | 描述 |
表t_student
| 編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | Id |
| 2 | studentNo | varchar | 20 | 0 | Y | N | 學生編號 |
| 3 | studentName | varchar | 20 | 0 | Y | N | 學生名稱 |
| 4 | sex | varchar | 4 | 0 | Y | N | 性別 |
| 5 | majorId | int | 10 | 0 | N | N | 專業id |
| 6 | grade | varchar | 10 | 0 | Y | N | 班級 |
| 7 | inputMan | varchar | 20 | 0 | Y | N | 發布者 |
| 8 | lastModifyTime | datetime | 19 | 0 | Y | N | 時間 |
| 9 | phone | varchar | 11 | 0 | Y | N | 手機號 |
| 10 | | varchar | 25 | 0 | Y | N | 郵箱 |
部分代碼:?
@Controller @RequestMapping(value="/teacher") public class TeacherController {@Autowiredprivate ITeacherService teacherService;@Autowiredprivate IStudentService studentService;@Autowiredprivate IDepartmentService departmentService;@Autowiredprivate IAnnouncementService announcementService;/*@RequestMapping(value="/add",method=RequestMethod.GET)public String addTeacherForm(Model model) {return "teacher/addTeacher.jsp";}@RequestMapping(value="/add",method=RequestMethod.POST)public String addTeacher(HttpServletRequest request,String teacherNo, String teacherName,String sex,String inputMan,String phone,String department,Model model) throws Exception {teacherNo = new String(teacherNo.getBytes("iso-8859-1"),"utf-8");teacherName = new String(teacherName.getBytes("iso-8859-1"),"utf-8");sex = new String(sex.getBytes("iso-8859-1"),"utf-8");inputMan = new String(inputMan.getBytes("iso-8859-1"),"utf-8");phone = new String(phone.getBytes("iso-8859-1"),"utf-8");department = new String(department.getBytes("iso-8859-1"),"utf-8");Date currentTime = new Date();Teacher teacher = new Teacher();teacher.setTeacherNo(teacherNo);teacher.setTeacherName(teacherName);teacher.setDepartmentId(Integer.parseInt(department));teacher.setSex(sex);teacher.setInputMan(inputMan);teacher.setLastModifyTime(currentTime);teacher.setPhone(phone);int addNum = teacherService.addTeacher(teacher);System.out.println("添加數目:"+addNum);return "teacher/addSuccess.jsp";}*/@RequestMapping(value="/main",method=RequestMethod.GET)public String teacherMainForm() {return "teacher/main.jsp";}@RequestMapping(value="/modifyInfo",method=RequestMethod.GET)public String teacherModifyInfoForm() {return "teacher/teacherModifyInfo.jsp";}@RequestMapping(value="/modifyPassword",method=RequestMethod.GET)public String teacherModifyPasswordForm() {return "teacher/teacherModifyPassword.jsp";}@RequestMapping(value="/uploadThesisTitle",method=RequestMethod.GET)public String teacherUploadThesisTitleForm() {return "teacher/teacherUploadThesisTitle.jsp";}@RequestMapping(value="/modifyThesisTitle",method=RequestMethod.GET)public String teacherModifyThesisTitleForm() {return "teacher/teacherModifyThesisTitle.jsp";}@RequestMapping(value="/thesisResult",method=RequestMethod.GET)public String teacherThesisResultForm(Model model,HttpServletRequest request) {teacherShowAllThesisTitle(model, request);return "teacher/teacherThesisResult.jsp";}@RequestMapping(value="/uploadTaskBook",method=RequestMethod.GET)public String teacherUploadTaskBookForm() {return "teacher/teacherUploadTakeBook.jsp";}@RequestMapping(value="/uploadOpening",method=RequestMethod.GET)public String teacherUploadOpeningForm() {return "teacher/teacherUploadOpeningReport.jsp";}@RequestMapping(value="/uploadKeXingXing",method=RequestMethod.GET)public String teacherUploadKeXingXingForm() {return "teacher/teacherUploadKeXingXing.jsp";}@RequestMapping(value="/uploadXuQiu",method=RequestMethod.GET)public String teacherUploadXuQiuForm() {return "teacher/teacherUploadXuQiu.jsp";}@RequestMapping(value="/uploadGaiYao",method=RequestMethod.GET)public String teacherUploadGaiYaoForm() {return "teacher/teacherUploadGaiYao.jsp";}@RequestMapping(value="/uploadShuJuKu",method=RequestMethod.GET)public String teacherUploadShuJuKuForm() {return "teacher/teacherUploadShuJuKu.jsp";}@RequestMapping(value="/checkOppening")public String teacherCheckOppeningForm(HttpServletRequest request,Model model) {Teacher currentTeacher = (Teacher)request.getSession().getAttribute("teacher");int teacherId = currentTeacher.getId();List<Student> students = teacherService.getAllStudentInfo(teacherId);for(int i=0;i<students.size();i++) {int studentId = students.get(i).getId();StudentTaskBookOpening STBO = teacherService.getStudentOpeningByStudentId(studentId);if(STBO == null || "".equals(STBO)) {}else {String openingPath = STBO.getStudentOpeningResport();if(openingPath==null) {students.get(i).setStudentOpeningName("未上傳");students.get(i).setOpenscore("未上傳");}else {students.get(i).setStudentOpeningPath(openingPath);String[] str = openingPath.split("\\\\");String fileName = str[str.length-1].toString();students.get(i).setStudentOpeningName(fileName);students.get(i).setOpenscore(STBO.getOpenscore());}// int completion = STBO.getCompletion(); // if(completion==0) { // students.get(i).setCompletionName("未審核"); // }else if(completion==1) { // students.get(i).setCompletionName("未通過"); // }else { // students.get(i).setCompletionName("審核通過");; // }}}model.addAttribute("studentList", students);return "teacher/teacherCheckOpeningReport.jsp";}@RequestMapping(value="/checkKexing")public String teacherCheckKexingForm(HttpServletRequest request,Model model) {Teacher currentTeacher = (Teacher)request.getSession().getAttribute("teacher");int teacherId = currentTeacher.getId();List<Student> students = teacherService.getAllStudentInfo(teacherId);for(int i=0;i<students.size();i++) {int studentId = students.get(i).getId();StudentTaskBookOpening STBO = teacherService.getStudentOpeningByStudentId(studentId);if(STBO == null || "".equals(STBO)) {}else {String kexingPath = STBO.getStudentKeXingXing();if(kexingPath==null) {students.get(i).setStudentKexingName("未上傳");students.get(i).setKexingscore("未上傳");}else {students.get(i).setStudentKexingPath(kexingPath);String[] str = kexingPath.split("\\\\");String fileName = str[str.length-1].toString();students.get(i).setStudentKexingName(fileName);students.get(i).setKexingscore(STBO.getKexingscore());}}}model.addAttribute("studentList", students);return "teacher/teacherCheckKeXing.jsp";}@RequestMapping(value="/checkXuqiu")public String teacherCheckXuqiuForm(HttpServletRequest request,Model model) {Teacher currentTeacher = (Teacher)request.getSession().getAttribute("teacher");int teacherId = currentTeacher.getId();List<Student> students = teacherService.getAllStudentInfo(teacherId);for(int i=0;i<students.size();i++) {int studentId = students.get(i).getId();StudentTaskBookOpening STBO = teacherService.getStudentOpeningByStudentId(studentId);if(STBO == null || "".equals(STBO)) {}else {String xuqiuPath = STBO.getStudentXuQiu();if(xuqiuPath==null) {students.get(i).setStudentXuqiuName("未上傳");students.get(i).setXuqiuscore("未上傳");}else {students.get(i).setStudentXuqiuPath(xuqiuPath);System.out.println(xuqiuPath);String[] str = xuqiuPath.split("\\\\");String fileName = str[str.length-1].toString();students.get(i).setStudentXuqiuName(fileName);students.get(i).setXuqiuscore(STBO.getXuqiuscore());}}}model.addAttribute("studentList", students);return "teacher/teacherCheckXuQiu.jsp";}@RequestMapping(value="/uploadThesisTitle",method=RequestMethod.POST)public String teacherUploadThesisTitle(Model model,HttpServletRequest request,String thesisTitle,String nandu,String liang,String from,String leixing,String thesisDesc) throws Exception {thesisTitle = new String(thesisTitle.getBytes("iso-8859-1"),"utf-8");nandu = new String(nandu.getBytes("iso-8859-1"),"utf-8");liang = new String(liang.getBytes("iso-8859-1"),"utf-8");from = new String(from.getBytes("iso-8859-1"),"utf-8");leixing = new String(leixing.getBytes("iso-8859-1"),"utf-8");thesisDesc = new String(thesisDesc.getBytes("iso-8859-1"),"utf-8");if(thesisTitle == null || "".equals(thesisTitle)) {model.addAttribute("message", "上傳課題題目不能為空");return "teacher/main.jsp";}else if(thesisDesc == null || "".equals(thesisDesc)) {model.addAttribute("message", "上傳課題描述不能為空");return "teacher/main.jsp";}else if(nandu == null || "".equals(nandu)) {model.addAttribute("message", "上傳課題難度不能為空");return "teacher/main.jsp";}else if(liang == null || "".equals(liang)) {model.addAttribute("message", "上傳課題工作量不能為空");return "teacher/main.jsp";}else if(from == null || "".equals(from)) {model.addAttribute("message", "上傳課題來源不能為空");return "teacher/main.jsp";}else if(leixing == null || "".equals(leixing)) {model.addAttribute("message", "上傳課題類型不能為空");return "teacher/main.jsp";}else {Teacher currentTeacher = (Teacher)request.getSession().getAttribute("teacher");int teacherId = currentTeacher.getId();String teacherName = currentTeacher.getTeacherName();Date time = new Date();ThesisTitle thesis = new ThesisTitle();thesis.setThesisName(thesisTitle);thesis.setTeacherId(teacherId);thesis.setSubmitTime(time);thesis.setInputMan(teacherName);thesis.setNandu(nandu);thesis.setLiang(liang);thesis.setFrom(from);thesis.setLeixing(leixing);thesis.setDescription(thesisDesc);int num = teacherService.uploadThesisTitle(thesis);System.out.println("添加的課題數:"+num);model.addAttribute("message", "上傳成功");return "teacher/teacherUploadThesisTitle.jsp";}}@RequestMapping(value="/uploadThesis4pass")public String teacherUploadThesis4pass(HttpServletRequest request,@RequestParam("studentList")int studentList,@RequestParam("file") MultipartFile file, Model model) throws Exception, IOException {// System.out.println("上傳課題id:"+topic4Teacher);Teacher currentTeacher = (Teacher)request.getSession().getAttribute("teacher");String teacherName = currentTeacher.getTeacherName();String studentId = String.valueOf(studentList);// System.out.println("當前用戶:"+teacherNo);if(!file.isEmpty()) {File fileRoot = new File("E:\\BSM\\thesis");File fileDb = new File(fileRoot, studentId);String fileName = file.getOriginalFilename();File filePath = new File(fileDb, fileName);// filePath 是必須的 , 文件保存的路徑,若是注釋掉會出現,空文件異常if(!filePath.getParentFile().exists()) {filePath.getParentFile().mkdirs();}file.transferTo(new File(fileDb+File.separator+fileName));ThesisPaper paper = new ThesisPaper();paper.setStudentId(studentList);paper.setPaperInfo(filePath.toString());teacherService.uploadThesis4Pass(paper);model.addAttribute("message", "上傳學生論成功");return "teacher/main.jsp";}else {model.addAttribute("message", "上傳任務書出錯");return "error.jsp";}}@RequestMapping(value="/checkDoubt")public String teacherCheckDoubtForm(HttpServletRequest request,Model model) {Teacher currentTeacher = (Teacher)request.getSession().getAttribute("teacher");int teacherId = currentTeacher.getId();List<Student> students = teacherService.getAllStudentInfo(teacherId);List<Doubt> doubtList = new ArrayList<Doubt>();for(int i=0;i<students.size();i++) {int studentId = students.get(i).getId();List<Doubt> doubts = teacherService.getAllDoubtByStudentId(studentId);int nn = doubts.size();for(int j=0;j<nn;j++) {Doubt db = doubts.get(j);String answer = db.getAnswer();if(answer == null || "".equals(answer)) {doubtList.add(db);}}}model.addAttribute("doubtList", doubtList);return "teacher/teacherCheckDoubt.jsp";}@RequestMapping(value="/answerDoubtForm")public String teacherAnswerDoubtForm() {return "teacher/teacherAnswerDoubt.jsp";}@RequestMapping(value="/answerDoubt")public String teacherAnswerDoubt(Model model,int id,String answer) throws Exception {answer = new String(answer.getBytes("iso-8859-1"),"utf-8");Doubt doubt = new Doubt();doubt.setId(id);doubt.setAnswer(answer);int num = teacherService.updateDoubt(doubt);if(num == 1) {model.addAttribute("message", "回復成功");}else {model.addAttribute("message", "回復失敗");}return "teacher/main.jsp";}論文報告:
?總結:
? ? ? ?經過近期對 java 面向對象程序設計、前端知識以及JAVA 框架的掌握和學習,以及這段時間這個畢業設計管理系統的開發,讓我更加了解到 java 學習的重要性。在開發這個系統是哪個,我完成了多個實驗以及畢業設計管理平臺的功能測試,階段的系統開發學習當中,我從認識到熟悉java,而后到能夠自主運用相關技術,我發現了它確實有很多方便之處,比如java集抽象性和封裝性以及繼承性和多態性于一體,實現了對代碼重用和代碼擴充功能,提高了整體軟件開發的速度和效率。比如管理員添加用戶的時候報java.lang.NullPointException、解決的方法:查看控制臺打印信息、發現添加的時候未填寫相關信息、報java.lang.NullPointException、通過斷電調試發現用戶信息為空的數據項、在前端保存的時候必須填寫用戶完整相關信息或者數據庫設置字段可以為空都可以解決、 我學習程序設計的主要目的就是提高自己實際問題的程序解決方案的關鍵技能和技術。?
源碼獲取:?
大家點贊、收藏、關注、評論啦 、查看👇🏻👇🏻👇🏻微信公眾號獲取聯系方式👇🏻👇🏻👇🏻
打卡 文章 更新 191/ ?365天
?精彩專欄推薦訂閱:在下方專欄👇🏻👇🏻👇🏻👇🏻
Java項目精品實戰案例《100套》
web前端期末大作業網頁實戰《100套》
書籍介紹:免費送
隨著云計算、大數據、人工智能、虛擬現實等應用的興起,企業對于開發人員的算法要求也越來越高。本書全 面講解在 Java 編程中涉及的常用數據結構及算法,輔以大量的實戰案例,圖文并茂,讓讀者易于理解掌握。本書主要面向對 Java 數據結構及算法感興趣的學生、開發人員、架構師。主要介紹了介紹數據結構和算法的基本概念,并演示如何搭建開發環境、編寫測試用例。 介紹常見的數據結構,包括數組、鏈表、矩陣、棧、隊列、跳表、散列、樹、圖等。 介紹常用的算法,包括分而治之、動態規劃、貪心算法、回溯、遺傳算法、 螞蟻算法等。 以及商業實戰介紹漢諾塔游戲的實現等。
?
總結
以上是生活随笔為你收集整理的基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 写传奇游戏吗,文字版传奇游戏
- 下一篇: HTML+CSS+JS实现 ❤️响应式图