这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 |
这个作业的目标 | 实现一个命令行程序 |
作业正文 | 如下 |
其他参考文献 | java输入输出流及文件读写详解, 解数独, 一些回溯法解数独 |
地址
一、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 30 |
Estimate | 估计这个任务需要多少时间 | 40 | 60 |
Development | 开发 | 320 | 300 |
Analysis | 需求分析 (包括学习新技术) | 200 | 240 |
Design Spec | 生成设计文档 | 60 | 30 |
Design Review | 设计复审 | 20 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 5 |
Design | 具体设计 | 100 | 140 |
Coding | 具体编码 | 300 | 320 |
Code Review | 代码复审 | 40 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 200 | 360 |
Reporting | 报告 | 60 | 70 |
Test Repor | 测试报告 | 60 | 30 |
Size Measurement | 计算工作量 | 30 | 15 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 10 |
合计 | 1490 | 1660 |
二、思路描述
- 9*9数独玩的挺多的,但是从来没想过用编程的方式来解数独。而我一般解数独的思路就是看哪个格子顺眼就先解哪个,先刷一行,看这9列有没有重复的数,没有填上,依次类推,中间遇到重复的回到上一步重新填其他数。但是看了题之后整个人都是懵的。
计算机不懂我,我也不懂他,还是去网上找了挺多解数独的算法,选了一些看起来蛮简单的,感觉自己可以理解并且可以去试试的。
三、计算模块接口的设计与实现过程
-
看了一下题,3,5,7这三类数独没有宫格,解法相对简单,所以只弄出了这三种,但还是有好大的问题。
大致的思维导图
其中获取输入文本内容并转化为数组:
文本内容输入为:
文本内容的输入输出我记得老师教过,奈何我不记得了,就去网上找了好多资料。
设置了一个check()函数,当该数与所在行或列有相同数时,返回false:
四、计算模块接口的性能改进
- 使用jprofiler进行性能检测
还是不太会分析,但是感觉好厉害的样子。
然后是代码规范问题
五、计算模块部分单元测试
- 1.1cmd输入命令
1.2结果
2.1你以为成功了吗!?看下面!
2.2结果
3*3的3个盘没有异常,盘面大于3就开始存在一点异常了,(连表面都是哭唧唧了)这个异常没有得到处理。
六、计算模块部分异常处理
5阶和7阶的就存在很大异常了,把每一步都打印输出了,然而还是没有解决。
七、总结
呆在电脑面前一直搞这个,搞了很久还是没有得到完善的程序结果,哎,内心一阵悲痛,都怪自己以前没有学好,太难受了。每天就感觉我的头顶阵阵凉风,凉风还越来越猛。其他作业也没怎么动,两边都没完成好,哎,心累。
但是真正学到(fuxi)了的知识就是文件的输入输出流了,这个还算是一点收获。虽然说这个程序不全是自己搞出来的,但是也还是付出了时间和努力,能够自己写出一点点也是很开心的,希望逐渐可以自己解决问题,早日跟上队伍!