博主主页:猫头鹰源码
博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战
主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询
文末联系获取
该系统创作于2022年5月,包含详细数据库设计。基于springboot技术,数据层为MyBatis,mysql数据库,具有完整的业务逻辑,适合选题:智慧学习、在线学习、在线考试、学习系统、考试系统等。




后端:springBoot、mybatis
前端:bootstrap、js、css等,html页面
开发工具:idea
数据库:mysql 5.7
JDK版本:jdk1.8
下面是登录页面

登录可以选择角色,我们先看管理员的功能

管理员可以对学生进行管理

管理员也可以对教师进行管理

管理员查看视频资源

管理员对课程进行管理

教师对试题管理

教师对试卷进行管理

教师查看考试结果

学生可以进行考试

学生也可以查看学习视频

学生修改个人信息

拦截器配置
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- HttpSession session = request.getSession();
- if(session.getAttribute("ad") != null){
- return true;
- }
- // 不符合条件的给出提示信息,并转发到主页面
- request.setAttribute("msg", "您还没有登录,请先登录!");
- request.getRequestDispatcher("/gologin.jsp").forward(request, response);
- //返回true通过,返回false拦截
- return false;
- }
注册拦截器
- @Override
- public void addInterceptors(InterceptorRegistry registry)
- {
- //注册自己的拦截器并设置拦截的请求路径
- registry.addInterceptor(new AuthInterceptor()).addPathPatterns("/**")//拦截的访问路径,拦截所有
- .excludePathPatterns("/static/*","/**/**/*.css","/**/**/*.js","/**/**/**/*.css","/**/**/**/*.js","/**/**/**/*.jpg")
- .excludePathPatterns("/gologin","/login","/loginOut","/register","/registerSub","/upload/*");//排除的请求路径,排除静态资源路径
- super.addInterceptors(registry);
- }
上传文件地址映射
- @Value("${uploadDir}")
- private String uploadDir;
-
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/upload/**").addResourceLocations("file:" + uploadDir);
- super.addResourceHandlers(registry);
- }
文件上传
- /**
- * 文件上传
- */
- @RequestMapping(value = "/uploadFile")
- @ResponseBody
- public JSONObject uploadFile(HttpServletRequest request) throws IOException {
- JSONObject jsonObject = new JSONObject();
- try {
- MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
- //使用UUID给图片重命名,并去掉四个“-”
- // 获取上传的文件
- MultipartFile multiFile = multipartRequest.getFile("file");
- SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
- String name = sf.format(new Date());
- //获取文件的扩展名
- String ext = FilenameUtils.getExtension(multiFile.getOriginalFilename());
- //以绝对路径保存重名命后的图片
- multiFile.transferTo(new File(uploadDir+"/"+name + "." + ext));
- jsonObject.put("code",name + "." + ext);
- return jsonObject;
- } catch (Exception e) {
- e.printStackTrace();
- jsonObject.put("code", 0);
- return jsonObject;
- }
- }
课程对应操作
- /**
- * 分页查询
- * pageIndex 当前页码
- * pageSize 显示条数
- */
- @RequestMapping(value = "/findCourse")
- public String findCourse(Integer pageIndex, Integer pageSize,String cname, Model model,HttpServletRequest request) {
- HttpSession session = request.getSession();
- if(session.getAttribute("ad") == null){
- session.setAttribute("msg", "对不起,请登录!");
- return "login";
- }
- Map mp = new HashMap();
- mp.put("cname",cname);
- String type = (String)session.getAttribute("type");
- if(type.equals("02")){
- Teacher teacher = (Teacher)session.getAttribute("ad");
- mp.put("tid",teacher.getId());
- }
- PageInfo<Course> pageList = courseService.findPageInfo(pageIndex,pageSize,mp);
- model.addAttribute("pageList",pageList);
- if(type.equals("02")){
- Map mps = new HashMap();
- Teacher teacher = (Teacher)session.getAttribute("ad");
- mps.put("id",teacher.getId());
- List<Teacher> teacherList = teacherService.queryFilter(mps);
- model.addAttribute("teacherList",teacherList);
- }else{
- List<Teacher> teacherList = teacherService.getAll();
- model.addAttribute("teacherList",teacherList);
- }
- return "CourseList";
- }
-
-
- /**
- * 添加
- */
- @RequestMapping(value = "/addCourse" ,method = RequestMethod.POST)
- @ResponseBody
- public String addCourse( @RequestBody Course course) {
- try{
- SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- course.setCreateTime(sf.format(new Date()));
- courseService.addCourse(course);
- return "200";
- }catch (Exception e){
- e.printStackTrace();
- return "201";
- }
- }
-
-
- /**
- * 删除
- */
- @RequestMapping( "/deleteCourse")
- @ResponseBody
- public String deleteCourse(String id) {
- int d = courseService.deleteCourse(id);
- return "CourseList";
- }
-
-
- /**
- * 修改
- */
- @RequestMapping( "/updateCourse")
- @ResponseBody
- public String updateCourse(@RequestBody Course course) {
- try{
- courseService.updateCourse(course);
- return "200";
- }catch (Exception e){
- e.printStackTrace();
- return "201";
- }
- }
以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。
好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~