四则运算三
一、设计思路
总是在c++中编程不免有点乏味,这次我尝试用了上学期的c#。主要是选择合适的控件,布置页面然后利用上次c++的编程思路和过程,实现在c#中的输出,主要是控制条件要改对,要与控件内容相对应。
二、源代码
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 sizeyunsuan { public partial class Form1 : Form { string[] abc = new string[10000]; public Form1() { InitializeComponent(); } private void textBox3_TextChanged(object sender, EventArgs e) { } System.Random rd = new Random(System.DateTime.Now.Millisecond); System.Random fh= new Random(System.DateTime.Now.Millisecond); private void button1_Click(object sender, EventArgs e) { int shul = int.Parse(shuliang.Text); int fanweio = int.Parse(fanwei1.Text); int fanweit = int.Parse(fanwei2.Text); int jiange1 = int.Parse(jiange.Text); //char fuh, yushu; for (int i = 0; i < shul; i++)//循环输出所需的题目数量 { int num1 = rd.Next(fanweio, fanweit); int num2 = rd.Next(fanweio, fanweit); int a = num1 + num2; int b = num1 - num2; int c = num1 * num2; int d = num1 / num2; for (int j = 0; j < jiange1; j++)//控制题目行间隔 { shengcheng.Text += "\r\n"; } if (checkBox4.Checked == true)//判断是否存在余数 { if (checkBox1.Checked == true)//判断是否有乘除号 { int fuhaos1 = fh.Next(0, 4); switch (fuhaos1)//通过判断随机数值选择符号 { case 0: shengcheng.Text += "("+(i+1)+")"+num1 + "+" + num2 + "=" + "\r\n"; abc[i]= "(" + (i + 1) + ")" + a + "\r\n"; break; case 1: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "-" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + b + "\r\n"; break; case 2: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "*" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + c + "\r\n"; break; case 3: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "/" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + d + "\r\n"; break; } } else { int fuhaos2 = fh.Next(0, 2); switch (fuhaos2)//通过判断随机数值选择符号 { case 0: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "+" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + a + "\r\n"; break; case 1: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "-" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + b + "\r\n"; break; } } } else { if (num1 % num2 != 0)//判断是否存在余数 { int fuhaos2 = fh.Next(0, 2); switch (fuhaos2)//通过判断随机数值选择符号 { case 0: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "+" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + a + "\r\n"; break; case 1: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "-" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + b + "\r\n"; break; }//没有余数则随机生成四则运算//有余数则随机生成+、-符号运算 } else { if (checkBox1.Checked == true)//判断是否有乘除号 { int fuhaos1 = fh.Next(0, 4); switch (fuhaos1)//通过判断随机数值选择符号 { case 0: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "+" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + a + "\r\n"; break; case 1: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "-" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + b + "\r\n"; break; case 2: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "*" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + c + "\r\n"; break; case 3: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "/" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + d + "\r\n"; break; } } else { int fuhaos2 = fh.Next(0, 2); switch (fuhaos2)//通过判断随机数值选择符号 { case 0: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "+" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + a + "\r\n"; break; case 1: shengcheng.Text += "(" + (i + 1) + ")" + num1 + "-" + num2 + "=" + "\r\n"; abc[i] = "(" + (i + 1) + ")" + b + "\r\n"; break; } }//没有余数则随机生成四则运算//有余数则随机生成+、-符号运算 } } } } private void shuliang_TextChanged(object sender, EventArgs e) { } private void shengcheng_TextChanged(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { shuliang.Text=""; fanwei1.Text = ""; fanwei2.Text = ""; jiange.Text = ""; shengcheng.Text = ""; jieguo.Text = ""; checkBox3.Checked = false; checkBox2.Checked = false; checkBox1.Checked = false; checkBox4.Checked = false; } private void button3_Click(object sender, EventArgs e) { int shul = int.Parse(shuliang.Text); for (int i = 0; i < shul; i++) { jieguo.Text += abc[i]; } } } }
三、实验结果截图
1、
2、
3、
4、
、
四、实验总结
本次试验利用了上学期所学的c#,我本人感觉比用c++的成就感要大,因为结果界面就让人看着比较舒服。在程序实现的思路上基本使用的四则运算二的思路,主要变的是循环条件的控制变量,大致过程是一样的。只是主要输出函数全部都变到了“确定”这个键的函数中,利用label控件输出提示,用textbox来输入输出结果。重新生成键可以让全屏内容清空便于下次输入。在做完题目后,可按生成结果键检查对错。
通过本次编程我了解了思路的重要性,它可以移植到不同的语言,解决相同的问题。还有通过本次编程我感到了不同语言的共通性,对于学习新的语言不再有那么大的抵触心理,因为编程思路是大同小异的。
五、表格
周活动总结表
姓名:高扬 日期:2015.3.22
日期\任务 |
听课(分) |
编写程序(分) |
阅读课本(分) |
准备考试(分) |
|
|
日总计(分) |
周日 |
|
|
|
|
|
|
|
周一 |
|
|
|
|
|
|
|
周二 |
400 |
|
20 |
|
|
|
420 |
周三 |
100 |
20 |
10 |
|
|
|
130 |
周四 |
300 |
20 |
15 |
|
|
|
335 |
周五 |
200 |
30 |
30 |
|
|
|
260 |
周六 |
|
20 |
15 |
|
|
|
35 |
周总结(分) |
1000 |
90 |
90 |
|
|
|
1180 |
阶段时间和效率 周数(上一次周活动表的周数+1):
不包括上一周在内的累计时间
总计 |
|
|
|
|
|
|
|
平均 |
|
|
|
|
|
|
|
最大 |
|
|
|
|
|
|
|
最小 |
|
|
|
|
|
|
|
以前各周累计时间
总计 |
1000 |
90 |
90 |
|
|
|
1180 |
平均 |
1000 |
90 |
90 |
|
|
|
1180 |
最大 |
1000 |
90 |
90 |
|
|
|
1180 |
最小 |
1000 |
90 |
90 |
|
|
|
1180 |
时间记录表:
学生 高扬 日期 2015.3.22
教师 王建民 课程 PSP
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
2015.3.18 |
8:00 |
9:50 |
10 |
100 |
听课 |
计算机网络课程 |
|
12:40 |
12:50 |
|
10 |
读书 |
阅读《梦断代码》 |
|
19: 00 |
19:20 |
20 |
编写程序 |
设计c#框架 |
|
2015.3.19 |
10:10 |
12:00 |
10 |
100 |
听课 |
计算机接口技术课 |
|
14:00 |
15:50 |
10 |
100 |
听课 |
嵌入式开发技术上课 |
|
16:40 |
16:55 |
|
15 |
看书 |
阅读《梦断代码》 |
|
20:10 |
20:30 |
|
20 |
编写程序 |
界面建好改参数 |
2015.3.20 |
8:00 |
9:50 |
10 |
100 |
听课 |
软件工程课 |
|
10:10 |
12:00 |
10 |
100 |
听课 |
操作系统课 |
12:30 |
13:00 |
30 |
看书 |
阅读《梦断代码》 |
||
20:15 |
20:45 |
30 |
编写程序 |
实现部分功能 |
||
2015.3.21 |
13:15 |
13:35 |
|
20 |
编写程序 |
修改错误完善程序,输出结果。美化界面 |
缺陷记录日志:
学生 高扬
日期 2015.3.22
教员 王建民
程序号
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
2015.3.19 |
1 |
|
编码 |
编译 |
10min |
|
描述: textbox默认属性与int不匹配 |
||||||
2015.3.19 |
2 |
|
编码 |
编译 |
5min |
|
描述:函数调用失败(与c++中不大一样,未解决,将函数体最后写入主体中) |
||||||
2015.3.20 |
3 |
|
编码 |
编译 |
1min |
|
描述:数组定义位置错误 |