zoukankan      html  css  js  c++  java
  • 个人项目三

    需求

    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 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 + "
    ");
                    }
                }
    
                  SaveFileDialog sfile = new SaveFileDialog(); //实例化一个保存文本对话框sfile
                  sfile.Filter = "文本文件|*.txt";  //保存文件类型为txt文件
                  if (sfile.ShowDialog() == DialogResult.OK) //如果保存成功
                  {
                      StreamWriter sw = new StreamWriter(sfile.FileName);   //实例化文本写入流sw,并用sfile.FileName初始化
                      sw.WriteLine(wrong);  
                      sw.Close();  //关闭sw
                      MessageBox.Show("已导出成功!");
                  }
            }
        }
    }
    

      

    代码

  • 相关阅读:
    【Java】Java网络编程
    (4.47)sql server 中的 values 构造临时表
    阿里时序数据库 telegraf+influxdb+grafana for sqlserver input plugin
    全景互动制作工具
    湖南师范大学的案例
    git观点
    js-cookie对cookie的操作
    hsf的意义在于什么
    Prettier看这一篇就行了
    关于微前端的观点
  • 原文地址:https://www.cnblogs.com/qiyuea/p/10258908.html
Copyright © 2011-2022 走看看