四则运算生成器升级版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)加减有无负数可以用参数比较大小来实现
    总体设计:程序里要涉及到很多条件判断,一层一层的设计,先把在所有要求都满足的情况下的结果输出,然后在一步步的展开,一项一项的完成。

二、程序源代码

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9
 10 namespace sizeyunsuanqi
 11 {
 12     public partial class Form1 : Form
 13     {
 14         int shitishumu = 0;
 15         int shuzhifanwei1 = 0;
 16         int shuzhifanwei2 = 0;
 17         string suoyoufuhao;
 18         string fuhao;
 19         string d;
 20
 21         public Form1()
 22         {
 23             InitializeComponent();
 24         }
 25         private void Form1_Load(object sender, EventArgs e)//通常初始化在Form1_Load事件中完成
 26         {
 27             richTextBox1.Clear();
 28             textBox1.Clear();
 29         }
 30         private void button2_Click(object sender, EventArgs e)//button2(清除按钮)的单击事件:清除功能,清除已选择选项内容
 31         {
 32             richTextBox1.Clear();
 33             textBox4.Text = "";
 34             textBox2.Text = "";
 35             textBox3.Text = "";
 36             checkBox3.Checked = false;
 37             checkBox2.Checked = false;
 38             checkBox1.Checked = false;
 39         }
 40         private void button1_Click(object sender, EventArgs e)        //button2(确认按钮)的单击事件:单击后,输出题目
 41         {
 42             shitishumu = int.Parse(textBox4.Text);//用户控制输入试题数目
 43             shuzhifanwei2 = int.Parse(textBox3.Text);//用户控制输入数值范围(大)
 44             shuzhifanwei1 = int.Parse(textBox2.Text);//用户控制输入数值范围(小)
 45             richTextBox1.Text += "尊敬的用户您好,您的请求已经得到确认"+"\r\n";
 46             richTextBox1.Text += "您将打印 " + shitishumu + " 道题目" + "\r\n";
 47             richTextBox1.Text += "您打印试题的数值范围是: " + shuzhifanwei1 + "-" + shuzhifanwei2 + "\r\n";
 48             if (checkBox3.Checked == true)
 49             {
 50                 richTextBox1.Text += "试题输出结果存在括号" + "\n";
 51             }
 52             if (checkBox3.Checked == false)
 53             {
 54                 richTextBox1.Text += "试题输出结果不存在括号" + "\n";
 55             }
 56             if (checkBox2.Checked == true)
 57             {
 58                 richTextBox1.Text += "试题输出结果中减法的结果存在负数" + "\n";
 59             }
 60             if (checkBox2.Checked == false)
 61             {
 62                 richTextBox1.Text += "试题输出结果中减法的结果不存在负数" + "\n";
 63             }
 64             if (checkBox1.Checked == true)
 65             {
 66                 richTextBox1.Text += "试题输出结果存在乘除法" + "\n";
 67             }
 68             if (checkBox1.Checked == false)
 69             {
 70                 richTextBox1.Text += "试题输出结果不存在乘除法" + "\n";
 71             }
 72
 73
 74             System.Random number = new Random(System.DateTime.Now.Millisecond);
 75             //循环输出题目
 76             for (int i = 0; i < shitishumu; i++)
 77             {
 78                 int num1 = number.Next(shuzhifanwei1, shuzhifanwei2);
 79                 int num2 = number.Next(shuzhifanwei1, shuzhifanwei2);
 80                 int num3 = number.Next(shuzhifanwei1, shuzhifanwei2);
 81                 int yunsuan1 = number.Next(0, 4);
 82                 int yunsuan2 = number.Next(0, 2);
 83                 int fuhaonum = number.Next(0, 2);
 84                 if (fuhaonum == 0)//符号进行随机
 85                 {
 86                     fuhao = "+";
 87                 };
 88                 if (fuhaonum == 1)
 89                 {
 90                     fuhao = "-";
 91                 };
 92                 int suoyoufuhaonum = number.Next(0, 4);
 93                 if (suoyoufuhaonum == 0)
 94                 {
 95                     suoyoufuhao = "+";
 96                 };
 97                 if (suoyoufuhaonum == 1)
 98                 {
 99                     suoyoufuhao = "-";
100                 };
101                 if (suoyoufuhaonum == 2)
102                 {
103                     suoyoufuhao = "*";
104                 };
105                 if (suoyoufuhaonum == 3)
106                 {
107                     suoyoufuhao = "/";
108                 };
109
110                 if (checkBox3.Checked == true)//有括号情况
111                 {
112                     textBox1.Text += num3;
113                     if (checkBox1.Checked == true)//有乘除法
114                     {
115                         if (checkBox2.Checked == true)//减法有负数
116                         {
117                             if (yunsuan1 == 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "+" + num2 + ")" + "=" + "\r\n"; }
118                             else if (yunsuan1 == 1) { textBox1.Text += suoyoufuhao + "(" + num1 + "*" + num2 + ")" + "=" + "\r\n"; }
119                             else if (yunsuan1 == 2) { textBox1.Text += suoyoufuhao + "(" + num1 + "-" + num2 + ")" + "=" + "\r\n"; }//减法有负数
120                             else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "/" + num2 + ")" + "=" + "\r\n"; }//除法有余数
121                         }
122                         else if (checkBox2.Checked == false)//减法没有负数
123                         {
124                             if (yunsuan1 == 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "+" + num2 + ")" + "=" + "\r\n"; }
125                             else if (yunsuan1 == 1) { textBox1.Text += suoyoufuhao + "(" + num1 + "*" + num2 + ")" + "=" + "\r\n"; }
126                             else if (yunsuan1 == 2 && num1 > num2) { textBox1.Text += suoyoufuhao + "(" + num1 + "-" + num2 + ")" + "=" + "\r\n"; }//减法没有负数
127                             else if (yunsuan1 == 2 && num1 <= num2) { textBox1.Text += suoyoufuhao + "(" + num2 + "-" + num1 + ")" + "=" + "\r\n"; }//减法没有负数
128                             else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += suoyoufuhao + "(" + num1 + "/" + num2 + ")" + "=" + "\r\n"; }//除法有余数
129
130                         }
131                     }
132                     else if (checkBox1.Checked == false)//没有乘除法
133                     {
134                         if (checkBox2.Checked == true)//减法有负数
135                         {
136                             if (yunsuan2 == 0) { textBox1.Text += fuhao + "(" + num1 + "+" + num2 + ")" + "=" + "\r\n"; }
137                             else if (yunsuan2 == 1) { textBox1.Text += fuhao + "(" + num1 + "-" + num2 + ")" + "=" + "\r\n"; }//减法有负数
138                         }
139                         else if (checkBox2.Checked == false)//减法没有负数
140                         {
141                             if (yunsuan2 == 0) { textBox1.Text += fuhao + "(" + num1 + "+" + num2 + ")" + "=" + "\r\n"; }
142                             else if (yunsuan2 == 1 && num1 > num2) { textBox1.Text += fuhao + "(" + num1 + "-" + num2 + ")" + "=" + "\r\n"; }//减法没有负数
143                             else if (yunsuan2 == 1 && num1 <= num2) { textBox1.Text += fuhao + "(" + num2 + "-" + num1 + ")" + "=" + "\r\n"; }//减法没有负数
144                         }
145                     }
146
147                 }
148                 else if (checkBox3.Checked == false)//没有括号
149                 {
150                     if (checkBox1.Checked == true)//有乘除法
151                     {
152                         if (checkBox2.Checked == true)//减法有负数
153                         {
154                             if (yunsuan1 == 0) { textBox1.Text += num1 + "+" + num2 +"=" + "\r\n"; }
155                             else if (yunsuan1 == 1) { textBox1.Text += num1 + "*" + num2 + "=" + "\r\n"; }
156                             else if (yunsuan1 == 2) { textBox1.Text += num1 + "-" + num2 + "=" + "\r\n"; }//减法有负数
157                             else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += num1 + "/" + num2 +"=" + "\r\n"; }//除法有余数
158                         }
159                         else if (checkBox2.Checked == false)//减法没有负数
160                         {
161                             if (yunsuan1 == 0) { textBox1.Text += num1 + "+" + num2 + "=" + "\r\n"; }
162                             else if (yunsuan1 == 1) { textBox1.Text += num1 + "*" + num2 + "=" + "\r\n"; }
163                             else if (yunsuan1 == 2 && num1 > num2) { textBox1.Text += num1 + "-" + num2 + "=" + "\r\n"; }//减法没有负数
164                             else if (yunsuan1 == 2 && num1 <= num2) { textBox1.Text += num2 + "-" + num1 + "=" + "\r\n"; }//减法没有负数
165                             else if (yunsuan1 == 3 && num2 != 0) { textBox1.Text += num1 + "/" + num2 + "=" + "\r\n"; }//除法有余数
166
167                         }
168                     }
169                     else if (checkBox1.Checked == false)//没有乘除法
170                     {
171                         if (checkBox2.Checked == true)//减法有负数
172                         {
173                             if (yunsuan2 == 0) { textBox1.Text += num1 + "+" + num2 + "=" + "\r\n"; }
174                             else if (yunsuan2 == 1) { textBox1.Text +=  num1 + "-" + num2 + "=" + "\r\n"; }//减法有负数
175                         }
176                         else if (checkBox2.Checked == false)//减法没有负数
177                         {
178                             if (yunsuan2 == 0) { textBox1.Text += num1 + "+" + num2 + "=" + "\r\n"; }
179                             else if (yunsuan2 == 1 && num1 > num2) { textBox1.Text += num1 + "-" + num2 + "=" + "\r\n"; }//减法没有负数
180                             else if (yunsuan2 == 1 && num1 <= num2) { textBox1.Text += num2 + "-" + num1 + "=" + "\r\n"; }//减法没有负数
181                         }
182                     }
183
184                 }
185
186             }
187
188         }
189
190         private void button3_Click(object sender, EventArgs e)//清除输出结果按钮
191         {
192             textBox1.Text = "";
193         }
194
195         private void checkBox3_CheckedChanged(object sender, EventArgs e)
196         {
197
198         }
199
200         private void checkBox1_CheckedChanged(object sender, EventArgs e)
201         {
202
203         }
204
205         private void checkBox2_CheckedChanged(object sender, EventArgs e)
206         {
207
208         }
209
210         private void textBox2_TextChanged(object sender, EventArgs e)
211         {
212
213         }
214
215         private void textBox3_TextChanged(object sender, EventArgs e)
216         {
217
218         }
219
220         private void textBox4_TextChanged(object sender, EventArgs e)
221         {
222
223         }
224
225         private void button4_Click(object sender, EventArgs e)//全屏清除按钮
226         {
227             richTextBox1.Clear();
228             textBox1.Text = "";
229             textBox4.Text = "";
230             textBox2.Text = "";
231             textBox3.Text = "";
232             checkBox3.Checked = false;
233             checkBox2.Checked = false;
234             checkBox1.Checked = false;
235
236         }
237     }
238 }

三、运算结果截图

四、程序存在的问题

目前来说这个程序还存在很多的问题:

1、本程序交互能力比较差,发生问题是没有很好的反馈,打印数量只有输入正整数程序才能正常运行;

2、数值范围的输入,用户可以输入整数范围,例如:-100到100,范围包括所有整数,也可以输出,输出结果没有为负数加上括号来区分,如果用户真的输入负数范围,打印出来就会是像 “1--1=”情况,理想的情况应该是“1-(-1)=”;

3、题目要求的所有功能只实现了一部分,并没有完全实现,尤其是打印方式没有规范,一直是纵向输出;

4、由于本人能力以及时间等多重复杂因素在内,本程序还只是一个简简单单的雏形,忘广大博友批评指正,谢谢;

时间: 2024-11-07 07:32:57

四则运算生成器升级版1.0的相关文章

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

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

四则运算生成器升级版2.0

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

四则运算生成器-个人项目1

第一个个人项目四则运算生成器参考源代码:https://zhidao.baidu.com/question/532330836.html?qbl=relate_question_0&word=%D3%C3C%D3%EF%D1%D4%CA%B5%CF%D6%CB%C4%D4%F2%D4%CB%CB%E3%C9%FA%B3%C9%C6%F7 改了一点点功能,运行有错误,也改过来了. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #in

结对项目--四则运算生成器(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

结对-四则运算生成器-设计文档

项目名称: 四则运算生成器 成员: 李明,姜广昱 开发环境: Android stdio 功能: 生成四则运算题目模块:可随机生成包括小数.整数的四则运算. 四则运算难度调整模块:可调整四则运算难度包括题目数量.是否有小数.小数位数.整数位数. 答题模块:用户可对生成的题目进行作答. 答题结果及分析模块:生成题目答案,对照答题答案给出错误题目回顾,和答题成绩. 说明: 为实现上述功能,本软件分为答题和出题两大模块,出题时可调整难度,答题部分要显示分数和答错部分的正确答案

java计算器 图形用户界面 升级版v2.0 (限制位数显示+四舍五入的处理)

package com.rgy.entity; import java.awt.BorderLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import java

四则运算生成器说明

四则运算生成器使用说明书 一.主界面 首先打开本软件时,可以看到软件的主界面即软件主要功能选择界面,分为输出随机生成整数四则运算.输出随机生成真分数的四则运算.在线答题-整数四则运算.在线答题-真分数的四则运算和错题本以及退出系统功能.在下方输入框内输入对应的功能数字代号即可进入对应的功能界面. 二.主要功能介绍 本运算生成器主要分为2个大模块:输出随机四则运算模块.在线答题模块.其中,输出随机四则运算主要用来同时随机出若干题目,可以用来给孩子做练习题.又分整数和分数四则运算,可以满足不同年级学

四则运算生成器V1.0

俩个数 #include <cstdio>#include <stack>#include <cstdlib> #define MAXNUM 100 char fin_formula[50], ori_formula[50];char op[4]; int ans, num[4]; void create() {    int flag = rand() % 4;    if(flag == 0) {        op[0] = '+';        num[0]

个人程序1:四则运算生成器

在开学第一周老师就叫我们设计一个能够自动生成小学四则运算题目的程序.开始拿到这个题目的时候完全不知道如何下手,但是老师说可以借鉴其他人的代码,但是在此基础上必须要增加一些其他功能并注明出处,所以我在百度上借鉴了一篇C语言编写的代码,其源代码链接如下:https://wenku.baidu.com/view/10618380bceb19e8b8f6babb.html  该代码的运行环境是Visual C++ 6.0,该程序开始运行的时候没有错误,但是该程序的功能比较单一,跟书上对程序的要求有所差距