第一次个人编程作业
一、Github链接
二、PSP表格
|PSP2.1|Personal Software Process Stages|预估耗时(分钟)|实际耗时(分钟)|
|------|------|------|
|Planning|计划|30|20|
|·Estimate|估计这个任务需要多少时间|30|20|
|Development|开发|800|1020|
|·Analysis|需求分析(包括学习新技术)|200|300|
|·Design Spec|生成设计文档|20|20|
|·Design Review|设计复审|10|10|
|·Coding Standard|代码规范(为目前的开发制定合适的规范)|20|20|
|·Design|具体设计|10|10|
|·Coding|具体编码|240|360|
|·Code Review|代码复审|100|120|
|·Test|测试(自我测试、修改代码、提交修改)|200|180|
|Reporting|报告|70|40|
|·Test Report|测试报告|30|10|
|·Size Measurement|计算工作量|10|10|
|·Postmortem&Process Improvement Plan|事后总结,并提出过程改进计划|30|20|
||合计|900|1080|
三、计算模块接口的设计与实现过程
写了一个名为functions.h的头文件,负责声明函数。
另有一个名为functions.cpp的源文件,负责定义函数
主要接口如下:
void ex_name(wstring& ws, wstring& name);//extract name
void ex_number(wstring& s, wstring& number);//extract phone numbers
void ex_1(wstring& ws, wstring& level1, const wstring* table);//extract province
void ex_2(wstring& ws, wstring& level2, wstring& level1);//extract municipality
void ex_3(wstring& ws, wstring& level3);//extract county
void ex_4(wstring& ws, wstring& level4);//extract town
void ex_5(wstring& ws, wstring& level5);//extract road
void ex_6(wstring& ws, wstring& level6);//extract door
void ex_7(wstring& ws, wstring& level7);//extract what's left
主要想法就是按关键词提取每一级地址,这样的话,就没做第三级难度了。
四、计算模块接口部分的性能改进
从中可看出,消耗最大的是getline函数,不过这是输入,也改进不了。
五、计算模块部分单元测试展示
输入:
1!胥怕摩,天津市15567749658河东区成林道63号天津工业大学.
1!罗划,宁夏回族自治区石嘴山市大武口区长城街道15853060471建设西街253号建民诊所.
1!单于咖,河北省保定博野县小店镇15054608937吴王庄村村民委员会.
1!古囊缰,天津市河东区上杭路街道滨河15607679537里2号楼.
1!喻预辱,江西省景15816025063德镇市浮梁县洪源镇方家村洪源派出所.
1!牟廷者,河北保定15603043581市涿州市码头镇码头村委会.
1!夹谷转讼,15826761592上海市黄浦区五里桥街道局门路4号甲桑城居民委员会.
1!幸懒雪,天津市向阳楼街道阳安里4号楼15688316875.
输出:
{"level": 1,"姓名": "胥怕摩","手机": "15567749658","地址": [ "天津", "天津市","河东区","","成林道63号天津工业大学"]}
{"level": 1,"姓名": "罗划","手机": "15853060471","地址": ["宁夏回族自治区","石嘴山市","大武口区","长城街道","建设西街253号建民诊所"]}
{"level": 1,"姓名": "单于咖","手机": "15054608937","地址": [ "河北省", "保定市","博野县","小店镇","吴王庄村村民委员会"]}
{"level": 1,"姓名": "古囊缰","手机": "15607679537","地址": ["天津","天津市","河东区","上杭路街道","滨河里2号楼"]}
{"level": 1,"姓名": "喻预辱","手机": "15816025063","地址": ["江西省","景德镇市","浮梁县","洪源镇","方家村洪源派出所"]}
{"level": 1,"姓名": "牟廷者","手机": "15603043581","地址": ["河北省","保定市","涿州市","码头镇","码头村委会"]
{"level": 1,"姓名": "夹谷转讼","手机": "15826761592","地址": ["上海","上海市","黄浦区","五里桥街道","局门路4号甲桑城居民委员会"]}
六、计算模块部分异常处理说明
由于第一次做这种编程作业,因为前期的许多问题导致最后没时间去整这个异常处理,也就没了。
七、PSP表格
PSP2.1 | Personal Software Process Stages | 实际耗时(分钟) |
---|---|---|
Planning | 计划 | 20 |
·Estimate | 估计这个任务需要多少时间 | 20 |
Development | 开发 | 1020 |
·Analysis | 需求分析(包括学习新技术) | 300 |
·Design Spec | 生成设计文档 | 20 |
·Design Review | 设计复审 | 10 |
·Coding Standard | 代码规范(为目前的开发制定合适的规范) | 20 |
·Design | 具体设计 | 10 |
·Coding | 具体编码 | 360 |
·Code Review | 代码复审 | 120 |
·Test | 测试(自我测试、修改代码、提交修改) | 180 |
Reporting | 报告 | 40 |
·Test Report | 测试报告 | 10 |
·Size Measurement | 计算工作量 | 10 |
·Postmortem&Process Improvement Plan | 事后总结,并提出过程改进计划 | 20 |
合计 | 1080 |
八、总结
一直被编码问题困扰,实在不行了就直接对utf-8编码的字符串进行操作,最后只完成了最简单的一级难度,而且还只是一级难度中只按关键字提取的部分······我寻思着,行吧,就这样吧。结果最后根本评测不了,可是自己本机上运行没啥问题,然后搞性能分析的时候零样本???我人没了。
总之,这次作业遇到了很多问题,原以为算法的考虑是大头,结果被编码给玩死了。网上也找了很多编码的解决方法,但是自己试验时还是乱码了,搞不懂为什么。这次作业结束后,还是多看看大佬们用c++都是怎么写的吧,现在是没时间了,还得做linux作业(推翻项目重来)。
好了,推翻项目重来,编码问题解决了,也能够顺利处理中文了,输出也没啥问题,但是,评测工具报SyntaxError错误???我人没了_
好了,我出分了,37左右。