# Conference Track Management **Repository Path**: lee9213/tw_work ## Basic Information - **Project Name**: Conference Track Management - **Description**: ThoughtWorks 作业 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2018-07-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Conference Track Management #### 软件架构 本项目采用maven搭建,需要logback-classic的关联的jar包 JDK1.8及以上 #### 安装教程 1. 进入根目录,执行mvn install,等待执行成功 2. 执行java -jar target/tw_work-1.0-SNAPSHOT-jar-with-dependencies.jar即可运行此程序 #### 使用说明 1. src/main/resources/input.txt此文件为参数输入文件,可修改此文件修改输入参数 2. com.lee9213.conference.track.management.Application此文件为项目主程序入口,可以直接执行 #### 思路 1. 已知条件: a. 早上会话从9点开始,12点结束,总共持续180分钟; b. 中午吃饭一小时,60分钟 c. 下午会话从1点开始,结束时间根据网络会议开始时间决定,所以下午会议最少180分钟,最多240分钟; d. 网络会议最早在4点开始,最晚在5点开始; e. 会议类型分为两种 (1)、minutes 对应分钟 (2)、lightning 每个lightning对应5分钟 f. 一天会议最少360分钟,最多420分钟 2. 解析输入文件,根据com.lee9213.conference.track.management.format.TalkParse解析每次会话,得到com.lee9213.conference.track.management.entity.TalkEntity,最后组装成一个List会话列表 3. 根据会话持续时间降序排序这个List会话列表 4. 将整个会话分为早上、中午、下午、网络会议四个类型,这里采用责任链模式依次进行组装 5. 早上:根据List会话列表遍历组装,然后存入com.lee9213.conference.track.management.entity.TrackEntity,清除List会议列表中已经组装过的会议。如果早上会话组装不满180分钟,并且还有多余会话没有组装,则抛出异常,否则进行中午会话组装 6. 中午:直接将会话存入com.lee9213.conference.track.management.entity.TrackEntity,进行下午会话组装 7. 下午: a. 下午会议默认持续时间为最大时间240分钟 b. 计算出List会议列表中剩余的时间,然后对一天最多时间420进行取模计算,当取模之后的值小于下午会议最少时间180分钟,则先将当前下午会议时间设置为最少时间,优先以最少时间满足当天下午会议,避免后续下午会议时间不足 c. 遍历List会话列表进行组装,然后存入com.lee9213.conference.track.management.entity.TrackEntity,清除List会议列表中已经组装过的会议。 d. 进行网络会议组装 8. 网络会议:由于网络会议开始时间不确定,所以需要取出下午会话列表中最后一条会话的开始时间和持续时间,以计算出网络会议开始时间,当计算出来的时间小于网络会话的最早开始时间时,默认将当前网络会议开始时间设置成网络会议最晚时间5点,然后将会话存入com.lee9213.conference.track.management.entity.TrackEntity #### 待优化 采用TDD模式开发