程序目的:编写一个能对0-10之间的整数进行四则运算的程序。
程序内容:系统在一分钟内随机生成0-10之间的数字,用户通过选择四则运算中的一个进行运算,并输入相应的答案,程序
能接收用户输入的整数答案,并进行判断,输出答题的正确、错误个数。
设计思路:运用windows窗体应用程序,用户能很容易的看懂操作步骤,
需要控件:
窗体1:4个label控件,4个textBox控件,6个Button控件,1个GroupBox控件。
窗体2:3个label控件,3个textBox控件。
主要排布如下图所示:
窗体1的代码如下:
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 jisuan { public partial class Form1 : Form { public static int Count = 0; //题目的总数 private int t = 60; //测试时间为60秒 public static int right = 0; //正确题目的总数 public static int fault = 0; //错误题目的总数 public Form1() { InitializeComponent(); } //"开始"按钮单击事件 private void button1_Click(object sender, EventArgs e) { label4.Text = t.ToString(); timer1.Enabled = true; timer1.Interval = 1000; timer1.Start(); RandomNum(); } //自定义方法:产生1-10的随机数并在文本框中显示 private void RandomNum() { Random ran = new Random(); int x1, x2; x1 = ran.Next(1, 10); //textBox1产生一个数字 x2 = ran.Next(1, 10); //textBox2产生一个数字 textBox1.Text = x1.ToString(); textBox2.Text = x2.ToString(); textBox3.Text = ""; Count++; } private void button3_Click(object sender, EventArgs e) { label2.Text = "+"; } private void button4_Click(object sender, EventArgs e) { label2.Text = "-"; } private void button5_Click(object sender, EventArgs e) { label2.Text = "*"; } private void button6_Click(object sender, EventArgs e) { label2.Text = "/"; } private void textBox3_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (textBox3.Text == textBox3.ToString()) right++; RandomNum(); } else { fault++; RandomNum(); } int t3; string i = label2.Text; switch (i) { case"+": t3 =int.Parse(textBox1.Text) + int.Parse(textBox2.Text); break; case "-": t3 = int.Parse(textBox1.Text) - int.Parse(textBox2.Text); break; case "*": t3 = int.Parse(textBox1.Text)* int.Parse(textBox2.Text); break; case "/": t3 = int.Parse(textBox1.Text) / int.Parse(textBox2.Text); break; } } 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; label4.Text = t.ToString(); } private void button2_Click(object sender, EventArgs e) { textBox3.Enabled = false; Form2 frm2 = new Form2(); frm2.ShowDialog(); } } }
窗体2的代码:
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 jisuan { 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.fault.ToString(); } } }
运行以后:
大概思路就是以上的代码;
PSP耗时:计划12小时写好,实际比计划多,原来C#老师教了一个和这个类似的例题,就跟着这个思路写的,
写到中间种种问题都出来了,有错误,运行不了,还找不出来.经过询问同学等等,才把问题解决,
直到现在还是感觉中间还有很多问题,不过,对于刚开始的没思路,还是好很多的!!
思考题:如果用户想算1-100的话,只需要更改
int x1, x2;
x1 = ran.Next(1, 100);
x2 = ran.Next(1, 100);