个人项目3:加强版四则运算

需求

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();
        }
    }
}

时间记录日志

 

猜你喜欢

转载自www.cnblogs.com/ct203/p/9886544.html
今日推荐