基于Springboot和Redis实现的在线选课系统

基于Springboot和Redis实现的在线选课系统 1,项目简介 1,1 介绍 毕业设计真的就是demo吗?作为工作前的最后一个校园项目,毕业设计应当尽可能的贴近企业实战

本文包含相关资料包-----> 点击直达获取<-------

基于Springboot和Redis实现的在线选课系统

1.项目简介

1.1 介绍

毕业设计真的就是demo吗?作为工作前的最后一个校园项目,毕业设计应当尽可能的贴近企业实战,业务不必很复杂,但要做到麻雀虽小五脏俱全。本期学长跟大家一起分享如何开发一个在线选课系统,需求也比较简单。系统初始化后会默认创建一个admin管理员账号,以及三个初始化角色:

  • 管理员角色 :拥有所有菜单和所有按钮的权限拥有账号查询、课程模块增删改查、选课记录查询、院系查询、专业查询的权限

  • 学生角色 :拥有课程查询、报名、退课、院系查询、专业查询的权限

超管会默认创建好所有老账号,以及创建好所有的院系和专业(为什么不提供注册功能?主要是管理后台往往需要权限分配,你注册了账号你还是得找超管分配权限的,所以注册意义不大),当报名开启后,学生可以进行课程报名,在课程报名截止前,学生可以退课并重新选课。

1.2 技术栈

  • 前端 :使用semanticUI渲染及Ajax动态填写

  • 后端 :采用基于springboot,涉及的技术栈有mybatis,spring,springMVC,spring security,log4j,swaggerUI,redis等

1.3 应用分层

上面的分层架构摘自阿里巴巴java开发手册,我对此做了一些调整,实际分层结构如下:

2.数据库设计

2.1 表结构

管理员表

学院表

选课表

学生用户表

用户—课程表

2.2 E-R图

3.项目实现

3.1 接口设计

整个项目接口采用的目前互联网比较流行的restful风格设计,每个接口、每个参数都有详细的文档说明。因为企业中开发必然是团队协作,必然前后端分离的开发模式,你得先把接口定义出来,然后前端可以和后端同步开发。还有一种就是对外提供接口,比如你们隔壁团队也想调用你这个服务的接口,但是你两排期是同一周,这时候你得先把接口定义出来给人家,然后大家同步开发,开发完了之后再进行联调。

swagger接口文档 ![image-20210820142046656]

3.2 Redis序列化

java @Configuration @EnableCaching//开启注解 public class RedisConfig{ @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); template.setKeySerializer(jackson2JsonRedisSerializer); template.setValueSerializer(jackson2JsonRedisSerializer); template.setHashKeySerializer(jackson2JsonRedisSerializer); template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; } @Bean public RedisTemplate<String,SelectableCourse> redisCourseTemplate(RedisConnectionFactory factory){ RedisTemplate<String,SelectableCourse>template=new RedisTemplate<>(); //关联 template.setConnectionFactory(factory); //设置key的序列化器 template.setKeySerializer(new StringRedisSerializer()); //设置value的序列化器 template.setValueSerializer(new Jackson2JsonRedisSerializer<>(SelectableCourse.class)); return template; }

redis缓存操作

java public class RedisOperator{ @Resource private RedisTemplate<String ,SelectableCourse> template; /**course**/ public void setCourses(SelectableCourse course){ //将course对象保存在缓存中 template.opsForSet().add("course", course); } public SelectableCourse getCourses(){ return template.opsForValue().get("course"); } //更新缓存 public void updateCourse(Integer key, SelectableCourse course){ template.delete("course"+key); template.opsForValue().set("course"+key,course); } public Boolean infoisexist(Integer key){ if(template.hasKey("course"+key)){ return true; } return false; } //获取缓存集合。 public Set<SelectableCourse> getList(){ return template.opsForSet().members("course"); } /** * 移除key */ public void removeKey() { template.delete("course"); }

3.3 主要功能实现

java //用户登录 public User login(String username){ return adminDAO.login(username); } //导出学生选课信息 public void excelOut(HttpServletResponse response) throws IOException{ int count = 0; //表头数据 String[] header = {"学生id" , "姓名" , "学号" , "专业" }; //学生数据 List<User> users = userDAO.selectAll(); //已被选择的课程数据 List<SelectableCourse> courses = selectableCourseDAO.selectedCourses(); //学生的选课数据. List<UserCourse> userCourses = userCourseDAO.selectAll(); //声明一个工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); //生成一个表格,设置表格名称为"学生表" HSSFSheet sheet = workbook.createSheet("学生选课表"); //设置表格列宽度为10个字节 sheet.setDefaultColumnWidth(10); for(SelectableCourse cours : courses){ //创建第一行表头 HSSFRow headrow = sheet.createRow(count); //创建一个单元格 HSSFCell cell = headrow.createCell(0); //创建一个内容对象 (课程名称) HSSFRichTextString text = new HSSFRichTextString("课程名称:"+cours.getCourseName()+" 任课老师:"+cours.getTeacher()+" 上课时间:"+cours.getAddress()); //将内容对象的文字内容写入到单元格中 cell.setCellValue(text); count++; //遍历添加表头(下面模拟遍历学生,也是同样的操作过程) //创建第2行表头 HSSFRow row = sheet.createRow(count); for(int i = 0 ; i < header.length ; i++){ //创建一个单元格 HSSFCell cellRow = row.createCell(i); //创建一个内容对象 HSSFRichTextString head2 = new HSSFRichTextString(header[i]); //将内容对象的文字内容写入到单元格中 cellRow.setCellValue(head2); } count++; //遍历学生数据 for(UserCourse uc : userCourses){ for(User user : users){ if(uc.getCourseId().equals(cours.getCourseId())){ if(uc.getUsername().equals(user.getUsername())){ HSSFRow stuRow = sheet.createRow(count); HSSFCell stuCell = stuRow.createCell(0); HSSFRichTextString stuText = new HSSFRichTextString(user.getUserId().toString()); stuCell.setCellValue(stuText); HSSFCell stuCell2 = stuRow.createCell(1); HSSFRichTextString stuText2 = new HSSFRichTextString(user.getStudentName()); stuCell2.setCellValue(stuText2); HSSFCell stuCell3 = stuRow.createCell(2); HSSFRichTextString stuText3 = new HSSFRichTextString(user.getUsername()); stuCell3.setCellValue(stuText3); HSSFCell stuCell4 = stuRow.createCell(3); HSSFRichTextString stuText4 = new HSSFRichTextString(user.getObject()); stuCell4.setCellValue(stuText4); count++; break; } } } } HSSFRow newRow = sheet.createRow(count); count++; HSSFRow newRow2 = sheet.createRow(count); count++; } //准备将Excel的输出流通过response输出到页面下载 //八进制输出流 response.setContentType("application/octet-stream"); //这后面可以设置导出Excel的名称,此例中名为student.xls response.setHeader("Content-disposition" , "attachment;filename=student.xls"); //刷新缓冲 response.flushBuffer(); //workbook将Excel写入到response的输出流中,供页面下载 workbook.write(response.getOutputStream()); }

4.项目展示

4.1 普通用户

主页

选课或退课操作

个人选课信息

4.2 管理员

主页

学生管理

修改学生信息

导出信息

参考文献

  • 基于SpringCloud的在线教育平台的设计与实现(华中科技大学·李嘉蕊)
  • 琼州学院网上选课系统的设计与实现(大连海事大学·李金霞)
  • 基于微服务的在线教育系统的设计与实现(华中科技大学·毛颖志)
  • 基于Internet的学生选课信息管理系统的设计与实现(电子科技大学·李智)
  • 在线学习过程管理系统软件设计与实现(北京邮电大学·王嘉康)
  • 基于SSH架构的高校选课系统的设计与实现(黑龙江大学·于虹博)
  • 成人教育综合信息管理系统设计与实现(电子科技大学·伍家卫)
  • MOOC服务平台的设计与实现(齐鲁工业大学·宫琳琳)
  • 基于Web的高校选课系统的设计与实现(电子科技大学·谢慧萍)
  • 基于微服务的在线教育系统的设计与实现(华中科技大学·毛颖志)
  • 基于J2EE的网上选课系统的研究与实现(华东师范大学·罗海勇)
  • 基于微服务架构的在线教学平台的设计与实现(西北大学·刘坤)
  • 基于微服务架构的在线教学平台的设计与实现(西北大学·刘坤)
  • 互动网络课堂的研究及平台设计实现(沈阳建筑大学·吴宇玲)
  • 基于Web的高校选课系统的设计与实现(电子科技大学·谢慧萍)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设项目助手 ,原文地址:https://m.bishedaima.com/yuanma/35494.html

相关推荐

  • javaweb九宫格日记本系统、servlet+jsp+mysql

    在当今信息技术快速发展的背景下,网络应用日益普及,为了满足用户的个性化需求和提升用户体验,基于JavaWeb技术开发的九宫格日记本系统备受关注,本系统采用Servlet和JSP技术
    2024年05月07日
    4 1 2
  • 基于javaWeb开发图书馆管理系统

    图书管理系统 学 院: 数学与计算机学院 班 级: 物联网 11802 姓 名: 蒋光鑫 学 号: 1804240611 指导老师: 聂刚 完成日期: 2020 年 12 月 15 日 一
    2024年05月14日
    3 1 1
  • 基于SSM管理系统开发

    毕业设计管理系统 介绍 毕业设计是本科教育的最后一个环节,整个过程包括课题拟定与审核,师生双选,开题报告,文档审核,中期检查,毕业答辩等多个环节,是一项系统而复杂的工作
    2024年05月14日
    2 1 1
  • 基于Python实现的平衡车系统

    1 故事的开始 1,1 设计背景与灵感来源 时至今日,越来越多的智能无人系统进入我们的视野,这其中,便有视觉冲击力极强的平衡车,无论是日常载人的平衡车,还是例如在机场
    2024年05月14日
    2 1 1
  • 基于javaweb的酒店预订管理系统

    这是一个🔥🔥基于javaweb的酒店预订管理系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 酒店预订管理系统开发技术栈为JSP项目,可以作为毕业设计课程设计作业基于JSP+Servlet+Mysql实现一个酒店后台管理系统
    2024年05月23日
    7 1 3
  • 基于SSM实现个人博客网站

    Blog 基于SpringMVC+Spring+MyBatis开发的个人博客网站,使用IDEA工具开发,毕业设计 一,关于项目 该博客是基于SSM实现的个人博客系统
    2024年05月14日
    2 1 2
  • SSM框架酒店预订系统_JavaWeb客房预定管理系统

    酒店行业的快速发展带来了对客房预订管理的不断需求,在这一背景下,设计和实现一个高效的酒店预订系统变得尤为重要,本研究基于SSM整合框架,旨在开发一个JavaWeb客房预定管理系统
    2024年05月07日
    10 1 4
  • 基于SSM的车辆维修管理系统设计与实现

    这是一个🔥🔥基于SSM的车辆维修管理系统设计与实现🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 车辆维修管理开发技术栈为SSM项目,可以作为毕业设计课程设计作业使用SSM框架设计实现一个车辆维修管理系统
    2024年05月23日
    4 1 1
  • 基于springboot及爬虫数据实现的疫情统计项目

    基于springboot及爬虫数据实现的疫情统计项目 1,项目简介 1,1 项目技术要求 spring boot的常见应用 业务功能的开发思路 爬虫的底层原理 对技术的应用有一定思考 1
    2024年05月14日
    3 1 2
  • 基于SpringBoot框架的教学辅助平台

    这是一套采用Java编程语言,基于SpringBoot框架构建的教育辅助系统源代码,开发过程中,我们运用了SpringBoot和Vue技术栈,同时支持Idea或Eclipse作为开发工具
    2024年05月23日
    3 1 2

发表回复

登录后才能评论