• 第六次作业--结对编程第二次


    结对第二次作业

    成员:
    圳源:414
    文智:125

    队友博客园地址: http://www.cnblogs.com/wwenzhi/

    github

    设计说明:
    student
    学号 时间 部门 tag标签
    department
    部门编号 时间 限制人数 tag标签
    输入数据生成:(学生部分为例)

    
    // 随机生成唯一的学生学号:S开头,后4位随机生成1-9数字,如S1414
    string getStuId() {
    	string StuId = "S";
    	int count = 0;
    	do
    	{
    		if (count >= 1)// 防止生成重复StuId,重置
    		{
    			StuId = "S";
    		}
    		for (int i = 0; i < 4; i++) {
    			StuId += rand() % 10 + '0';
    		}
    		count++;
    	} while (id[StuId]);
    	id[StuId] = true;
    	return StuId;
    }
    
    // 随机生成时间
    string getTime() {
    	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";
    	flag[d][h1] = flag[d][h1 + 1] = flag[d][h1 + 2] = true;// 防止时间冲突
    	return res;
    }
    
    // 学生
    void data_stu(int n) {
    	Json::Value Item;
    	int i, j;
    	id.clear();
    	bool in[10];
    	for (i = 0; i < n; ++i) {
    		memset(used, false, sizeof(used));
    		memset(flag, false, sizeof(flag));
    		memset(in, false, sizeof(in));
    
    		// 随机生成学生编号
    		Item["student_no"] = getStuId();
    		// 随机生成空余时间
    		int cnt = rand() % 10 + 7;
    		for (j = 0; j < cnt; ++j) {
    			string tmp;
    			tmp = getTime();
    			Item["free_time"].append(tmp);
    		}
    
    		// 从已创建的部门中随机抽出<=5个部门 
    		int deps = rand() % 6;
    		for (j = 0; j < deps; ++j) {
    			int inx;
    			do {
    				inx = rand() % 20;
    			} while (in[inx]);
    			Item["applications_department"].append(depId[inx]);
    			in[inx] = true;
    		}
    
    		// 随机从已经被部门所使用过的标签中抽出tgn个标签
    		int tgn = rand() % 4 + 2;
    		for (j = 0; j < tgn; ++j) {
    			int inx;
    			do {
    				inx = rand() % 12;
    			} while (used[inx] || !vis[inx]);
    			used[inx] = true;
    			Item["tags"].append(tag[inx]);
    		}
    
    		MAIN["students"].append(Item);
    		Item.clear();
    	}
    	return;
    }
    
    

    遇到的困难及解决办法: 这是我第一次使用json这种数据格式,刚开始我对这毫无概念,以为是要安装一个编辑器,后来查阅了很多资料,问了同学,又听说腾讯的rapidjson很好用,所以我一开始用的是rapidjson,但是没有师傅领进门,自己领悟有点难,于是询问了同学,同学用的jsoncpp,于是我也用这个,可以说在这个事情上花了很多时间,所以有时候自己看再多资料还不如懂的人一句话的事情。要多问。

    对队友的评价: 我跟队友都是处于小白阶段,但是优点就是对新事物好奇,自学能力强,而且有责任心,我们分工明确,干活不累。

    psp学习进度条:

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

    学习进度条:

    第几周 新增代码/行 累计代码/行 本周学习耗时/小时) 累计学习耗时(小时) 重要成长
    1 500 500 19 19 学会了使用效能分析工具
    2 600 1100 32 51 学会用json库
  • 相关阅读:
    Leetcode424. 替换后的最长重复字符
    Leetcode82. 删除排序链表中的重复元素 II
    python 无序模块,hashlib模块
    python 内置方法
    python 面向对象的三大特性
    python 面向对象
    python 递归函数和二分查找
    python 装饰器
    python 函数名,闭包
    python 函数进阶
  • 原文地址:https://www.cnblogs.com/losttrain/p/7674060.html
Copyright © 2020-2023  润新知