软件工程个人项目-数独
一.项目的Github地址链接:
https://github.com/tarxs/sudokuproject
二.psp预估耗时表格:
五.性能测试、瓶颈及改进:
在完成初版的代码后,我使用vs自带的性能分析工具进行性能测试。分别测试生成1e6个数独和解1000个空很多的数独。
生成数独花了76s,发现其中96%的时间都是花在打印(性能瓶颈)上了。经过上 查询资料后发现,对文件的输出需要打开文件,反复的打开文件关闭文件,并向文件中输出这个过程会极大的增加时间消耗,故后来我采用了一种可以一次性输出所有结果的方法:将所有生成的数独终局以一个字符串的形式存在一个极大的字符数组中,最后一次性输出到文件中。对改进的生成数独的代码做性能测试,对于生成1e6的数独,需要3.8s。此时,next_premutation这个c++库函数花去了最多的时间
耗费时间最多的自然是回溯的部分。
六.测试:
1.对命令行进行测试(这里我直接改变vs中属性页中命令的调试参数,就不用麻烦地输入命令了)
(1)命令的字符串个数不是3
2.对生成数独进行测试
(1)生成1个数独
七.代码说明:
1.生成数独:
2.解数独:
八.实际使用时间和预估时间对比psp表格:

九.心路历程与收获:
其实一开始听到这个项目的时候是很绝望的,感觉自己什么也不会,一拖再拖。不过真正静下心来开始做,我发现有些困难还是可以克服的。不停学习新的东西,并且问东问西,下载各种软件令人头疼。最后我还是用c的思想而不是面向对象来写程序了,以后还要多锻炼,使用c++的能力。编代码的过程大致就是看 上各种各样的代码,然后自己思考整个思路开始编代码。问题出现在自己以前从来不用vs,所以很多流程很多功能很不熟悉。具体编代码的问题是以前就对文件的读写很不熟练,这次也一样,那个在文件里换行的问题大概占我编代码时间的一半了,好在最后问了同学,知道了fopen_s这个函数。至于单元测试,因为这些函数大多都是void类型很难进行单元测试,于是我用了手工测试的方式,以后还是要学习如何使用单元测试。
从这次项目里我学习到了如何使用github,如何使用vs,体验了整个软件项目的全部流程。其中我觉得最有用的一个就是vs自带的性能分析了,这样就可以很轻松的知道你的代码会跑多长时间,并且知道你哪一部分花的时间最长,从而进行改进。除此之外,我感觉自己的耐挫折能力也有了增强。
最后感谢老师和 上各位大神以及我周围同学对我的帮助,如果不是老师,我可能很长时间也不会体验到这种项目的流程,也不能学习很多东西,如果不是同学们,我觉得自己绝对做不下来这个项目。前路还长,我知道我还有很多东西要学,很多事情要经历。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!