你的位置:首页 > ASP.net教程

[ASP.net教程]四则运算生成器升级版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、由于本人能力以及时间等多重复杂因素在内,本程序还只是一个简简单单的雏形,忘广大博友批评指正,谢谢;