一、需求分析
用户还可以自行输入所要计时的时间,从而进行倒计时;
单击停止按钮时也会弹出统计结果;
用户还可以自行输入随机数的产生范围;
运算符号的随机产生;
用户还可以选择是否加括号!分为前两个数加和后两个数加。
二、设计思路
先创建From1再设计From2;
编写代码先From1 中随机数、算法、定时器、结果的判断正确;
然后From2正确题数、总题数、正确率的值。
三、代码实现
From1
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 混合运算
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static int t;
public static int count=-1;
public static int right=0;
public void suanfa()
{
Random s = new Random();
int d, h;
d = s.Next(1,5);
h = s.Next(1,5);
if (d == 1)
{
label4.Text = "+";
}
if (d == 2)
{
label4.Text = "-";
}
if (d == 3)
{
label4.Text = "*";
}
if (d == 4)
{
label4.Text = "/";
}
if (h == 1)
{
label8.Text = "+";
}
if (h == 2)
{
label8.Text = "-";
}
if (h == 3)
{
label8.Text = "*";
}
if (h == 4)
{
label8.Text = "/";
}
}
public void shu()
{
Random s = new Random();
int n1, n2, n3;
int a = int.Parse(textBox3.Text)+1;
int b = int.Parse(textBox4.Text)+1;
n1 = s.Next(a,b);
n2 = s.Next(a,n1);
n3 = s.Next(n2,b);
label3.Text = n1.ToString();
label6.Text = n2.ToString();
label9.Text = n3.ToString();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (t <= 0)
{
timer1.Enabled = false;
textBox2.Enabled = false;
MessageBox.Show("时间到!");
Form2 da = new Form2();
da.ShowDialog();
}
t = t - 1;
textBox1.Text = t.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
int c=int.Parse(textBox1.Text);
t = c;
timer1.Enabled = true;
timer1.Interval = 1000;
timer1.Start();
shu();
suanfa();
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
shu();
suanfa();
}
string k=label4.Text;
string l=label8.Text;
string n=k+l;
int m;
m = int.Parse(label3.Text) + int.Parse(label6.Text) + int.Parse(label9.Text);
m = int.Parse(label3.Text) + int.Parse(label6.Text) - int.Parse(label9.Text);
m = int.Parse(label3.Text) - int.Parse(label6.Text) + int.Parse(label9.Text);
m = int.Parse(label3.Text) - int.Parse(label6.Text) - int.Parse(label9.Text);
m = int.Parse(label3.Text) * int.Parse(label6.Text) * int.Parse(label9.Text);
m = int.Parse(label3.Text) * int.Parse(label6.Text) / int.Parse(label9.Text);
m = int.Parse(label3.Text) / int.Parse(label6.Text) * int.Parse(label9.Text);
m = int.Parse(label3.Text) / int.Parse(label6.Text) / int.Parse(label9.Text);
if (comboBox1.Text == "前两个加")
{
if (n == "+*")
{
m = (int.Parse(label3.Text) + int.Parse(label6.Text)) * int.Parse(label9.Text);
}
if (n == "+/")
{
m = (int.Parse(label3.Text) + int.Parse(label6.Text)) / int.Parse(label9.Text);
}
if (n == "-*")
{
m = (int.Parse(label3.Text) - int.Parse(label6.Text)) * int.Parse(label9.Text);
}
if (n == "-/")
{
m = (int.Parse(label3.Text) - int.Parse(label6.Text)) / int.Parse(label9.Text);
}
}
if (comboBox1.Text == "后两个加")
{
if (n == "*+")
{
m = int.Parse(label3.Text) * (int.Parse(label6.Text) + int.Parse(label9.Text));
}
if (n == "/+")
{
m = int.Parse(label3.Text) / (int.Parse(label6.Text) + int.Parse(label9.Text));
}
if (n == "*-")
{
m = int.Parse(label3.Text) * (int.Parse(label6.Text) - int.Parse(label9.Text));
}
if (n == "/-")
{
m = int.Parse(label3.Text) / (int.Parse(label6.Text) - int.Parse(label9.Text));
}
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if( comboBox1.Text=="前两个加")
{
label2.Text = "(";
label5.Text = "";
label7.Text = ")";
label10.Text = "";
}
if (comboBox1.Text == "后两个加")
{
label2.Text = "";
label5.Text = "(";
label7.Text = "";
label10.Text = ")";
}
if (comboBox1.Text == "不加")
{
label2.Text = "";
label5.Text = "";
label7.Text = "";
label10.Text = "";
}
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
textBox2.Enabled = false;
Form2 da = new Form2();
da.ShowDialog();
}
}
}
From2
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 混合运算
{
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() + "%";
}
}
}
四、测试



五、
| PSP2.1 | Personal Software Process Stages | Time(h) |
| Planning | 计划 | 6 |
| • Estimate | 估计这个任务需要多长时间 | 8 |
| Development | 开发 | |
| • Analysis | 需求分析 | 1 |
| • Design Spec | 生成设计文档 | |
| • Coding Standard | 代码规范 | 1 |
| • Design | 具体设计 | 1.5 |
| • Coding | 具体代码 | 3 |
| • Code Review | 代码复审 | 0.5 |
| • Text | 测试 | 1.5 |
| Reporting | 报告 | |
| • Test Report | 测试报告 | |
| • Size Measurement | 计算工作量 |
0.5 |
| • Postmortem | 事后总结 |
1 |
六、总结
这次程序有好多问题 ,就实现了混合运算,不重复、不为负数都没实现不知道如何怎么做希望您给点意见。
原文:http://www.cnblogs.com/fanxiaotian/p/4908050.html