Java项目:课程资源管理+在线考试平台(java+SSH+mysql+maven+tomcat)

一、项目简述

功能包括: 管理员可以增删改查教材、教材商、入库教材、用户(用 户包括学生和教师)可以对教材商、教材进行。xcel的导入 导出操作。教师可以领取入库的教材,可以退还教材。学 生只能在对应的教师那里领取教材,并且可以退还教材、 查询自己已经领取的教材。并且对已领教材付款等等。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP +Struts+Spring+Hibernate + html+ css + JavaScript + JQuery + Ajax等等。

 

 

班级控制层:

@Controller
@RequestMapping("classes")
public class ClassesController {
	
	@Autowired
	private ClassesService classesService;
	
	@Autowired
	private InstituteService instituteService;
	
	@PostMapping("list")
	@ResponseBody
	public PageResultVo loadClasses(ClassesConditionVo classesConditionVo, Integer limit, Integer offset) {
		PageHelper.startPage(PageUtil.getPageNo(limit, offset),limit);
		List<Classes> classesList = classesService.findByCondition(classesConditionVo);
		PageInfo<Classes> pages = new PageInfo<>(classesList);
		return ResultUtil.table(classesList, pages.getTotal(), pages);
	}
	
	/**
	 * 新增班级
	 * @param classes
	 * @return
	 */
	@PostMapping("/add")
	@ResponseBody
	public ResponseVo add(Classes classes) {
		User user = (User)SecurityUtils.getSubject().getPrincipal();
		classes.setAuthor(user.getNickname());
		Date date = new Date();
		classes.setCreateTime(date);
		classes.setUpdateTime(date);
		classes.setStatus(CoreConst.STATUS_INVALID);
		
		int i = classesService.insert(classes);
		if(i > 0) {
			return ResultUtil.success("新增班级信息成功");
		}else {
			return ResultUtil.error("新增班级信息失败");
		}
	}

	/**
	 * 更新班级信息
	 * @param model
	 * @param id
	 * @return
	 */
	@GetMapping("/edit")
	public String edit(Model model,Integer id) {
		Classes classes = classesService.selectById(id);
		List<Institute> institutes = instituteService.selectAll();
    	model.addAttribute("institutes",institutes);
		model.addAttribute("classes", classes);
		return "classes/detail";
	}
	
	@PostMapping("/edit")
	@ResponseBody
	public ResponseVo edit(Classes classes) {
		int i = classesService.updateNotNull(classes);
		if(i > 0) {
			return ResultUtil.success("更新班级信息成功");
		}else {
			return ResultUtil.error("更新班级信息失败");
		}
	}
	
	/**
	 * 删除班级信息
	 * @param id
	 * @return
	 */
	@PostMapping("/delete")
	@ResponseBody
	public ResponseVo delete(Integer id) {
		//验证班级下是否有学生
		int i = classesService.validateByClassIds(new Integer[] {id});
		if(i > 0) {
			return ResultUtil.error("无法删除,该班级中还有学生");
		}else {
			int j = classesService.deleteBatch(new Integer[] {id});
			if(j > 0) {
				return ResultUtil.success("删除班级信息成功");
			}else {
				return ResultUtil.error("删除班级信息 失败");
			}
		}
	}
	
	/**
	 * 批量删除
	 * @param ids
	 * @return
	 */
	@PostMapping("/batch/delete")
	@ResponseBody
	public ResponseVo deleteBatch(@RequestParam("ids[]") Integer[]ids) {
		//验证该班级中是否有学生
		int i = classesService.validateByClassIds(ids);
		if(i > 0) {
			return ResultUtil.error("无法批量删除,该班级中还有学生");
		}else {
			int j = classesService.deleteBatch(ids);
			if(j > 0) {
				return ResultUtil.success("批量删除班级信息成功");
			}else {
				return ResultUtil.error("批量删除班级信息失败");
			}
		}
	}
	
	
}

系统控制层:

@Controller
public class SystemController{
    @Autowired
    private UserService userService;
    @Autowired
    private PermissionService permissionService;
    @Autowired
    private RedisCacheManager redisCacheManager;

    /*登陆*/
    @GetMapping("/login")
    public String login(Model model){
        if(SecurityUtils.getSubject().isAuthenticated()){
            return "redirect:/";
        }
        return "system/login";
    }

    /*提交登录*/
    @PostMapping("/login")
    @ResponseBody
    public ResponseVo login(HttpServletRequest request, String username, String password, String verification,
                            @RequestParam(value = "rememberMe", defaultValue = "0") Integer rememberMe){
        //判断验证码
        String rightCode = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
        if (StringUtils.isNotBlank(verification) && StringUtils.isNotBlank(rightCode) && verification.equals(rightCode)) {
        //验证码通过
        } else {
            return ResultUtil.error("验证码错误!");
        }
        UsernamePasswordToken token = new UsernamePasswordToken(username, password);
        try{
            token.setRememberMe(1 == rememberMe);
            Subject subject = SecurityUtils.getSubject();
            subject.login(token);
        } catch (LockedAccountException e) {
            token.clear();
            return ResultUtil.error("用户已经被锁定不能登录,请联系管理员!");
        } catch (AuthenticationException e) {
            token.clear();
            return ResultUtil.error("用户名或者密码错误!");
        }
        //更新最后登录时间
        userService.updateLastLoginTime((User) SecurityUtils.getSubject().getPrincipal());
        return ResultUtil.success("登录成功!");
    }

    /*登出*/
    @RequestMapping(value = "/logout")
    @ResponseBody
    public ResponseVo logout() {
        Subject subject = SecurityUtils.getSubject();
        if(null!=subject){
            String username = ((User) SecurityUtils.getSubject().getPrincipal()).getUsername();
            Serializable sessionId = SecurityUtils.getSubject().getSession().getId();
            Cache<String, Deque<Serializable>> cache = redisCacheManager.getCache(redisCacheManager.getKeyPrefix()+username);
            Deque<Serializable> deques = cache.get(username);
            for(Serializable deque : deques){
                if(sessionId.equals(deque)){
                    deques.remove(deque);
                    break;
                }
            }
            cache.put(username,deques);
        }
        subject.logout();
        return ResultUtil.success("退出成功");
    }

    /*获取当前登录用户的菜单*/
    @PostMapping("/menu")
    @ResponseBody
    public List<Permission> getMenus(){
        List<Permission> permissionListList = permissionService.selectMenuByUserId(((User) SecurityUtils.getSubject().getPrincipal()).getUserId());
        return permissionListList;
    }

}

转发跳转控制层:

@Controller
public class RenderController {
	
	@Autowired
	private QuestionService questionService;
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private SubjectService subjectService;
	
	@Autowired
	private InstituteService instituteService;
	
	@Autowired
	private CommentService commentService;
	
	@Autowired
	private ClassesService classesService;
	
	@Autowired
	private ExaminationService examService;
	

    /*工作台*/
    @GetMapping("/workdest")
    public String workdest(Model model){
    	examService.updateExamToStart();
		examService.updateExamToEnd();
    	int questionNums = questionService.totalNum();
    	int userNums = userService.userNums();
    	int subjectNums = subjectService.totalNum();
    	int commentNums = commentService.totalNum(CoreConst.STATUS_INVALID);
    	model.addAttribute("questionNums", questionNums);
    	model.addAttribute("userNums", userNums);
    	model.addAttribute("subjectNums", subjectNums);
    	model.addAttribute("commentNums", commentNums);
        return "manager/workdest";
    }

    /**用户列表入口*/
    @GetMapping("/users")
    public String userList(Model model){
    	List<Institute> institutes = instituteService.selectAll();
    	List<Classes> classes = classesService.selectAll();
    	List<String> grades = userService.selectGradeList();
    	model.addAttribute("institutes",institutes);
    	model.addAttribute("classes", classes);
    	model.addAttribute("grades", grades);
        return "user/list";
    }

    /*角色列表入口*/
    @GetMapping("/roles")
    public String roleList() {
        return "role/list";
    }
    
    /*学院管理入口*/
    @GetMapping("/institutes")
    public String instituteList() {
    	return "institute/list";
    }
    
    /*班级管理入口*/
    @GetMapping("/classes")
    public String classesList(Model model) {
    	List<Institute> institutes = instituteService.selectAll();
    	model.addAttribute("institutes",institutes);
    	return "classes/list";
    }

    /*权限列表入口*/
    @GetMapping("/permissions")
    public String permissionList(){
        return "permission/list";
    }

    /*在线用户入口*/
    @GetMapping("/online/users")
    public String onlineUsers(){
    	return "onlineUsers/list";
    }
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>