【第四篇】数独终局

注:此处为拆分内容,可直接看总篇

四.设计实现

2.编码实现

(3)GUI界面设计实现

采用VS下C#窗体应用项目开发。
思路和某些编码方法参考了weixin_40629184的CSDN文章
其中,以TextBox作为数独的格子,装入一个ArrayList中,使在窗体Load时就出现,采用ReadOnly属性实现操作方的填入数字。
设置两个button,分别为“submit”和“start”:
当点击“start”按钮时,以StreamReader从中读入挖空的数组题目,显示之;
当点击“submit”按钮时,将题目提交,根据作答情况有“请作答完毕”、“作答错误”、“作答正确”三类提示。

3.测试

采用如下图所示的方式进行单元测试的组织:UnitTest1
UnitTest2
UnitTest3

五.程序改进

1.代码质量分析

使用VS下质量分析工具,消除所有警告:
quality1

2.性能分析

使用VS下性能分析工具,经过了如下改进:

  1. 将输出先存入buffer数组中:因为对文件的输出需要反复地打开文件关闭文件,这个过程会极大地增加时间消耗,因此采用一个缓冲区进行速度上的优化。
  2. 对数独解的正确性判断采用vis数组进行:这是我经过查阅资料得出的一个判定方法,比起我之前的遍历判断更简洁。
  3. 现在情况:可见,目前主函数占用CPU最多,其次是读写文件的函数,剩余的函数占用CPU比例可忽略不计。
    在这里插入图片描述
  4. 还可以改进的方向:对于解数独,可以根据DLX算法进行进一步的优化。

六.代码说明

1.生成数独

核心部分如下,详见GitHub:
c1

在这里插入图片描述

2.求解数独

详见GitHub:
在这里插入图片描述
在这里插入图片描述
运行结果如下:
在这里插入图片描述

3.GUI

实现结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七.时间统计

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划9030
Estimate估计任务需要多少时间2030
Development开发25001720
Analysis需求分析(新技术)400360
Design Spec生成设计文档6060
Design Review设计复审3010
Coding Standard代码规范1010
Design具体设计300300
Coding具体编码1200600
Coding Review代码复审20020
Test测试300360
Reporting报告4100
Test Report测试报告330300
Size Measurement计算工作量2010
Postmortem&Process Improvement Plan事后总结,提出改进6030
总计30002090

八.个人总结

首先,总体来说:虽然项目的具体编码工作并不很难,网上也有许多可供参考的资料,但是在其他部分,比如单元测试、性能分析等等我以为可以很快完成,因此放在了最后一周以做修缮的部分,却出我意料地花了我很多时间。
其次,从收获来讲:我熟悉了一个项目生成的过程,软件工程≠编码这一理论知识在实践中得到了充分的说明,同时,对CSDN博客的编写和GitHub的具体使用有了更深的理解。尤其是GitHub上传项目,之前我都是直接在网页端操作,之后要上传exe必须进行仓库的合并上传,上传过程中出现了很多阻碍,比如上传后的文件夹是灰色的无法打开、exe文件被忽略没有上传……虽然我的时间统计中时间尚可,但是实际上GitHub上传这种不计入时间的活动也很费了我一番功夫。
最后,从改进来说:其一,我可以进一步了解DLX算法,针对代码进行进一步的优化;其二,我在此处使用的是结构化的分析设计方法,对OOAD几乎没有应用,以后还是要继续改进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值