这个作业属于那个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
作业要求 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 |
作业目标 | 1.学会使用与创建PSP表格。 2.用Java实现代码。 3.性能分析来找出代码中性能瓶颈并改进。 4.使用单元测试对项目进行测试 |
作业正文 | https://www.cnblogs.com/Eternity-5/p/12559842.html |
其他参考文献 | https://www.baidu.com https://github.com/ |
1.GitHub项目地址
https://github.com/Eternity-5/201776492.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 30min | 60min |
Estimate | 估计这个任务需要多少时间 | 48h | 96h |
Development | 开发 | 48h | 90 |
Analysis | 需求分析 (包括学习新技术) | 20min | 30min |
Design Spec | 生成设计文档 | 30min | 30min |
Design Review | 设计复审 | 20min | 20min |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20min | 20min |
Design | 具体设计 | 60min | 60min |
Coding | 具体编码 | 90h | 90h |
Code Review | 代码复审 | 3h | 3h |
Test | 测试(自我测试,修改代码,提交修改) | 60min | 60min |
Reporting | 报告 | 30min | 60min |
Test Repor | 测试报告 | 30min | 30min |
Size Measurement | 计算工作量 | 30min | 30min |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 3h | 3h |
合计 |
3.思路描述
①.百度百科
数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。
②.大体思路
我们所要求是总共包含n个盘面,每两个盘面间空一行,每个盘面中,每两个小格之间有一个空格;待填入的格子用0代替。输入保证有且仅有一个解。首先我们可以一步一步从简到难,先完成三宫格,在一步步进阶。要解决的问题首先是要创造一个盘面,以用于放置数字。
而后就是判断是否满足题目要求。最后输入文件名以命令行参数传入,调用所需函数得到相应的答案。
4.实现过程
整个代码包括Sudoku与Lib两个类。①.Sudoku类主要实现的是对命令行参数传入的判断,在main函数中调用Lib类实现数独的解答。
②.Lib类中有box判断函数,DFS函数以及solve函数。
③.流程图(左图:Sudoku中main函数过程 右图:solve函数流程图)
5.性能分析
性能分析部分还是不太会分析,整体代码中main主函数中的char[]数组花费时间长,要改进的话也是从这方面改进吧,太难了,争取下次改进。
6.单元测试
①部分测试用例
*命令形式输入*用例
②异常处理
*参数异常处理(在cmd中以参数形式输入时,各个参数的异常处理。目标在于实现正确的参数输入)
*文件不存在异常(文件不存在时,无法读取文件)
7.代码说明
*判断填入的数字能否填入该空(对比该空对应的行列宫是上的数字,如果相同则不能填入数字)
*DFS算法填入数字
*solve函数(在文件中读取,写入,调用DFS函数解数独)
8.心路历程
之前看到数独,觉得还不是很难,慢慢能解出来。现在看到要自己搞一个出来,刚开始的时候真的一筹莫展找了百度,查解答过程,查代码思路等等,花了好几天无从下手。。。实在太难了!!!!!!! 怪自己以前没学好,
难受。。。在网上看了一些解答数独的过程,借鉴了好多大佬,可算是搞出来了。虽然有些还没搞出来,但是真的
尽力了!!争取下次改进。对自己最大的收获就是加深了对DFS算法的理解,以及对Java文件的输入输出等等。虽然不
是自己完完整整搞出来的,但是也付出了努力,还是挺开心的,希望以后慢慢能自己解决问题,能力慢慢提上去。