2020软件工程03
软件工程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10408 |
作业目标 | 个人编程完成数独 |
作业正文 | 见下文 |
其他参考文献 | 百度,博客园,CSDN |
1,
GUTHUB地址,GUTHUB注册出现错误,没注册成功。
2,
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 10 |
Estimate | 估计这个任务需要多少时间 | 500 | 300 |
Development | 开发 | 200 | 30 |
Analysis | 需求分析 (包括学习新技术) | 300 | 30 |
Design Spec | 生成设计文档 | 40 | 60 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 | 10 | 0 |
Design | 具体设计 | 10 | 5 |
Coding | 具体编码 | 60 | 10 |
Code Review | 代码复审 | 20 | 0 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 30 |
Reporting | 报告 | 30 | 30 |
Test Repor | 测试报告 | 30 | 30 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 0 |
合计 | 1280 | 555 |
3,解题思路
一开始拿到题目的时候我的想到的是小时候买的杂志上有这种九宫格的数独题目,我经常做,但是对于编程,我是懵了的,不知道从哪里下手,后来查看资料后对于解题思路的第一个想法是生成随机数,从第一行开始,0~9不重复随机数。下面行如果遇到重复就从重新生成,如果遇到整行不可行,就整行开始重新生成。
4,设计实现过程
设计代码有三个函数:Core,IsRight,Print。Core函数是核心函数用来生成每个位置的随机数,每次从1~9中取出一个数放到当前位置,并通过IsRight函数来判断是否可行;IsRight函数用来判断随机数在相应位置是否可行。
流程图
5,代码说明
主函数中next_permutation函数来给出不会重复的全排列。
Core函数在1,2,3,4,5,6,7,8,9中随机选一个数并用过IsRight判断,若9个数都不行就舍弃这个数独。
6,性能测试
看不太懂,看上去Core比IsRight占的比例多。
7,心路历程与收获
刚开始看到这个作业是懵逼都,什么都不会,真的什么都不会,然后就去百度,看老师给出的要求,然后开始做,但是我实在写不出代码,Github的注册也出问题,拿着电脑搞了好久,没有一点点进展,然后只能去网上找代码,找方法,看解析,找过程。然后最后完成了这个我并没有弄懂的作业。收获的话,具体说不上来,但是毕竟花了这么多时间,应该有一些潜移默化的收获。
自评表
学号 | 姓名 | 作业头 | GitHub项目地址 | 代码要求经过凑得工具的分析消除警告 | PSP表格 | 解题思路描述 | 代码如何组织 | 关键函数流程图 | 单元测试的设计 | 找出性能瓶颈 | 改进 | 显示关键代码 | 解释思路与注释说明 | 心路历程和感想 | 总分 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2分 | 1分 | 2分 | 1分 | 1分 | 0.5分 | 1分 | 0.5分 | 0.5分 | 0.5分 | 0.5分 | 0.5分 | 1分 | 12分 | ||
20177636 | 刘良强 | 2 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0.5 | 0.5 | 1 | 8 |