混合运算改进(代码)
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 count = -1; public static int right = 0; public static int sun; public static int shi = 0; //产生随机数 private void suiji() { Random ra = new Random(); int h = int.Parse(textBox4.Text) + 1; int j = int.Parse(textBox5.Text); int a, b, c; a = ra.Next(h, j); b = ra.Next(h, a); c = ra.Next(a, j); label2.Text = a.ToString(); label4.Text = b.ToString(); label7.Text = c.ToString(); textBox1.Text = ""; count++; } //随机产生加减乘除 private void suanfa() { string[] oper = new string[] { "+", "-", "*", "/" }; string f = oper[new Random().Next(0, 4)]; string h = oper[new Random().Next(0, 4)]; label3.Text = f; label6.Text = h; } //得到正确答案! private void zhenque() { if (comboBox1.Text == "前两个加括号") { } if (comboBox1.Text == "不加括号") { kuohao() } if (comboBox1.Text == "后两个加括号") { } } private void timer1_Tick(object sender, EventArgs e) { if (shi <= 0) { timer1.Enabled = false; textBox1.Enabled = false; MessageBox.Show("时间到!"); Form2 da = new Form2(); da.ShowDialog(); } shi = shi - 1; textBox2.Text = shi.ToString(); } private void button1_Click(object sender, EventArgs e) { shi = int.Parse(textBox2.Text); textBox2.Text = shi.ToString(); timer1.Enabled = true; timer1.Interval = 1000; timer1.Start(); suiji(); suanfa(); } private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { //判定数字是否合法! int i = 0; string an = textBox1.Text; if (int.TryParse(an, out i) == false) { MessageBox.Show("你输得的数字不合法!"); } //判定是否正确 zhenque(); if (textBox1.Text == sun.ToString()) { right++; } suiji(); suanfa(); //判断是否达到总题数 int q = int.Parse(textBox3.Text); 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 button3_Click(object sender, EventArgs e) { this.Close(); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { string a=comboBox1.Text; if (a == "前两个加括号") { av("(",")","" ,"" ); } if (a == "后两个加括号") { av("", "", "(", ")"); } if (a == "不加括号") { av("", "", "", ""); } } private void kuohao() { string f = label3.Text; String g = label6.Text; int x= int.Parse(label2.Text); int y=int.Parse(label4.Text); int z= int.Parse(label7.Text); string fg = f + g; switch (fg) { case "++": sun =x+y+z; break; case "+-": sun = x + y - z; break; case "+*": sun = x + y * z; break; case "+/": sun = x +y / z; break; case "-+": sun = x-y +z; break; case "--": sun = x- y - z; break; case "-*": sun = x- y * z; break; case "-/": sun = x- y / z; break; case "*+": sun = x* y +z; break; case "*-": sun = x* y-z; break; case "**": sun = x* y* z; break; case "*/": sun = x* y/ z; break; case "/+": sun = x/ y+ z; break; case "/-": sun = x/ y- z; break; case "/*": sun = x/ y*z; break; case "//": sun = x/ y / z; break; } } private void av(string va1,string va2,string va3,string va4) { label1.Text = va1; label5.Text = va2; label14.Text = va3; label15.Text = va4; } } }
总结
这样写感觉很轻松也很整齐,没有的代码的重复性!代码也简洁了不少,就像老师说的一样有一些代码美,虽然还不够完善!不够美!
还有就是上面的代码有一个地方没有实现,就是有无括号写的正确判断!所以也没有引用自定义的方法!
private void zhenque()
{
if (comboBox1.Text == "前两个加括号")
{
}
if (comboBox1.Text == "不加括号")
{
}
if (comboBox1.Text == "后两个加括号")
{
}
}
不知道怎么给自定义的方法传括号的参数
private void kuohao()
{
string f = label3.Text;
String g = label6.Text;
int x= int.Parse(label2.Text);
int y=int.Parse(label4.Text);
int z= int.Parse(label7.Text);
string fg = f + g;
switch (fg)
{
case "++":
sun =x+y+z;
break;
case "+-":
sun = x + y - z;
break;
case "+*":
sun = x + y * z;
break;
case "+/":
sun = x +y / z;
break;
case "-+":
sun = x-y +z;
break;
case "--":
sun = x- y - z;
break;
case "-*":
sun = x- y * z;
break;
case "-/":
sun = x- y / z;
break;
case "*+":
sun = x* y +z;
break;
case "*-":
sun = x* y-z;
break;
case "**":
sun = x* y* z;
break;
case "*/":
sun = x* y/ z;
break;
case "/+":
sun = x/ y+ z;
break;
case "/-":
sun = x/ y- z;
break;
case "/*":
sun = x/ y*z;
break;
case "//":
sun = x/ y / z;
break;
}