结对编程项目---四则运算
小组成员:
王林
赵文博 中软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(" "); 159 input(" "); 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 }
窗体框架:
运行结果截图:
总结:
通过这两周的学习和对程序的认知,我们对自身的编程更加有信心了,面对后边的学习我们也一定能一同完成,一同进步。