College graduation project management system based on javaspring MVC + mybatis (three books at the end of the paper)

Posted by Smeep on Tue, 08 Feb 2022 04:01:26 +0100

preface:

With the development of computer network technology in the information age, it has brought great convenience to people. The traditional graduation design process has brought inconvenience to students, teachers and managers to a great extent. For college students, the graduation thesis is a summary of their professional knowledge and skills learned in the school, and for college education, it is the last comprehensive assessment of graduate students. In the whole process of completing the graduation thesis, it needs the close cooperation of students, tutors and personnel. But in reality, the role in a certain link can not keep working for some reasons, which will lead to the stagnation of the completion of the graduation thesis. In order to avoid this situation, in order to facilitate teachers, students and managers to successfully complete the tasks of corresponding roles, colleges and universities need a professional management system for graduation thesis, which integrates all the operations of completing graduation thesis into one system. At the same time, the popularity of various information websites has brought good experience and efficient management to many enterprises or users. Aiming at the development of computer technology in modern colleges and universities, in order to deal with the problems of low efficiency, poor interactivity and heavy workload encountered by college graduates in the process of graduation project management in the past, this system adopts the design idea of software engineering to build a graduation project management system based on java Web suitable for colleges and universities. The system is based on Windows operating system as the service platform, the background database adopts MySQL database, and the server uses Tomcat container and Eclipse development tool to create java language to build service pages. Select functional modules such as graduation project management and performance management and their relationship. The purpose of this graduation project is to use modern network management technology to solve the problems existing in graduation project management, reduce the time for students to choose the topic of graduation project, strengthen the monitoring of graduation project process, and reduce the work intensity of teachers and managers. Using spring MVC framework improves the efficiency of system development, reduces the complexity of the system and makes database access more flexible. Through the test, the application of the system facilitates the communication between teachers and students, strengthens the process management, and facilitates the preservation and display of results.

Functional design:

 

1. User module management: user login, multi role login, user query and deletion. Users are divided into different permissions and can be flexibly controlled by roles.

2. Tutor management: the administrator can manage and add tutor information after logging in.

3. Student management: administrators and teachers can manage and add student information after logging in.

4. Announcement management: administrators and teachers can manage and add announcements after logging in, and students can view them.

5. Data analysis: after logging in, the administrator can view data analysis and score proportion.

6. Audit topic selection: the administrator can audit, agree or reject after logging in.

7. Thesis management: the administrator can view and download the thesis after logging in

8. Modify data: users can modify their own password.

9. Course management: the teacher uploads the selected courses and checks whether the changed courses pass the selected courses.

10. Release content: the teacher releases the assignment, opening report, demand analysis, database design, etc.

11. Review documents: teachers can review the assignment, opening report, demand analysis and database design.

12. Document management: teachers can view and upload students' thesis documents.

13. Question management: teachers can view and answer students' question information, and students can ask questions

14. Grade management: teachers can manage and view students' grade information.

15. Graduation project management: teachers can review students' papers and view the list of defense qualifications.

16. Progress management: students can check the progress and completion of each document, such as assignment, topic opening, etc.

Video presentation: java computer graduation project college graduation project thesis management system [source code + Thesis] practice_ Beep beep beep_ bilibili is a very good university graduation design management system! Suitable for graduation design and curriculum design [source code + Thesis] Three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company three company Three company, three company, three company, three company, three companyhttps://www.bilibili.com/video/BV1x5411f7G6?spm_id_from=333.999.0.0

Function screenshot:

System home page

Login by role, different roles and different permissions

Main function design of administrator

Data analysis:

Review topic:

Student management:

Add Tutor:

Main functions of student users:

Modify personal data:

View topics:

Document management: completion of each document, viewing subject materials and downloading, etc

Upload documents at each stage: and view the uploaded documents

Graduation design questions and viewing questions, teacher answers:

View announcement information, score information and your defense qualification

Main function design of teacher side:

Project management:

Student management:

Release content:

Review documents:

Document management:

Performance management:

Announcement management:

Thesis review and examination of defense qualification:

Main database design:

Table t_ Announcement (announcement form)

number

name

data type

length

Decimal places

Null value allowed

Primary key

explain

1

id

int

10

0

N

Y

Announcement form

2

context

varchar

300

0

Y

N

content

3

inputMan

varchar

20

0

Y

N

Publisher

4

lastModifyTime

datetime

19

0

Y

N

time

Table t_department

number

name

data type

length

Decimal places

Null value allowed

Primary key

explain

1

id

int

10

0

N

Y

Department table with id as primary key

2

departmentName

varchar

30

0

Y

N

name

Table t_doubt

number

name

data type

length

Decimal places

Null value allowed

Primary key

explain

1

id

int

10

0

N

Y

Id primary key

2

studentId

int

10

0

N

N

Student id

3

studentDoubt

varchar

255

0

Y

N

put questions to

4

answer

varchar

255

0

Y

N

answer

Table t_major

number

name

data type

length

Decimal places

Null value allowed

Primary key

explain

1

id

int

10

0

N

Y

Specialty table. id is the primary key

2

majorName

varchar

30

0

Y

N

name

3

departmentId

int

10

0

Y

N

Related departments

Table t_project_source

number

name

data type

length

Decimal places

Null value allowed

Primary key

explain

1

id

int

10

0

N

Y

Project source code table

2

studentId

int

10

0

N

N

Student id

3

projectScore

varchar

100

0

Y

N

fraction

4

description

varchar

300

0

Y

N

describe

Table t_student

number

name

data type

length

Decimal places

Null value allowed

Primary key

explain

1

id

int

10

0

N

Y

Id

2

studentNo

varchar

20

0

Y

N

Student number

3

studentName

varchar

20

0

Y

N

Student name

4

sex

varchar

4

0

Y

N

Gender

5

majorId

int

10

0

N

N

Professional id

6

grade

varchar

10

0

Y

N

class

7

inputMan

varchar

20

0

Y

N

Publisher

8

lastModifyTime

datetime

19

0

Y

N

time

9

phone

varchar

11

0

Y

N

cell-phone number

10

email

varchar

25

0

Y

N

mailbox

 

Part code:

@Controller
@RequestMapping(value="/teacher")
public class TeacherController {
	
	
	@Autowired
	private ITeacherService teacherService;
	
	@Autowired
	private IStudentService studentService;
	
	@Autowired
	private IDepartmentService departmentService;
	
	@Autowired
	private 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("Number of additions: "+ 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("Not uploaded");
					students.get(i).setOpenscore("Not uploaded");
				}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("unaudited");
//				}else if(completion==1) {
//					students.get(i).setCompletionName("failed");
//				}else {
//					students.get(i).setCompletionName("approved");;
//				}
			}
		}
		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("Not uploaded");
					students.get(i).setKexingscore("Not uploaded");
				}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("Not uploaded");
					students.get(i).setXuqiuscore("Not uploaded");
				}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", "Upload topic topic cannot be empty");
			return "teacher/main.jsp";
		}else if(thesisDesc == null || "".equals(thesisDesc)) {
			model.addAttribute("message", "Upload topic description cannot be empty");
			return "teacher/main.jsp";
		}else if(nandu == null || "".equals(nandu)) {
			model.addAttribute("message", "Upload topic difficulty cannot be empty");
			return "teacher/main.jsp";
		}else if(liang == null || "".equals(liang)) {
			model.addAttribute("message", "Upload project workload cannot be empty");
			return "teacher/main.jsp";
		}else if(from == null || "".equals(from)) {
			model.addAttribute("message", "Upload topic source cannot be empty");
			return "teacher/main.jsp";
		}else if(leixing == null || "".equals(leixing)) {
			model.addAttribute("message", "Upload topic type cannot be empty");
			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("Number of topics added:"+num);
			
			model.addAttribute("message", "Upload successful");
			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("upload topic id:"+topic4Teacher);
		
		Teacher currentTeacher = (Teacher)request.getSession().getAttribute("teacher");
		String teacherName = currentTeacher.getTeacherName();
		String studentId = String.valueOf(studentList);
		// System.out.println("current user:" + 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);
			
			// If filePath is empty, an exception will appear if the file path is empty
			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", "Upload student theory on success");
			
			return "teacher/main.jsp";
		}else {
			model.addAttribute("message", "Error uploading assignment");
			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", "Reply succeeded");
		}else {
			model.addAttribute("message", "Reply failed");
		}
		
		return "teacher/main.jsp";
	}
	
	

Paper report:

Summary:

After the recent mastery and study of java object-oriented programming, front-end knowledge and java framework, as well as the development of this graduation project management system during this period, I have better understood the importance of java learning. In developing which system this system is, I have completed a number of experiments and functional tests of the graduation project management platform. During the stage of system development and learning, I realized that I am familiar with java, and then I can independently use relevant technologies. I found that it does have many conveniences, such as java integrates abstraction and encapsulation, inheritance and polymorphism, The functions of code reuse and code expansion are realized, and the speed and efficiency of the overall software development are improved. For example, when the administrator adds a user, it reports java Lang.nullpointexception. Solution: check the console print information, find that relevant information is not filled in when adding, and report to java Lang.nullpointexception, the data item with empty user information found through power-off debugging, the user's complete relevant information must be filled in when saving at the front end, or the database setting field can be empty. The main purpose of learning program design is to improve the key skills and technologies of program solutions to my actual problems.  

Source code acquisition:

Everyone likes, collects, pays attention to, comments and views 👇🏻👇🏻👇🏻 WeChat official account for contact information 👇🏻👇🏻👇🏻

Punch in article update 191 / 365 days

Recommended subscription of wonderful column: in the column below 👇🏻👇🏻👇🏻👇🏻

Excellent practical case of Java project "100 sets"

Web front end final homework web page practice "100 sets"

Topics: Java Back-end