结对编程——四则运算

一、需求分析

    (1)当程序运行的时候,首先填写随机整数的范围,然后单击“+”或“-”或“x”或“÷”按钮时,开启倒计时,程序会随机产生两个随机整数,由用户输出结果。

    (2)在运行减法运算中,不会出现结果为负数的情况;

    (3)在运行除法运算中,不会出现分母为0的情况;

    (4)当单击“停止”按钮时,程序会给出“正确”、“错误”等信息。

二、设计思路

    (1)在上次作业的基础上,我们在窗体上再放两个textBox控件,由用户填写取值范围;放一个Timer控件,设定倒计时。

    (2)当定义Random()方法的时候,再定义一个变量m,如果第一个数小于第二个数,就由m来转换第一个数和第二个数的位置。

    (3)在除法运算中考虑到分子和分母都有可能为0的情况,所以在运行除法运算之前,就要求取值范围不能从0开始。

三、代码实现

   Form1代码如下:

 

namespace sizeyunsuan
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static int Count = 0;
        public static int right = 0;
        public static int fault = 0;
        private int t = 60;
        private void RandomNum()
        {
            Random ran = new Random();
            int n1, n2; string m;
            n1 = ran.Next(int.Parse(textBox4.Text), int.Parse(textBox5.Text));
            n2 = ran.Next(int.Parse(textBox4.Text), int.Parse(textBox5.Text));
            if (n1 >= n2)
            {
                textBox1.Text = n1.ToString();
                textBox2.Text = n2.ToString();
                textBox3.Text = "";
                Count++;
            }
            else if (n1 < n2)
            {
                m = n2.ToString();
                textBox2.Text = n1.ToString();
                textBox1.Text = m;
                textBox3.Text = "";
                Count++;
            }
            
        }
        private void R()
        {
            Random ran = new Random();
            int a1, a2; 
            a1 = ran.Next(int.Parse(textBox4.Text), int.Parse(textBox5.Text));
            a2 = ran.Next(int.Parse(textBox4.Text), int.Parse(textBox5.Text));
            
            if (int.Parse(textBox4.Text)!=0)
            {
                textBox1.Text = a1.ToString();
                textBox2.Text = a2.ToString();
                textBox3.Text = "";
                Count++;
            }
            else 
            {
                MessageBox.Show("在除法运算中,取值范围不能从0开始");
            }
        }
 
         private void timer1_Tick(object sender, EventArgs e)
        {
            if (t <= 0)
            {
                timer1.Enabled = false;
                textBox3.Enabled = false;
                MessageBox.Show("时间到!");
                textBox3.Enabled = false;
                Form2 frm2 = new Form2();
                frm2.ShowDialog();
            }
            t = t - 1;
            label10.Text = t.ToString();
        }

        private void textBox3_KeyDown(object sender, KeyEventArgs e)
        {
         

            int sum=0;
            string s = label4.Text;

            switch (s)
            {
                case "+":
                    sum = int.Parse(textBox1.Text) + int.Parse(textBox2.Text);
                    break;
                case "-":
                    sum = int.Parse(textBox1.Text) - int.Parse(textBox2.Text);
                  
                     break;
                case "x":
                    sum = int.Parse(textBox1.Text) * int.Parse(textBox2.Text);
                    break;
                default:
                    sum = int.Parse(textBox1.Text) / int.Parse(textBox2.Text);
                    break;
            }
            if (e.KeyCode == Keys.Enter)
            {
                if (textBox3.Text == sum.ToString())
                
                    right++;
              
                RandomNum();
            }
           
            
     }


        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.ShowDialog();

        }

        private void button2_Click(object sender, EventArgs e)
        {
       
            label4.Text = "+";
            label10.Text = t.ToString();
            timer1.Enabled = true;
            timer1.Interval = 1000;
            timer1.Start();
            RandomNum();
           }

        private void button3_Click(object sender, EventArgs e)
        {
            label4.Text = "-";
            label10.Text = t.ToString();
            timer1.Enabled = true;
            timer1.Interval = 1000;
            timer1.Start();
            RandomNum();
        }

         

        private void button4_Click(object sender, EventArgs e)
        {
            label4.Text = "x";
            label10.Text = t.ToString();
            timer1.Enabled = true;
            timer1.Interval = 1000;
            timer1.Start();
            RandomNum();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            label4.Text = "÷";
            label10.Text = t.ToString();
            timer1.Enabled = true;
            timer1.Interval = 1000;
            timer1.Start();
            R();
          
       }

       }
 
       }  

 

  Form2代码如下:

 

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耗时分析

PSP2.1 Personal Software Process Stages Time(h)
Planning 计划 13
  • Estimate 估计这个任务需要多长时间 13
Development 开发 11
  • Analysis 需求分析 0.5
  • Design Spec 生成设计文档
  • Coding Standard 代码规范
  • Design 具体设计
  • Coding 具体代码 3
  • Code Review 代码复审 2
  • Text 测试 1
Reporting 报告 2
  • Test Report 测试报告 0.5
  • Size Measurement 计算工作量

  • Postmortem 事后总结

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 六、结对编程过程

 

 

 

    

七、实现的增量内容

            1)处理用户的错误输入,这个感觉我们投机取巧了,我们只是在窗体上写“输入结果只能是数字”来提醒用户,我们想这也是个处理方法吧!处理了除法运算中分母为0的情况,处理了结果为负数的情况;           

             2)设定了倒计时;
             3)设定了随机整数的范围;
             4)实现了可以选择计算类型:加减乘除。

八、总结

      在陈老师的课上,我的结对伙伴就是徐玉莹;我俩还算挺有默契的,徐玉莹的点子也挺多的。

      我俩在编写代码时遇到了不少问题,特别是结果不能为负数和分母不能为0;特别感谢的是毛连成,他给了我们很大帮助,也很感谢我的伙伴。

      这次作业让我学到了不少东西,每一次的经历都是一次成长。

     

posted @ 2015-10-17 20:08  twinkle缘  阅读(233)  评论(1编辑  收藏  举报