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" :
        [
            ...
        ]
    }
    
  • 相关阅读:
    A1052. Linked List Sorting (25)
    A1032. Sharing (25)
    A1022. Digital Library (30)
    A1071. Speech Patterns (25)
    A1054. The Dominant Color (20)
    A1060. Are They Equal (25)
    A1063. Set Similarity (25)
    电子码表
    矩阵键盘
    对象追踪、临时对象追踪、绝对坐标与相对坐标
  • 原文地址:https://www.cnblogs.com/kese/p/7615325.html
Copyright © 2011-2022 走看看