第三次作业 结对编程 (小神童数学测试系统)

一 需求分析

本次我们做的程序依旧是数学的四则运算,但是进行了部分的增量开发,接下来,我们谈谈这个程序的相关需求,此程序是一个1—10的四则运算,那么可以想到主要用于小学生,(ps 个人想法,不排除其他高年级的使用,因为用户可以输入任意的随机数范围),此外,本程序还可能会出现在家庭、教育机构和部分教学网站上面,因为他们可能会给学生出一些简单的数学题目,可以自由设置测试时间,题目数量等内容,而这一程序正好解决了这一个问题,我想,产品的需求必须首先知道用户需要什么,要以客户为中心。而这个产品正好解决了这个问题。所以,我感觉这个产品的需求应该挺不错的。

二 设计思路

1 用户第一步可以先自由设定题目的数量,测试时间,随机数产生的范围等(也是增量内容的全部),这样做的目的不仅使客户完成了测试,最主要的是可以自由设置相关内容,更加适合不同层次的客户。

2 如果用户没有进行相关内容的设置,(PS题目数量用户不设置也可以进行下一步)那么系统会自动进行提示,这样可以使软件与客户的交互性更强,进而更加符合用户的使用习惯。

3 如果用户相关内容设置完毕,并且点击计时开始按钮,系统会根据用户设定的相关内容,自动产生符合用户的随机数、题目数量和测试时间等,并且调用用户选择的一种计算方式,并且进行相关的计算

4 当用户设置的测试时间或者题目数量进行完毕时,那么系统会自动给出提示,并且统计和显示出来题目总数,题目正确数,题目错误数,题目正确率等内容。(ps 当然用户自行点击结束时,也可以给出来相关提示)

三 代码书写

form1代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace sizeyunsuan
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static int count = 0; //定义题目总数,正确数,四则运算的变量
        public static int right = 0;
        public static int sum;
        public static int lefttime;
        public static int m1, m2;
        public void RandomNum() //定义随机产生随机数的方法
        {
            try
            {
                Random ran = new Random();
                int n1, n2;
                m1 = Convert.ToInt32(textBox5.Text);
                m2 = Convert.ToInt32(textBox6.Text);
                n1 = ran.Next(m1, m2);
                n2 = ran.Next(m1, n1);
                textBox2.Text = n1.ToString();
                textBox3.Text = n2.ToString();
                textBox4.Text = "";
            }
            catch (Exception ex)
            {
                MessageBox.Show("请输入数值范围");
            }
        }
        private void button1_Click(object sender, EventArgs e) //计时开始按钮的单击事件
        {
            int minute;
            try
            {
                minute = int.Parse(this.textBox7.Text);
            }
            catch (System.Exception ex)
            {
                this.label8.Text = "输入错误";
                return;
            }
            lefttime = minute;
            this.timer1.Interval = 1000;
            this.timer1.Enabled = true;
            this.timer1.Start();
            RandomNum();
        }
        private void textBox4_KeyDown(object sender, KeyEventArgs e) //触发enter键的事件
        {
                string m = textBox1.Text;
                int n = Convert.ToInt32(textBox8.Text);
                int result;                                        // 定义四种运算方式
                    switch (m)
                    {
                        case "+":
                            sum = int.Parse(textBox2.Text) + int.Parse(textBox3.Text);
                            break;
                        case "-":
                            sum = int.Parse(textBox2.Text) - int.Parse(textBox3.Text);
                            break;
                        case "×":
                            sum = int.Parse(textBox2.Text) * int.Parse(textBox3.Text);
                            break;
                        case "÷":
                            sum = int.Parse(textBox2.Text) * int.Parse(textBox3.Text);
                            break;
                        default:
                            break;
                    }
                        if (e.KeyCode == Keys.Enter)  //判断输入值是否为数字
                        {
                            if (int.TryParse(textBox4.Text, out result) == false)
                            {
                                MessageBox.Show("请输入数字");
                                count++;
                            }
                            else
                            {
                                if (textBox4.Text == sum.ToString())
                                {
                                    right++;
                                    count++;
                                    RandomNum();
                                }
                                else
                                {
                                    count++;
                                    RandomNum();
                                }
                            }
                         }
                        if (n == count) //判断题目数量,是否结束运算
                        {
                            MessageBox.Show("题目答完,请重新开始");
                            textBox3.Enabled = false;
                            Form2 frm2 = new Form2();
                            frm2.ShowDialog();
                            this.Close();
                        }
            }

        private void button2_Click(object sender, EventArgs e) //点击结束按钮事件
        {
            textBox3.Enabled = false;
            Form2 frm2 = new Form2();
            frm2.ShowDialog();
            this.Close();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            this.label3.Text = this.textBox1.Text;
        }

        public void timer1_Tick(object sender, EventArgs e )//定义计时器
        {
            if (lefttime <= 0)
            {
                timer1.Enabled = false;
                MessageBox.Show("答题时间到!");
                textBox4.Enabled = false;
                Form2 frm2 = new Form2();
                frm2.ShowDialog();
            }
            this.label8.Text = "剩余时间" + lefttime.ToString() + "秒";
            lefttime--;
        }
    }
}

form2代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace sizeyunsuan
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            textBox1.Text = Form1.count.ToString();
            textBox2.Text = Form1.right.ToString();
            textBox3.Text = ((Form1.count - (double)(Form1.right))).ToString();
            textBox4.Text = ((Form1.right / (double)(Form1.count)) * 100).ToString() + "%";
        }
    }
}

四 PSP分析

五 代码测试

六 增量开发

增量内容全部实现,么么哒

七 思考题

新增功能:不仅可以设置1—10的随机数范围,可以延伸到任意的范围,从而适合更多的学生

六  总结

这个是我们第一次进行的结对编程,现在对做这个结对编程的总结和感想对大家说一下吧。

这个程序我们之前做了一个类似的,为了使用户能够更好的使用软件,我们两个经过商讨,所以进行了页面的优化。在这个程序的实现过程中,遇到了一些困难,主要出现在增量开发这一部分,我们查阅了相关资料,进行多次代码的修改,从而把完整的程序作了出来!

接下来是我对做结对编程这一个过程的总结:

1.两个人的基础知识一定要扎实,否则中间会出一些意想不到的问题

2.两个人一定要有耐心,多进行沟通,思路要保持一致

3.两个人可以进行工作内容的转换调整,因为一个人做一件事情久了,都会烦

4.两个人一定要保持高度的默契,这样才会更好,更快的完成任务

5.要有团队精神,遇到问题共同解决

...........

这就是我的结对编程的整个过程,希望老师阅读后,批评指正,谢谢老师!

时间: 2024-10-12 15:36:44

第三次作业 结对编程 (小神童数学测试系统)的相关文章

第三次作业结对编程

一.结对编程成员 1.领航员:闵际达 2.驾驶员:郦铸辉 二.黄金点游戏游戏规则 N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 三.代码上传 代码已上传至Coding.net,地址为:https://coding.

第三次作业-结对编程

一:前言 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项目,必须由二人共

第三次作业----结对编程作业

黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 这次软件工程的作业是以结对编程的形式编写"黄金点游戏".结对编程是指两位程序员坐在同一工作台前开发软件与两位程序员

第三次作业——结对编程

备注:蔡潇_031302601.叶志宇_031302628 功能分析: 这次作业第一个要求就是能够实现将Excel文件内容导入数据库,由于上学期进行数据库实践时使用的是Java语言,并且这次作业与数据库也有关系,于是乎我们就想通过Java来实现这个功能.在学习如何将Excel文件导入数据库的过程中我们发现JExcel这个API,这使得我们的Java编程更加轻松,相比与其他的语言. 第二个要求是要实现显示数据库中的数据,我们组的项目是Web端的,我们想,既然第一个要求都已经用Java实现了,第二个

软件工程第三次作业绝对编程

一.项目描述:黄金点游戏 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项

软件工程第二次作业—结对编程

一. 作业要求 两人组成一队,进行结对编程. 从第一次软件工程作业中选出一人的作业作为这次作业的基础. 设计一个图形界面(GUI)的四则运算应用程序,可以是PC桌面的图形界面程序.网页程序或者手机程序. 设计的应用程序可以完成加法.减法.乘法.除法运算. 应用程序可以完成真分数的四则运算. 例如:1/2 + 1/3 = 5/6 例如:1/5 + 3/10 = 1/2(而不是5/10) 例如:1'1/3 - 2/3 = 2/3 (是1'1/3而不是4/3,注意:" ' "为1'1/3整数

结对编程小游戏2048

作业要求: 自选题目(不少于500行代码),进行结对编程 轮流担任领航员和驾驶员 记录结对编程的过程,写成结对博客 1.结对题目,写清需求 2.上传代码(截图),两人合作的合影 3.约定的规范 4.记录时间 5.心得和体会 Deadline 9月18日 23:59:59 小组成员 019任帅昌 020禹继跃 1.结对题目:2048小游戏 需求分析:在人们学习工作之余,小游戏成为了人们打发时间做的必不可少的事情了,而2048这款小游戏它不仅能在你工作学习疲惫之后使你身心放松,还能益智 2.游戏代码

第四次作业 结对编程 (四则混合运算)

一 需求分析 本次我们做的程序是数学的四则混合运算,并且增加了部分人性化的功能,接下来,我们谈谈这个程序的相关需求,此程序是一个1—10的四则混合运算,那么可以想到主要用于小学生,(ps 个人想法,不排除其他高年级的使用,因为用户可以输入任意的随机数范围),此外,本程序还可能会出现在家庭.教育机构和部分教学网站上面,因为他们可能会给学生出一些简单的数学题目,可以自由设置测试时间,题目数量等内容,而这一程序正好解决了这一个问题,我想,产品的需求必须首先知道用户需要什么,要以客户为中心.而这个产品正

课后作业-结对编程项目总结

经过一个多月的时间,结对编程项目已经接近了尾声,通过软件工程这门课,让我和我的搭档学会了如何合作,如何一起处理bug,如何结对编程. 我们所做的项目是利用python自带的pygame来编写一个小程序贪吃蛇,这个游戏我们大概分为了以下个步骤,并且逐一实现,现在就来总结一下: 1.窗口和方块:首先每一个游戏必备的步骤就是主循环以及一个背景,所以我们首先做一个背景以及蛇头的初步实现,代码如下: game_screen = pygame.display.set_mode((game_screen_wi