Java 實(shí)戰(zhàn)項(xiàng)目之教材管理系統(tǒng)的實(shí)現(xiàn)流程
一、項(xiàng)目簡(jiǎn)述
功能包括: 管理員可以增刪改查教材、教材商、入庫(kù)教材、用戶(用 戶包括學(xué)生和教師)可以對(duì)教材商、教材進(jìn)行。Excel的導(dǎo)入 導(dǎo)出操作。教師以領(lǐng)取入庫(kù)的教材,可以退還教材。學(xué)生只能在對(duì)應(yīng)的教師那里領(lǐng)取教材,并且可以退還教材、 查詢自己已經(jīng)領(lǐng)取的教材。并且對(duì)已領(lǐng)教材付款等等。
二、項(xiàng)目運(yùn)行
環(huán)境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
項(xiàng)目技術(shù): JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
查看班級(jí)選報(bào)信息:
@Service public class TopicsServiceImpl implements TopicsService { @Autowired private MyClassMapper classMapper; @Autowired private StudentMapper studentMapper; @Autowired private SubjectselectedMapper subjectselectedMapper; @Autowired private SubjectMapper subjectMapper; @Autowired private HttpServletRequest request; /** * 查看班級(jí)選報(bào)信息 */ @Override public List<classinfo> classinfo(Long id) { MyClass className = classMapper.selectById(id);//查到班級(jí)名字 List<Student> students = studentMapper.selectByListAll(id);//根據(jù)student表里班級(jí)id查到用戶所在班級(jí)的所有人 List<Subjectselected> projectselectedlist = new ArrayList<>(); List<Subject> projectlist = new ArrayList<>(); Subjectselected projectselected = null; Subject project = null; for (int i = 0; i < students.size(); i++) { List<Subjectselected> tprojectselecteds = subjectselectedMapper.selectBystudentid(students.get(i).getId()); if (tprojectselecteds != null && tprojectselecteds.size() > 0) projectselected = tprojectselecteds.get(0); if (projectselected != null) { projectselectedlist.add(projectselected); } else { projectselected = new Subjectselected(); projectselected.setId(0L); projectselected.setIdProject(0L); projectselected.setIdStudent(0L); projectselected.setStuselectFlag(0L); projectselectedlist.add(projectselected); } } for (int i = 0; i < projectselectedlist.size(); i++) { if (projectselectedlist.get(i).getId() != 0) { projectlist.add(subjectMapper.selectById(projectselectedlist.get(i).getIdProject())); } else { project = new Subject(); project.setProjectname("無"); project.setTeachernames("無"); projectlist.add(project); } } List<classinfo> infolist = new ArrayList<>(); classinfo info = null; for (int i = 0; i < projectlist.size(); i++) { info = new classinfo(); info.setId(students.get(i).getId()); info.setClassName(className.getClassName()); info.setName(students.get(i).getName()); info.setStuNum(students.get(i).getStunum()); info.setProjectName(projectlist.get(i).getProjectname()); info.setTeacherNames(projectlist.get(i).getTeachernames()); info.setStuSelectFlag(projectselectedlist.get(i).getStuselectFlag()); infolist.add(info); } return infolist; } /** * 查看課題信息 * 通過classid */ @Override public List<topicsinfo> topics(Long id) { String specialty = classMapper.selectByspecialty(id); List<Subject> projectlist = subjectMapper.selectByAll("%" + specialty + "%"); List<topicsinfo> topicsinfolist = new ArrayList<>(); topicsinfo info = null; for (int i = 0; i < projectlist.size(); i++) { info = new topicsinfo(); info.setProject_id(projectlist.get(i).getId()); info.setProjectType(subjectMapper.selectByprojectType(projectlist.get(i).getIdProjecttype().intValue())); info.setProjectSource(subjectMapper.selectByprojectSource(projectlist.get(i).getIdProjectsource().intValue())); info.setProjectName(projectlist.get(i).getProjectname()); info.setSelectFlag(projectlist.get(i).getSelectFlag()); info.setMarchSpecialty(projectlist.get(i).getMarchspecialty()); info.setTeacherNames(projectlist.get(i).getTeachernames()); topicsinfolist.add(info); } return topicsinfolist; } /** * 課題具體信息 */ @Override public List<topicsto> topicsinfo(Long project_id) { List<Subjectselected> listed = subjectselectedMapper.selectByprojectid(project_id);//中間表 request.getSession().setAttribute("listsize",listed.size()); List<topicsto> tolist = new ArrayList<>(); topicsto to = null; Student student = null; for (int i = 0; i < listed.size(); i++) { to = new topicsto(); student = studentMapper.selectByid(listed.get(i).getIdStudent()); if(student == null) continue; to.setStuNum(student.getStunum()); to.setName(student.getName()); to.setStuSelectFlag(listed.get(i).getStuselectFlag()); to.setClassName(classMapper.selectById(student.getIdClass()).getClassName()); tolist.add(to); } return tolist; } /** * 獲取該用戶是否選報(bào)了課題 */ public Long state(Student student) { Subjectselected project = null; List<Subjectselected> tprojectselecteds = subjectselectedMapper.selectBystudentid(student.getId()); if (tprojectselecteds != null && tprojectselecteds.size() > 0) project = tprojectselecteds.get(0); if (project == null) { return 0L; } else return project.getStuselectFlag(); } /** * 添加選題 */ @Override public void insertproject(String project, Long studentid) { Long projectid = subjectMapper.selectByprojectid(project); int flagid = subjectselectedMapper.insertenroll(projectid, studentid); } /** * 刪除選題 */ @Override public int deleteprojectselectedid(Long id) { int flag = subjectselectedMapper.deleteBystudentId(id); return flag; } /** * 查詢課題名 * */ public String selectprojectname(Long id){ String project_Name = subjectMapper.selectById(id).getProjectname(); return project_Name; } /** * 獲取該題是否可選 */ @Override public Long flag(Long project_id) { return subjectMapper.selectByselectFlag(project_id); } }
班級(jí)信息查詢業(yè)務(wù):
@Service public class ClassServiceImpl implements ClassService { @Autowired MyClassMapper myClassMapper; @Autowired SpecialtyService specialtyService; @Autowired StudentService studentService; @Override public List getClasses(Integer offset, String getName, Long specialtyid, Long id_institute) { // 設(shè)置分頁(yè)查詢條件 MyClassExample myClassExample = new MyClassExample(); // 添加查詢條件 myClassExample = addCondition(myClassExample,offset,id_institute,getName,specialtyid); if(myClassExample==null) return null; //如果 offset 為 -1 則只查詢 id 和 name 列 if(offset==-1) { return myClassMapper.selectByExampleSelective(myClassExample, MyClass.Column.id, MyClass.Column.className); }else{ return myClassMapper.selectByExampleSelective(myClassExample); } } @Override public long getClassesCount(Integer offset, String getName, Long specialtyid, Long id_institute) { // 設(shè)置分頁(yè)查詢條件 MyClassExample myClassExample = new MyClassExample(); // 添加查詢條件 myClassExample = addCondition(myClassExample,offset,id_institute,getName,specialtyid); if(myClassExample==null) return 0; return myClassMapper.countByExample(myClassExample); } @Override public long delClass(MyClass myClass, Long id_institute) throws MyException { checkSpecialtyId(myClass,id_institute); return myClassMapper.deleteByPrimaryKey(myClass.getId()); } @Override public long putClass(MyClass myClass, Long id_institute) throws MyException { checkSpecialtyId(myClass,id_institute); return myClassMapper.updateByPrimaryKey(myClass); } @Override public long postClass(MyClass myClass, Long id_institute) throws MyException { checkSpecialtyId(myClass,id_institute); long count = getClassesCount(1,myClass.getClassName(),null, id_institute); if(count!=0) throw new MyException("該班級(jí)已存在"); return myClassMapper.insert(myClass); } @Override public long delClassBySpecialty(Long specialtyid) { return myClassMapper.deleteByExample(new MyClassExample().createCriteria().andIdSpecialtyEqualTo(specialtyid).example()); } public MyClassExample addCondition(MyClassExample myClassExample,Integer offset , Long id_institute , String keyWord , Long id_specialty){ //代表為超管,則可以查詢所有; if(id_institute==-1) { return myClassExample.newAndCreateCriteria() .when(StringUtil.stringIsNotNull(keyWord), criteria -> criteria.andClassNameEqualTo(keyWord)) //根據(jù)關(guān)鍵字查詢 .when(id_specialty!=null,criteria -> criteria.andIdSpecialtyEqualTo(id_specialty)) //根據(jù)指定教研室查詢 .example() .when(offset!=-1 && offset != 0,criteria -> criteria.page(offset-1, 10)); } //查詢出來當(dāng)前學(xué)院的所有專業(yè) List<Specialty> specialties = specialtyService.getSpecialtys(-1,null,null,id_institute); //提取 id列 列表 List<Long> specialtiesIDs = specialties.stream().map(Specialty::getId).collect(Collectors.toList()); if(specialtiesIDs.size()==0||specialtiesIDs==null) return null; return myClassExample.newAndCreateCriteria() .when(StringUtil.stringIsNotNull(keyWord),criteria -> criteria.andClassNameEqualTo(keyWord)) //根據(jù)關(guān)鍵字查詢 .when(id_specialty!=null,criteria -> criteria.andIdSpecialtyEqualTo(id_specialty)) //根據(jù)指定教研室查詢 // 查詢的專業(yè)只能在當(dāng)前的學(xué)院的教研室下 .andIdSpecialtyIn(specialtiesIDs) .example() .when(offset!=-1 && offset != 0,criteria -> criteria.page(offset-1, 10));// 查詢第offest-1頁(yè)數(shù)據(jù)(每頁(yè)10條) } public void checkSpecialtyId(MyClass myClass ,Long id_institute) throws MyException { //如果為超管則不需要檢查有沒有權(quán)力 if(id_institute==-1) { return ; } long id_specialty = myClass.getIdSpecialty(); List<Specialty> specialtyes = specialtyService.getSpecialtys(1,null,null,id_institute); //如果被刪除的專業(yè)是不屬于本系教研室則提示沒有權(quán)限 for(Specialty specialty :specialtyes) { if(specialty.getId()==id_specialty) return; } throw new MyException("沒有權(quán)限操作"); } }
管理員業(yè)務(wù)操作:
@Service public class AdminServiceImpl implements AdminService { @Autowired AdminMapper adminMapper; @Autowired SadminMapper sadminMapper; @Autowired GeneralPurposeMapper mapper; @Autowired PublicService publicService; //Session 保存時(shí)間(秒) private final Integer SAVE_TIME = 60*60*24; //超管 和 子管用一個(gè)登錄 @Autowired StudentMapper studentMapper; @Autowired SubjectselectedMapper subjectselectedMapper; @Autowired SubjectMapper subjectMapper; @Autowired ProjectMapper projectMapper; @Autowired ClassMapper classMapper; @Autowired SpecialtyMapper specialtyMapper; @Autowired InstituteMapper instituteMapper; @Autowired HttpServletRequest request; @Autowired HttpServletResponse response; @Override public Msg login(String name, String pwd , HttpSession httpSession) { Sadmin sadmin = selectSadminByName(name); if(sadmin!=null){ //驗(yàn)證密碼是否與數(shù)據(jù)庫(kù)中的相同 if(sadmin.getPwd().equals(pwd)){ User user = new User(); //-1表示為超管 user.setId(-1L); user.setRole("sadmin"); user.setUserName(sadmin.getName()); //生成Token 存到 Cookie Cookie cookie = new Cookie("token",TokenUtil.createToken( user )); //該Cookie無法被js讀取 cookie.setHttpOnly(true); cookie.setPath("/"); response.addCookie(cookie); return Msg.success(); } return Msg.error("密碼錯(cuò)誤"); }else { Admin admin = selectByName(name); if(admin == null){ return Msg.error("賬號(hào)不存在"); }else { if(admin != null && admin.getPwd().equals(pwd)){ User user = new User(); user.setId(admin.getId()); user.setRole("admin"); user.setUserName(admin.getName()); Cookie cookie = new Cookie("token",TokenUtil.createToken( user )); cookie.setPath("/"); cookie.setHttpOnly(true); response.addCookie(cookie); return Msg.success();//賬號(hào)密碼正確 } return Msg.error("密碼錯(cuò)誤"); } } } @Override public Admin selectByName(String name) { //創(chuàng)建一個(gè) Admin 實(shí)例 ,添加條件 為 Name == name AdminExample adminExample = new AdminExample(); adminExample.createCriteria().andNameEqualTo(name); //根據(jù)實(shí)例 來查詢 List<Admin> admin = adminMapper.selectByExample(adminExample); if( admin==null || admin.size()==0 ) { return null; } return admin.get(0); } @Override public Sadmin selectSadminByName(String name) { SadminExample sadminExample = new SadminExample(); sadminExample.createCriteria().andNameEqualTo(name); List<Sadmin> sadmin = sadminMapper.selectByExample(sadminExample); if( sadmin==null|| sadmin.size()==0 ) return null; return sadmin.get(0); } @Override public int updatePwdByUserName(String name, String pwd) { AdminExample adminExample = new AdminExample(); adminExample.createCriteria().andNameEqualTo(name); Admin admin = new Admin(); admin.setPwd(pwd); adminMapper.updateByExampleSelective(admin,adminExample); return 0; } @Override public int updateSadminPwdByUserName(String name, String pwd) { SadminExample sadminExample = new SadminExample(); sadminExample.createCriteria().andNameEqualTo(name); Sadmin sadmin = new Sadmin(); sadmin.setPwd(pwd); return sadminMapper.updateByExampleSelective(sadmin, sadminExample); } // 班級(jí)的增加 @Override public int add_class(Long specialty_id, String class_name) { List<Class> classes = select_class(null, null, null, null, class_name); if (classes == null || classes.size() == 0) { Class class1 = new Class(); class1.setClassName(class_name); class1.setIdSpecialty(specialty_id); return classMapper.insert(class1); } return 0; } @Override public int addAdmin(Admin admin) { //添加的時(shí)候檢測(cè)又沒用戶名重復(fù)的 publicService.CheckIfTheUsernameIsDuplicated(admin.getName()); return adminMapper.insert(admin); } @Override public int delAdmin(Admin admin) { return adminMapper.deleteByPrimaryKey(admin.getId()); } @Override public int updateAdmin(Admin admin) { //不更新username admin.setName(null); return adminMapper.updateByPrimaryKeySelective(admin); } @Override public List selectAdmins(Long offset) { if(offset!=null && offset==-1){ return adminMapper.selectByExampleSelective( new AdminExample(), Admin.Column.id ); } return adminMapper.selectByExample( new AdminExample() ); } // 學(xué)生的增刪改查 @Override public int add_student(String userName, String stuNum, Long id_class, String name, String gender, String pwd){ Student ss = studentMapper.select_studentbyName(userName, stuNum); if (ss == null) { StudentWithBLOBs student = new StudentWithBLOBs(); student.setUsername(userName); student.setStunum(stuNum); student.setIdClass(id_class); student.setName(name); student.setGender(gender); student.setPwd(pwd); return studentMapper.insert(student); } return 0; } public int delete_class(Long class_id) { return classMapper.deleteByPrimaryKey(class_id); } @Override public int update_class(Long class_id, Long specialty_id, String class_name) { Class class1 = new Class(); class1.setId(class_id); class1.setIdSpecialty(specialty_id); class1.setClassName(class_name); return classMapper.updateByPrimaryKeySelective(class1); } @Override public List<Project> select_project(Long institute_id, Long section_id, String section_name) { return projectMapper.select_project(institute_id, null, null); } @Override public List<Static_student> select_studentXT_all(Long section_id, String section_name, Long specialty_id, String specialty_name, Long class_id, String class_name) { List<Static_student> static_students = studentMapper.select_studentXT_all(section_id, section_name, specialty_id, specialty_name, class_id, class_name); if (static_students != null && static_students.size() > 0) { for (int i = 0; i < static_students.size(); i++) { List<Subjectselected> projectselecteds = select_Projectselected(static_students.get(i).getId(), null); if (projectselecteds != null && projectselecteds.size() > 0) { static_students.get(i).setStuselectFlag("" + projectselecteds.get(0).getStuselectFlag()); static_students.get(i).setProjectname(projectselecteds.get(0).getProject_name()); static_students.get(i).setTeachernames(projectselecteds.get(0).getProject_teachers()); } else { static_students.get(i).setProjectname("未選題"); static_students.get(i).setTeachernames(""); } } } return static_students; } @Override public List<Class> select_class(Long institute_id, Long section_id, Long specialty_id, Long class_id, String class_name) { return classMapper.select_class(institute_id, section_id, specialty_id, class_id, class_name); } // 專業(yè)方向的增刪改查 @Override public int add_specialty(Long section_id, String specialty_name) { List<Specialty> specialties = select_specialty(null, null, null, specialty_name); if (specialties == null || specialties.size() == 0) { Specialty specialty = new Specialty(); specialty.setIdSection(section_id); specialty.setSpecialtyName(specialty_name); return specialtyMapper.insert(specialty); } return 0; } @Override public int delete_student(Long student_id) { return studentMapper.deleteByPrimaryKey(student_id); } @Override public int update_student(Long student_id, String userName, String stuNum, Long id_class, String name, String gender, String pwd) { Student student = new Student(); student.setId(student_id); student.setUsername(userName); student.setStunum(stuNum); student.setIdClass(id_class); student.setName(name); student.setGender(gender); student.setPwd(pwd); return studentMapper.updateByPrimaryKeySelective((StudentWithBLOBs) student); } @Override public List<Static_student> select_student(Long institute_id, Long specialty_id, Long class_id, Long student_id, String name) { List<Static_student> static_students = studentMapper.select_Student(institute_id, specialty_id, class_id, student_id, name); if (static_students != null) { for (int i = 0; i < static_students.size(); i++) { Static_student static_student = static_students.get(i); List<Subjectselected> projectselected = select_Projectselected(static_student.getId(), null); if (projectselected != null && projectselected.size() != 0) { String s = ""; if (projectselected.get(0).getStuselectFlag() == 1) s = "選題待審核"; else if (projectselected.get(0).getStuselectFlag() == 2) s = "選題未通過"; else s = "選題通過"; static_student.setStuselectFlag(s); static_student.setProjectname(projectselected.get(0).getProject_name()); static_student.setTeachernames(projectselected.get(0).getProject_teachers()); } } return static_students; } return null; } // 通過學(xué)生id 或者 課題id 查 課題的選擇 情況 public List<Subjectselected> select_Projectselected(Long student_id, Long project_id) { return subjectselectedMapper.select_Projectselected(student_id, project_id); } public List<Subject> select_ProjectXQ(Long institute_id, Long section_id, String name) { List<Subject> projects = subjectMapper.select_ProjectXQ(institute_id, section_id, name); if (projects != null) { for (int i = 0; i < projects.size(); i++) { if (projects.get(i).getSelectFlag() == 0) projects.get(i).setProjectGB("可選"); else if (projects.get(i).getSelectFlag() == 1) projects.get(i).setProjectGB("不可選"); } } return projects; } public int delete_specialty(Long specialty_id) { return specialtyMapper.deleteByPrimaryKey(specialty_id); } @Override public int update_specialty(Long specialty_id, Long section_id, String specialty_name) { Specialty specialty = new Specialty(); specialty.setId(specialty_id); specialty.setIdSection(section_id); specialty.setSpecialtyName(specialty_name); return specialtyMapper.updateByPrimaryKeySelective(specialty); } @Override public List<Specialty> select_specialty(Long institute_id, Long section_id, Long specialty_id, String specialty_name) { return specialtyMapper.select_specialty(institute_id, section_id, specialty_id, specialty_name); // 根據(jù)學(xué)院id 或者 教研室id 查所有專業(yè)方向 } @Override public List<Institute> select_institute(Long institute_id, String institute_name) { InstituteExample instituteExample = new InstituteExample(); InstituteExample.Criteria criteria = instituteExample.createCriteria(); if (institute_id != null && institute_id != 0) criteria.andIdEqualTo(institute_id); if (institute_name != null && institute_name.length() > 0) criteria.andInstituteNameEqualTo(institute_name); return instituteMapper.selectByExample(instituteExample); } }
到此這篇關(guān)于Java 實(shí)戰(zhàn)項(xiàng)目之教材管理系統(tǒng)的實(shí)現(xiàn)流程的文章就介紹到這了,更多相關(guān)Java 教材管理系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實(shí)戰(zhàn)員工績(jī)效管理系統(tǒng)的實(shí)現(xiàn)流程
- Java實(shí)戰(zhàn)權(quán)限管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)圖書管理系統(tǒng)的實(shí)現(xiàn)流程
- Java?實(shí)戰(zhàn)項(xiàng)目之學(xué)生信息管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目之畢業(yè)設(shè)計(jì)管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目之精品養(yǎng)老院管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目之精美物流管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)練手項(xiàng)目之校園超市管理系統(tǒng)的實(shí)現(xiàn)流程
- Java實(shí)戰(zhàn)項(xiàng)目之校園跑腿管理系統(tǒng)的實(shí)現(xiàn)
相關(guān)文章
Java構(gòu)建樹形菜單的實(shí)例代碼(支持多級(jí)菜單)
這篇文章主要介紹了Java構(gòu)建樹形菜單的實(shí)例代碼(支持多級(jí)菜單),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-09-09springboot如何初始化執(zhí)行sql語(yǔ)句
這篇文章主要介紹了springboot初始化執(zhí)行sql語(yǔ)句的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Mybatis工具類JdbcTypeInterceptor運(yùn)行時(shí)自動(dòng)添加jdbcType屬性
今天小編就為大家分享一篇關(guān)于Mybatis工具類JdbcTypeInterceptor運(yùn)行時(shí)自動(dòng)添加jdbcType屬性,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12Java基于二叉查找樹實(shí)現(xiàn)排序功能示例
這篇文章主要介紹了Java基于二叉查找樹實(shí)現(xiàn)排序功能,結(jié)合實(shí)例形式分析了Java二叉查找樹的定義、遍歷及排序等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08JAVA多線程實(shí)現(xiàn)生產(chǎn)者消費(fèi)者的實(shí)例詳解
這篇文章主要介紹了JAVA多線程實(shí)現(xiàn)生產(chǎn)者消費(fèi)者的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06JAVA實(shí)現(xiàn)FTP斷點(diǎn)上傳的方法
這篇文章主要介紹了JAVA實(shí)現(xiàn)FTP斷點(diǎn)上傳的方法,涉及java使用FTP實(shí)現(xiàn)文件傳輸?shù)南嚓P(guān)技巧,需要的朋友可以參考下2015-06-06基于Zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能
無論是采用SOA還是微服務(wù)架構(gòu),都需要使用服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)組件,本文將基于 Zookeeper 實(shí)現(xiàn)服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能,如果跟我一樣有同樣的困惑,希望可以通過本文了解其他組件如何使用 Zookeeper 作為注冊(cè)中心的工作原理2023-09-09