项目实训第二周第一次

1.任务安排

这周的任务安排是完成教学活动管理中的创建教学活动功能,首先要完成的房间冲突检测功能。

2.任务分析

在创建教学活动时,需要选择教学活动所使用的教室。在选择教室时要考虑活动时间内该教室是否有其他教学活动正在举行。当前端传递给后端活动开始时间和活动结束时间,后端需要返回给前端在该时间范围内所有可以用的教室并以数组形式返回给前端。
例如当我们预计活动的时间是7月1日14:00到7月1日17:00
如果有活动在7月1日13:00到7月1日15:00,那么该活动所占用的教室不能被使用
如果有活动在7月1日15:00到7月1日16:00,那么该活动所占用的教室不能被使用
如果有活动在7月1日16:00到7月1日18:00,那么该活动所占用的教室不能被使用
我们只需要找出该给定时间范围的不可使用教室,记为集合A,把所有的教室记作全集U。那么我们所需要的结果就是A的补集。
通过观察可以发现,如果某个活动的开始时间在我们需要查询的时间范围内,或者某个活动的结束时间在我们需要查询的时间范围内,都说明查询的时间范围内该活动所占用的教室不能被使用。

2.1临界值问题

如果有活动在7月1日13:00到7月1日14:00,且在其他时间么该活动所占用的教室没有活动,那么该活动所占用的教室可能可以被使用。
如果有活动在7月1日17:00到7月1日18:00,且在其他时间么该活动所占用的教室没有活动,那么该活动所占用的教室可能可以被使用。
即7月1日13:00到7月1日14:00和7月1日17:00到7月1日18:00这两种情况是不能说明该活动所占用的教室不能被使用。

3.具体代码

3.1ActivityMapper

@Select(" select room_name from room where room_name not in (select room_name from activity where (#{act_start_time}>=act_start_time and #{act_start_time}<act_end_time) or (#{act_end_time}>act_start_time and #{act_end_time}<=act_end_time))")
    public String[] find_avaiable_room(@Param("act_start_time") Date act_start_time,@Param("act_end_time") Date act_end_time);

3.2ActivityService

 public String[] find_avaiable_room(String act_start_time,String act_end_time) throws ParseException {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date act_start_datetime=df.parse(act_start_time);
        Date act_end_datetime=df.parse(act_end_time);
        return  activityMapper.find_avaiable_room(act_start_datetime,act_end_datetime);
    }

3.3ActivityController

 @GetMapping("/find_avaiable_room")
 @ApiOperation(value="查询可用的教室")
    String[] find_avaiable_room(@Param("act_start_time") String act_start_time,
                                @Param("act_end_time") String act_end_time) throws ParseException {
        return  activityService.find_avaiable_room(act_start_time,act_end_time);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值