四则运算生成器升级版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 += "尊敬的用户您好,您的请求已经得到确认"+"\r\n";
            richTextBox1.Text += "您将打印 " + shitishumu + " 道题目" + "\r\n";
            richTextBox1.Text += "您打印试题的数值范围是: " + shuzhifanwei1 + "-" + shuzhifanwei2 + "\r\n";
            if (checkBox3.Checked == true)
            {
                richTextBox1.Text += "试题输出结果存在括号" + "\n";
            }
            if (checkBox3.Checked == false)
            {
                richTextBox1.Text += "试题输出结果不存在括号" + "\n";
            }
            if (checkBox2.Checked == true)
            {
                richTextBox1.Text += "试题输出结果中减法的结果存在负数" + "\n";
            }
            if (checkBox2.Checked == false)
            {
                richTextBox1.Text += "试题输出结果中减法的结果不存在负数" + "\n";
            }
            if (checkBox1.Checked == true)
            {
                richTextBox1.Text += "试题输出结果存在乘除法" + "\n";
            }
            if (checkBox1.Checked == false)
            {
                richTextBox1.Text += "试题输出结果不存在乘除法" + "\n";
            }

            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 + ")" + "=" + "\r\n"; }
                            else if (yunsuan1 == 1) { textBox1.Text += suoyoufuhao + "(" + num1 + "*" + num2 + ")" + "=" + "\r\n"; }
                            else if (yunsuan1 == 2) { textBox1.Text += suoyoufuhao + "(" + num1 + "-" + num2 + ")" + "=" + "\r\n"; }//减法有负数
                            else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "/" + num2 + ")" + "=" + "\r\n"; }//除法有余数
                        }
                        else if (checkBox2.Checked == false)//减法没有负数
                        {
                            if (yunsuan1 == 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "+" + num2 + ")" + "=" + "\r\n"; }
                            else if (yunsuan1 == 1) { textBox1.Text += suoyoufuhao + "(" + num1 + "*" + num2 + ")" + "=" + "\r\n"; }
                            else if (yunsuan1 == 2 && num1 > num2) { textBox1.Text += suoyoufuhao + "(" + num1 + "-" + num2 + ")" + "=" + "\r\n"; }//减法没有负数
                            else if (yunsuan1 == 2 && num1 <= num2) { textBox1.Text += suoyoufuhao + "(" + num2 + "-" + num1 + ")" + "=" + "\r\n"; }//减法没有负数
                            else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "/" + num2 + ")" + "=" + "\r\n"; }//除法有余数

                        }
                    }
                    else if (checkBox1.Checked == false)//没有乘除法
                    {
                        if (checkBox2.Checked == true)//减法有负数
                        {
                            if (yunsuan2 == 0) { textBox1.Text += fuhao + "(" + num1 + "+" + num2 + ")" + "=" + "\r\n"; }
                            else if (yunsuan2 == 1) { textBox1.Text += fuhao + "(" + num1 + "-" + num2 + ")" + "=" + "\r\n"; }//减法有负数
                        }
                        else if (checkBox2.Checked == false)//减法没有负数
                        {
                            if (yunsuan2 == 0) { textBox1.Text += fuhao + "(" + num1 + "+" + num2 + ")" + "=" + "\r\n"; }
                            else if (yunsuan2 == 1 && num1 > num2) { textBox1.Text += fuhao + "(" + num1 + "-" + num2 + ")" + "=" + "\r\n"; }//减法没有负数
                            else if (yunsuan2 == 1 && num1 <= num2) { textBox1.Text += fuhao + "(" + num2 + "-" + num1 + ")" + "=" + "\r\n"; }//减法没有负数
                        }
                    }

                }
                else if (checkBox3.Checked == false)//没有括号
                {
                    if (checkBox1.Checked == true)//有乘除法
                    {
                        if (checkBox2.Checked == true)//减法有负数
                        {
                            if (yunsuan1 == 0) { textBox1.Text += num1 + "+" + num2 +"=" + "\r\n"; }
                            else if (yunsuan1 == 1) { textBox1.Text += num1 + "*" + num2 + "=" + "\r\n"; }
                            else if (yunsuan1 == 2) { textBox1.Text += num1 + "-" + num2 + "=" + "\r\n"; }//减法有负数
                            else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += num1 + "/" + num2 +"=" + "\r\n"; }//除法有余数
                        }
                        else if (checkBox2.Checked == false)//减法没有负数
                        {
                            if (yunsuan1 == 0) { textBox1.Text += num1 + "+" + num2 + "=" + "\r\n"; }
                            else if (yunsuan1 == 1) { textBox1.Text += num1 + "*" + num2 + "=" + "\r\n"; }
                            else if (yunsuan1 == 2 && num1 > num2) { textBox1.Text += num1 + "-" + num2 + "=" + "\r\n"; }//减法没有负数
                            else if (yunsuan1 == 2 && num1 <= num2) { textBox1.Text += num2 + "-" + num1 + "=" + "\r\n"; }//减法没有负数
                            else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += num1 + "/" + num2 + "=" + "\r\n"; }//除法有余数

                        }
                    }
                    else if (checkBox1.Checked == false)//没有乘除法
                    {
                        if (checkBox2.Checked == true)//减法有负数
                        {
                            if (yunsuan2 == 0) { textBox1.Text += num1 + "+" + num2 + "=" + "\r\n"; }
                            else if (yunsuan2 == 1) { textBox1.Text +=  num1 + "-" + num2 + "=" + "\r\n"; }//减法有负数
                        }
                        else if (checkBox2.Checked == false)//减法没有负数
                        {
                            if (yunsuan2 == 0) { textBox1.Text += num1 + "+" + num2 + "=" + "\r\n"; }
                            else if (yunsuan2 == 1 && num1 > num2) { textBox1.Text += num1 + "-" + num2 + "=" + "\r\n"; }//减法没有负数
                            else if (yunsuan2 == 1 && num1 <= num2) { textBox1.Text += num2 + "-" + num1 + "=" + "\r\n"; }//减法没有负数
                        }
                    }

                }

            }

        }

        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\n");

    printf("请输入你想打印的试题数量:");
    scanf("%d",&shitishumu);

    printf("\n请输入数值范围(例如:0 100):");
    scanf("%d%d",&shuzhifanwei2,&shuzhifanwei1);

    printf("\n请输入试题里是否携带括号(“是”请输入1,“不是”请输入0):");
    scanf("%d",&khao);

    printf("\n请输入试题里是否存在乘除法(“是”请输入1,“不是”请输入0):");
    scanf("%d",&ccfa);

    printf("\n请输入试题里是否存在结果为负数的减法(“是”请输入1,“不是”请输入0):");
    scanf("%d",&fshu);

    printf("\n试题如下:\n");

    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("\n");}
                    else if (yunsuan1 == 1) { printf("%c(%d*%d)=",suoyoufuhao[0],num1,num2); printf("\n");}
                    else if (yunsuan1 == 2) { printf("%c(%d-%d)=",suoyoufuhao[0],num1,num2); printf("\n"); }//减法有负数
                    else if (yunsuan1 == 3 && num2 != 0) { printf("%c(%d/%d)=",suoyoufuhao[0],num1,num2); printf("\n");}//除法有余数
                }
                else if (fshu == 0)//减法没有负数
                {
                    printf("%d",num3);
                    if (yunsuan1 == 0) { printf("%c%d+%d)=",suoyoufuhao[0],num1,num2); printf("\n");}
                    else if (yunsuan1 == 1) { printf("%c(%d*%d)=",suoyoufuhao[0],num1,num2); printf("\n");}
                    else if (yunsuan1 == 2 && num1 > num2) { printf("%c(%d-%d)=",suoyoufuhao[0],num1,num2); printf("\n"); }//减法没有负数
                    else if (yunsuan1 == 2 && num1 <= num2) { printf("%c(%d-%d)=",suoyoufuhao[0],num2,num1); printf("\n"); }//减法没有负数
                    else if (yunsuan1 == 3 && num2 != 0) { printf("%c(%d/%d)=",suoyoufuhao[0],num1,num2); printf("\n");}//除法有余数

                }
            }
            else if (ccfa == 0)//没有乘除法
            {
                if (fshu == 1)//减法有负数
                {
                    printf("%d",num3);
                    if (yunsuan2 == 0) { printf("%c(%d+%d)=",fuhao[0],num1,num2); printf("\n");}
                    else if (yunsuan2 == 1) { printf("%c(%d-%d)=",fuhao[0],num1,num2); printf("\n");}//减法有负数
                }
                else if (fshu == 0)//减法没有负数
                {
                    printf("%d",num3);
                    if (yunsuan2 == 0) { printf("%c(%d+%d)=",fuhao[0],num1,num2); printf("\n");}
                    else if (yunsuan2 == 1 && num1 > num2) { printf("%c(%d-%d)=",fuhao[0],num1,num2); printf("\n");}//减法没有负数
                    else if (yunsuan2 == 1 && num1 <= num2) { printf("%c(%d-%d)=",fuhao[0],num2,num1); printf("\n");}//减法没有负数
                }
            }

        }
        else if (khao == 0)//没有括号
        {
            if (ccfa==1)//有乘除法
            {
                if (fshu == 1)//减法有负数
                {
                    if (yunsuan1 == 0) { printf("%d+%d=",num1,num2); printf("\n");}/////////////////////////////////////////
                    else if (yunsuan1 == 1) { printf("%d*%d=",num1,num2); printf("\n");}
                    else if (yunsuan1 == 2) { printf("%d-%d=",num1,num2); printf("\n");}//减法有负数
                    else if (yunsuan1 == 3 && num2 != 0) { printf("%d-%d=",num1,num2); printf("\n");}//除法有余数
                }
                else if (fshu == 0)//减法没有负数
                {
                    if (yunsuan1 == 0) {  printf("%d+%d=",num1,num2); printf("\n");}
                    else if (yunsuan1 == 1) {printf("%d*%d=",num1,num2); printf("\n");}
                    else if (yunsuan1 == 2 && num1 > num2) { printf("%d-%d=",num1,num2); printf("\n");}//减法没有负数
                    else if (yunsuan1 == 2 && num1 <= num2) { printf("%d-%d=",num2,num1); printf("\n");}//减法没有负数
                    else if (yunsuan1 == 3 && num2 != 0) {  printf("%d-%d=",num1,num2); printf("\n");}//除法有余数

                }
            }
            else if (ccfa == 0)//没有乘除法
            {
                if (fshu == 1)//减法有负数
                {
                    if (yunsuan2 == 0) {  printf("%d+%d=",num1,num2); printf("\n");}
                    else if (yunsuan2 == 1) { printf("%d*%d=",num1,num2); printf("\n");}//减法有负数
                }
                else if (fshu == 0)//减法没有负数
                {
                    if (yunsuan2 == 0) { printf("%d+%d=",num1,num2); printf("\n");}
                    else if (yunsuan2 == 1 && num1 > num2) { printf("%d*%d=",num1,num2); printf("\n");}//减法没有负数
                    else if (yunsuan2 == 1 && num1 <= num2) {printf("%d-%d=",num2,num1); printf("\n");}//减法没有负数
                }
            }

        }
     }
}

int main(int argc, char* argv[])
{
    display();
    printf("Hello World!\n");
    return 0;
}

2、测试结果截图

(1)边界测试

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

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

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

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

时间: 2024-11-05 15:50:47

四则运算生成器升级版1.0代码规范与测试程序的相关文章

四则运算生成器升级版2.0

一.题目要求 每个同学对已有的四则运算生成器进行优化,我选择的题目是:让程序能接受用户输入答案,并判断对错,最后给出总共对/错的数量. 二.设计思想 首先考虑用c#编写程序,找到一个能输出运算题目.能接收用户输入的还能反馈给用户做的对与错的控件,最后考虑选择的是datagridview控件,而且用了之后效果还是不错的,但是不进行数据库的链接,就是简单的实现这个控件的单元格的内容输入输出. 三.程序源代码 1 using System; 2 using System.Collections.Gen

四则运算生成器升级版1.0

一.程序设计题目要求和设计思想 1.题目 (1).题目避免重复:    (2).可定制(数量/打印方式):    (3).可以控制下列参数: 是否有乘除法.是否有括号. 数值范围.加减有无负数.除法有无余数.否支持分数 (真分数, 假分数, …).是否支持小数 (精确到多少位).打印中每行的间隔可调整: 2.设计思想 要求1:题目避免重复    设计思想:(1)通过srand(time(NULL));来控制.    要求2:可以定制(数量/打印方式)    设计思想:(1)定义一个参数,利用用户

关于手思3.0 代码规范

关于手思3.0 代码规范 工程之始可能需要的工具: 1.使用CocoaPods类库管理工具.CocoaPods安装和使用教程. 2.下载安装注释插件VVDocumenter-Xcode. 3.使用代码对齐的Xcode插件 XAlign:XALign ClangFormat ClangFormat-Xcode 一.手思项目结构管理 #pragma mark -关于手思3.0对于文件的目录要按如下结构创建: -CategoryEx(所有类别类扩展放在里面) -HelpMacro(项目宏定义) -Re

Jenkins系列——使用checkstyle进行代码规范检查【升级版】

1.背景 在<Jenkins系列——使用checkstyle进行代码规范检查>一文中完成了ant实现代码规范检查的例子.但存在以下缺陷: 每个作业都需要配置一个不同的checkstyle ant脚本,而这个脚本中的多数代码是重复的. 报告采取覆盖方式,而我们有时需要保留一定构建次数的报告. 2.分析 使用变量代替ant脚本中变化的路径,这个变量通过ant命令的 -Dxxx=value 的方式传值. 建立名为${BUILD_NUMBER}的目录,将该次构建成功的报告保留在该目录下. 3.环境 同

前端代码规范1.0

意义:该规范旨在统一前端代码书写,规范前端代码标准,为共同协作打下良好基础,提高工作效率. 文件夹/文件命名 图片文件夹:image,images,img Js代码文件夹:js Css文件夹:css 首页:index. 其他页面根据具体情况来定,可以是中文名,英文名,拼音等,以方面认识为主. 页面框架布局 样式名称 样式名称的规则为根据对应位置的英文来命名.如: 头部:header 导航:nav 页尾:footer 消息:news,message 分页:page, 下拉:select 复选框:c

结对项目--四则运算生成器(Java) 刘彦享+龙俊健

结对项目--四则运算生成器(Java) GitHub地址 合作者 刘彦享(3118005010) 龙俊健(3118005011) https://github.com/LYX708194/calculate 一.项目简介 说明 自然数:0, 1, 2, -. 真分数:1/2, 1/3, 2/3, 1/4, 1'1/2, -. 运算符:+, ?, ×, ÷. 括号:(, ). 等号:=. 分隔符:空格(用于四则运算符和等号前后). 算术表达式: e = n | e1 + e2 | e1 ? e2

作业三: 代码规范、代码复审、PSP

(1) 是否需要有代码规范         1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西.(反对) 答:首先编码规范 包括了编码风格和其它规范 一个团队遵守一些规范有很多的好处! (1). 遵守编码风格使代码更容易维护 (2). 编码风格使形成代码集体所有制(集体所有制的作用很大,它能有效的增大巴士因子——一个项目能承受多少个程序员被车撞了而不影响项目的正常进行) (3). 编码风格能消除那些长久的纷争(你不需要喜欢这种编码风格.如果你不喜欢里面的某条规

四则运算生成器——感想

1.预估时间及实际花费时间表格 理想太丰满,显示太骨干 PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 15h Development 开发 · Analysis · 需求分析 (包括学习新技术) 2h · Design Spec · 生成设计文档 2h · Design Review · 设计复审 (和同事审核设计文档) 3h · Coding Standard · 代码规范 

代码规范、代码复审、PSP

作业三: 代码规范.代码复审.PSP 代码规范 代码规范的重要性 一.规范的代码可以促进团队合作  一个项目大多都是由一个团队来完成,如果没有统一的代码规范,那么每个人的代码必定会风格迥异.且不说会存在多个人同时开发同一模块的情况,即使是分工十分明晰的,等到要整合代码的时候也有够头疼的了.大多数情况下,并非程序中有复杂的算法或是复杂的逻辑,而是去读别人的代码实在是一件痛苦的事情.统一的风格使得代码可读性大大提高了,人们看到任何一段代码都会觉得异常熟悉.显然的,规范的代码在团队的合作开发中是非常有