受队友诱惑,去听了李强的C#公选课,第二天就完成作业了。
作业要求:
1. 小学生加法程序;
2. 能自由设置难度;
3. 对结果进行统计。
第一次写C#程序,遇到不少困难,和队友讨论,百度谷歌一齐上。
让同学帮忙测试,找出十多处Bug,一一修改。
本来挺好看的代码,被我改成一坨屎了都。T-T
上图:
下载地址:
http://files.cnblogs.com/haipzm/AdditionGame.zip
贴上各个窗体和一个公共类的主要代码,程序中还有些小Bug,不过已经不想修改了。
Setting.cs
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace AdditionGame 11 { 12 public partial class Setting : Form 13 { 14 public Setting() 15 { 16 InitializeComponent(); 17 } 18 19 private void Form1_Load(object sender, EventArgs e) 20 { 21 textBox1.Text = ""; 22 textBox2.Text = ""; 23 textBox1.Focus(); 24 } 25 26 private void button1_Click(object sender, EventArgs e) 27 { 28 textBox1.Text = ""; 29 textBox2.Text = ""; 30 textBox1.Focus(); 31 } 32 33 private void Form1_Activated(object sender, EventArgs e) 34 { 35 textBox1.Text = ""; 36 textBox2.Text = ""; 37 textBox1.Focus(); 38 } 39 40 private void button2_Click(object sender, EventArgs e) 41 { 42 if (textBox1.Text == "" || textBox2.Text == "") 43 { 44 Error f7 = new Error(this); 45 f7.Show(); 46 this.Hide(); 47 } 48 else 49 { 50 bool Flag = true; 51 string Str1 = Convert.ToString(textBox1.Text); 52 if (Str1.Length > 6) 53 Flag = false; 54 else 55 for (int i = 0; i < Str1.Length; ++i) 56 if (Str1[i] < '0' || Str1[i] > '9') 57 { 58 Flag = false; 59 break; 60 } 61 string Str2 = Convert.ToString(textBox2.Text); 62 if (Str2.Length > 6) 63 Flag = false; 64 else 65 for (int i = 0; i < Str2.Length; ++i) 66 if (Str2[i] < '0' || Str2[i] > '9') 67 { 68 Flag = false; 69 break; 70 } 71 if (Flag) 72 { 73 ClassCommon.Scope = Convert.ToInt32(textBox1.Text); 74 ClassCommon.Total = Convert.ToInt32(textBox2.Text); 75 if (ClassCommon.Scope == 0 || ClassCommon.Total == 0) 76 { 77 Error f5 = new Error(this); 78 f5.Show(); 79 this.Hide(); 80 } 81 else 82 { 83 Playing f2 = new Playing(this); 84 f2.Show(); 85 this.Hide(); 86 } 87 } 88 else 89 { 90 Error f6 = new Error(this); 91 f6.Show(); 92 this.Hide(); 93 } 94 } 95 } 96 97 private void button3_Click(object sender, EventArgs e) 98 { 99 this.Close(); 100 } 101 102 private void button4_Click(object sender, EventArgs e) 103 { 104 About f3 = new About(this); 105 f3.Show(); 106 this.Hide(); 107 } 108 109 } 110 111 }
Playing.cs
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace AdditionGame 11 { 12 public partial class Playing : Form 13 { 14 Form f1 = new Setting(); 15 public Playing(Setting firstForm) 16 { 17 InitializeComponent(); 18 f1 = firstForm; 19 } 20 21 private void Get_Random_Addend() 22 { 23 Random seed = new Random(); 24 Random Addend = new Random(seed.Next()); 25 for (int i = 0; i < ClassCommon.Total; ++i) 26 { 27 ClassCommon.F[i].Addend1 = Addend.Next(ClassCommon.Scope); 28 ClassCommon.F[i].Addend2 = Addend.Next(ClassCommon.Scope - ClassCommon.F[i].Addend1); 29 } 30 } 31 32 private void Put_Random_Addend() 33 { 34 textBox1.Text = Convert.ToString(ClassCommon.F[ClassCommon.Count].Addend1); 35 textBox2.Text = Convert.ToString(ClassCommon.F[ClassCommon.Count].Addend2); 36 ++ClassCommon.Count; 37 textBox3.Focus(); 38 } 39 40 private void Form2_Load(object sender, EventArgs e) 41 { 42 progressBar1.Minimum = 0; 43 progressBar1.Maximum = ClassCommon.Total*10; 44 progressBar1.Value = 0; 45 for (int i = 0; i < ClassCommon.Total; ++i) 46 ClassCommon.F[i].Ans = -1; 47 ClassCommon.Count = 0; 48 Get_Random_Addend(); 49 Put_Random_Addend(); 50 progressBar1.Value += 10; 51 if (ClassCommon.F[ClassCommon.Count - 1].Ans != -1) 52 textBox3.Text = Convert.ToString(ClassCommon.F[ClassCommon.Count - 1].Ans); 53 else 54 textBox3.Text = ""; 55 textBox3.Focus(); 56 } 57 58 private void button3_Click(object sender, EventArgs e) 59 { 60 this.Close(); 61 f1.Show(); 62 } 63 64 private void button4_Click(object sender, EventArgs e) 65 { 66 this.Close(); 67 f1.Close(); 68 } 69 70 private void Form2_Activated(object sender, EventArgs e) 71 { 72 textBox3.Focus(); 73 button1.Enabled = false; 74 this.Text = "第" + Convert.ToString(ClassCommon.Count) + "题"; 75 if (ClassCommon.Count == ClassCommon.Total) 76 button2.Text = "完成"; 77 else 78 button2.Text = "下一题"; 79 } 80 81 private void button2_Click(object sender, EventArgs e) 82 { 83 if (textBox3.Text != "" && textBox3.TextLength < 7) 84 { 85 if (ClassCommon.Count == ClassCommon.Total) 86 { 87 ClassCommon.F[ClassCommon.Count - 1].Ans = Convert.ToInt32(textBox3.Text); 88 Result f4 = new Result(this.f1); 89 this.Close(); 90 f4.Show(); 91 } 92 else 93 { 94 button1.Enabled = true; 95 ClassCommon.F[ClassCommon.Count - 1].Ans = Convert.ToInt32(textBox3.Text); 96 Put_Random_Addend(); 97 progressBar1.Value += 10; 98 } 99 } 100 if (ClassCommon.F[ClassCommon.Count - 1].Ans != -1) 101 textBox3.Text = Convert.ToString(ClassCommon.F[ClassCommon.Count - 1].Ans); 102 else 103 textBox3.Text = ""; 104 this.Text = "第" + Convert.ToString(ClassCommon.Count) + "题"; 105 if (ClassCommon.Count == ClassCommon.Total) 106 button2.Text = "完成"; 107 else 108 button2.Text = "下一题"; 109 textBox3.Focus(); 110 } 111 112 private void button1_Click(object sender, EventArgs e) 113 { 114 ClassCommon.Count -= 2; 115 if (ClassCommon.Count == 0) 116 button1.Enabled = false; 117 Put_Random_Addend(); 118 progressBar1.Value -= 10; 119 if (ClassCommon.F[ClassCommon.Count - 1].Ans != -1) 120 textBox3.Text = Convert.ToString(ClassCommon.F[ClassCommon.Count - 1].Ans); 121 else 122 textBox3.Text = ""; 123 if (ClassCommon.Count == ClassCommon.Total) 124 button2.Text = "完成"; 125 else 126 button2.Text = "下一题"; 127 this.Text = "第" + Convert.ToString(ClassCommon.Count) + "题"; 128 textBox3.Focus(); 129 } 130 131 } 132 }
Error.cs
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace AdditionGame 11 { 12 public partial class Error : Form 13 { 14 Form f1 = new Setting(); 15 public Error(Form firstForm) 16 { 17 InitializeComponent(); 18 f1 = firstForm; 19 } 20 21 private void Error_Load(object sender, EventArgs e) 22 { 23 button4.Focus(); 24 } 25 26 private void button4_Click(object sender, EventArgs e) 27 { 28 this.Close(); 29 f1.Show(); 30 } 31 32 private void button3_Click(object sender, EventArgs e) 33 { 34 this.Close(); 35 f1.Close(); 36 } 37 } 38 }
Result.cs
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace AdditionGame 11 { 12 public partial class Result : Form 13 { 14 Form f1 = new Setting(); 15 public Result(Form firstForm) 16 { 17 InitializeComponent(); 18 this.f1 = firstForm; 19 } 20 21 private void button3_Click(object sender, EventArgs e) 22 { 23 this.Close(); 24 f1.Close(); 25 } 26 27 private void Result_Load(object sender, EventArgs e) 28 { 29 ClassCommon.Right = 0; 30 ClassCommon.Wrong = 0; 31 ClassCommon.Rate = 0.0; 32 for (int i = 0; i < ClassCommon.Total; ++i) 33 if (ClassCommon.F[i].Addend1 + ClassCommon.F[i].Addend2 == ClassCommon.F[i].Ans) 34 ++ClassCommon.Right; 35 else 36 ++ClassCommon.Wrong; 37 ClassCommon.Rate = Convert.ToDouble(ClassCommon.Right) / Convert.ToDouble(ClassCommon.Total) * 100.0; 38 string Str3 = String.Format("{0:F}", ClassCommon.Rate); 39 listBox1.Items.Add("此次练习一共有 " + Convert.ToString(ClassCommon.Total) + " 题,答对 " + Convert.ToString(ClassCommon.Right) + " 题,答错 " + Convert.ToString(ClassCommon.Wrong) + " 题,正确率为 " + Str3 + " %"); 40 if (ClassCommon.Right == ClassCommon.Total) 41 listBox1.Items.Add("干得漂亮,你全做对了!优秀是一种习惯,希望你继续保持。"); 42 else 43 if (ClassCommon.Rate >= 80.0) 44 listBox1.Items.Add("你真棒,快看看哪些题目做错了!期待你更上一层楼。"); 45 else 46 if (ClassCommon.Rate >= 60.0) 47 listBox1.Items.Add("做得一般,还需要付出更大的努力才行哦!"); 48 else 49 listBox1.Items.Add("做得不好!你付出了时间与精力,为什么不付出感情呢?"); 50 if (ClassCommon.Right != ClassCommon.Total) 51 { 52 listBox1.Items.Add("以下是你做错的题目以及正确答案:"); 53 for (int i = 0; i < ClassCommon.Total; ++i) 54 if (ClassCommon.F[i].Addend1 + ClassCommon.F[i].Addend2 != ClassCommon.F[i].Ans) 55 listBox1.Items.Add("第 " + Convert.ToString(i + 1) + " 题," + Convert.ToString(ClassCommon.F[i].Addend1) + " + " + Convert.ToString(ClassCommon.F[i].Addend2) + " = " + Convert.ToString(ClassCommon.F[i].Ans) + "✘→" + Convert.ToString(ClassCommon.F[i].Addend1 + ClassCommon.F[i].Addend2) + "✔"); 56 } 57 button4.Focus(); 58 } 59 60 private void button4_Click(object sender, EventArgs e) 61 { 62 this.Close(); 63 f1.Show(); 64 } 65 66 private void Result_Activated(object sender, EventArgs e) 67 { 68 button4.Focus(); 69 } 70 71 private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 72 { 73 74 } 75 76 } 77 }
About.cs
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace AdditionGame 11 { 12 public partial class About : Form 13 { 14 Form f1 = new Setting(); 15 public About(Setting firstForm) 16 { 17 InitializeComponent(); 18 f1 = firstForm; 19 } 20 21 private void About_Load(object sender, EventArgs e) 22 { 23 button4.Focus(); 24 } 25 26 private void button3_Click(object sender, EventArgs e) 27 { 28 f1.Close(); 29 this.Close(); 30 } 31 32 private void button4_Click(object sender, EventArgs e) 33 { 34 this.Close(); 35 f1.Show(); 36 } 37 38 private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 39 { 40 System.Diagnostics.Process.Start("http://www.cnblogs.com/haipzm/"); 41 } 42 43 private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 44 { 45 System.Diagnostics.Process.Start("haipzm@gmail.com"); 46 } 47 48 } 49 }
ClassCommon.cs
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace AdditionGame 7 { 8 public struct Data 9 { 10 public int Addend1; 11 public int Addend2; 12 public int Ans; 13 } 14 class ClassCommon 15 { 16 public static int MaxTotal = 10000000; 17 public static Data[] F = new Data[MaxTotal]; 18 public static int Count = 0; 19 public static double Rate = 0.0; 20 public static int Right = 0; 21 public static int Wrong = 0; 22 public static int Total = 0; 23 public static int Scope = 0; 24 } 25 }