软工结对作业之二
整体概况
模型建立
-
学生类,属性包括: * 1)编号
- 2)空闲时间
- 3)兴趣
- 4)选择的部门
- 5)最大部门申请量
部门类,属性包括:- 1)编号
- 2)工作时间
- 3)需求方向
- 4)部门限制最大人数
数据生成
- 根据题意定义300个学生,20个部门。
Member Student[300];
Dept Department[20];
- 部门、学生初始化
void init()
{
//初始化部门和成员编号
All_Student_No[300];
All_Student_No_string[300];
for (int i = 0;i < 300;i++)
{
stringstream ss;
All_Student_No[i] = 1 + i;
ss << All_Student_No[i];
ss >> All_Student_No_string[i];
ss.clear();
}
//初始化成员
for (int i = 0;i < 300;i++)
{
Student[i].Produce(All_Student_No_string[i]);
Student[i].Translate(All_Dept_No);
}
//初始化部门
for (int i = 0;i < 20;i++)
{
Department[i].Produce(All_Dept_No[i]);
Department[i].Translate();
}
}
- 学生空闲时间的输出
Out_Put << " {" << endl << " "free_time":[" << endl;
for (int j = 0;j < 20;j++)
{
string * Mid = Student[i].reFreeTime();
if (Mid[j] == "")
{
Out_Put << " ]," << endl;
break;
}
else
{
if (Mid[j + 1] == ""||j==19)
Out_Put << " " << """ << Mid[j] << """ << endl;
else
Out_Put << " " << """ << Mid[j] << ""," << endl;
}
if (j == 19)
{
Out_Put << " ]," << endl;
break;
}
}
- 在信息输出部分,如果字符串中已经为空,则最后一行时间已经输出完毕,输出“],”;如果准备输出最后一行的时间,则只输出时间,不输出逗号;其余行,均输出时间和逗号。(部门输出信息与之类似)。
匹配算法模型(雏形)
-
初步算法考虑的问题:
-
1)不能超过部门限制最大人数
-
2)学生之间应该尽量公平,且学生加入的部门应该和志愿一致此时,我们以某一同学的5个或不到5个志愿为例,依次判断该同学的志愿是否和某一部门匹配,匹配之后,检查该部门人数是否已满。
-
3)能否进入某一部门的重要判定,在于学生的空闲时间和部门的工作时间是否匹配,若匹配,则考虑其他因素,若不匹配,则无法加入该部门。
- 首先需要对工作时间和空闲时间进行读取
- 其次一种情况是空闲时间和工作时间匹配,另一种则存在冲突。
-
-
反思:此种算法,存在许多不足。其中之一,根据题目要求,应该优先考虑所有同学的第一志愿,然后依次二、三等志愿,更符合要求;另外,看过输入样例后,只单纯的考虑了以两个小时为每段时间的情况。
嗯,抱紧大佬大腿,大佬加油。
关于JSON
- 本次实践,第一次听说并认识了Json工具,想要运用工具,首先当然先要找到工具。找齐六个扩展包,在工程文件中,添加一个“lib”文件夹,并将扩展包粘贴其中,并设置路径,将包扩展到了工程文件中,得以使用。
- 通过对于网上各路大佬博客的浏览,认识到Json常用类别,分别为Json对象和Json数组,对象主要通过key和value来查找,数组则是依次存储,键值从零开始。
- 分享几个了解Json解析的网址 (1) (2) (3)
代码规范
- 类名:首字母大写。
- 函数:首字母小写,首字母后的单词第一个字母大写
- 变量:首字母小写,首字母后的单词第一个字母大写
心得体会:
本次作业安排在了十一长假期间,咳咳,苦不堪言。十一回家的计划更改不了的情况下,结对作业真的是难以顺利进行,还好留校队友十分给力。放假之前,刚看到作业,最初的问题就是数据的处理,请教之后知道需要学习使用json工具,来整理输入的数据,在同学的解释和了解相关知识之后,确实意识到了json的方便与强大,但是,运用起来并不得心应手,基本上就是模仿网上的教程,把变量修改成自己想要的。另外就是完成了算法雏形的设计,至于代码的完善,队友主力完成,在观膜中,能啃食多少是多少