zoukankan      html  css  js  c++  java
  • 第二次结对作业

    结对情况

    姓名 学号(后三位)
    223
    一飞 608

    队友博客链接

    项目链接

    coding.net项目链接

    设计说明

    students:

    学生编号 - sId
    兴趣标签 - sTags
    标签个数- sTagNum
    空闲时间段- sFreeTimes
    空闲时间段的个数- sFreeTimeNum
    学生志愿的部门- sVoluntaryDepa

    departments:

    部门编号 -dId
    纳新人数 -dNum
    标签 -dTags
    标签个数 -dTagsNum
    常规活动时间 -dSchedules
    dScheNum -常规活动时间的个数

    匹配算法设计(思想/流程)

      经过测试,我发现不是匹配算法错误,而是在json的读入上出了错误,目前还没有解决,所以还不能确定匹配算法是否正确,因此先放在这里,继续解决。。。

    测试数据如何生成

      本次作业json的最终实现是使用jsonCpp库结合rand()函数的使用来实现的。其中生成部门和学生相关信息的方法基本上一致,以生成学生信息为例:

    void dataStu(Students *stu, int stuSum, int depaSum)
    {
    	//srand((int)time(0));
    	for (int i = 0; i < stuSum; i++) {
    	    stu[i].sId = 1000 + i;
    
    		for (int j = 0; j < 5; j++) {
    			stu[i].sVoluntaryDepa[j] = rand() % depaSum;
    		}
    
    		stu[i].sTagsNum = rand() % 10 + 1;
    		for (int j1 = 0; j1 < stu[i].sTagsNum; j1++) {
    			int inx;
    			inx = rand() % stu[i].sTagsNum;
    			stu[i].sTags[j1] = tags[j1];
    		}
    
    		stu[i].sFreeTimeNum = rand() % 5 + 1;
    		for (int k = 0; k < stu[i].sFreeTimeNum; k++) {
    			int d, h1;
    			do {
    				d = rand() % 7;
    				h1 = rand() % 13;
    			} while (flag[d][h1] || flag[d][h1 + 1] || flag[d][h1 + 2]);
    			string res = day[d] + "." + hour[h1] + ":00" + "~" + hour[h1 + 2] + ":00";
    			stu[i].sFreeTimes[k] = res;
    		}
    	}
    }
    

      生成json是利用Json::Value来生成一个个节点,然后再调用append()函数把一个个节点接到他们的父节点上,最后形成一个完整的json对象,之后利用toStyledString()函数把这个对象转换为字符串,之后就把字符串输出到文件就完成了数据生成的任务。代码如下:

    void jsonOutStu(Students *stu, int stuSum, int depSum) {
    	//Json::Value jsonRoot;
    	Json::Value jsonItem;
    
    	for (int i = 0; i < stuSum; i++) {
    		jsonItem["sId"] = stu[i].sId;
    		jsonItem["sTagsNum"] = stu[i].sTagsNum;
    		for (int j = 0; j < stu[i].sTagsNum; j++) {
    			jsonItem["sTags"].append(stu[i].sTags[j]);
    		}
    		jsonItem["sFreeTimeNum"] = stu[i].sFreeTimeNum;
    		for (int k = 0; k < stu[i].sFreeTimeNum; k++) {
    			jsonItem["sFreeTimes"].append(stu[i].sFreeTimes[k]);
    		}
    		for (int l = 0; l < 5; l++) {
    			jsonItem["sVoluntaryDepa"].append(stu[i].sVoluntaryDepa[l]);
    		}
    		//jsonRoot["Students"] = Json::Value(jsonItem);
    		ALL["Students"].append(jsonItem);
    		jsonItem.clear();
    	}
    	//stuJson.close();
    	return;
    }
    

    如何评价自己的匹配算法

    关键代码解释

    运行及测试结果展示

    遇到的困难及解决办法

      本次作业因为要使用json这种数据格式,所以一开始我在网上找了很多关于json的c++库。最开始使用jsonCpp库的时候,因为要将程序编译生成静态链接库然后再引用比较麻烦,所以换用cJson库一段时间,但是在实际编程的时候,查找资料发现网上关于jsonCpp库的资料是最多的,最终还是换用了jsonCpp库,采取将里面的文件包含到工程中的方式,避开了自己所不熟悉的编译静态链接库的过程,可以说在这件小事上浪费了不少时间。

    对队友的评价

      本次作业布置的时间是在十一国庆时,队友刚好在外面玩,所以我主动请缨承担了比较多的工作,但是由于比较菜,导致这次作业完成的情况不是很好,很多该考虑的东西没有考虑好,在一些不必要的地方花了太多的时间,实在是对不起队友,对不起老师,对不起党的十九大的胜利召开。。。。

    PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 10 10
    · Estimate · 估计这个任务需要多少时间 900 1000
    Development 开发
    · Analysis · 需求分析 (包括学习新技术) 80 140
    · Design Spec · 生成设计文档
    · Design Review · 设计复审 (和同事审核设计文档)
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范)
    · Design · 具体设计 0 0
    · Coding · 具体编码 600 800
    · Code Review · 代码复审 20 20
    · Test · 测试(自我测试,修改代码,提交修改) 60 120
    Reporting 报告 30 60
    · Test Report · 测试报告
    · Size Measurement · 计算工作量
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 60
    合计 1730 2210

    学习进度条

    第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
    1 150 150 48 48 了解了软件工程的一般方法,学会用工程的视角看待项目
    2 120 270 7 55 原型设计、合作探讨、复习课程
    3-4 400 670 90 145 学习c++中json的使用
  • 相关阅读:
    mac 终端常见指令
    git常见指令
    iOS8的autolayout和size class
    UIWindow详解
    操作系统Unix、Windows、Mac OS、Linux的故事
    iOS引用当前显示的UIAlertView
    Unexpected CFBundleExecutable Key
    《CODE》讲了什么?
    exit和return的区别
    php 登录注册api接口代码
  • 原文地址:https://www.cnblogs.com/imagainstzy/p/7673737.html
Copyright © 2011-2022 走看看