一、題目要求
每個同學對已有的四則運算生成器進行優化,我選擇的題目是:讓程序能接受用戶輸入答案,並判斷對錯,最後給出總共對/錯的數量。
二、設計思想
首先考慮用c#編寫程序,找到一個能輸出運算題目、能接收用戶輸入的還能反饋給用戶做的對與錯的控件,最後考慮選擇的是datagridview控件,而且用了之後效果還是不錯的,但是不進行數據庫的鏈接,就是簡單的實現這個控件的單元格的內容輸入輸出。
三、程序源代碼
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 sizeyunsuanqi2._0
11 {
12 public partial class Form1 : Form
13 {
14
15 int shitishumu = 0;
16 int shuzhifanwei1 = 0;
17 int shuzhifanwei2 = 0;
18 int a = 0;
19 int b = 0;
20 int c = 0;
21 int addition, division = 0, subtraction1, subtraction2, multiplication, count = 0;
22 public Form1()
23 {
24 InitializeComponent();
25 }
26
27 private void button1_Click(object sender, EventArgs e)
28 {
29 shitishumu = int.Parse(textBox4.Text);//用戶控制輸入試題數目
30 shuzhifanwei2 = int.Parse(textBox3.Text);//用戶控制輸入數值范圍(大)
31 shuzhifanwei1 = int.Parse(textBox2.Text);//用戶控制輸入數值范圍(小)
32 richTextBox1.Text += "尊敬的用戶您好,您的請求已經得到確認" + "\r\n";
33 richTextBox1.Text += "您將打印 " + shitishumu + " 道題目" + "\r\n";
34 richTextBox1.Text += "您打印試題的數值范圍是: " + shuzhifanwei1 + "-" + shuzhifanwei2 + "\r\n";
35 if (checkBox2.Checked == true)
36 {
37 richTextBox1.Text += "運算試題的計算結果存在負數" + "\n";
38 }
39 if (checkBox2.Checked == false)
40 {
41 richTextBox1.Text += "運算試題的計算結果不存在負數" + "\n";
42 }
43 if (checkBox1.Checked == true)
44 {
45 richTextBox1.Text += "運算試題存在乘除法" + "\n";
46 }
47 if (checkBox1.Checked == false)
48 {
49 richTextBox1.Text += "運算試題不存在乘除法" + "\n";
50 }
51 System.Random number = new Random(System.DateTime.Now.Millisecond);
52 int num1=0, num2=0;
53 for (int i = 0; i < shitishumu; i++)
54 {
55 if (shuzhifanwei1 <=shuzhifanwei2)
56 {
57 num1 = number.Next(shuzhifanwei1, shuzhifanwei2);
58 num2 = number.Next(shuzhifanwei1, shuzhifanwei2);
59 }
60 else if (shuzhifanwei1 > shuzhifanwei2)
61 {
62 num1 = number.Next(shuzhifanwei2, shuzhifanwei1);
63 num2 = number.Next(shuzhifanwei2, shuzhifanwei1);
64 }
65 int yunsuan1 = number.Next(0, 4);
66 int yunsuan2 = number.Next(0, 2);
67
68 //判斷條件並輸出運算式
69 if (checkBox1.Checked == true)//有乘除法
70 {
71 if (checkBox2.Checked == true)//減法有負數
72 {
73 if (yunsuan1 == 0) { dataGridView1.Rows.Add(i + 1, num1, "+", num2, "="); }
74 else if (yunsuan1 == 1) { dataGridView1.Rows.Add(i + 1, num1, "*", num2, "="); }
75 else if (yunsuan1 == 2) { dataGridView1.Rows.Add(i + 1, num1, "-", num2, "="); }//減法有負數
76 else if (yunsuan1 == 3 && num2 != 0) { dataGridView1.Rows.Add(i + 1, num1, "/", num2, "="); }//除法有余數
77 }
78 else if (checkBox2.Checked == false)//減法沒有負數
79 {
80 if (yunsuan1 == 0) { dataGridView1.Rows.Add(i + 1, num1, "+", num2, "="); }
81 else if (yunsuan1 == 1) { dataGridView1.Rows.Add(i + 1, num1, "*", num2, "="); }
82 else if (yunsuan1 == 2 && num1 > num2) { dataGridView1.Rows.Add(i + 1, num1, "-", num2, "="); }//減法沒有負數
83 else if (yunsuan1 == 2 && num1 <= num2) { dataGridView1.Rows.Add(i + 1, num2, "-", num1, "="); }//減法沒有負數
84 else if (yunsuan1 == 3 && num2 != 0) { dataGridView1.Rows.Add(i + 1, num1, "/", num2, "="); }//除法有余數
85 else if (yunsuan1 == 3 && num2 == 0) { dataGridView1.Rows.Add(i + 1, num2, "/", num1, "="); }//除法有余數
86
87 }
88 }
89 else if (checkBox1.Checked == false)//沒有乘除法
90 {
91 if (checkBox2.Checked == true)//減法有負數
92 {
93 if (yunsuan2 == 0) { dataGridView1.Rows.Add(i + 1, num1, "+", num2, "="); }
94 else if (yunsuan2 == 1) { dataGridView1.Rows.Add(i + 1, num1, "-", num2, "="); }//減法有負數
95 }
96 else if (checkBox2.Checked == false)//減法沒有負數
97 {
98 if (yunsuan2 == 0) { dataGridView1.Rows.Add(i + 1, num1, "+", num2, "="); }
99 else if (yunsuan2 == 1 && num1 > num2) { dataGridView1.Rows.Add(i + 1, num1, "-", num2, "="); }//減法沒有負數
100 else if (yunsuan2 == 1 && num1 <= num2) { dataGridView1.Rows.Add(i + 1, num2, "-", num1, "="); }//減法沒有負數
101 }
102 }
103
104 //dataGridView1.Rows.Add(i+1, num1, "+",num2,"=");
105 }
106 }
107
108 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
109 {
110
111 }
112
113 private void button5_Click(object sender, EventArgs e)//批改
114 {
115 //int a=0, b=0, c=0, addition, division=0, subtraction1,subtraction2, multiplication,count=0;
116 for (int i = 0; i < shitishumu; i++)
117 {
118 string x = "+";
119 string w = "-";
120 string y = "*";
121 string z = "/";
122 if (this.dataGridView1.Rows[i].Cells[1].Value.ToString() != null)
123 {
124 a = int.Parse(this.dataGridView1.Rows[i].Cells[1].Value.ToString());
125 }
126 if (this.dataGridView1.Rows[i].Cells[3].Value.ToString() != null)
127 {
128 b = int.Parse(this.dataGridView1.Rows[i].Cells[3].Value.ToString());
129 }
130 addition = a + b;
131 subtraction1 = a - b;
132 subtraction2 = b - a;
133 multiplication = a * b;
134 if (b != 0)
135 {
136 division = a / b;
137 }
138
139 if (this.dataGridView1.Rows[i].Cells[5].Value == null)
140 {
141 this.dataGridView1.Rows[i].Cells[6].Value = "錯誤";
142 count = count + 1;
143 }
144 else if (this.dataGridView1.Rows[i].Cells[5].Value != null)
145 {
146 c = int.Parse(this.dataGridView1.Rows[i].Cells[5].Value.ToString());
147
148 if (x == this.dataGridView1.Rows[i].Cells[2].Value.ToString())//判斷加法結果
149 {
150 if (c == addition)
151 {
152 this.dataGridView1.Rows[i].Cells[6].Value = "正確";
153 }
154 else if (c != addition)
155 {
156 this.dataGridView1.Rows[i].Cells[6].Value = "錯誤";
157 count = count + 1;
158 }
159
160 }
161 else if (w == this.dataGridView1.Rows[i].Cells[2].Value.ToString())//判斷減法結果
162 {
163 if (c == subtraction1 || c == subtraction2)
164 {
165 this.dataGridView1.Rows[i].Cells[6].Value = "正確";
166 }
167 else if (c != subtraction1 && c != subtraction2)
168 {
169 this.dataGridView1.Rows[i].Cells[6].Value = "錯誤";
170 count = count + 1;
171 }
172
173 }
174 if (y == this.dataGridView1.Rows[i].Cells[2].Value.ToString())//判斷乘法結果
175 {
176 if (c == multiplication)
177 {
178 this.dataGridView1.Rows[i].Cells[6].Value = "正確";
179 }
180 else if (c != multiplication)
181 {
182 this.dataGridView1.Rows[i].Cells[6].Value = "錯誤";
183 count = count + 1;
184 }
185
186 }
187 if (z == this.dataGridView1.Rows[i].Cells[2].Value.ToString())//判斷除法結果
188 {
189 if (c == division)
190 {
191 this.dataGridView1.Rows[i].Cells[6].Value = "正確";
192 }
193 else if (c != division)
194 {
195 this.dataGridView1.Rows[i].Cells[6].Value = "錯誤";
196 count = count + 1;
197 }
198 }
199 }
200
201 }
202 richTextBox1.Text += "正確數目:" + (shitishumu-count) + "\n";
203 richTextBox1.Text += "錯誤數目:" + count + "\n";
204
205 }
206
207 }
208 }
四、運行結果截圖


五、設計題目遇到的問題與心得體會
遇到的問題:
datagridview控件以前沒有用到過,現在是現學現賣,只是簡單的學了控件的輸入輸出,學習了如何接收用戶在單元格裡的輸入值。
心得體會:
不要覺得問題多麼多麼的難弄,程序多麼多麼的難編寫,每一個大的程序大的項目都是一個個小的程序,小的功能搭建在一起實現的,我們在做程序的時候,不要想著一下子把所有的功能都實現了,一個一個功能的來,分成若干個小模塊,小模塊的問題解決了,那麼也就完成,慢慢來,慢慢來,切勿浮躁。