2020软件工程作业03

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/
这个作业要求在哪里? https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494
这次作业的目标? 完成Sudoku
作业正文
其他参考文献 www.baidu.com
https://www.cnblogs.com/lohh/p/11557591.html
https://github.com/huchengyu123/031401402

1.Github项目地址

https://github.com/Iyamaya/20177709

2.PSP表格

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

3.思路描述

1.看到题目后感觉就像是升级版的迷宫,从判断相邻格子的状态进阶成了一横一数一宫,所以打算就在迷宫的基础上增加功能。
2.数独游戏规定在每个位置上的数在列和行上不能重复出现,在4、6、8、9阶的数独表中,每个小宫格内不能有重复的数出现。
3.用cmd命令行的形式读出写入文件,并传入参数。
4.读取命令行和解析文件那里不会,要去网上看别人写的来学习。


4.实现过程

  • 代码如何组织:

    • 主函数
    • 读取命令行参数+分析参数模块
    • 递归模块
    • 输出模块
  • 函数:

    • main(args[])
      • 读取文件并分析
    • load(args[])
      • 接受命令行参数并分析
    • print(int n, int l, int[][] temp, int z)
      • 判断是否继续递归
      • 输出结果
    • sudoku(int[][] a, int n, int l)
      • 回溯法求解数独
    • check(int[][] a, int i, int j, int k, int l)
      • 判断在坐标(x,y)的位置上插入k,是否符合上规则
      • 宫的判断
    • PS : main()与load()均出自:https://github.com/huchengyu123/031401402 感谢!
  • 关键函数流程图:
    2020软件工程作业03_第1张图片

  • 单元测试:

    2020软件工程作业03_第2张图片

因为莫名的BUG,导致有时候不能计算多个,IDEA背锅

2020软件工程作业03_第3张图片

特殊情况的测试

2020软件工程作业03_第4张图片

5.性能分析

2020软件工程作业03_第5张图片

2020软件工程作业03_第6张图片

2020软件工程作业03_第7张图片

不会用jprofiler,因为是收费的所以还没等我研究到位就不让我用了。

2020软件工程作业03_第8张图片

6.改进程序性能上所花费的时间,改进的思路。

  • 将重复的代码集中到一个函数里
  • 使用arraycopy代替循环

7.代码说明。

SUDOKU()
2020软件工程作业03_第9张图片


CHECK()
2020软件工程作业03_第10张图片


PRINT()
2020软件工程作业03_第11张图片


8.心路历程与收获。

基本语法没有问题,但是常用类很不熟练,有些基础知识也不记得了,花了很多时间查资料,导致效率极其低下,这一次作业做完也算学到了不少新东西和新操作,对自己的编程能力还是很有帮助的,要勇于挑战bug这样才能不断突破自己!


你可能感兴趣的:(2020软件工程作业03)