第一次个人编程作业

第一次编程作业

一、GitHub

My GitHub

二、PSP表格

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

三、解题思路

如何思考

拿到题目我满脑子????但是稍作冷静,有了如下思考

  • 看题目,解读题目
  • 用,区分姓名与其它文字
  • 电话号码有11位数字,而街道号等不是,所以区分电话号码与其它的数字关键在于这个11位的数字
  • 找出省作为开头/直辖市作为头找出最后详细地址作为尾
  • 输出时记得省市区镇县乡等区分地址大小级别至最小级

如何找资料

作为一个只学过C和C++的阿呆(甚至没学清楚),我拿到题目痛苦万分,看到群里大哥们的讨论,点开我看不懂的GitHub,下载好我没用过的visual studio community,我手足无措,脑子里只有:“哈哈我不想活啦”.......于是我无奈的打开搜索引擎,搜索着怎么用VS写C++,回顾着那些我早就忘了的头文件,查看着我从来没用清楚过的函数和类,我不禁流下了眼泪,感觉自己像从未学过代码的小毛孩,我摸着我满脑壳的痘痘,搜着百度,看着cnblogs,总算是有那么点进展吧:

四、设计实践

代码思路

  • 语言:C++
  • 用#include 及其语句读取文件
  • 区分每个用户信息
  • 区分每个用户中姓名 电话号码 省份 市区 区 县 路等信息
  • 输出时要加分类题头
  • 输出为json文件

实现过程

||||||||||||||
|:--|:--|
| 函数 | 主要作用 |
| seperate(string s) | 将个人全部信息和总体分开 |
| seperateName(string info) | 找出语句中的人名 |
| seperatePhonenumber(string info) | 找出语句中的电话号码 |
| seperateAddress(string info) | 找出语句中的地址部分 |
| getProvince(string add) | 找出语句中的省/直辖市/自治区 |
| getCity(string add) | 找出语句中的市区 |
| getArea(string add) | 找出语句中的区 |
| getCountry(string add) | 找出语句中的县 |
| getRoad(string add) | 找出语句中的街道乡镇 |
| getVillage(string add) | 找出语句中的行政村 |
| getsmallest(string add) | 找出最小单位 |

五、分析性能

改进过程

六、代码说明

关键代码

找出电话号码


string getnum(string info)
{
	string num;
	int l;
	l = strlen(info);
	int i;
		for (i = 0; i < l; i++)
		{
			if (info[i]>='0'&&info[i]<='9'&&info[i+10]<='9'&&info[i+10]>='0')
			{
				int j = 0;
				num[j] = info[i];
				num[j + 1] = info[i + 1];
				num[j + 2] = info[i + 2];
				num[j + 3] = info[i + 3];
				num[j + 4] = info[i + 4];
				num[j + 5] = info[i + 5];
				num[j + 6] = info[i + 6];
				num[j + 7] = info[i + 7];
				num[j + 8] = info[i + 8];
				num[j + 9] = info[i + 9];
				num[j + 10] = info[i + 10];
			}
	}
	return num;
}

七、心得体会

通过第一次程序作业,我感到非常难受,我深感自己学习能力不足,我目前了解了如何用vs写c++程序以及如何用它来分析程序,尽管这是一个漏洞百出难以调试的过程。还熟悉了GitHub的使用,这是国际的代码交流平台,也更加了解了Markdown的编辑技巧,感觉自己的排版比上次好很多哈哈哈哈哈。如此,我觉得我的代码编译几乎都过不了,基础不够扎实,还得自学很多基础代码知识,好赶上各位同学,还要学会对代码的性能分析,而不是只是专注于解题(虽然我现在解题都不会呜呜呜呜呜呜呜谁来救救我)还要学会多种工具的使用!

posted @ 2019-09-17 18:22  大头阿哥  阅读(221)  评论(6编辑  收藏  举报