您的位置:首页 > 其它

四则运算生成器升级版1.0

2015-03-14 16:42 274 查看
一、程序设计题目要求和设计思想

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

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周六

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: