zoukankan      html  css  js  c++  java
  • 四则运算生成器升级版1.0代码规范与测试程序

    一、程序设计题目要求和设计思想

    1、题目

        (1)、题目避免重复;
        (2)、可定制(数量/打印方式);
        (3)、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;

    2、设计思想

        要求1:题目避免重复
        设计思想:(1)通过srand(time(NULL));来控制。
        要求2:可以定制(数量/打印方式)
        设计思想:(1)定义一个参数,利用用户输入的数量来控制数量;
        设计思想:(2)输出格式可以目前可以设置两个方式,一个方式是纵向X道,另一个是X*Y格式输出,其中X、Y可以由用户选择来控制。
        要求3:控制参数
        设计思想:(1)所有的参数控制都要通过用户来选择,控制实现在主函数里,打印函数另行设计
        设计思想:(2)数值范围可以设置几个输出函数,用户进行选择
        设计思想:(3)是否有乘除法,可以在输出函数里控制,用户进行选择
        设计思想:(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;
    
    namespace sizeyunsuanqi
    {
        public partial class Form1 : Form
        {
            int shitishumu = 0;
            int shuzhifanwei1 = 0;
            int shuzhifanwei2 = 0;
            string suoyoufuhao;
            string fuhao;
            string d;
    
            public Form1()
            {
                InitializeComponent();
            }
            private void Form1_Load(object sender, EventArgs e)//通常初始化在Form1_Load事件中完成
            {
                richTextBox1.Clear();
                textBox1.Clear();
            }
            private void button2_Click(object sender, EventArgs e)//button2(清除按钮)的单击事件:清除功能,清除已选择选项内容
            {
                richTextBox1.Clear();
                textBox4.Text = "";
                textBox2.Text = "";
                textBox3.Text = "";
                checkBox3.Checked = false;
                checkBox2.Checked = false;
                checkBox1.Checked = false;
            }
            private void button1_Click(object sender, EventArgs e)        //button2(确认按钮)的单击事件:单击后,输出题目
            {
                shitishumu = int.Parse(textBox4.Text);//用户控制输入试题数目
                shuzhifanwei2 = int.Parse(textBox3.Text);//用户控制输入数值范围(大)
                shuzhifanwei1 = int.Parse(textBox2.Text);//用户控制输入数值范围(小)
                richTextBox1.Text += "尊敬的用户您好,您的请求已经得到确认"+"
    ";
                richTextBox1.Text += "您将打印 " + shitishumu + " 道题目" + "
    ";
                richTextBox1.Text += "您打印试题的数值范围是: " + shuzhifanwei1 + "-" + shuzhifanwei2 + "
    ";
                if (checkBox3.Checked == true)
                {
                    richTextBox1.Text += "试题输出结果存在括号" + "
    ";
                }
                if (checkBox3.Checked == false)
                {
                    richTextBox1.Text += "试题输出结果不存在括号" + "
    ";
                }
                if (checkBox2.Checked == true)
                {
                    richTextBox1.Text += "试题输出结果中减法的结果存在负数" + "
    ";
                }
                if (checkBox2.Checked == false)
                {
                    richTextBox1.Text += "试题输出结果中减法的结果不存在负数" + "
    ";
                }
                if (checkBox1.Checked == true)
                {
                    richTextBox1.Text += "试题输出结果存在乘除法" + "
    ";
                }
                if (checkBox1.Checked == false)
                {
                    richTextBox1.Text += "试题输出结果不存在乘除法" + "
    ";
                }
                
    
                System.Random number = new Random(System.DateTime.Now.Millisecond);
                //循环输出题目
                for (int i = 0; i < shitishumu; i++)
                {
                    int num1 = number.Next(shuzhifanwei1, shuzhifanwei2);
                    int num2 = number.Next(shuzhifanwei1, shuzhifanwei2);
                    int num3 = number.Next(shuzhifanwei1, shuzhifanwei2);
                    int yunsuan1 = number.Next(0, 4);
                    int yunsuan2 = number.Next(0, 2);
                    int fuhaonum = number.Next(0, 2);
                    if (fuhaonum == 0)//符号进行随机
                    {
                        fuhao = "+";
                    }
                    if (fuhaonum == 1)
                    {
                        fuhao = "-";
                    }
                    int suoyoufuhaonum = number.Next(0, 4);
                    if (suoyoufuhaonum == 0) 
                    { 
                        suoyoufuhao = "+"; 
                    }
                    if (suoyoufuhaonum == 1)
                    { 
                        suoyoufuhao = "-";
                    }
                    if (suoyoufuhaonum == 2)
                    {
                        suoyoufuhao = "*";
                    }
                    if (suoyoufuhaonum == 3) 
                    {
                        suoyoufuhao = "/"; 
                    }
    
                    if (checkBox3.Checked == true)//有括号情况
                    {
                        textBox1.Text += num3;
                        if (checkBox1.Checked == true)//有乘除法
                        {
                            if (checkBox2.Checked == true)//减法有负数
                            {
                                if (yunsuan1 == 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "+" + num2 + ")" + "=" + "
    "; }
                                else if (yunsuan1 == 1) { textBox1.Text += suoyoufuhao + "(" + num1 + "*" + num2 + ")" + "=" + "
    "; }
                                else if (yunsuan1 == 2) { textBox1.Text += suoyoufuhao + "(" + num1 + "-" + num2 + ")" + "=" + "
    "; }//减法有负数
                                else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "/" + num2 + ")" + "=" + "
    "; }//除法有余数
                            }
                            else if (checkBox2.Checked == false)//减法没有负数
                            {
                                if (yunsuan1 == 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "+" + num2 + ")" + "=" + "
    "; }
                                else if (yunsuan1 == 1) { textBox1.Text += suoyoufuhao + "(" + num1 + "*" + num2 + ")" + "=" + "
    "; }
                                else if (yunsuan1 == 2 && num1 > num2) { textBox1.Text += suoyoufuhao + "(" + num1 + "-" + num2 + ")" + "=" + "
    "; }//减法没有负数
                                else if (yunsuan1 == 2 && num1 <= num2) { textBox1.Text += suoyoufuhao + "(" + num2 + "-" + num1 + ")" + "=" + "
    "; }//减法没有负数
                                else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "/" + num2 + ")" + "=" + "
    "; }//除法有余数
    
                            }
                        }
                        else if (checkBox1.Checked == false)//没有乘除法
                        {
                            if (checkBox2.Checked == true)//减法有负数
                            {
                                if (yunsuan2 == 0) { textBox1.Text += fuhao + "(" + num1 + "+" + num2 + ")" + "=" + "
    "; }
                                else if (yunsuan2 == 1) { textBox1.Text += fuhao + "(" + num1 + "-" + num2 + ")" + "=" + "
    "; }//减法有负数
                            }
                            else if (checkBox2.Checked == false)//减法没有负数
                            {
                                if (yunsuan2 == 0) { textBox1.Text += fuhao + "(" + num1 + "+" + num2 + ")" + "=" + "
    "; }
                                else if (yunsuan2 == 1 && num1 > num2) { textBox1.Text += fuhao + "(" + num1 + "-" + num2 + ")" + "=" + "
    "; }//减法没有负数
                                else if (yunsuan2 == 1 && num1 <= num2) { textBox1.Text += fuhao + "(" + num2 + "-" + num1 + ")" + "=" + "
    "; }//减法没有负数
                            }
                        }
    
                    }
                    else if (checkBox3.Checked == false)//没有括号
                    {
                        if (checkBox1.Checked == true)//有乘除法
                        {
                            if (checkBox2.Checked == true)//减法有负数
                            {
                                if (yunsuan1 == 0) { textBox1.Text += num1 + "+" + num2 +"=" + "
    "; }
                                else if (yunsuan1 == 1) { textBox1.Text += num1 + "*" + num2 + "=" + "
    "; }
                                else if (yunsuan1 == 2) { textBox1.Text += num1 + "-" + num2 + "=" + "
    "; }//减法有负数
                                else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += num1 + "/" + num2 +"=" + "
    "; }//除法有余数
                            }
                            else if (checkBox2.Checked == false)//减法没有负数
                            {
                                if (yunsuan1 == 0) { textBox1.Text += num1 + "+" + num2 + "=" + "
    "; }
                                else if (yunsuan1 == 1) { textBox1.Text += num1 + "*" + num2 + "=" + "
    "; }
                                else if (yunsuan1 == 2 && num1 > num2) { textBox1.Text += num1 + "-" + num2 + "=" + "
    "; }//减法没有负数
                                else if (yunsuan1 == 2 && num1 <= num2) { textBox1.Text += num2 + "-" + num1 + "=" + "
    "; }//减法没有负数
                                else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += num1 + "/" + num2 + "=" + "
    "; }//除法有余数
    
                            }
                        }
                        else if (checkBox1.Checked == false)//没有乘除法
                        {
                            if (checkBox2.Checked == true)//减法有负数
                            {
                                if (yunsuan2 == 0) { textBox1.Text += num1 + "+" + num2 + "=" + "
    "; }
                                else if (yunsuan2 == 1) { textBox1.Text +=  num1 + "-" + num2 + "=" + "
    "; }//减法有负数
                            }
                            else if (checkBox2.Checked == false)//减法没有负数
                            {
                                if (yunsuan2 == 0) { textBox1.Text += num1 + "+" + num2 + "=" + "
    "; }
                                else if (yunsuan2 == 1 && num1 > num2) { textBox1.Text += num1 + "-" + num2 + "=" + "
    "; }//减法没有负数
                                else if (yunsuan2 == 1 && num1 <= num2) { textBox1.Text += num2 + "-" + num1 + "=" + "
    "; }//减法没有负数
                            }
                        }
    
                    }
    
                }
                
            }
    
            private void button3_Click(object sender, EventArgs e)//清除输出结果按钮
            {
                textBox1.Text = "";
            }
    
            private void checkBox3_CheckedChanged(object sender, EventArgs e)
            {
                
            }
    
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                
            }
    
            private void checkBox2_CheckedChanged(object sender, EventArgs e)
            {
                
            }
    
            private void textBox2_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void textBox3_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void textBox4_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void button4_Click(object sender, EventArgs e)//全屏清除按钮
            {
                richTextBox1.Clear();
                textBox1.Text = "";
                textBox4.Text = "";
                textBox2.Text = "";
                textBox3.Text = "";
                checkBox3.Checked = false;
                checkBox2.Checked = false;
                checkBox1.Checked = false;
    
            }
        }
    }

    三、测试程序

    1、测试程序代码

    // sizeyuansuanqitest.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include "stdio.h"
    #include "string.h"
    #include "time.h"
    #include "stdlib.h"
    
    //整体函数
    void display()
    {
        int num1,num2,num3;
        int shitishumu,shuzhifanwei2,shuzhifanwei1,shuzhifanweicha;
        int khao,ccfa,fshu;
        int yunsuan1,yunsuan2,fuhaonum,suoyoufuhaonum;
        char fuhao[2],suoyoufuhao[2];
        printf("尊敬的用户您好,欢迎使用四则运算生成器升级版1.0
    ");
    
        printf("请输入你想打印的试题数量:");
        scanf("%d",&shitishumu);
    
        printf("
    请输入数值范围(例如:0 100):");
        scanf("%d%d",&shuzhifanwei2,&shuzhifanwei1);
    
        printf("
    请输入试题里是否携带括号(“是”请输入1,“不是”请输入0):");
        scanf("%d",&khao);
    
        printf("
    请输入试题里是否存在乘除法(“是”请输入1,“不是”请输入0):");
        scanf("%d",&ccfa);
    
        printf("
    请输入试题里是否存在结果为负数的减法(“是”请输入1,“不是”请输入0):");
        scanf("%d",&fshu);
    
        printf("
    试题如下:
    ");
    
        srand(time(NULL));
    
        for (int i = 0; i < shitishumu; i++)
        {
            shuzhifanweicha=shuzhifanwei1-shuzhifanwei2+1;
            num1=rand()%shzhifanweicha+shuzhifanwei2;
            num2=rand()%shzhifanweicha+shuzhifanwei2;
            num3=rand()%shzhifanweicha+shuzhifanwei2;
            yunsuan1=rand()%4;
            yunsuan2=rand()%2;
            fuhaonum=rand()%2;
            suoyoufuhaonum=rand()%4;
    
            if (fuhaonum == 0)//符号进行随机
            {
                fuhao[0] ='+';
            }
            if (fuhaonum == 1)
            {
                fuhao[0] = '-';
            }
            if (suoyoufuhaonum == 0) 
            { 
                suoyoufuhao[0] ='+'; 
            }
            if (suoyoufuhaonum == 1)
            { 
                suoyoufuhao[0] = '-';
            }
            if (suoyoufuhaonum == 2)
            {
                suoyoufuhao[0] = '*';
            }
            if (suoyoufuhaonum == 3) 
            {
                suoyoufuhao[0] ='/'; 
            }
            
            if (khao==1)//有括号情况
            {
                //printf("%d",num3);
                if (ccfa==1)//有乘除法
                {
                    if (fshu == 1)//减法有负数
                    {
                        printf("%d",num3);
                        if (yunsuan1 == 0) { printf("%c(%d+%d)=",suoyoufuhao[0],num1,num2); printf("
    ");}
                        else if (yunsuan1 == 1) { printf("%c(%d*%d)=",suoyoufuhao[0],num1,num2); printf("
    ");}
                        else if (yunsuan1 == 2) { printf("%c(%d-%d)=",suoyoufuhao[0],num1,num2); printf("
    "); }//减法有负数
                        else if (yunsuan1 == 3 && num2 != 0) { printf("%c(%d/%d)=",suoyoufuhao[0],num1,num2); printf("
    ");}//除法有余数
                    }
                    else if (fshu == 0)//减法没有负数
                    {
                        printf("%d",num3);
                        if (yunsuan1 == 0) { printf("%c%d+%d)=",suoyoufuhao[0],num1,num2); printf("
    ");}
                        else if (yunsuan1 == 1) { printf("%c(%d*%d)=",suoyoufuhao[0],num1,num2); printf("
    ");}
                        else if (yunsuan1 == 2 && num1 > num2) { printf("%c(%d-%d)=",suoyoufuhao[0],num1,num2); printf("
    "); }//减法没有负数
                        else if (yunsuan1 == 2 && num1 <= num2) { printf("%c(%d-%d)=",suoyoufuhao[0],num2,num1); printf("
    "); }//减法没有负数
                        else if (yunsuan1 == 3 && num2 != 0) { printf("%c(%d/%d)=",suoyoufuhao[0],num1,num2); printf("
    ");}//除法有余数
                        
                    }
                }
                else if (ccfa == 0)//没有乘除法
                {
                    if (fshu == 1)//减法有负数
                    {
                        printf("%d",num3);
                        if (yunsuan2 == 0) { printf("%c(%d+%d)=",fuhao[0],num1,num2); printf("
    ");}
                        else if (yunsuan2 == 1) { printf("%c(%d-%d)=",fuhao[0],num1,num2); printf("
    ");}//减法有负数
                    }
                    else if (fshu == 0)//减法没有负数
                    {
                        printf("%d",num3);
                        if (yunsuan2 == 0) { printf("%c(%d+%d)=",fuhao[0],num1,num2); printf("
    ");}
                        else if (yunsuan2 == 1 && num1 > num2) { printf("%c(%d-%d)=",fuhao[0],num1,num2); printf("
    ");}//减法没有负数
                        else if (yunsuan2 == 1 && num1 <= num2) { printf("%c(%d-%d)=",fuhao[0],num2,num1); printf("
    ");}//减法没有负数
                    }
                }
                
            }
            else if (khao == 0)//没有括号
            {
                if (ccfa==1)//有乘除法
                {
                    if (fshu == 1)//减法有负数
                    {
                        if (yunsuan1 == 0) { printf("%d+%d=",num1,num2); printf("
    ");}/////////////////////////////////////////
                        else if (yunsuan1 == 1) { printf("%d*%d=",num1,num2); printf("
    ");}
                        else if (yunsuan1 == 2) { printf("%d-%d=",num1,num2); printf("
    ");}//减法有负数
                        else if (yunsuan1 == 3 && num2 != 0) { printf("%d-%d=",num1,num2); printf("
    ");}//除法有余数
                    }
                    else if (fshu == 0)//减法没有负数
                    {
                        if (yunsuan1 == 0) {  printf("%d+%d=",num1,num2); printf("
    ");}
                        else if (yunsuan1 == 1) {printf("%d*%d=",num1,num2); printf("
    ");}
                        else if (yunsuan1 == 2 && num1 > num2) { printf("%d-%d=",num1,num2); printf("
    ");}//减法没有负数
                        else if (yunsuan1 == 2 && num1 <= num2) { printf("%d-%d=",num2,num1); printf("
    ");}//减法没有负数
                        else if (yunsuan1 == 3 && num2 != 0) {  printf("%d-%d=",num1,num2); printf("
    ");}//除法有余数
                        
                    }
                }
                else if (ccfa == 0)//没有乘除法
                {
                    if (fshu == 1)//减法有负数
                    {
                        if (yunsuan2 == 0) {  printf("%d+%d=",num1,num2); printf("
    ");}
                        else if (yunsuan2 == 1) { printf("%d*%d=",num1,num2); printf("
    ");}//减法有负数
                    }
                    else if (fshu == 0)//减法没有负数
                    {
                        if (yunsuan2 == 0) { printf("%d+%d=",num1,num2); printf("
    ");}
                        else if (yunsuan2 == 1 && num1 > num2) { printf("%d*%d=",num1,num2); printf("
    ");}//减法没有负数
                        else if (yunsuan2 == 1 && num1 <= num2) {printf("%d-%d=",num2,num1); printf("
    ");}//减法没有负数
                    }
                }
                
            }
         }
    }
    
    int main(int argc, char* argv[])
    {
        display();
        printf("Hello World!
    ");
        return 0;
    }

    2、测试结果截图

    (1)边界测试

    存在问题:没有设置边界,用户在输入数值范围的时候输入自然数会成功输出,但是输入负数就会输出错误的结果,没有对负数进行判断,这是一大缺陷

    (2)各种情况测试(参数的选择,情况为111、110、101、100、011、010、001、000)

    存在的问题:当选择带括号的三位数的减法时,即使用户不想输出结果为负数的减法,该程序还会照样输出,这一点不满足用户的需求;

    还有很多没有添加的题目要求,只是简单的实现了部分功能。

  • 相关阅读:
    高德地图API,获取和设置zoom级别和中心点
    高德地图API注册使用教程简答演示
    HTML5 视频流行插件之video.js
    audio实现自定义音频播放器
    HTML5 audio API事件
    HTML5之audio属性
    GitLab的安装及使用教程
    设计模式六大原则(PHP)
    面向对象设计
    自定义的异常类
  • 原文地址:https://www.cnblogs.com/hanshidiguo/p/4342380.html
Copyright © 2011-2022 走看看