第三次网上作业,结对编程

题目:编写一个能对0--10之间的整数进行四则运算的“软件”
程序能接收用户输入的整数答案,并判断对错
程序结束时,统计出答对、答错的题目数量。
补充说明:0——10的整数是随机生成的
用户可以用键盘输入来选择四则运算中的一种,比如输入1代表加法运算
用户用键盘输入一个字符来结束程序的运行并显示统计结果,比如输入e程序结束并显示统计结果
编程语言不限制,命令行输出和图像界面输出都可以。
在此基础上,做增量开发。
增量内容:1)处理用户的错误输入,比如输入字母或符号等,处理除法运算中分母为0的情况,处理结果为负数的情况,保证是小学水平不出现负数,比如不能出现5-8=-3这种情况;
             2)用户可以设定倒计时;
             3)用户可以设定随机整数的范围和题目数量;
             4)用户可以选择哪种计算类型,比如加减乘除,或可选择软件随机生成四则运算中的一种。

需求分析

当用户输入1,2,3,4分别代表+,-,*,/;程序会按照用户输入的随机产生的范围产生随机的两个数,当用户单击开始计时或确认按钮时程序会自动产生两个随机的数,并且所产生的两个数第一个数一定大于第二个数不会出现出现负数的情况。

用户还可以自行输入所要计时的时间,从而进行倒计时。时间倒时提示时间到,并且弹出窗体二,统计结果。

同时用户还可以输入所要答的总题数。当所答总题数达到时同样会弹出窗体二的统计结果!

单击停止按钮时也会弹出统计结果!

当用户点击关闭按钮时程序就会关闭!

<2>设计思路

创建windows窗体,设计窗体,并根据窗体的设计进行代码的编写!

因为要获取文本框中的数值,同时要统计正确的总数和总题数所以首先要定义变量!

然后用suiji()方法产生随机数。

再然后技术textbox3的keydown事件代码的编写!

单击停止,按钮弹出窗体二!

form2统计总题数,正确的总数,以及错误的总数和正确率!

<3>代码的实现

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 计算器1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //定义变量
        public static int count = 0;
        public static int right = 0;
        public static int sun;
        public static int li;
        public static int za;
        public static int shi=0;
        
        private void suiji() //随机产生两个数!
        {

            Random ra = new Random();
            li = int.Parse(textBox4.Text);
            za = int.Parse(textBox5.Text);
            int a, b;
            a = ra.Next(li, za);
            b = ra.Next(li, a);
            textBox1.Text = a.ToString();
            textBox2.Text = b.ToString();
            textBox3.Text = "";
            count++;

        }

        private void suanfa()   //计算方式
        {

            string s = jsfs.Text;
            switch (s)
            {
                case "1": ji.Text = "+";
                    break;
                case "2": ji.Text = "-";
                    break;
                case "3": ji.Text = "*";
                    break;
                case "4": ji.Text = "/";
                    break;


            }

        }


        private void button1_Click(object sender, EventArgs e)
        {
            shi = int.Parse(textBox7.Text);
            label5.Text = shi.ToString();
            timer1.Enabled = true;
            timer1.Interval = 1000;
            timer1.Start();
            suiji();
            suanfa();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
           
            if (shi<= 0)
            {
                timer1.Enabled = false;
                textBox3.Enabled = false;
                MessageBox.Show("时间到!");
                Form2 da = new Form2();
                da.ShowDialog();

            }
            
            
                shi = shi - 1;
                label5.Text = shi.ToString();
            
        }

        private void textBox3_KeyDown(object sender, KeyEventArgs e)
        {
            string s = ji.Text;
            switch (s)
            {
                case "+":
                    sun = int.Parse(textBox1.Text) + int.Parse(textBox2.Text);
                    break;
                case "-":
                    sun = int.Parse(textBox1.Text) - int.Parse(textBox2.Text);
                    break;
                case "*":
                    sun = int.Parse(textBox1.Text) * int.Parse(textBox2.Text);
                    break;
                case "/":
                    sun = int.Parse(textBox1.Text) / int.Parse(textBox2.Text);
                    break;


            }

            if (e.KeyCode == Keys.Enter)
            {    
                
                int i = 0;
                string an = textBox3.Text;
                if (int.TryParse(an, out i) == false)
                {
                    MessageBox.Show("你输得的数字不合法!");

                }
                if (textBox3.Text == sun.ToString())
                {
                    right++;
                }
                suiji();

               
                string z = textBox6.Text;
                int q = int.Parse(z);
                if (count == q)
                {

                    timer1.Enabled = false;
                    textBox3.Enabled = false;
                    Form2 da = new Form2();
                    da.ShowDialog();
                
                }



                


            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            textBox3.Enabled = false;
            Form2 da = new Form2();
            da.ShowDialog();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            suiji();
            suanfa();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

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 计算器1
{
    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.right / (double)(Form1.count)) * 100).ToString() + "%";
            textBox4.Text = (Form1.count - Form1.right).ToString();
        }
    }
}

代码实现

PSP耗时

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

0.5

  • Postmortem 事后总结

1

 

 

 

 

 

 

 

 

 

 

 

 

总结

对于这次作业写了三次,没保存,都丢失了,可能总结的没前两次总结的好吧!这次作业是结对编程,我找的是我经常在一起讨论问题的,还算比较有默契,只不过两个人

的能力还是不够,总感觉不满意,对于异常处理做的,做的不好,还是不是很满意,做程序,感觉还是有搭档的好,一个人发现问题的机会太小了,结对编程,可以很好的发

现问题,同时弥补不足,可以互相学习,互相提高,这是一个非常棒的学习方法,感谢老师提供这么好的学习方法,我会努力的!

posted @ 2015-10-18 17:50  Kayle_zhao  阅读(159)  评论(1编辑  收藏  举报