软件工程第二次作业-个人实战

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的数值被改变的新输出状态,在对得到的棋盘基础上对全局的任意数字进行交换。

对问题进行抽象理解:我的解题步骤

  1. 创建一个棋盘,初始化,未知数值为0;
  2. 自左向右,自上而下搜索数值为0的空格;
  3. 与该空格所在的横向,纵向,所在的九宫格进行比较;
  4. 将符合的数值替换初始的位置数值为0的值;
  5. 重复3、4步骤直至所有值全部为0且满足数独条件。
  6. 输出满足条件的数独。
  7. 在得到的棋盘基础上对全局的任意数字进行交换;
    即可随机构造N个已解答的数独棋盘。

设计实现:

主要涉及以下几个类:Calc(搜索数值为0的空格)、Check(与该空格所在的横向,纵向,所在的九宫格进行比较检查)、IsDone(检查是否满足数独条件)、turn(对得到的棋盘进行全局任意数字的交换)、suiji(产生随机数)、output(输出棋盘);

流程图:

代码说明:

测试运行:

性能分析

总结

这次在软件的使用,包括visual tudio、markdown编辑器、画图软件、GitHub很多都是第一次使用,所以时间比预估的时多很多。经过这次的实训,对上述软件的使用还是有很大的提高。

posted @ 2017-10-09 15:55  风火轮的菜园子  阅读(270)  评论(2编辑  收藏  举报