第一次个人编程作业
第一次编程作业
一、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的编辑技巧,感觉自己的排版比上次好很多哈哈哈哈哈。如此,我觉得我的代码编译几乎都过不了,基础不够扎实,还得自学很多基础代码知识,好赶上各位同学,还要学会对代码的性能分析,而不是只是专注于解题(虽然我现在解题都不会呜呜呜呜呜呜呜谁来救救我)还要学会多种工具的使用!