数独——个人项目(项目地址)

原创 2018年04月16日 23:01:01

一、项目GitHub地址:https://github.com/lc1997622/SudokuProject

二、PSP表格记录

PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划200120
·Estimate·估计这个任务需要多长时间1020
Development开发  
·Analysis·需求分析(包括学习新技术)60120
·Design Spec·生成设计文档200120
·Design Review·设计复审(和同事审核设计文档)//
·Coding Standard·代码规范(为目前的开发制定合适的规范)120180
·Design·具体设计120180
·Coding·具体编码10801200
·Code Review·代码复审20060
·Test·测试(自我测试,修改代码,提交修改)200660
Reporting报告  
·Test Report·测试报告6060
·Size Measurement·计算工作量3030
·Postmortem & Process Improvement Plan·事后总结,并提出过程改进计划180120
合计22602750

三、解体思路:

1、老师限制了可以使用的语言,然后之前看过一点JAVA,就想挑战一下自己,用JAVA写。

2、首先复习了一下JAVA的语法,看在复习的过程中一是复习语法和基础,二是能不能找到一些解体思路。

3、有问题先找搜索引擎,然后去Google了一下,看到一些方法。因为有压力测试,所以算法依旧是核心,权衡之后,生成数独选择随机生成法,自己再优化一下。解数独用了暴力回溯法。

4、其实刚拿到个人项目的时候自己还挺虚的,一是用Java写,没有别人的路可借鉴,遇到什么情况也无法预测,要是写蹦了就更难受了,二是项目的要求是用VS写,我的电脑VS之前删过某个文件,导致不能用了,只能用IDEA。

5、对于性能分析,关键是IDEA能不能做,去Google了一下,有相应的软件和教程,可以实现。

四、实现过程

(吐槽一下,确实坎坷)

  1、函数主体图


  整个项目分为三个模块:输入输出模块,解数独模块,生成熟读终局模块。

2、代码组织

  三个模块分别对应三个类:Sudo(主类)、SudokuPuzzleSolver(解数独)、SudoPuzzleGenerator(生成数独终局)

五、程序性能分析

六、代码说明

1、主类

public class Sudo {
    public static void main()  {


        Options ops = new Options(); //参数设置

        if (输入为c) {
            try {
              
         /**
                 * 建立输入输出类对象
                 * 调用SudokuPuzzleGenerator生成数独
                 */     
} catch () { } }
 if (输入为s) { try {
       /**
             * 建立输入输出类对象
             * 调用SudokuPuzzleSolver解数独
             */                
} catch () { } } }

2、生成数独终局

public class SudokuPuzzleGenerator { //生成数独终局


    public int[][] generatePuzzleMatrix() { 随机生成并返回
        return randomMatrix;
    }

    private int[] buildRandomArray() {

    }


    private boolean isCandidateNmbFound() {
            /**
             * 试着给randomMatrix[row][col] 赋值,并判断是否合理
             */
        
    }

    private boolean noConflict() {
        return noConflictInRow(candidateMatrix, row, col)&& noConflictInColumn(candidateMatrix, row, col)
                && noConflictInBlock(candidateMatrix, row, col);
    }

    private boolean noConflictInRow() {
        /**
         * 因为产生随机数矩阵是按照先行后列,从左到右产生的 ,该行当前列后面的所有列的值都还是0, 所以在行比较的时候,
         * 只要判断该行当前列与之前的列有无相同的数字即可。
         *
         */
     }  private boolean noConflictInColumn() {
      /**
         * 与noConflictInRow(...)方法类似:
         *
         * 因为产生随机数矩阵是按照先行后列,从左到右产生的,该列当前行后面的所有行的值都还是0,
         *
         * 所以在列比较的时候, 只要判断该列当前行与之前的行有无相同的数字即可。
         *
         */
    }

    private boolean noConflictInBlock() {

        /**
         * 为了比较3 x 3 块里面的数是否合理, 需要确定是哪一个Block,我们先要求出3 x 3的起始点。 比如: Block 1
         * 的起始点是[0][0] Block 2 的起始点是[3]][0]
         *
         * ... Block 9 的起始点是[6][6]
         */

    }

}

3、求解数独

public class SudokuPuzzleSolver {

    /**
     * 解数独,并打印结果
     */
    public void solve() {
    }

    /**
     * 解数独
     */
    private boolean solve() {

       
    }

    /**
     * 某一行放置数据是否有冲突
     */
    private boolean isRowSafe(int[][] grids, int row, int value) {
 
    }

    /**
     * 某一列放置数据是否有冲突
     */
    private boolean isColumnSafe() {
   
    }

    /**
     * 每个区域是 3 X 3 的子块,是否可以可以放置数据
     */
    private boolean isSmallBoxSafe() {

    }

    /**
     * 在指定位置是否可以放置数据
     */
    private boolean isSafe(int[][] grids, int row, int column, int value) {
      
    }

}

七、个人总结




版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40315609/article/details/79967815

[高安定PMP远程培训]PMBOK第五版精讲视频教程(下部)

-
  • 1970年01月01日 08:00

个人项目任务--数独

github网址:https://github.com/BITbla/shudu(尚需改进)1、了解PSP的相关资料:个人软件过程(Personal Software Process,PSP)是一种可...
  • BITbla
  • BITbla
  • 2018-03-23 11:27:26
  • 25

软件工程基础课-个人项目-数独

一、项目地址 二、PSP 三、解题思路 四、设计实现过程 4.1 代码风格规范 4.2 函数关系图 五、程序性能分析及改进 六、代码说明 七、单元测试与代码覆盖率分析 八、项目总结 8.1 个...
  • qq_38597315
  • qq_38597315
  • 2018-03-20 22:54:52
  • 144

抄的第一个项目数独游戏

分析下数独游戏的制作过程,数独功能:1.有方格,2.有初始数字,3.点击空白处能填写数字 /*步骤: * 1.定义方格 * 2.画方格 * 3.定义数字 * 4.填写数字 * 5.点击判断 ...
  • hanabc12345678
  • hanabc12345678
  • 2016-12-01 10:28:39
  • 516

软件工程基础个人项目开发——数独

零、说明项目已上传至Github保管并实时更新 Github链接博客将根据开发进程实时更新。一、开发前PSP表格预估 PSP2.1 Personal Software Process Stag...
  • Akai__Shuuichi
  • Akai__Shuuichi
  • 2018-03-21 19:16:08
  • 27

个人项目之数独游戏

1.首先给出我的Github地址:https://github.com/noton-leslie/noton2.时间安排:计划:预计耗时三天任务需要:一周半需求分析:一周生成设计文档:设计复审:30分...
  • qq_41431680
  • qq_41431680
  • 2018-04-15 20:31:46
  • 58

数独项目源码

  • 2014年01月25日 20:16
  • 1.43MB
  • 下载

软件工程基础课-个人项目纪实

个人项目纪实 2018.3.21 Github&Git 2018.3.22 结构分析 2018.3.23 暴力回溯算法 2018.3.24 生成终局OK & 新BU...
  • qq_38597315
  • qq_38597315
  • 2018-03-22 10:50:04
  • 123

个人项目数独

一 项目地址二 PSP三 解题思路四 设计实现过程五 代码说明一 项目地址代码托管在了GitHub上,地址:https://github.com/lll1230/sudoku二 PSP 三 解题思路 ...
  • qq_40799811
  • qq_40799811
  • 2018-04-20 20:21:50
  • 3

个人项目——数独

个人项目——数独先贴个Github地址:https://github.com/SeewoLT/Seewo_Project再附PSP表一份:Personal Software Process Stage...
  • weixin_38366821
  • weixin_38366821
  • 2018-04-23 00:14:32
  • 8
收藏助手
不良信息举报
您举报文章:数独——个人项目(项目地址)
举报原因:
原因补充:

(最多只允许输入30个字)