個人專案3:加強版四則運算
阿新 • • 發佈:2018-10-31
需求
1.實現線上答題
2.答題結束後,可以判斷對錯
3.並將錯題的結果儲存起來
設計思想
1.設計視窗:使用了dataGridView表格控制元件,4個textBox控制元件,5個button控制元件和若干Label視窗控制元件
2.程式編輯:(1)在上次的四則運算的基礎上,將四則運算的式子顯示在“顯示”按鈕的程式裡
並且計算式子的正確值,並將正確結果的那一列的屬性顯示不可見
(2)編寫“驗證”控制元件的程式,判斷輸入的結果和正確結果是否一致,並將結果正
確性顯示在dataGridView表格中。
(3)編寫“儲存“控制元件的程式,將錯題儲存到桌面上,並自動生成一個名稱為“錯題本”
的txt檔案
3.除錯和執行程式
出現的問題
1.四則運算的式子不能正確輸入到dataGridView表格中
2.點選“顯示“按鈕時,正確結果也會出現在表格中
3.判斷結果正確性時,結果全部顯示的是錯誤
4.儲存出來的只出現四則運算的最後一個式子
解決方法
1.定義一個字串型別的變數,將四則運算的中數字和符號賦值到字串中,將字串輸入到表格中
2.將正確結果和結果正確性這兩列的屬性在剛開始顯示為不可見,點選“驗證“按鈕時,將這兩列改為可見
3.將表格中的資料轉化為double型別再比較
4.將錯誤的式子求和再輸出
執行結果
程式碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace 個人專案3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void label1_Click(object sender, EventArgs e) { } private void button5_Click(object sender, EventArgs e) { Application.Exit(); } private void button4_Click(object sender, EventArgs e) { dataGridView1.Rows.Clear(); //清空資料的行和列 dataGridView1.Columns.Clear(); dataGridView1.ColumnCount = 4; //定義表格列數,並賦表頭名稱 dataGridView1.Columns[0].Name = "四則運算"; dataGridView1.Columns[1].Name = "結果"; dataGridView1.Columns[2].Name = "正確結果"; dataGridView1.Columns[3].Name = "結果正確性"; textBox3.Text = ""; //清空正確率的值 } private void button1_Click(object sender, EventArgs e) { double m = Convert.ToDouble(textBox1.Text); //取textBox控制元件的值 double n = Convert.ToDouble(textBox2.Text); double q = Convert.ToDouble(textBox4.Text); dataGridView1.RowCount = (int)q; //定義表格的行數 Random r = new Random(); //取隨機數的函式 for (int i = 0; i < q; i++) { double num1 = r.Next((int)m, (int)n); //取隨機數 double num2 = r.Next((int)m, (int)n); int a = r.Next(0, 3); double c = 1; char signal = '+'; if(a%3==0) //隨機取四則運算的符號 { signal = '+'; c = num1 + num2; } else if(a%3==1) { signal = '-'; if (num1 < num2) { double temp; temp = num1; num1 = num2; num2 = temp; } c = num1 - num2; } else if(a%3==2) { signal = '*'; c = num1 * num2; } else if (num1 / num2 == 0 && num1 != 0 && num2 != 0) { signal = '/'; c = num1 / num2; } dataGridView1.Rows[i].Cells[2].Value = c; //四則運算的正確結果 string s = Convert.ToString(num1) + signal + Convert.ToString(num2)+'='; dataGridView1.Rows[i].Cells[0].Value = s; //顯示四則運算 } } private void button2_Click(object sender, EventArgs e) { double q = Convert.ToDouble(textBox4.Text); dataGridView1.RowCount = (int)q; dataGridView1.Columns[2].Visible=true; //將列“正確結果”和“結果正確性”變為可見 dataGridView1.Columns[3].Visible=true; int a=0; for (int i = 0; i < q; i++) //判斷結果正確性 { if (Convert.ToDouble(dataGridView1.Rows[i].Cells[1].Value) == Convert.ToDouble(dataGridView1.Rows[i].Cells[2].Value)) { dataGridView1.Rows[i].Cells[3].Value = "正確"; a += 1; } else { dataGridView1.Rows[i].Cells[3].Value = "錯誤"; } } double b; //計算並輸出正確率 b = a / q; b = Math.Round(b, 2)*100; string c = Convert.ToString(b) + '%'; textBox3.Text = c; } private void button3_Click(object sender, EventArgs e) { string path = @"C:\Users\destiny\Desktop\錯題本.txt"; if (File.Exists(path)) { File.Delete(path); } string wrrong = ""; double q = Convert.ToDouble(textBox4.Text); dataGridView1.RowCount = (int)q; for (int i = 0; i < q; i++) { if (Convert.ToDouble(dataGridView1.Rows[i].Cells[1].Value) != Convert.ToDouble(dataGridView1.Rows[i].Cells[2].Value)) { wrrong += Convert.ToString(dataGridView1.Rows[i].Cells[0].Value + "\r\n"); } } StreamWriter sw = new StreamWriter(path); sw.WriteLine(wrrong); sw.Close(); } } }
時間記錄日誌