結對程式設計項目---四則運算
小組成員:
王林
趙文博 中軟1班 130201229 部落格位址:http://home.cnblogs.com/u/chasi/
基本功能:
1) 實作一個帶有使用者界面的四則運算。
2) 生成的題目不能重複。
3) 支援負數。
需要支援的基本設定參數
1) 題目的數量
2) 數值的範圍
3) 題目中最多幾個運算符
4) 題目中或運算過程中有無有分數
5) 題目中是否有乘除法
6) 題目中是否有括号
7) 題目中或運算過程中有無負數
工作配置設定:
由于是2人進行合作設計代碼,沒有具體分工,2人同時進行
結對的每一個人的優點和缺點:
優點:我擅長細節工作,我的同伴趙文博擅長大體的工作設計
缺點:我比較缺乏大體的工作設計,我的同伴趙文博則對細節發面不擅長
結對程式設計的優點和缺點:
優點:取長補短,互相學習,共同進步
缺點:代碼認知能力不足,需要上網查閱資料
程式設計代碼:
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.Threading.Tasks;
9 using System.Windows.Forms;
10
11 namespace 四則運算
12 {
13 public partial class Form1 : Form
14 {
15 public Form1()
16 {
17 InitializeComponent();
18 }
19 char[] OC = { '+', '-', '*', '%', ' ' };
20 static int GetRandomSeed() //随機數種子,使随機數不重複
21 {
22 byte[] bytes = new byte[4];
23 System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
24 rng.GetBytes(bytes);
25 return BitConverter.ToInt32(bytes, 0);
26 }
27 private void btn1_Click_1(object sender, EventArgs e)
28 {
29 int n = Convert.ToInt32(this.number.Text); //生成題目的數量
30 int r = Convert.ToInt32(this.range1.Text); //生成範圍的最小值
31 int o = Convert.ToInt32(this.range2.Text); //生成範圍的最大值
32 int OC = Convert.ToInt32(this.chooseysf.Text.ToString()); //生成需求的運算符個數(operational character)
33 for (int i = 0; i < n; i++) //生成n道題
34 {
35 if (OC == 1) //生成一個運算符
36 {
37
38 if (choosefs.SelectedItem.ToString() == "是") //選擇分數
39 {
40 Random rd = new Random(GetRandomSeed());
41 randnum1(r,o); //插入随機數
42 input_OC(); //插入運算符
43 randnum1(r,o);
44 }
45 else
46 {
47 Random rd = new Random(GetRandomSeed());
48 randnum(r,o);
49 input_OC();
50 randnum(r,o);
51 }
52 }
53 else if (OC == 2) // 生成兩個運算符
54 {
55 Random rd = new Random(GetRandomSeed());
56 int t = 0;
57 t = rd.Next(2);
58 if (t == 0)
59 {
60 if (choosefs.SelectedItem.ToString() == "是") //選擇“有”分數
61 {
62 Random rd1 = new Random(GetRandomSeed());
63 randnum1(r, o);
64 input_OC();
65 randnum1(r, o);
66 }
67 else
68 {
69 Random rd1 = new Random(GetRandomSeed());
70 randnum(r, o);
71 input_OC();
72 randnum(r, o);
73 }
74 }
75 else
76 {
77
78 if (choosekh.SelectedItem.ToString() == "是") //選擇“有”括号
79 {
80 input_OC2_kh(r, o);
81 }
82 else
83 {
84 input_OC2(r, o);
85 }
86
87
88 }
89 }
90 else //生成三個運算符
91 {
92 Random rd = new Random(GetRandomSeed());
93 int t = 0;
94 t = rd.Next(2);
95 if (t == 0)
96 {
97 Random rd2 = new Random(GetRandomSeed());
98 int j = 0;
99 j = rd.Next(2);
100 if (j == 0)
101 {
102 if (choosefs.SelectedItem.ToString() == "是") //選擇“有”分數
103 {
104 Random rd1 = new Random(GetRandomSeed());
105 randnum1(r, o);
106 input_OC();
107 randnum1(r, o);
108 }
109 else
110 {
111 Random rd1 = new Random(GetRandomSeed());
112 randnum(r, o);
113 input_OC();
114 randnum(r, o);
115 }
116 }
117 else
118 {
119
120 if (choosekh.SelectedItem.ToString() == "是") //選擇“有”括号
121 {
122 input_OC2_kh(r, o);
123 }
124 else
125 {
126 input_OC2(r, o);
127 }
128
129
130 }
131 }
132 else
133 {
134 if (choosekh.SelectedItem.ToString() == "是") //選擇“有”括号
135 {
136 int m = 0;
137 m = rd.Next(3); //随機括号
138 if (m == 0)
139 {
140 input_OC3_kh1(r, o);
141 }
142 else if (m == 1)
143 {
144 input_OC3_kh2(r, o);
145 }
146 else
147 {
148 input_OC3_kh3(r, o);
149 }
150 }
151 else
152 {
153 input_OC3(r, o); //選擇“無”括号
154 }
155 }
156 }
157 input(" = ");
158 input("\n");
159 input("\n");
160 }
161 }
162 public void input_OC()
163 {
164 input(" "); //運算符前後空格
165 Random rd = new Random(GetRandomSeed());
166 if (choosecc.SelectedItem.ToString() == "是")
167 {
168 input(OC[rd.Next(4)].ToString());//選擇“有”乘除法
169 }
170 else
171 {
172 input(OC[rd.Next(2)].ToString());//選擇“無”乘除法
173 }
174 input(" ");
175 }
176 public void input_OC2(int r,int o)
177 {
178 if (choosefs.SelectedItem.ToString() == "是") //判斷是否含分數
179 {
180 randnum1(r,o);
181 input_OC();
182 randnum1(r,o);
183 input_OC();
184 randnum1(r,o);
185 }
186 else
187 {
188 randnum(r,o);
189 input_OC();
190 randnum(r,o);
191 input_OC();
192 randnum(r,o);
193 }
194
195 }
196 public void input_OC2_kh(int r,int o)
197 {
198 if (choosefs.SelectedItem.ToString() == "是") //選擇“有”分數
199 {
200 input("(");
201 randnum1(r,o);
202 input_OC();
203 randnum1(r,o);
204 input(")");
205 input_OC();
206 randnum1(r,o);
207 }
208 else
209 {
210 input("(");
211 randnum(r,o);
212 input_OC();
213 randnum(r,o);
214 input(")");
215 input_OC();
216 randnum(r,o);
217 }
218
219 }
220 public void input_OC3(int r,int o)
221 {
222 if (choosefs.SelectedItem.ToString() == "是") //選擇“有”分數
223 {
224 randnum1(r,o);
225 input_OC();
226 randnum1(r,o);
227 input_OC();
228 randnum1(r,o);
229 input_OC();
230 randnum1(r,o);
231 }
232 else
233 {
234 randnum(r,o);
235 input_OC();
236 randnum(r,o);
237 input_OC();
238 randnum(r,o);
239 input_OC();
240 randnum(r,o);
241 }
242
243 }
244 public void input_OC3_kh1(int r,int o)
245 {
246 if (choosefs.SelectedItem.ToString() == "是")
247 {
248 input("[");
249 input("(");
250 randnum1(r,o);
251 input_OC();
252 randnum1(r,o);
253 input(")");
254 input_OC();
255 randnum1(r,o);
256 input("]");
257 input_OC();
258 randnum1(r,o);
259 }
260 else
261 {
262 input("[");
263 input("(");
264 randnum(r,o);
265 input_OC();
266 randnum(r,o);
267 input(")");
268 input_OC();
269 randnum(r,o);
270 input("]");
271 input_OC();
272 randnum(r,o);
273 }
274
275
276 }
277 public void input_OC3_kh2(int r,int o)
278 {
279 if (choosefs.SelectedItem.ToString() == "是")
280 {
281 randnum1(r,o);
282 input_OC();
283 input("(");
284 randnum1(r,o);
285 input_OC();
286 randnum1(r,o);
287 input(")");
288 input_OC();
289 randnum1(r,o);
290 }
291 else
292 {
293 randnum(r,o);
294 input_OC();
295 input("(");
296 randnum(r,o);
297 input_OC();
298 randnum(r,o);
299 input(")");
300 input_OC();
301 randnum(r,o);
302 }
303
304 }
305 public void input_OC3_kh3(int r,int o)
306 {
307 if (choosefs.SelectedItem.ToString() == "是")
308 {
309 input("(");
310 randnum1(r,o);
311 input_OC();
312 randnum1(r,o);
313 input(")");
314 input_OC();
315 input("(");
316 randnum1(r,o);
317 input_OC();
318 randnum1(r,o);
319 input(")");
320 }
321 else
322 {
323 input("(");
324 randnum(r,o);
325 input_OC();
326 randnum(r,o);
327 input(")");
328 input_OC();
329 input("(");
330 randnum(r,o);
331 input_OC();
332 randnum(r,o);
333 input(")");
334 }
335
336 }
337 public void randnum(int r,int o) //對數進行随機,隻能是整數
338 {
339 Random rd = new Random(GetRandomSeed());
340 int num;
341 do
342 {
343 num = rd.Next(r,o + 1);
344 } while (num == 0); // 随機整數不為 0
345
346 input(num.ToString());
347
348 }
349 public void randnum1(int r,int o) //對數進行随機,可為分數
350 {
351 int t = 0;
352 Random rd = new Random(GetRandomSeed());
353 t = rd.Next(2);
354 if (t == 0)
355 {
356 int num;
357 do
358 {
359 num = rd.Next(r,o + 1);
360 } while (num == 0); // 随機整數不為 0
361
362 input(num.ToString());
363
364 }
365 else
366 {
367 randnum2(r,o);
368 }
369
370 }
371
372 public void randnum2(int r,int o) //随機分數
373 {
374 Random rd = new Random(GetRandomSeed());
375 int x, y;
376 do
377 {
378 x = rd.Next(r,o + 1);
379 } while (x == 0);
380 do
381 {
382 y = rd.Next(r,o + 1);
383 } while (y == 0 || y == x);
384
385 if (x > y)
386 {
387 int t = x;
388 x = y;
389 y = t;
390 }
391 input(x.ToString());
392 input("/");
393 input(y.ToString());
394
395
396 }
397
398 public void input(string t)
399 {
400 textBox1.AppendText(t);
401 }
402
403
404
405
406 private void btn2_Click_1(object sender, EventArgs e)
407 {
408 textBox1.Clear();
409 }
410 }
411
412 }
窗體架構:

運作結果截圖:
總結:
通過這兩周的學習和對程式的認知,我們對自身的程式設計更加有信心了,面對後邊的學習我們也一定能一同完成,一同進步。