zoukankan      html  css  js  c++  java
  • 第六次作业--结对编程第二次

    本次作业deadline: 2017-10-15 21:00

    根据上一次结对作业的背景,实现一个分配算法,根据输入信息,输出:

    • 部门和学生间的匹配信息(一个学生可以确认多个他所申请的部门,一个部门可以分配少于等于其要求的学生数的学生)
    • 未被分配到学生的部门
    • 未被部门选中的学生

    说明:仅就上述内容,实现一个单独的程序模块。不需要和之前的原型整合在一起。

    要求:

    • 1、输入的数据,另外写生成程序随机实现。
    • 2、为输入输出设计接口,为该匹配程序模块后期可能的整合入系统提供便利。
    • 3、输入输出采用 json 文本文件方式,可自由讨论确定细节内容,但需要明确并体现在博客中。
    • 4、需要为匹配算法确立几条分配或排序原则,比如 绩点优先、或兴趣优先、或活动时间优先、或其他等等,请你们结对讨论确定。
    • 5、对不同策略做出评价,并在博客中展示测试结果。提醒:对于同一组输入,输出的未被导师选中的学生数越少越好。
    • 6、博客中列出代码你们的代码规范要求。
    • 7、实现的程序语言以C/C++优先,部分同学如果对Java/C#掌握更加熟练也可接受。
    • 8、代码提交在GitHub上,并在博客中提供项目链接(注意不是Github个人主页)。
    • 9、两人博客中涉及到设计及代码展示可以相同,但是要求使用自己语言加以描述。

    博客要求(模板/评分)

    • 结对情况【1分】

      • 自己
        • 学号后3位
        • 名(为保护隐私省去姓)
      • 队友
        • 学号后3位
        • 名(为保护隐私省去姓)
        • 队友博客链接(本次作业链接,不是主页,既然是一个队伍,保持同时发布并获取对方链接)
    • GitHub 项目链接(不是主页)【1分】

    • 设计说明

      • 接口设计(API)【5分】
      • 内部实现设计(类图)【5分】
      • 匹配算法设计(思想/流程等)【5分】
      • 测试数据如何生成?【5分】
      • 如何评价自己的匹配算法?【10分】
    • 关键代码解释

      • 贴出你认为重要的/有价值的代码片段,并解释【5分】
    • 运行及测试结果展示

      • 测试200位同学,20个部门的情况【5分】
      • 测试500位同学,30个部门的情况【8分】
      • 测试1000位同学,50个部门的情况【10分】
      • 测试5000位同学,100个部门的情况【15分】
      • 以上每组测试分别提供:
        • 测试结果概况描述
        • 测试输入数据片段展示及完整数据链接
        • 测试输出数据片段展示及完整数据链接
        • 完整测试数据建议提交到Github项目tests目录内,再提供链接到博客
        • 测试数据文件命名:
          • 输入: sxxx-dxxx-in.json
          • 输出: sxxx-dxxx-out.json
          • sxxx 中的 xxx 替换同学数目
          • dxxx 中的 xxx 替换部门数目
      • 效能分析报告【5分】
    • 遇到的困难及解决方法【5分】

      • 困难描述
      • 做过哪些尝试
      • 是否解决
      • 有何收获
    • 对队友的评价【5分】

      • 有哪些好的地方值得学习
      • 有哪些不好或者需要改进的地方
    • PSP表格【5分】

    • 学习进度条【5分】

    关于PSP/学习进度条等模板请参考: http://www.cnblogs.com/vertextao/p/7469789.html


    参考输入输出信息

    输入信息:

    • 部门
      • 部门编号
      • 部门需要学生数的要求的上限,单个,数值,在[0,15]内;
      • 部门的特点标签,多个,字符;
      • 部门的常规活动时间段,多个;
      • 更多...
    • 学生
      • 绩点信息,单个,数值;
      • 兴趣标签,多个,字符;
      • 每个学生有不多于5个的部门意愿(部门意愿不能空缺);
      • 更多...

    参考输入示例

    {
        "departments" : 
        [
            {
                "department_no" : "FZU_BL01",
                "department_name" : "balabala",
                "member_limit" : 10,
                "tags": ["singing", "dancing", "guitar", ...],
                "event_schedules" : ["from1-end1", "from2-end2", "from3-end3", ...],
                ...
            },
            {
                "department_no" : "FZU_WL01",
                "department_name" : "wulalala",
                "member_limit" : 15,
                "tags": ["xxx", "yyy", "bbb", ...],
                "event_schedules" : ["from1-end1", "from2-end2", "from3-end3", ...],
                ...
            },
            ...
        ],
        "students" :
        [
            {
                "student_no" : "FUZSTU_00134011",
                "student_name" : "ZHANGSHAN",
                "tags" : ["dangcing", "painting", "running", ...],
                "available_schedules" : ["from1-end1", "from2-end2", "from3-end3", ...],
                ...
            },
            {
                "student_no" : "FUZSTU_00134010",
                "student_name" : "LISI",
                "tags" : ["reading", "abc", "ddd", ...],
                ...
            },
            ...
        ]
    }
    

    参考输出示例

    {
        "matched_department_view" :
        {
            ...
        },
        "matched_student_view" :
        {
            ...
        },
        "standalone_departments" :
        [
            ...
        ],
        "standalone_students" :
        [
            ...
        ]
    }
    
  • 相关阅读:
    每天一个linux命令(39):grep 命令
    每天一个linux命令(44):top命令
    每天一个linux命令(42):kill命令
    每天一个linux命令(41):ps命令
    每天一个linux命令(55):traceroute命令
    每天一个linux命令(45):free 命令
    为什么程序员的价值总是被严重的低估?
    每天一个linux命令(54):ping命令
    每天一个linux命令(46):vmstat命令
    每天一个linux命令(48):watch命令
  • 原文地址:https://www.cnblogs.com/kese/p/7615325.html
Copyright © 2011-2022 走看看