作业四:结对编程——四则运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作业四:结对编程——四则运算相关的知识,希望对你有一定的参考价值。

项目名称:结对编程——四则运算(GUI)

同学小伙伴:张富彬

博客园地址:http://www.cnblogs.com/legend07/

GitHub代码地址:https://github.com/8561549/Arithmetic2.0/tree/master/Arithmetic2.0

需求分析:

  首先是实现GUI的界面设计,主要有两个窗体,一个窗体进行参数设计,另一个窗体负责显示题目。两个窗体之间实现自由跳转。在参数设置窗口可以获取各个控件中的信息,能对出题窗口的出题情况进行限制,其中包括题目数量的设置,题目数值的设置,每道题目运算符个数的设置,分数模式的设置,算式中运算符的选择。在答题界面中需要可以显示出题题目,答题栏,每道题的正确答案,可以对用户的答案进行判断,可以清空历史的出题情况与答案,将错误的题目生成TXT格式的文档以供查询。

具体功能实现:

  在拿到题目时我们两个人已经有了大概的思路(因为上次作业做了控制台版本的四则运算),由于上次作业没有限制编程语言,我的小伙伴选择了使用比较熟悉的C语言进行编写,而我则选用了刚刚学过的C#语言进行编写。由于这次要求GUI的界面进行编程,所以我来主导编程,选用了我的思路进行设计。

界面设计

  最初的想法我们打算以答题窗体作为主窗体来设计,在菜单栏中进行参数的设计,每次点击菜单栏中的选项会跳出新的窗口进行参数设置,于是我们有了如下图所示的Arithmetic1.0界面:

技术分享

  下面是各个子窗体的界面:

技术分享

技术分享

技术分享

  在Arithmetic1.0的编程过程中我们在实现了部分功能的时候才发现,看似简单的各个窗体之间参数的传递就成了一个很麻烦的问题,例如我们在从一个窗体中得到参数时其窗体就不能正常关闭,如果再次打开这个窗体进行设置值时就会出现以下的问题:技术分享

  在进行一番讨论与百度后发现是因为之前新建的窗体没有得到资源释放导致的,于是我们着手处理这个问题,可是在解决了释放问题之后又出现了新的问题,就是程序窗体中的值传不过来了......于是我们只能放弃拥有了2天生命周期的1.0窗体!这样我们迎来了一个新的版本——Arithmetic2.0(学聪明了,就俩窗体!先进行参数设置再传递到下一个窗口进行出题~)窗口界面如下面的图片所示:

技术分享

技术分享

参数设计

  由于使用C#语言进行编程,所以不能直接使用省事儿的全局变量,只好做了一个容器来装所有我们程序中要用到的变量!于是乎采用一个类来装我们接下来要用的变量,同时这样的好处也更方便我们进行管理设置。

技术分享

  其中大部分的变量的值都是在设置窗口中得到的,我们采用了不同的控件来获得不同的参数值,其中题目数量、运算符个数、数值范围采用TextBox控件来获取,在这些TextBox加了KeyPress事件,只能从接收数字、退格、负号这些符号,同时也对位数进行了限制,这样就能控制数值的溢出。而运算符选择、是否包含分数、是否包含括号采用了CheckBox控件与RadioButton控件来实现,用CheckedChanged事件来进行数值设置,不同的模式有不同的编号,通过这些编号控制一些数值的改变来实现不同模式的功能。

技术分享

功能实现

  不同的功能都通过单击答题窗口的不同按钮来实现的。于是将每一个功能的实现放在了各个按钮的单击事件中,如下图所示:

技术分享

  在程序生成题目的同时会将每一个题目的答案装进一个数组当中,在答题栏中每一行对应行出题的答案,输入的答案会记录在另一个数组当中,当用户单击判断按钮时将会对两个数组进行比对,如果两个数组的相同序号的位置的值相同就将会在正确题目数目这个变量+1,在答题窗口的左下角会显示你所答对的题数。在进行判断的同时我们会将做错的题目存在一个数组当中,当用户单击错题本时会将错题数组导入到一个TXT格式的文档中并打开。

  程序的功能进行了封装,主要涉及到输出的部分,以及运算式结果的计算部分。将这两个部分做成了两个类,在各个功能实现时进行调用。

   测试效果如下所示:

技术分享

附加题:

  由于刚刚开始练习使用单元测试对程序进行测试,花费了很多的时间去了解如何测试最后只是做了一个简单的整数加法的测试,不知做的对还是错,如果有问题请助教老师指出来,我会认真学习改正的!测试截图与测试代码如下所示:

技术分享


总结反思

  首先在程序方面还存在着许多的问题,有许多Bug需要解决(/(ㄒoㄒ)/~~)例如在分数求计算值时各种中断错误,所以如今还在优化当中!同时我们这次作业会接着做下去,希望老师持续关注。^_^

  在这次结对编程的过程中我负责的部分主要是核心代码的编写,我的小伙伴负责帮我查找一些在各种所需要的资料以及GUI的界面设计,我合作的还是比较愉快的,如果有下次的结对机会我们会互换一下各自的工作,由他来负责主要部分,而我来负责其他部分,每个人都可以有发挥的机会!

  我的小伙伴的优点有很多,在编程的时候很积极,在解决问题的时候他总能很快的找到解决方案,可以看出他经常会逛一些与我们专业相关的论坛,同时他的思维也很开阔,总能有一些新奇的想法可以解决我们所遇到的问题。缺点的话就是对算法不是很精通,数据结构部分比较薄弱。

  结对编程在我看来是十分有趣的,两个人使用一台电脑,一人操作,在不同的沟通交流中可以互补的解决问题开拓思路,在解决问题时会更加全面,可以发现一些潜在的问题。但是缺点也是比较明显的,还是学生的我们时间上不会有太多的统一,以致于两个人在这个工作的过程中比较少的进行集中。其次两个人共用一台电脑的情况下效率是比较低下的。

 

以上是关于作业四:结对编程——四则运算的主要内容,如果未能解决你的问题,请参考以下文章

结对编程项目作业1

结对编程1需求分析

作业四--结对编程四则运算

作业四: 结对编程项目---四则运算

作业四——结对编程四则运算

作业四: 结对编程项目---四则运算