四则运算
一、需求分析
(1)当单击“+”或“-”或“x”或“÷”按钮时,程序会随机产生两个1-10的随机整数,由用户输出结果。
(2)当单击“停止”按钮时,程序会给出“正确”、“错误”等信息。
二、设计思路
(1)创建Windows窗体应用程序,设计窗体,根据需要编写代码。
(2)因为要统计出答对、答错的题目数量,首先定义两个变量“right”和“fault”;
(3)然后用Random()方法来产生随机数。
(4)单击textBox3的KeyDown事件实现加减乘除的运算,并且按下回车键,确认输入结果;为了减少代码的数量,用switch语句来判断运算符。
(5)单击“停止”按钮,弹出Form2窗体,显示测试结果。
三、代码实现
Form1代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace szys { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public static int Count = 0; public static int right = 0; public static int fault = 0; private void RandomNum() { Random ran = new Random(); int n1, n2; n1 = ran.Next(1, 11); n2 = ran.Next(1, 11); textBox1.Text = n1.ToString(); textBox2.Text = n2.ToString(); textBox3.Text = ""; Count++; } private void textBox3_KeyDown(object sender, KeyEventArgs e) { int sum; string s =label9.Text; switch (s) { case "+": sum = int.Parse(textBox1.Text) + int.Parse(textBox2.Text); break; case "-": sum = int.Parse(textBox1.Text) - int.Parse(textBox2.Text); break; case "x": sum = int.Parse(textBox1.Text) * int.Parse(textBox2.Text); break; default: sum = int.Parse(textBox1.Text) / int.Parse(textBox2.Text); break; } if (e.KeyCode == Keys.Enter) { if (textBox3.Text == sum.ToString()) right++; RandomNum(); } } private void button5_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.ShowDialog(); } private void button1_Click(object sender, EventArgs e) { label9.Text = "+"; RandomNum(); } private void button2_Click(object sender, EventArgs e) { label9.Text = "-"; RandomNum(); } private void button3_Click(object sender, EventArgs e) { label9.Text = "x"; RandomNum(); } private void button4_Click(object sender, EventArgs e) { label9.Text = "÷"; RandomNum(); } } }
Form2代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace szys { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { textBox1.Text = Form1.Count.ToString(); textBox2.Text = Form1.right.ToString(); textBox4.Text = ((Form1.Count - (double)(Form1.right))).ToString(); textBox3.Text = ((Form1.right / (double)(Form1.Count)) * 100).ToString() + "%"; } } }
四、测试
运行程序,测试各个功能
五、PSP耗时分析
PSP2.1 | Personal Software Process Stages | Time(h) |
Planning | 计划 | 8 |
• Estimate | 估计这个任务需要多长时间 | 8 |
Development | 开发 | 9 |
• Analysis | 需求分析 | 0.5 |
• Design Spec | 生成设计文档 | 0.5 |
• Coding Standard | 代码规范 | 0.5 |
• Design | 具体设计 | 1 |
• Coding | 具体代码 | 3 |
• Code Review | 代码复审 | 2 |
• Text | 测试 | 1 |
Reporting | 报告 | 2 |
• Test Report | 测试报告 | 0.5 |
• Size Measurement | 计算工作量 | 0.5 |
• Postmortem | 事后总结 | 1 |
六、总结
看似不简单,其实也不难。老师布置的这个作业很有挑战性,刚看到题目要求感觉是不可完成的任务,但还是想要尝试一下。
我们可以用Java和C#来实现,我选择了C#,对于是用控制台应用程序还是用Windows窗体应用程序,我犹豫好长时间,我个人感觉用Windows窗体应用程序比较容易理解。在窗体设计方面还是挺得心应手,但代码编写费了不少脑筋;特别是需要转换运算符的时候,如果只是实现一个加法测试程序,问题就简单多了。
在你决心做之前一定要对自己有信心,然后要有耐心,遇到困难想办法克服,一步一步地做。不管做的怎样,还是坚持做完了。
七、思考题
用Random()方法产生随机数,把产生的两个数的取值范围由1-11改成1-101.
八、附加题
用If语句判断,由MessageBox.Show()弹出错误提示信息。