需求分析:
1.编写一个能对0~10之间的整数进行四则运算的程序。
2.程序能接收用户输入的整数结果,并判断对错,在程序结束时,统计出答对和答错的题目数量。
3.0~10整数是随机出现。
4.增加内容:
(1)处理用户的错误输入,除法运算中分母不为0,减法结果不为负数。
(2)用户自己设定倒计时。
(3)用户自己可以设定随机整数的范围和答题的数量。
(4)用户自己可以自己选择哪种计算类型,也可以让软件随机生成四则运算中的一种。
思路: 1.还是选择窗体应用程序,在上一次的作业的基础上,进行完善。
2.这次是结对编程,需要两人合作完成,我负责查看错误,队友负责写代码。
3.需要考虑添加倒计时控件,以及编写代码。定义随机整数的范围和答题的数量,选择计算类型,处理用户的错误输入,除法运算中分母不为0,减法结果不为负数。
代码:
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 _122
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static int count = 0, wrong = 0, right = 0;
private int t = 60;
public static int m = 1, n = 10;
private void button1_Click(object sender, EventArgs e) //开始的单击事件
{
label8.Text = t.ToString();
timer1.Enabled = true;
timer1.Interval = 1000;
timer1.Start();
jisuan();
}
private void jisuan() //算法
{
Random ran = new Random();
string[] fuhao = new string[] { "+", "-", "*", "/" };
label1.Text = fuhao[ran.Next(0, 4)];
int n1, n2;
n1 = ran.Next(m, n);
n2 = ran.Next(m, n);
textBox1.Text = n1.ToString();
textBox2.Text = n2.ToString();
textBox3.Text = "";
}
private void textBox3_KeyDown(object sender, KeyEventArgs e)//输入结果的事件
{
int text3 = 0;
string a = label1.Text;
switch (a)
{
case "+":
text3 = int.Parse(textBox1.Text) + int.Parse(textBox2.Text);
break;
case "-":
if (int.Parse(textBox1.Text) >= int.Parse(textBox2.Text))
{
text3 = int.Parse(textBox1.Text) - int.Parse(textBox2.Text);
} else
{
MessageBox.Show("差不能为负数!请按回车键继续做题");
jisuan();
}
break;
case "*":
text3 = int.Parse(textBox1.Text) * int.Parse(textBox2.Text);
break;
default:
if (textBox2.Text == "0")
{
MessageBox.Show("分母不能为零!请按回车键继续做题");
jisuan();
} else
{
text3 = int.Parse(textBox1.Text) / int.Parse(textBox2.Text);
}
break;
}
if (count == int.Parse(textBox7.Text)) //判断出题数量
{
Form2 frm2 = new Form2();
frm2.Show();
}
if (e.KeyCode == Keys.Enter)
{
if (textBox3.Text == text3.ToString()) //判断对错并提示
{
right++; count++;
MessageBox.Show("回答正确!不要骄傲");
}else
{
wrong++; count++;
MessageBox.Show("回答错误,不要灰心");
}
if (textBox3.Text == "00") //如果输入00推出程序,显示form2窗体
{
Application.Exit();
Form2 frm2 = new Form2();
frm2.Show();
}
jisuan();
}
}
private void button2_Click(object sender, EventArgs e) //结束按钮
{
textBox3.Enabled = false;
Form2 frm = new Form2();
frm.ShowDialog();
}
private void button3_Click(object sender, EventArgs e) // 用户选择四则运算符号
{ label1.Text = "+"; }
private void button4_Click(object sender, EventArgs e)
{ label1.Text = "-"; }
private void button5_Click(object sender, EventArgs e)
{ label1.Text = "*"; }
private void button6_Click(object sender, EventArgs e)
{ label1.Text = "/"; }
private void timer1_Tick(object sender, EventArgs e) //倒计时控件
{
if (t <= 0)
{
timer1.Enabled = false;
textBox3.Enabled = false;
Form2 frm2 = new Form2();
frm2.Show();
} else
{
t--;
label8.Text = t.ToString();
}
}
private void textBox5_KeyDown(object sender, KeyEventArgs e) //输入的范围
{
if (e.KeyCode == Keys.Enter)
{
m = int.Parse(textBox5.Text);
}
}
private void textBox6_KeyDown(object sender, KeyEventArgs e)//输入的范围
{
if (e.KeyCode == Keys.Enter)
{
n = int.Parse(textBox6.Text);
}
}
private void textBox4_KeyDown(object sender, KeyEventArgs e) //输入倒计时
{
if (e.KeyCode == Keys.Enter)
{ t = int.Parse(textBox4.Text);
}
}
}
}
测试结果:
总结:
在这次练习中我们做的增量内容如下:
1,用户可以设定倒计时,
2,用户可以选择取值范围,出题数,用户必须先输入出题数才能开始计算。但在这一点有些缺陷。
3,可以判断用户的答案对错,除法以及分母不能为零,减法差不能为负数,但是用户如果输入字符,不能判断。所以这点没有写出来。
4,用户可以选择哪种计算类型,比如加减乘除,或可选择软件随机生成四则运算中的一种。
5,在结对编程中团队需要合作才能更有效地完成作业,否者会浪费时间。
6,在编程中自己写的代码出错了自己很难找到错误,不知道出错在什么地方,需要和队友一起找出错误,并加以改正。
7,自己在队友编写代码的同时,可以在队友编码出错的时候,知道队友编写出错地方,也是提升自己的能力。
结对编程的队友:马钦佩,申笑楠。