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

任务:实现一个能够生成数独局并且能求解数独问题的控制台程序。

1、GitHub:https://github.com/MiaoZhou48/SoftwareEngineeringProject

2、时间耗费


PSD2.1

Personnal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning  计划  40  40
.Estimate .估计这个任务需要多长时间    
Development 开发  150  120
.Analysis .需求分析(包括学习新技术)  180  200
.Design Spec .生成设计文档  150  150
.Design Review .设计复审(和同事审核设计文档)  60  60
.Coding Standard .代码规范(为目前的开发制定合适的规范)  60  60
.Design 具体设计  80  80
.Coding .具体编码  1600  1800
.Code Review .代码复审  100  150
.Test .测试(自我测试,修改代码,提交修改)  200  250
Reporting 报告  120  150
.Test Report .测试报告  80  100
.Size Measurement .计算工作量  40  30
.Postmortem & Process Improvement Plan .事后总结,并提出过程改进计划  50  40
   合计  2910  3190

3、解题思路:

  此项目可以细分为两个功能:生成数独、解数独。

  生成数独我考虑采用的是回溯的方法,对残缺数独不断求解,从而得到相应数量的完善的数独。

  确定好方法之后便是漫长的学习之路,参考了相应的回溯算法的博客以及其他算法的数独生成博客。

  在学习过程中也见识到了很多新的思路生成数独,比如说对一个已经合理的数独进行变换,然后判断其在变换之后是否依然是符合数独规范。通过这种方式生成数独,首先会保证结果的互异性,其次相比于回溯不需要大量的计算,节省了大量的时间。

  但是由于已经开始用回溯算法写了,所以之后的改进阶段会再尝试一下敢变思路。

4、设计实现过程

  程序主体是3个函数

  judge():解数独函数中用此函数判断回溯条件。

  solve():具体的解函数本体。

  construct():构建函数。

  封装成函数有利于代码的复用,与此同时提升了程序的简洁性和可读性。

  函数逻辑说明:

  

5、性能改进及思路

6、代码说明(思路解释+注释说明)

7、实际耗时

  具体的时间消耗见最上方的表格。

原文地址:https://www.cnblogs.com/allen-zm/p/8923787.html

时间: 2024-11-08 09:23:21

软件工程基础-个人项目-数独的相关文章

<软件工程基础>个人项目——数独

参见GitHub:https://github.com/1773262526/Software-Foundation.git Personal Software Process Stages         预估耗时(分钟)       实际耗时(分钟)       计划     估计这个任务需要多少时间     开发     需求分析(包括学习新技术)     生成设计文档     设计复审(和同事审核设计文档)     代码规范     具体设计     具体编码     代码复审    

#2018BIT软件工程基础#结对项目:四则运算题目生成

小队成员: 1120161945 雷云霖 1120161949 刘镓煜 一.开发时间 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划     · Estimate · 估计这个任务需要多少时间 5 6 Development 开发     · Analysis · 需求分析 (包括学习新技术) 120 120 · Design Spec · 生成设计文档 120 180 · Design Review ·

#2018BIT软件工程基础#个人项目:数独

一.开发时间 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划     · Estimate · 估计这个任务需要多少时间 5 6 Development 开发     · Analysis · 需求分析 (包括学习新技术) 420 840 · Design Spec · 生成设计文档 120 180 · Design Review · 设计复审 (和同事审核设计文档) 10 20 · Coding Sta

软件工程基础/个人项目1

实现一个控制台应用程序,来统计一个文件夹下的单词频率 要求 1.递归地进行统计 2.统计的文件格式为 .txt , .cpp , .h , .cs 3.单词定义:开头有至少3个英文字母,后面可以追加英文字母或数字 4.分隔符定义:空白符,非英文数字的字符 5.大小写:同一个单词大小写不同不区分开统计 6.输出:输出到 "邮件地址.txt"中 7.输出格式:每一条都形如"单词:出现次数",其中"单词"需要是文件夹下出现过的同一个单词中字典序最靠前的

软件基础个人工程——数独4

GITHUB项目地址: https://github.com/hhz-hhz/Sudoku_software_engineer.git 软工基础个人项目——数独1 软工基础个人项目——数独2 软件基础个人工程——数独3 四.测试阶段 1.同测试设计文档一样对程序进行了测试: 但SolvingSudoku.cpp中: 由于inline bool CheckingForDFS(int n, int key)和inline int SolvingByDFS(int n)都是用了全局数组,所以没有办法对

最佳的项目一定建立在最佳的软件工程基础上的

快速软件开发有几个基本原则:管理原则.技术原则.质量保证原则. 其中和我目前关系较深的是技术原则. 作者在第四章的前段便引用了这句话“最佳的项目一定建立在最佳的软件工程基础上的”. 而我认为我计算机相关的基础都比较薄弱,作者并没有给出软件工程基础相关的推荐书籍. 不知道是否有一些软件工程基础的推荐书籍. 最好是能够相互对照的.

Android基础整合项目之节日群发助手(二)

Android基础整合项目(一) 之节日群发助手part 2 --转载请注明出处:coder-pig 本节引言: 在上一节中我们已经做出了我们群发助手的第一个界面以及完成了联系人的读取以及数据库的 录入了,在这一节中将要完成的工作是: 1)自定义我们的ListView的列表项,两个TextView + CheckBox; 2)使用SimpleCursorAdapter将数据显示到ListView上; 3)实现listview的全选与全不选 4)点击重置按钮后,将数据库中的state都重置为-1

第一部分软件工程基础[专业课考试]

第一部分软件工程基础 考试题型:概念问答题.实践案例题总分:50分一.软件过程软件过程的概念:经典软件过程模型的特点(瀑布模型.增量模型.演化模型.统一过程模型):过程评估与CMM/CMMI的基本概念:敏捷宣言与敏捷过程的特点. 二.软件需求软件需求的概念:需求工程的基本过程:分层数据流模型:用例和场景建模及其UML表达(用例图.活动图.泳道图.顺序图):数据模型建模及其UML表达(类图):行为模型建模及其UML表达(状态机图). 三.软件设计与构造软件体系结构及体系结构风格的概念:设计模式的概

Android基础整合项目之节日群发助手(三)

Android基础整合项目(一) 之节日群发助手part 3 --转载请注明出处:coder-pig 本节引言: 在前面两个章节中我们已经完成了群发助手的读联系人,存取数据库;使用 SimpleCursorAdapter绑定数据库与ListView;实现listview的全选与全不选; 也把需要拨打电话号码的id以list集合的形式通过Intent传送到了第三个界面 今天我们就来完成第三个界面的开发,工作如下: 1)完成第三个Activity的布局 2)解析第二个Activity通过Intent