软工结对作业之二


整体概况

模型建立

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

Department and Student的更多相关文章

  1. serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法

    ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Ser ...

  2. asp.net 数据库面试题(基础)

    今天到某公司笔试,数据库考的比较多,但是说老实话,考的也比较基础.现在趁回忆得起来,将数据库知识简单整理如下: 一.建表指令 比如创建一个学生表student,它由学号Sno,姓名Sname,性别Ss ...

  3. 常用的 SQL语句------CRUD

    复习之前课本上的sql语句,以前上课的时候都是老师在上面讲,我们在下面玩,根本没有把这个放在心上,等到考试的时候临时学习突击下,就可以顺利过60了,但是现在不行了,自己要重新的学习sql,应该把里面最 ...

  4. MySQL查询语句

    来源于网络... Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT(10) 是 否 是 是 是 Name 姓名 VARCHAR(20) 否 否 是 ...

  5. mysql——查询练习

    Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT(10) 是 否 是 是 是 Name 姓名 VARCHAR(20) 否 否 是 否 否 Sex 性 ...

  6. .NET高级工程师面试题之SQL篇

    1 题目 这确实是一个真实的面试题,琢磨一下吧!知识不用,就会丢掉,我太依赖各种框架和dll了,已经忘记了最基本的东西.有多久没有写过SQL了,我已经不记得了. 已知表信息如下: Department ...

  7. MySQL数据库小实验

    实验1 1.创建数据表 CREATE TABLE guest( Accounts ) NOT NULL, Details ) NOT NULL, Date ) NOT NULL, ,), Class ...

  8. MySQL学习总结(摘抄)

    1.数据库概述 简 而言之,数据库(DataBase)就是一个存储数据的仓库.为了方便数据的存储和管理,将数据按照特定的规律存储在磁盘上.通过数据库管理系统,可以有 效的组织和管理存储在数据库中的数据 ...

  9. 数据库系统概论 SQL

    --(一)创建教材学生-课程数据库 create database s_c go use s_c go --建立“学生”表Student,学号是主码,姓名取值唯一. CREATE TABLE Stud ...

随机推荐

  1. SQL 必知必会·笔记<1>了解SQL

    1.1 基本概念 数据库(DataBase) 保存有组织的数据库的容器(通常是一个文件或一组文件). 表(Table) 某种特定数据类型的结构化清单. 模式(Schema) 关于数据库和表的布局及特性 ...

  2. Spring Cloud Gateway入门

    1.什么是Spring Cloud GatewaySpring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技 ...

  3. [转]谈谈Java中"=="与"equals()"

    equals是Object超类中的一个方法,这个方法的实现就是通过==号实现的,==号比较的是两个对象的地址是否相同,在代码中体现出来就是比较两个对象引用中保存的地址是否相同,==能够判断的只是两个对 ...

  4. hiveServer2 和 metastore的一点解读。

    刚看了hive官网的文档,对于一些概念结合自己的经验,似乎又多了一些理解,想一想还是记下来的好,一来我是个有些健忘的人,过一段时间即便忘了,循着这个帖子,也能快速把知识点抓起来:二来或许对别人也有些启 ...

  5. Hyperledger Fabric密码模块系列之BCCSP(三)

    fabric中通过工厂模式来生成bccsp实例,进而通过bccsp的接口来提供加密.解密.签名验证以及哈希等操作. fabric的factory工厂默认返回的bccsp实例是sw(也就是所有密码操作都 ...

  6. RockChip RK3326 系统编译问题总结

    1. 序言 本文主要记录了RK3326平台系统编译过程中遇到的各种问题,并加以解决! 环境: 宿主Linux:Ubuntu 16.04 目标机:RK3326 (64bit) Toolchain:gcc ...

  7. vuex学习及使用

    什么是vuex? 在SPA单页面组件的开发中vuex称为状态管理:简单的理解就是你在state中定义了一个数据之后,你可以在所在项目中的任何一个组件里进行获取.进行修改,并且你的修改可以得到全局的响应 ...

  8. IOS 获取的时间显示为NAN 解决方法

    var regTime= item.BeginDate.replace(/\-/g, "/"); ------ item.BeginDate 我的日期年月日的    (/\-/g, ...

  9. Windows安装diango框架<一>

    下一篇:使用Django创建网站项目<二> python工具安装 python下载:https://www.python.org/downloads/windows/(我的版本3.7.0) ...

  10. elasticsearch安装之各种坑

    我用的是centos6.5,安装elasticsearch5.2.0 首先不说了,安装JDK1.8,下载elasticsearch5.2.0 https://www.elastic.co/downlo ...