Java项目:springboot在线选课系统

作者主页:源码空间站2022

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

后端技术包含springboot+mybatis+spring security+mysql+redis

前端技术包含 semanticUI + thymeleaf模板引擎

使用教程

1.  下载项目之后 等待maven安装对应jar包
2.  自行下载redis 并按照资源包下的application.yml要求进行配置

3.  自行安装MySQL数据库 执行资源包下的sql文件

使用说明

1.  运行redis服务器
2.  启动项目
3.  访问localhost:8080

4.  用户名:admin  密码:admin

注意事项

若导出信息时报错,则需要设置mysql,设置方式如下:

SELECT @@sql_mode; 查看是否包含ONLY_FULL_GROUP_BY;若包含,则执行以下命令:

SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

执行完成后,再通过SELECT @@sql_mode; 来查看;
 

注意:该方法仅用于临时修改,重启mysql后,以上设置失效。

运行截图

代码相关

学生选课接口

@RestController
@RequestMapping("usercourse")
@Api
public class UserCourseController{

    @Autowired
    UserCourseService userCourseService;
    @Autowired
    SelectableCourseDAO selectableCourseDAO;

    /**
     * 选课
     * @param courseId
     * @param username
     * @return
     */
    @PostMapping("choose")
    @PreAuthorize("hasAuthority('student')")
    public Object chooseCourse(@RequestParam("courseId") Integer courseId ,
                               @RequestParam("username") String username){
        Map<String,Object> map = new HashMap<>();
        try{
            return userCourseService.chooseCourse(courseId , username);
        }catch(Exception e){
            if(e instanceof DataIntegrityViolationException){
                map.put("msg","该课程已经被抢完啦。");
            }else{
                map.put("msg","出现其他异常,选课失败!");
            }
            map.put("flag",false);
            return JSON.toJSON(map);
        }
    }

    /**
     * 退课
     * @param courseId
     * @param username
     * @return
     */
    @PostMapping("cancel")
    @PreAuthorize("hasAuthority('student')")
    public Object cancelCourse(@RequestParam("courseId") Integer courseId ,
                               @RequestParam("username") String username){
        return userCourseService.cancelCourse(courseId,username);
    }

    /**
     * 获取学生所选全部课程
     * @param page
     * @param limit
     * @param username
     * @return
     */
    @PostMapping("studentInfo")
    @PreAuthorize("hasAuthority('admin') or hasAuthority('student')")
    public Object studentInfo(@RequestParam(value = "page", defaultValue = "1") int page ,
                              @RequestParam(value = "limit", defaultValue = "10") int limit ,
                              @RequestParam("username")String username){
        try{
            Map<String,Object> map = new HashMap<>();
            PageHelper.startPage(page , limit);
            List<SelectableCourse> list = selectableCourseDAO.selectByUser(username);
            if(list == null){
                return Msg.fail();
            }
            //System.out.println("=="+username+"==");
            PageInfo<SelectableCourse> pageInfo = new PageInfo<>(list);
            map.put("totalPage" , pageInfo.getPages());  //总页数
            map.put("totalCount" , pageInfo.getTotal());  //总条数
            map.put("currentPage" , page);  //当前页数。
            map.put("data" , pageInfo.getList()); //获得的数据量
            map.put("tCase",username);
            return JSON.toJSON(map);
        }catch(Exception e){
            e.printStackTrace();
            return Msg.fail();
        }
    }
    
    //测试。
    @PostMapping("cc")
    public Object cc(){
        Map<String,Object> map = new HashMap<>();
        try{
            selectableCourseDAO.updateMinCourseStock(1);
            return true;
        }catch(Exception e){
            if(e instanceof DataIntegrityViolationException){
                map.put("msg","该课程已经被抢完啦。");
            }else{
                map.put("msg","出现其他异常,选课失败!");
            }
            map.put("flag",false);
            return JSON.toJSON(map);
        }
    }
}

 如果也想学习本系统,下面领取。回复:017springboot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值