Department and Student

软工结对作业之二


整体概况

模型建立

  • 学生类,属性包括:
      *	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的方便与强大,但是,运用起来并不得心应手,基本上就是模仿网上的教程,把变量修改成自己想要的。另外就是完成了算法雏形的设计,至于代码的完善,队友主力完成,在观膜中,能啃食多少是多少

posted @ 2017-10-09 21:30  阳光海天  阅读(248)  评论(1编辑  收藏  举报