2020寒假作业2

耗尽温柔 提交于 2020-02-18 21:22:02

2020寒假作业(1/2)

这个作业属于哪个课程 软件工程
这个作业要求在哪里 点击前往
这个作业的目标 Git、GitHub使用,代码规范意识,一定的程序设计能力(基于命令行),PSP,以及单元测试和性能分析改进
作业正文 ....
其他参考文献

1.github地址

点击前往

2.PSP表格

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

注:因为代码规范曾写过,所以只是稍加审查修改即可

3.解题思路

首先,我我想到的是分读取文件,然后处理获得的信息,输出三步完成。不过,做这些之前必须先完成命令行参数的处理。

读取文件并不是读取一个文件内容,而是一整个文件夹,所以我先去查了c++关于读取一个文件夹内所有文件内容的相关信息。

要处理信息,先要实现的就是存储读取到的信息。我考虑到的是用一个省份类来封装一个省份的相关信息,然后将其作为省份表类的一个元素,并将读取的信息放入省份表中对应的省份类里

处理部分较为简单,设计一个省份类的友元函数用以分别统计整合各个省当下的疫情情况,统计全国的疫情方式类似。

输出只需要完成两个类的输出进行重定向即可,按照省份拼音排序输出早已在省份表的表中默认设定完毕。

注:

想得很简单,实现起来却是磕磕绊绊.....

4.设计实现过程

tu1

5.代码说明与思路

常量放在最前面,方便修改调整
changliang
获取文件夹中所有文件名,形成vector对象,然后逐一调用读取单一文件的函数进行处理
daima1
命令行参数处理较为复杂,所以我是将其用一个统一的函数调用各个部分的小函数分布处理
daima2
输出方面以命令行参数是否提供相关限制为基准进行输出,因为我设计的地区列表以常量处设计的地区名数组为模板,所以输出时自然是以拼音排序,在找对应城市时也很容易利用循环减少重复性工作
daima3
正则表达式,第一次用,所以找了许久的资料来补充知识。主要用于程序中对读取到的信息加以匹配与获取所需要的省份、人数信息到vector对象中,以方便后续的存储到地区类对象中
match

6.单元测试与截图

7.覆盖率优化与性能测试截图

这里只有性能分析(ps:我没看懂这张图表达了什么意思)
tu

8.代码规范链接

点击前往

9.心路历程与收获

最大的还是,在设计阶段偷懒的时间最终铁定要在编程中补上,而且肯定会花上更多的时间与精力。因为经常会遇到某个方法冗余或者缺失、参数设计有误、函数之间的衔接容易忘记等等的问题。
还有就是c++很多东西都需要自己动手,而我又忘记了不少的内容,使得查资料的此时颇多。
不过,其实最痛苦的并不是出问题,也不是忘记知识,而是...一步错,步步错。最开始因为贪了一个vs无法运行程序,出的问题找不到任何的资料也看不出什么错误,然后在devc++上却可以轻松准确地运行,就选用dev当ide,最后就是...后知后觉,没处去做覆盖率和性能测试..代码拷贝到vs呈现的报错只多不少....
一首凉凉送给自己。。。。
当然,收获还是不小的,例如c++的正则表达式那是真的丰富,而且我又重温了一遍c++的知识,只赚不亏!

10.star和forkd的仓库

①这是关于API的一个工具的仓库,值得参考
SPIR-V Tools
②利用socket技术的既有客户端也有服务器的ue4相关作品
socketio-client-ue4
③利用ue4做的UI显示,应该是属于专门开发出来的东西
BLUI
④使用UE4蓝图制作的宝石游戏(Android,IOS,PC)
GemGame
⑤用ue4制作一个相对完整的UI工程,可以实现手柄和键盘按键导航,以及Ui管理。
UIWithNavigation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!