软工第二次结对作业---部门录取方案实现
结对成员
031502344 郑世强
031502220 李自强
GitHub链接: DepartmanAndStudent
数据生成原理.input_data
使用随机数方法生成,满足以下规则
每个学生的tags和free_time的个数和内容都是随机生成的,并且使用HashSet防止重复.部门的同理.
部门和学生的id都是有一定规则前缀加上随机数.例如,"03150XXX","D000XX"
数据建模及匹配程序的思路及实现方式
对象有两个Student和Department,类中的字段由示例json格式Format生成。
匹配采用分数优先制
首先学生与部门之间必须要有一个以上的活动时间匹配才可能被录取。
在满足上列条件下,由兴趣标签、双方活动时间和志愿顺序三个因素计算权值,并且这三个权值支持修改。
用Arraylist的sort方法,按照分数降序排列。
根据分数优先和不超过部门limit数量择优录取
代码规范
类名使用 UpperCamelCase 风格,遵从驼峰形式。
代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词```
public int timsIsMatch(Student student,Department department) {List<String> stuTimes=student.getFree_time();List<String> depTimes=department.getEvent_schedules();int score=0;for (String depTime:depTimes) {if (depTime.matches("\\w*\\.(\\d*)\\:(\\d*)~(\\d*):(\\d*)")){String weekName=depTime.replaceAll("(\\w*)\\.(.)*","$1");int depStartHour = Integer.parseInt(depTime.replaceAll("\\w*\\.(\\d*)\\:(\\d*)(.)*", "$1$2"));int depEndHour=Integer.parseInt(depTime.replaceAll(".*~(\\d*):(\\d*).*", "$1$2"));for (String stuTime : stuTimes) {String stuWeekName=stuTime.replaceAll("(\\w*)\\.(.)*","$1");int stuStartHour = Integer.parseInt(stuTime.replaceAll("\\w*\\.(\\d*)\\:(\\d*)(.)*", "$1$2"));int stuEndHour=Integer.parseInt(stuTime.replaceAll(".*~(\\d*):(\\d*).*", "$1$2"));if (stuWeekName.equals(weekName) && stuStartHour <= depStartHour && stuEndHour >= depEndHour) {score+=timePerScore;break;}}}else{System.out.println("数据格式不正确!!!");}}return score;}
结果评估
对于结果挺满意,也挺符合实际,部门之间能够匹配到相对最好的部员,但也有不足的地方,例如部员的空闲时间在多个部门之间重复冲突。
结对体验
因为之前有过和别人合作的经历,所以我会尽量避免合作过程中的一些问题,例如沟通,两个人在一起写代码,某些重要的方法和字段应该使用中文注释,让队友更好的读懂你的代码。
转载于:https://www.cnblogs.com/zhengshiqiang47/p/7643245.html
软工第二次结对作业---部门录取方案实现相关推荐
- [北航软工]第二次团队作业
[BUAA软工]第二次团队作业 Part 1 项目说明 1. 简介 项目名称:语音coding助手(暂定) 说明: 实现一个android app, 通过语音输入来写python代码,和android ...
- 2022软工第二次个人作业
2022软工第二次个人作业 第一部分 调研,评测 酷狗音乐 使用体验 登录界面 功能体验 播放栏 屏幕小图标功能 音乐版块功能 直播模块 听书模块 探索模块 搜索栏及听歌识曲 Bug 分析 窗口重置问 ...
- [BUAA软工第二次]个人作业-软件案例分析
项目 内容 这个作业属于哪个课程 课程社区的链接 这个作业的要求在哪里 作业要求的链接 我在这个课程的目标是 掌握软件工程开发线的基本流程 这个作业在哪个具体方面帮助我实现目标 了解软件团队成员职责. ...
- 计算式二级python_python实现自动生成小学四则运算题目(软工第二次项目作业)...
前言 软件工程 作业要求 作业目标 结对编程:代码实现.性能分析.异常处理说明.记录PSP表格 代码见: github 个人信息:朱育清 3118005437 信安二班 我的partner 个人信息: ...
- 软工实践第二次结对作业
1.结对成员: 031502340 易伟航 031502312 黄阳正 2.项目的Github链接: 第二次结对作业 3.数据和"数据生成"程序的原理以及我们所考虑的因素: 生成数 ...
- 2022秋软工实践 第一次结对编程作业
2022秋软工实践 第一次结对编程作业 需求分析 (1)Need,需求 (2)Approach,做法 (3)Benfit,好处 (4)Competitors,竞争 (5)Delivery,推广 UML ...
- 2021秋软工实践第一次结对编程作业
这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践第一次结对编程作业 这个作业的目标 实现博饼软件原型并进行博客写作 学号 031902139 队友学 ...
- OUC2022秋季软工11组第一次作业
OUC2022秋季软工11组第一次作业 成员自我介绍&对问题的思考 第一位同学 一.自我介绍 姓名 潘子哲(赖皮小鳄鱼) 爱好 打篮球.玩游戏.踢足球 食堂推荐 感觉可以下口的就只有望海了,& ...
- 软工网络15个人作业5--软件工程总结
一.请回望开学时的第一次作业,你对于软件工程课程的想象 1. 对比开篇博客你对课程目标和期待,"希望通过实践锻炼,增强计算机专业的能力和就业竞争力",对比目前的所学所练所得,在哪些 ...
最新文章
- web开发常用的几种居中形式
- redis setnx 分布式锁_Spring Boot 整合 Redis 正确的实现分布式锁
- 第二冲刺阶段个人博客7
- wxWidgets:wxDragImage类用法
- boost::geometry模块变换多边形的测试程序
- sqli-lib1-36关 精选篇
- XCTF-高手进阶区:PHP2
- 寂寞的hasLayout
- vue中v-model的使用
- docker-compose 使用
- 软件测试(原书第2版中文)PDF版
- java项目中使用kettle的JNDI连接配置
- SRCNN 图像超分辨率重建(tf2)
- python自动生成字幕_【教程】每天30分钟免费的视频自动生成字幕的方法
- 云计算之存储即服务 - 存储区域网络(SAN)
- PROFINET 链路简述
- 双曲余弦函数实现(C语言)
- 计算机组装与维护补考论文,计算机组装与维护课程教学论文
- java算法:1234组成无重复的三位数
- python百位数千位数取整
热门文章
- inner join,left join,right join 三者的用法
- TensorFlow中Variable()和get_variable()
- java书籍台湾翻译_《现代专业Javasctript 技术》一书中英文目录,翻译记录下来方便学习用...
- 0 full gc时cpu idle_Go语言中如何观察GC
- 布尔(bool)全排列
- 【初学线段树,看这篇文章准没错】线段树(单点修改and区间修改)acm寒假集训日记22/1/10
- 多元函数梯度下降 java_机器学习知识点(五)梯度下降法Java实现
- mysql 指定路径_如何为单个MySQL数据库设置特定的目录位置?
- clip许可证设备id与绑定设备不匹配_LINUX SPI通用字符设备模型介绍(SPI模块分析结束篇)...
- 联想微型计算机功率,解锁全部潜力,联想这款笔记本可以将CPU功耗提升至24W