zoukankan      html  css  js  c++  java
  • 混合运算

    <1>需求分析

    用户还可以自行输入所要计时的时间,从而进行倒计时。

    同时用户还可以输入所要答的总题数。

    单击停止按钮时也会弹出统计结果!

    用户还可以自行输入随机数的产生范围!

    运算符号的随机产生!

    用户还可以选择是否加括号!分为前两个数加和后两个数加!

    <2>设计思路

    创建windows窗体,设计窗体,并根据窗体的设计进行代码的编写!

    因为要获取文本框中的数值,同时要统计正确的总数和总题数所以首先要定义变量!

    然后用suiji()方法产生随机数。

    再然后技术textbox1的keydown事件代码的编写!

    单击停止,按钮弹出窗体二!

    comboBox1_SelectedIndexChanged事件的代码编写!

    判断正误代码的编写!

    加减乘除的随机产生的代码编写!

    form2统计总题数,正确的总数,以及错误的总数和正确率!

    <3>代码的实现

    form1的代码

    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;
    
    namespace 算
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            //定义变量
            public static int count = -1;
            public static int right = 0;
            public static int sun;
            public static int shi = 0;
            //产生随机数
            private void suiji() 
            {
    
                Random ra = new Random();
                int h = int.Parse(textBox4.Text) + 1;
                int j = int.Parse(textBox5.Text);
                int a, b, c;
                a = ra.Next(h, j);
                b = ra.Next(h, a);
                c = ra.Next(a, j);
                label2.Text = a.ToString();
                label4.Text = b.ToString();
                label7.Text = c.ToString();
                if (label3.Text == "-")
                {
                    if (a <= b)
                    {
                        int k=0;
                        b = k;
                        b = a;
                        a = k;
                    }
     
                }
                
                textBox1.Text = "";
                count++;
    
    
            }
            //随机产生加减乘除
            private void suanfa()
            {
                Random op = new Random();
                int d = op.Next(1, 5);
                int e = op.Next(1, 5);
                switch (d)
                {
                    case 1:
                        label3.Text = "+";
                        break;
                    case 2:
                        label3.Text = "-";
                        break;
                    case 3:
                        label3.Text = "*";
                        break;
                    case 4:
                        label3.Text = "/";
                        break;
                  
                }
                switch (e)
                {
                    case 1:
                        label6.Text = "+";
                        break;
                    case 2:
                        label6.Text = "-";
                        break;
                    case 3:
                        label6.Text = "*";
                        break;
                    case 4:
                        label6.Text = "/";
                        break;
    
                }
     
            }
            //得到正确答案!
            private void zhengqu()
            {
                string f = label3.Text;
                String g = label6.Text;
                string fg = f + g;
                if (comboBox1.Text == "前两个加括号")
                {
                    switch (fg)
                    {
                        case "++":
                            sun = (int.Parse(label2.Text) + int.Parse(label4.Text)) + int.Parse(label7.Text);
                            break;
                        case "+-":
                            sun = (int.Parse(label2.Text) + int.Parse(label4.Text)) - int.Parse(label7.Text);
                            break;
                        case "+*":
                            sun = (int.Parse(label2.Text) + int.Parse(label4.Text)) * int.Parse(label7.Text);
                            break;
                        case "+/":
                            sun = (int.Parse(label2.Text) + int.Parse(label4.Text)) / int.Parse(label7.Text);
                            break;
                        case "-+":
                            sun = (int.Parse(label2.Text) - int.Parse(label4.Text)) + int.Parse(label7.Text);
                            break;
                        case "--":
                            sun = (int.Parse(label2.Text) - int.Parse(label4.Text)) - int.Parse(label7.Text);
                            break;
                        case "-*":
                            sun = (int.Parse(label2.Text) - int.Parse(label4.Text)) * int.Parse(label7.Text);
                            break;
                        case "-/":
                            sun = (int.Parse(label2.Text) - int.Parse(label4.Text)) / int.Parse(label7.Text);
                            break;
                        case "*+":
                            sun = (int.Parse(label2.Text) * int.Parse(label4.Text)) + int.Parse(label7.Text);
                            break;
                        case "*-":
                            sun = (int.Parse(label2.Text) * int.Parse(label4.Text)) - int.Parse(label7.Text);
                            break;
                        case "**":
                            sun = (int.Parse(label2.Text) * int.Parse(label4.Text)) * int.Parse(label7.Text);
                            break;
                        case "*/":
                            sun = (int.Parse(label2.Text) * int.Parse(label4.Text)) / int.Parse(label7.Text);
                            break;
                        case "/+":
                            sun = (int.Parse(label2.Text) / int.Parse(label4.Text)) + int.Parse(label7.Text);
                            break;
                        case "/-":
                            sun = (int.Parse(label2.Text) / int.Parse(label4.Text)) - int.Parse(label7.Text);
                            break;
                        case "/*":
                            sun = (int.Parse(label2.Text) / int.Parse(label4.Text)) * int.Parse(label7.Text);
                            break;
                        case "//":
                            sun = (int.Parse(label2.Text) / int.Parse(label4.Text)) / int.Parse(label7.Text);
                            break;
    
                    }
                }
                if (comboBox1.Text == "不加括号")
                {
                    switch (fg)
                    {
                        case "++":
                            sun = int.Parse(label2.Text) +int.Parse(label4.Text) + int.Parse(label7.Text);
                            break;
                        case "+-":
                            sun = int.Parse(label2.Text) +int.Parse(label4.Text) - int.Parse(label7.Text);
                            break;
                        case "+*":
                            sun = int.Parse(label2.Text) +int.Parse(label4.Text) * int.Parse(label7.Text);
                            break;
                        case "+/":
                            sun = int.Parse(label2.Text)+ int.Parse(label4.Text) / int.Parse(label7.Text);
                            break;
                        case "-+":
                            sun = int.Parse(label2.Text) - int.Parse(label4.Text) + int.Parse(label7.Text);
                            break;
                        case "--":
                            sun = int.Parse(label2.Text) - int.Parse(label4.Text) - int.Parse(label7.Text);
                            break;
                        case "-*":
                            sun = int.Parse(label2.Text) - int.Parse(label4.Text) * int.Parse(label7.Text);
                            break;
                        case "-/":
                            sun = int.Parse(label2.Text) - int.Parse(label4.Text) / int.Parse(label7.Text);
                            break;
                        case "*+":
                            sun = int.Parse(label2.Text) * int.Parse(label4.Text) + int.Parse(label7.Text);
                            break;
                        case "*-":
                            sun = int.Parse(label2.Text) * int.Parse(label4.Text) - int.Parse(label7.Text);
                            break;
                        case "**":
                            sun = int.Parse(label2.Text) * int.Parse(label4.Text) * int.Parse(label7.Text);
                            break;
                        case "*/":
                            sun = int.Parse(label2.Text) * int.Parse(label4.Text) / int.Parse(label7.Text);
                            break;
                        case "/+":
                            sun = int.Parse(label2.Text) / int.Parse(label4.Text) + int.Parse(label7.Text);
                            break;
                        case "/-":
                            sun = int.Parse(label2.Text) / int.Parse(label4.Text) - int.Parse(label7.Text);
                            break;
                        case "/*":
                            sun = int.Parse(label2.Text) / int.Parse(label4.Text) * int.Parse(label7.Text);
                            break;
                        case "//":
                            sun = int.Parse(label2.Text) / int.Parse(label4.Text) / int.Parse(label7.Text);
                            break;
    
                    }
                }
                if (comboBox1.Text == "后两个加括号")
                {
                    switch (fg)
                    {
                        case "++":
                            sun = int.Parse(label2.Text) + int.Parse(label4.Text) + int.Parse(label7.Text);
                            break;
                        case "+-":
                            sun = int.Parse(label2.Text) + (int.Parse(label4.Text) - int.Parse(label7.Text));
                            break;
                        case "+*":
                            sun = int.Parse(label2.Text) + (int.Parse(label4.Text) * int.Parse(label7.Text));
                            break;
                        case "+/":
                            sun = int.Parse(label2.Text) + (int.Parse(label4.Text) / int.Parse(label7.Text));
                            break;
                        case "-+":
                            sun = int.Parse(label2.Text) - (int.Parse(label4.Text) + int.Parse(label7.Text));
                            break;
                        case "--":
                            sun = int.Parse(label2.Text) - (int.Parse(label4.Text) - int.Parse(label7.Text));
                            break;
                        case "-*":
                            sun = int.Parse(label2.Text) -(int.Parse(label4.Text) * int.Parse(label7.Text));
                            break;
                        case "-/":
                            sun = int.Parse(label2.Text) -(int.Parse(label4.Text) / int.Parse(label7.Text));
                            break;
                        case "*+":
                            sun = int.Parse(label2.Text) * (int.Parse(label4.Text) + int.Parse(label7.Text));
                            break;
                        case "*-":
                            sun = int.Parse(label2.Text) * (int.Parse(label4.Text) - int.Parse(label7.Text));
                            break;
                        case "**":
                            sun = int.Parse(label2.Text) * (int.Parse(label4.Text) * int.Parse(label7.Text));
                            break;
                        case "*/":
                            sun = int.Parse(label2.Text) * (int.Parse(label4.Text) / int.Parse(label7.Text));
                            break;
                        case "/+":
                            sun = int.Parse(label2.Text) / (int.Parse(label4.Text) + int.Parse(label7.Text));
                            break;
                        case "/-":
                            sun = int.Parse(label2.Text) / (int.Parse(label4.Text) - int.Parse(label7.Text));
                            break;
                        case "/*":
                            sun = int.Parse(label2.Text) / (int.Parse(label4.Text) * int.Parse(label7.Text));
                            break;
                        case "//":
                            sun = int.Parse(label2.Text) / (int.Parse(label4.Text) / int.Parse(label7.Text));
                            break;
    
                    }
                }
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (shi <= 0)
                {
                    timer1.Enabled = false;
                    textBox1.Enabled = false;
                    MessageBox.Show("时间到!");
                    Form2 da = new Form2();
                    da.ShowDialog();
    
                }
    
    
                shi = shi - 1;
                textBox2.Text = shi.ToString();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                shi = int.Parse(textBox2.Text);
                textBox2.Text = shi.ToString();
                timer1.Enabled = true;
                timer1.Interval = 1000;
                timer1.Start();
                suiji();
                suanfa();
    
            }
    
            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    //判定数字是否合法!
                    int i = 0;
                    string an = textBox1.Text;
                    if (int.TryParse(an, out i) == false)
                    {
                        MessageBox.Show("你输得的数字不合法!");
    
                    }
                    //判定是否正确
                    zhengqu();
                    if (textBox1.Text == sun.ToString())
                    {
                        right++;
                    }
                    suiji();
                    suanfa();
                    //判断是否达到总题数
                    int q = int.Parse(textBox3.Text);
                    if (count == q)
                    {
                        timer1.Enabled = false;
                        textBox3.Enabled = false;
                        Form2 da = new Form2();
                        da.ShowDialog();
                    }
    
                }
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                timer1.Enabled = false;
                textBox3.Enabled = false;
                Form2 da = new Form2();
                da.ShowDialog();
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                this.Close();
            }
    
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string a=comboBox1.Text;
                switch(a)
                {
                    case"前两个加括号":
                        label1.Text = "(";
                        label5.Text = ")";
                        label14.Text = "";
                        label15.Text = "";
                        break;
                    case"后两个加括号":
                        label14.Text = "(";
                        label15.Text = ")";
                        label1.Text = "";
                        label5.Text = "";
                        break;
                    case"不加括号":
                        label1.Text = "";
                        label5.Text = "";
                        label14.Text = "";
                        label15.Text = "";
                        break;
    
                }
            }
    }
    }

    form2的代码

    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;
    
    namespace 算
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
    
            private void Form2_Load(object sender, EventArgs e)
            {
                textBox1.Text = Form1.count.ToString();
                textBox2.Text = Form1.right.ToString();
                textBox4.Text = ((Form1.right / (double)(Form1.count)) * 100).ToString() + "%";
                textBox3.Text = (Form1.count - Form1.right).ToString();
            }
    
           
        }
    }
    

     <4>测试

    <5>psp耗时

    PSP2.1 Personal Software Process Stages Time(h)
    Planning 计划 4
      • Estimate 估计这个任务需要多长时间 8
    Development 开发  
      • Analysis 需求分析 1
      • Design Spec 生成设计文档  
      • Coding Standard 代码规范 1
      • Design 具体设计 1
      • Coding 具体代码 3
      • Code Review 代码复审 1
      • Text 测试 1
    Reporting 报告  
      • Test Report 测试报告  
      • Size Measurement 计算工作量

    0.5

      • Postmortem 事后总结

    1

    <6>总结

    总体来说程序的设计还是有很多不符合老师的要求的,比如输入的字母的处理不够完善,无法实现负数不能出现!无法实现题目不能重复!还有就是不能输入负数!不过总的来说每一次的做老师留的作业就会感觉自己进步非常大!同时结对编程让我在写代码时,看到了自己无法看到的错误,以及自己想不到的思路和方法!是使自己进步很大的原因!老师能对我所我发实现的地方提示一下吗?自己实在是一点思路也没有!

  • 相关阅读:
    今天英语有何新收获?
    今天了解了解了外包这一行业
    今天英语有何新收获?
    sicp 练习1.7
    今天英语有何新收获
    今天英语有何新收获?
    反射(初尝)
    初学正则表达式
    sicp 练习1.8 【有点疑惑】
    [tip]Windows filename MAX_PATH limitation
  • 原文地址:https://www.cnblogs.com/lizanqirxx/p/4907634.html
Copyright © 2011-2022 走看看