Github项目地址:https://github.com/zlxzlxzlx/shudu
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 60 |
· Estimate | · 估计这个任务需要多少时间 | 120 | 160 |
Development | 开发 | 100 | 140 |
· Analysis | · 需求分析 (包括学习新技术) | 20 | 40 |
· Design Spec | · 生成设计文档 | 30 | 20 |
· Design Review | · 设计复审 (和同事审核设计文档) | 10 | 10 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 20 | 20 |
· Coding | · 具体编码 | 60 | 80 |
· Code Review | · 代码复审 | 20 | 40 |
· Test | · 测试(自我测试,修改代码,提交修改) | 10 | 20 |
Reporting | 报告 | 10 | 10 |
· Test Report | · 测试报告 | 10 | 10 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
合计 | 470 | 640 |
解题思路:
项目需求
利用程序随机构造出N个已解答的数独棋盘 。
算法描述如下:
- 算法输入:一组数值,未知数数值为0;
- 算法输出:一组经过运算过后的数独,原始值为0的数值被改变的新输出状态,在对得到的棋盘基础上对全局的任意数字进行交换。
对问题进行抽象理解:我的解题步骤
- 创建一个棋盘,初始化,未知数值为0;
- 自左向右,自上而下搜索数值为0的空格;
- 与该空格所在的横向,纵向,所在的九宫格进行比较;
- 将符合的数值替换初始的位置数值为0的值;
- 重复3、4步骤直至所有值全部为0且满足数独条件。
- 输出满足条件的数独。
- 在得到的棋盘基础上对全局的任意数字进行交换;
即可随机构造N个已解答的数独棋盘。
设计实现:
主要涉及以下几个类:Calc(搜索数值为0的空格)、Check(与该空格所在的横向,纵向,所在的九宫格进行比较检查)、IsDone(检查是否满足数独条件)、turn(对得到的棋盘进行全局任意数字的交换)、suiji(产生随机数)、output(输出棋盘);
流程图:
代码说明:
测试运行:
性能分析
总结
这次在软件的使用,包括visual tudio、markdown编辑器、画图软件、GitHub很多都是第一次使用,所以时间比预估的时多很多。经过这次的实训,对上述软件的使用还是有很大的提高。