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

五、psp记录表

1、项目计划总结:

 

周活动总结表

姓名: 韩雪东                                           日期:2015/03/09

日期       任务

听课

编写程序

阅读课本

准备考试

 

 

日总计

周日03/08

 

 

 

 

 

 

 0

周一

 200

 

 60

 

 

 

 260

周二

 300

 

 60

 

 

 

 360

周三

 100

 180

 

 

 

 

 280

周四

 100

 100

 

 

 

 

 200

周五

 200

 100

 20

 

 

 

 320

周六

 

 180

 

 

 

 

 180

周总结

 900

 560

 140

 

 

 

1600 

阶段时间和效率                                            周数(上一次周活动表的周数+1):

不包括上一周在内的累计时间                                                                         

总计

 

 

 

 

 

 

 

平均

 

 

 

 

 

 

 

最大

 

 

 

 

 

 

 

最小

 

 

 

 

 

 

 

以前各周的累计时间                                                                                    

总计

 

 

 

 

 

 

 

平均

 

 

 

 

 

 

 

最大

 

 

 

 

 

 

 

最小

 

 

 

 

 

 

 

2、时间记录表:

学生        韩雪东                                                    日期       2015/03/09        

教师        王建民                                             课程           PSP       

日期

开始时间

结束时间

中断时间

净时间

活动

备注

 03/11周三

10:30

 11:00

 0

30 

 写程序

 

 03/11周三

14:30 

 17:30

30 

150

 写程序

 

 03/12周四

14:30

 17:30

80 

100 

 写程序

 

 03/13周五

15:30

 17:30

20

100

 写程序

 

 03/14周六

14:30 

 18:00

 30

180

 写程序

 

 

 

 

 

 

 

 

 

3、缺陷记录日志:

学生          韩雪东              

日期          2015/03/09         

教员         王建民              

程序号         四则运算生成器升级版1.0                    

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

 03/11周三

 01

 

 

 

 

 

 RichtextBox控件里面不能输出30道题目,只能输出一道题目。

改正:用textbox控件,输出代码“=”前加上“+”号解决了问题

 03/12周四

 02

 

 

 

 

 

 If判断语句里的条件出错,打印不出来想要的结果

改正:整理思路,重新整理代码

 03/13周五

 

 

 

 

 

 

 

 03/14周六

 

 

 

 

 

 

 

posted @ 2015-03-14 16:42  韩东东  阅读(410)  评论(4编辑  收藏  举报