第一次个人编程作业

GitHub个人仓库

psp表格

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

接口的设计与实现

  • 我是用c++文件来完成这个作业的,不得不说,c++语言才是万能的(滑稽)。
  • 这次的任务,我使用了多文件编程的方法,我的文件有两个cpp文件完成,一个是solve.cpp文件,还有一个是main()的cpp文件。
  • main()主文件里的函数有UToG()函数,这个函数的主要功能是将UTL8的编码文件转换成GBK的编码格式,这一步是开头最重要也是最关键的一部分。除了这个函数以外,整个项目因为涉及到很多对中文字符的处理,所以基本都和宽字符分不开关系,所以代码里会有大量宽字符的处理。
  • 开头的部分处理完以后,在main()函数里第一步先进行名字和电话号码的处理,将名字和电话号码的宽字符串提取出来。
  • 然后再在solve对处理过的地址信息进行省市县的匹配,并用一个ct[ ]宽字符串数组存储它们的信息。
  • 最后再返回到main()函数里输出,注意此时的输出必须要经过特殊处理的输出文件方法转换成UTL8编码形式以json格式输出。但是后来发现要输入多组输入后,输出有了些问题,就是txt输出文件只能输出一组最后的结果,然后只能被迫把solve文件的方法转到main()函数里了,不过solve.cpp如果要用还是可以被调用的。
  • 流程图

接口性能


  • 这张图里可以看出我cpu占用资源比例最大的还是main函数,如果是用solve文件的话估计主体资源占比最大的应该是solve.cpp,改进的话,暂时没有特别的想法,但是如果可以的话我还是想去尝试实现用solve.cpp文件或其他的更多函数做更多事情。

单元测试

输入

2!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.
1!张三,福建福州闽13599622362侯县上街镇福州大学10#111.
2!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.
1!小陈,广东省东莞市凤岗13965231525镇凤平路13号.
1!鲁胞,上海市长宁区周家桥街道长宁18951233466路999号春天花园.
1!臧街经,北京市东城区北新桥街道东直门内大街民安小区8号楼15679601503.
1!双韵,安13575634949徽黄山市歙县雄村镇006县道与G56杭瑞高速歙县雄村乡防保站.
1!苗朽蕾,13884441418湖北省孝感市云梦县方庙村村委会.
1!诸葛宁盛,河南焦作市山阳区定和街15613629652道塔南路287号新兴日化.
1!冯昔唉,安徽省合肥庐江县郭河镇G3京台高速合肥市庐江18835354291县广寒桥街道.

输出

[{"姓名":"李四","手机":"13756899511","地址":["福建省","福州市","鼓楼区","鼓西街道","湖滨路","110号","湖滨大厦一层"]},{"姓名":"张三","手机":"13599622362","地址":["福建省","福州市","闽侯县","上街镇","福州大学10#111"]},{"姓名":"王五","手机":"18960221533","地址":["福建省","福州市","鼓楼区","","五一北路","123号","福州鼓楼医院"]},{"姓名":"小陈","手机":"13965231525","地址":["广东省","东莞市","","凤岗镇","凤平路13号"]},{"姓名":"鲁胞","手机":"18951233466","地址":["上海","上海市","长宁区","周家桥街道","长宁路999号春天花园"]},{"姓名":"臧街经","手机":"15679601503","地址":["北京","北京市","东城区","北新桥街道","东直门内大街民安小区8号楼"]},{"姓名":"双韵","手机":"13575634949","地址":["安徽省","黄山市","歙县","雄村","镇006县道与G56杭瑞高速歙县雄村乡防保站"]},{"姓名":"苗朽蕾","手机":"13884441418","地址":["湖北省","孝感市","云梦县","方庙村","村委会"]},{"姓名":"诸葛宁盛","手机":"15613629652","地址":["河南省","焦作市","山阳区","定和街道","塔南路287号新兴日化"]},{"姓名":"冯昔唉","手机":"18835354291","地址":["安徽省","合肥市","庐江县","郭河镇","G3京台高速合肥市庐江县广寒桥街道"]}]

异常处理



  • 要处理的部分主要是两个,一个是UToG()函数部分要去修改部分参数来转码成能用的GBK编码,因为UtoG()函数的模板来自网上,因此在一开始修改的时候改了好几次都没有办法输入正常的文字,在试了多次加上大佬帮助才改好函数。另外就是按json格式输出了,也是当时让我头疼的点,因为输入的问题,导致我重新把输出格式改了多次才对应上题目要求的多样例输入。

个人总结

  • 通过这次实践,我发现了自己个人的种种不足,个人感觉这次作业对自己来说还是偏难的,一开始对java和c++这两者之间徘徊不前,对java一知半解的我最后还是不得不选择了c++,但是摆在面前的就是一道大坎,文件怎么从utf8输入到程序里操作,在经过宿舍大佬和网上查资料后才勉强解决。解决这一道坎后的编程相对会简单一点,但最后要完成输出时,才发现同时有多道数据输入,然后又是各种的修改,最后不得不对代码进行大规模的改动,废弃了solve.cpp。总的来说,虽说多少还是学到了点东西,但是,这个作业,规模还是有点大,时间也有点紧,要学的东西太多了,在那么赶的时间下去学,学习效果不是很好,多数还是只学到了一些皮毛。
posted @ 2019-09-17 18:59  kingbob  阅读(222)  评论(3编辑  收藏  举报