結對編程項目---四則運算編程
小組成員:框架
王浩淳 dom
吳獻榮 中軟1班 130201237 博客地址:http://www.cnblogs.com/bgdwxr/學習
基本功能:this
1) 實現一個帶有用戶界面的四則運算。spa
2) 生成的題目不能重複。設計
3) 支持負數。3d
須要支持的基本設定參數代碼規範
1) 題目的數量code
2) 數值的範圍
3) 題目中最多幾個運算符
4) 題目中或運算過程當中有無有分數
5) 題目中是否有乘除法
6) 題目中是否有括號
7) 題目中或運算過程當中有無負數
工做分配:
我:窗體框架的設計與實現,整體代碼功能的設計,bug排除。
吳獻榮:功能代碼的實現,總體代碼規範,代碼細節與bug排除。
結對的每個人的優勢和缺點:
優勢:個人夥伴吳獻榮同窗動手能力很強,頗有鑽研精神,編程基礎好
缺點:編程時遇到問題容易煩躁
結對編程的優勢和缺點:
優勢:編程效率更高,能力互補,相互學習更有效的解決問題
缺點:有時想法不統一,編程習慣不一樣
編程代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace 四則運算自動生成器 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } char[] fh = { '+', '-', '*', '/' }; private void button2_Click(object sender, EventArgs e) { int a = Convert.ToInt32(this.textBox1.Text); //獲取生成題目數 int b = Convert.ToInt32(this.textBox2.Text); //獲取生成數的最小值 int c = Convert.ToInt32(this.textBox3.Text); //獲取生成數的最大值 int fhs = Convert.ToInt32(this.comboBox1.Text.ToString()); //獲取運算符個數 for (int i = 0; i < a; i++) { if (fhs == 1)//一個運算符 { if (checkBox1.Checked == true)//有分數 { if (checkBox2.Checked == true)//有乘除法 { shu(b, c); fh1(); shu(b, c); input(" = "); input("\n"); } else { shu(b, c); fh2(); shu(b, c); input(" = "); input("\n"); } } else { if (checkBox2.Checked == true)//有乘除法 { randzs(b, c); fh1(); randzs(b, c); input(" = "); input("\n"); } else { randzs(b, c); fh2(); randzs(b, c); input(" = "); input("\n"); } } } else if (fhs == 2) { if (checkBox1.Checked == true)//有分數 { if (checkBox2.Checked == true)//有乘除法 { if (checkBox3.Checked == true)//有括號 { input("("); shu(b, c); fh1(); shu(b, c); input(")"); fh1(); shu(b, c); input(" = "); input("\n"); } else { shu(b, c); fh1(); shu(b, c); fh1(); shu(b, c); input(" = "); input("\n"); } } } else { if (checkBox3.Checked == true)//有括號 { input("("); shu(b, c); fh2(); shu(b, c); input(")"); fh2(); shu(b, c); input(" = "); input("\n"); } else { shu(b, c); fh2(); shu(b, c); fh2(); shu(b, c); input(" = "); input("\n"); } } } else { if (checkBox2.Checked == true)//有乘除法 { if (checkBox3.Checked == true)//有括號 { input("("); randzs(b, c); fh1(); randzs(b, c); input(")"); fh1(); randzs(b, c); input(" = "); input("\n"); } else { randzs(b, c); fh1(); randzs(b, c); fh1(); randzs(b, c); input(" = "); input("\n"); } } else { if (checkBox3.Checked == true)//有括號 { input("("); randzs(b, c); fh2(); randzs(b, c); input(")"); fh2(); randzs(b, c); input(" = "); input("\n"); } else { randzs(b, c); fh2(); randzs(b, c); fh2(); randzs(b, c); input(" = "); input("\n"); } } } } } public void fh1() //含有乘除法 { String fh1; System.Random i = new Random(System.DateTime.Now.Millisecond); fh1 = fh[i.Next(4)].ToString(); input(fh1); } public void fh2()//無乘除法 { String fh2; System.Random i = new Random(System.DateTime.Now.Millisecond); fh2 = fh[i.Next(2)].ToString(); input(fh2); } public void randzs(int b,int c)//隨機整數 { int zs; System.Random num = new Random(System.DateTime.Now.Millisecond); zs = num.Next(b, c); input(zs.ToString()); } public void randfs(int b,int c)//隨機分數 { int n, m; System.Random num = new Random(System.DateTime.Now.Millisecond); do { n = num.Next(b, c); m = num.Next(b, c); } while (n == 0 || m == 0 || n == m); input(n.ToString()); input("/"); input(m.ToString()); } public void shu(int b,int c) { int e; System.Random num = new Random(System.DateTime.Now.Millisecond); e = num.Next(2); if (e == 0) { randzs(b,c); } else { randfs(b,c); } } public void input(string t)//輸出到TextBox4中 { textBox4.AppendText(t); } private void button3_Click(object sender, EventArgs e)//清除輸出結果 { textBox4.Clear(); } private void button1_Click(object sender, EventArgs e) { checkBox1.Checked = false; checkBox2.Checked = false; checkBox3.Checked = false; } private void button4_Click(object sender, EventArgs e) { textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); textBox4.Clear(); comboBox1.Text = "請選擇"; checkBox1.Checked = false; checkBox2.Checked = false; checkBox3.Checked = false; } } }
窗體框架:
運行結果截圖:
總結:
通過兩週的學習,我和個人夥伴在編程基礎能力上都有了提高,對代碼規範也更加劇視,可是通過結對編程我和個人同伴也都瞭解到了本身在編程時的優勢和不足,在這次結對編程中,我更多的是負責了動腦子的工做,動手敲代碼的環節少了些,在以後的編程中本身也要重視本身的動手能力。在有夥伴的狀況下,本身的責任心也更增強了,兩我的都開始努力研究程序,在這之中咱們也互相學到了不少新的知識。
小組編程截圖: