2020软件工程作业03

|这个作业属于哪个课程|https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
--|:--😐--:
|这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494
|这个作业的目标|数独编程测试
|作业正文|https://www.cnblogs.com/ynzj123/p/12593170.html
|参考文献|www.baidu.com

1.Github 项目地址:https://github.com/yinianzhijian1/20177676

2.PSP 表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 15 30
Estimate 估计这个任务需要多少时间 300 720
Development 开发 10 50
Analysis 需求分析 (包括学习新技术) 20 40
Design Spec 生成设计文档 20 30
Design Review 设计复审 30 15
Coding Standard 代码规范 (为目前的开发制定合适的规范) 50 50
Design 具体设计 80 220
Coding 具体编码 120 140
Code Review 代码复审 30 30
Test 测试(自我测试,修改代码,提交修改) 40 80
Reporting 报告 30 60
Test Repor 测试报告 30 60
Size Measurement 计算工作量 10 20
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 60
合计 315 750

3. 解题思路

看到作业题目的时候是一脸懵,然后开始搜资料,看了很多个博客,才对数独有点了解,然后开始构思,想着从三个宫格开始填数字。他的要求是在 9 * 9 的宫格中,填写的数据为 1-9,每行不能重复,每列也不能重复,组成的9个小宫格中也不能重复。所以我们可以创建一个数组让for循环帮我们去遍历可以填的数字,然后命令行输入参数的形式输入,文件输出。(其实我也有点晕。。)
优势:有友好提示,对找不到文件,或者阶数不对,都会有try catch处理;代码比较简单,都是用了很简单的函数像是fileReader等;变量名通俗易懂,像是phraseWordNum表示有m阶,inputFileName表示输入的文件等。
流程图:

4. 设计实现过程

用cmd运行指令

然后得到了数独结果

5. 改进程序性能


从趋势图看,我们的cpu负载一直没有超过20%,最高峰的有两个参数,绿色的代表进行占用的负载为0%,系统占用的为25左右%,这说明目前应用cpu负载没问题.


绿色是空闲的大小,蓝色是已使用的大小,一半蓝和一半绿代表已经提交的内存大小,绿色和蓝色相差高度很高,这说明内存性能很好

图中看出"char[ ]"用的最多,数量26958,大小2389648kb。可以改进,优化算法,然后减少字符的创建。
看代码看了近一个小时,觉得代码写的很规范,导包没有用*号;= 的左右会空格;也有try catch对-m数据不对,没找到文件的处理;用if输出指令格式不对的提示;boolean进行行列的判断。我觉得我暂时找不到代码的问题,它现在可以满足编程需要,不用改进了。

6. 代码说明


创建数字和必要的量
inputFileName是输入的文件,outputFileName是输出的文件,sudoku[][]用来存放数独的数据,phraseWordNum表示有m阶,sortedPrintNum表示待解答盘面数目。


读入文件写入数组循环
用FileReader()读取输入文本的内容,FileOutputStream()写输出文本内容,用多个for循环实现数字的写入。


异常处理
当报错FileNotFoundException e1时会提示未找到指定文件。


值的判定
用for循环,进行多次if的值的比较(-i -o -m -n)。


行判断
用for循环,然后判断行是否到了m个,然后结束。

7. 心历路程与收获

写这个作业经历了很多,这两天一起床就开始做蹲在电脑前查资料,可以说是一种废寝忘食的认真程度。本来想用vs code查了资料,又觉得Java更好,下载了三遍,终于下好了idea(第一遍是下了zip不会安装,第二遍是下载了收费版装不了)。然后查找代码的算法和资料,又去找怎么用jprofiler怎么性能测试资料。。。
把上节课的代码测试和github给复习了一遍,加深印象。可以说下次作业都可以在心里有明确的行动指导,而不用去查这么多资料。还学习了数独的代码收获很多!

8.总结:

做完作业,觉得还是挺难的。首先是这个题目比以前做的要难一些,然后需要对代码做性能分析和改进。最主要的事代码难,以至于后面的进程这么慢,还要加油,把Java学的更好,就可以更快做完作业了!
最后作业写的并非理解透彻,但是我至少发现原来我可以在几天之内不休息,一直努力的做一个目标,一件事情。(后果就是手指抽筋,手臂痛,背痛,头晕,哈哈!)

posted @ 2020-03-29 19:44  ping4  阅读(205)  评论(0编辑  收藏  举报