2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 设计过程(概要设计和详细设计)

设计过程(概要设计和详细设计)

时间:2024-06-15 07:55:06

相关推荐

设计过程(概要设计和详细设计)

没有优化前的设计过程

该程序的核心思想是设计一个Sudoku的类.

Sudoku类

它包含如下变量:

它包含如下成员函数:

SudokuGUI类

它包含如下变量:

它包含如下成员函数:

命令程序流程:

程序流程和函数之间的关系:

命令程序:

1.程序初始化,进入主函数.

2.检查指令.

程序调用check_argument函数检查指令是否错误:

(1)若指令有错结束进程

(2)若是生成终局的指令,返回要生成的终局数量

(3)若是解数独指令,返回0;

3.判断返回值:

(1)若返回值num大于0,调用CreateSudokuN函数生成num个终局转4.

(2)若返回值为0,调用SolvSudokuN函数执行解数独转5.

4.在CreateSudokuN函数中循环生成num个数独终局并写入sudoku.txt文件.生成一个数独终局.

(1)首先要初始化一个Sudoku类.

(2)然后调用Sudoku.Create函数生成一个数独终局,该函数会调用Sudoku.dfs函数进行深搜生成每一个格数字.

(3)最后调用Sudoku.FillFile函数写入相关文档中.

5.在SolvSudokuN函数函数中,循环读取相关文件中的数独残局,并解数独.

(1)首先调用sudoku.GetFile函数,根据残局生成一个Sudoku变量.

(2)然后调用Sudoku.Solv函数对残缺的空位进行深搜填入数字.

(3)最后使用Sudoku.FillFile函数写入相关文档.

GUI界面:

1.界面初始化.:

(1)一个tableWidget控件和三个button控件.

(2)分别使用connect函数:

a.将开始按钮的点击信号与FillSudoku函数连接.

b.将提交按钮的点击信号与SubmitSudoku函数连接.

c.将退出按钮的点击信号与close函数连接.

d.将棋盘表格控件的单元格改变信号与ChangeSudoku函数连接.

2.点击开始游戏按钮,触发信号槽,根据connect函数,调用FillSudoku函数:

(1)解除棋盘表格控件的信号,防止反复调用.

(2)调用sudoku.Creat函数创建一个数独终局.

(3)调用sudoku.GeneratingEndgame函数在终局的基础上,生成一个残局.

(4)根据此时的sudoku变量,填入棋局.

(5)重新连接棋盘表格控件的信号.

3.点击提交按钮,触发信号槽,根据connect函数,调用SubmitSudoku函数:

(1)调用sudoku.Check函数检查提交的数独是否成功.

(2)成功,调用sudoku.Clear()清空棋局.

(3)失败,则选择是否继续,不继续则调用sudoku.Clear()清空棋局.

4.点击退出按钮,触发信号槽,根据connect函数,调用close函数,退出程序.

用例建模

静态建模

类-对象层、属性层,服务层同上.

结构层:

动态建模

状态图

重新优化后设计修改

Sudoku类

它包含如下变量:

它包含如下成员函数:

命令程序流程:

程序流程和函数之间的关系:

命令程序:

1.程序初始化,进入主函数.

2.检查指令.

程序调用check_argument函数检查指令是否错误:

(1)若指令有错结束进程

(2)若是生成终局的指令,返回要生成的终局数量

(3)若是解数独指令,返回0;

3.判断返回值:

(1)若返回值num大于0,调用CreateSudokuN函数生成num个终局转4.

(2)若返回值为0,调用SolvSudokuN函数执行解数独转5.

4.在CreateSudokuN函数中循环生成num个数独终局并写入sudoku.txt文件.生成一个数独终局.

(1)使用swap随即打乱1-9基础数列

(2)然后使用Perm函数寻找这个数列不重复的全排列.

(3)在初始化一个Sudoku类.并使用Sudoku.GetBase获取这个全排列作为生成终局的基础.

(4)然后调用Sudoku.Create函数生成一个DFS基础数独,该函数会调用Sudoku.dfs函数进行深搜生成每一个格数字.

(5)继续用Sudoku.rowExchange和Sudoku.colExchange在DFS基础数独的基础上进行行列交换,生成2!* 3!*3!*2!*3!*3!个数独,并使用Sudoku.GetArry写入char *wfile中.

(6)若没有完成数独数量,转(2)继续生成下一个全排列.

(3)最后使用fprintf将wfile写入文件.

5.在SolvSudokuN函数函数中,循环读取相关文件中的数独残局,并解数独.

(1)首先调用sudoku.GetFile函数,根据残局生成一个Sudoku变量.

(2)然后调用Sudoku.Solv函数对残缺的空位进行深搜填入数字.

(3)最后使用Sudoku.FillFile函数写入相关文档.

GUI界面不变同上

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。