第一次个人编程作业

GitHub个人仓库

psp表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划4580
Estimate估计这个任务需要多少时间9001200
Developm开发400500
Analysis需求分析(包括学习新技术)100300
Design Spec生成设计文档3030
Design Review设计复审1010
Coding Standard代码规范(为目前的开发制定合适的规范)1010
Design具体设计40100
Coding具体编码180500
Code Review代码复审1030
Test测试(自我测试,修改代码,提交修改)60120
Reporting报告6060
Test Report测试报告1010
Size Measurement计算工作量3030
Postmortem & Process Improvement Plan事后总结,并提出过程改进计划3030
合计19153010

接口的设计与实现

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

    1331361-20190919004256572-977936874.png

接口性能

1331361-20190918120354566-1952495092.png
1331361-20190918120404505-638975598.png

  • 这张图里可以看出我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京台高速合肥市庐江县广寒桥街道"]}]

异常处理

1331361-20190918163045815-1845369886.png
1331361-20190918163054426-1942105104.png
1331361-20190918163127342-841855942.png

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

个人总结

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

转载于:https://www.cnblogs.com/fzuzb/p/11536203.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值