软工基础个人项目——数独1
GITHUB项目地址:
https://github.com/hhz-hhz/Sudoku_software_engineer.git
零、任务
实现一个能够生成数独终局并且能求解数独问题的控制台程序。
一、需求分析
1、总体要求
2、生成终局
(1)、使用命令行
(2)、将终局用用一个文本文件,下一次的txt文件覆盖上一次的txt文件
类似于下列格式:
(3)、能够处理各种异常
(4)、生成数独矩阵的要求
格式如下:
3、求解数独
(1)、求解的结果形式
(2)、数独题目的格式
(3)、sudoku.txt的格式:与生成终局的格式相同。
(4)、数独题目的个数N(1 <= N <= 1000 000),保证文件中数独格式正确
4、为数独游戏的生成器做一个GUI界面,并附上简单说明(附加)
5、性能要求
6、代码规范要求
二、设计阶段
1、开发时间预估——PSP 2.1 表格
2、解题思路
决定使用C++来完成这个项目。
数独项目可以分为几个部分:
生成终局:
查阅相关资料后,有以下几种方法:暴力回溯法、矩阵转换法、行列交换法、随机化方法等。
打算先尝试使用全排列和行列变换来生成。
求解数独:
参考了网上的资料后,决定先使用深度优先算法dfs试一试
单元测试:
因为不太熟悉单元测试,所以查阅了许多资料,下面这个网站讲的比较清楚: