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

  • 相关阅读:
    【海洋女神原创】安装导论谨以此文与那些徘徊在安装的大门外,并且被花哨的功能所迷惑的朋友们共勉。
    【海洋女神原创】Installshield脚本拷贝文件常见问题汇总
    Installshield获取安装包版本的系统变量是IFX_PRODUCT_VERSION
    Installshield 64位操作系统下拷贝文件,如何重定向到32位的系统文件夹下
    【海洋女神原创】installshield 32位打包和64位打包的注意事项
    Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法
    【海洋女神原创】一个简单的带序列号输入的安装包
    How to:installshield安装包怎样才能出现选择路径的界面?
    Excel连接字符串在.NET中的应用
    将Excel的数据导入DataGridView中[原创]
  • 原文地址:https://www.cnblogs.com/yangguanghaitian/p/7638748.html
Copyright © 2020-2023  润新知