结对编程——四则运算
一、需求分析
(1)当程序运行的时候,首先填写随机整数的范围,然后单击“+”或“-”或“x”或“÷”按钮时,开启倒计时,程序会随机产生两个随机整数,由用户输出结果。
(2)在运行减法运算中,不会出现结果为负数的情况;
(3)在运行除法运算中,不会出现分母为0的情况;
(4)当单击“停止”按钮时,程序会给出“正确”、“错误”等信息。
二、设计思路
(1)在上次作业的基础上,我们在窗体上再放两个textBox控件,由用户填写取值范围;放一个Timer控件,设定倒计时。
(2)当定义Random()方法的时候,再定义一个变量m,如果第一个数小于第二个数,就由m来转换第一个数和第二个数的位置。
(3)在除法运算中考虑到分子和分母都有可能为0的情况,所以在运行除法运算之前,就要求取值范围不能从0开始。
三、代码实现
Form1代码如下:
namespace sizeyunsuan { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public static int Count = 0; public static int right = 0; public static int fault = 0; private int t = 60; private void RandomNum() { Random ran = new Random(); int n1, n2; string m; n1 = ran.Next(int.Parse(textBox4.Text), int.Parse(textBox5.Text)); n2 = ran.Next(int.Parse(textBox4.Text), int.Parse(textBox5.Text)); if (n1 >= n2) { textBox1.Text = n1.ToString(); textBox2.Text = n2.ToString(); textBox3.Text = ""; Count++; } else if (n1 < n2) { m = n2.ToString(); textBox2.Text = n1.ToString(); textBox1.Text = m; textBox3.Text = ""; Count++; } } private void R() { Random ran = new Random(); int a1, a2; a1 = ran.Next(int.Parse(textBox4.Text), int.Parse(textBox5.Text)); a2 = ran.Next(int.Parse(textBox4.Text), int.Parse(textBox5.Text)); if (int.Parse(textBox4.Text)!=0) { textBox1.Text = a1.ToString(); textBox2.Text = a2.ToString(); textBox3.Text = ""; Count++; } else { MessageBox.Show("在除法运算中,取值范围不能从0开始"); } } private void timer1_Tick(object sender, EventArgs e) { if (t <= 0) { timer1.Enabled = false; textBox3.Enabled = false; MessageBox.Show("时间到!"); textBox3.Enabled = false; Form2 frm2 = new Form2(); frm2.ShowDialog(); } t = t - 1; label10.Text = t.ToString(); } private void textBox3_KeyDown(object sender, KeyEventArgs e) { int sum=0; string s = label4.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 button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.ShowDialog(); } private void button2_Click(object sender, EventArgs e) { label4.Text = "+"; label10.Text = t.ToString(); timer1.Enabled = true; timer1.Interval = 1000; timer1.Start(); RandomNum(); } private void button3_Click(object sender, EventArgs e) { label4.Text = "-"; label10.Text = t.ToString(); timer1.Enabled = true; timer1.Interval = 1000; timer1.Start(); RandomNum(); } private void button4_Click(object sender, EventArgs e) { label4.Text = "x"; label10.Text = t.ToString(); timer1.Enabled = true; timer1.Interval = 1000; timer1.Start(); RandomNum(); } private void button5_Click(object sender, EventArgs e) { label4.Text = "÷"; label10.Text = t.ToString(); timer1.Enabled = true; timer1.Interval = 1000; timer1.Start(); R(); } } }
Form2代码如下:
namespace sizeyunsuan { 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(); textBox3.Text = ((Form1.Count - (double)(Form1.right))).ToString(); textBox4.Text = ((Form1.right / (double)(Form1.Count)) * 100).ToString() + "%"; } } }
四、测试
运行程序,测试各个功能
五、PSP耗时分析
PSP2.1 | Personal Software Process Stages | Time(h) |
Planning | 计划 | 13 |
• Estimate | 估计这个任务需要多长时间 | 13 |
Development | 开发 | 11 |
• Analysis | 需求分析 | 0.5 |
• Design Spec | 生成设计文档 | 2 |
• Coding Standard | 代码规范 | 1 |
• Design | 具体设计 | 1 |
• Coding | 具体代码 | 3 |
• Code Review | 代码复审 | 2 |
• Text | 测试 | 1 |
Reporting | 报告 | 2 |
• Test Report | 测试报告 | 0.5 |
• Size Measurement | 计算工作量 |
1 |
• Postmortem | 事后总结 |
1 |
六、结对编程过程
七、实现的增量内容
1)处理用户的错误输入,这个感觉我们投机取巧了,我们只是在窗体上写“输入结果只能是数字”来提醒用户,我们想这也是个处理方法吧!处理了除法运算中分母为0的情况,处理了结果为负数的情况;
2)设定了倒计时;
3)设定了随机整数的范围;
4)实现了可以选择计算类型:加减乘除。
八、总结
在陈老师的课上,我的结对伙伴就是徐玉莹;我俩还算挺有默契的,徐玉莹的点子也挺多的。
我俩在编写代码时遇到了不少问题,特别是结果不能为负数和分母不能为0;特别感谢的是毛连成,他给了我们很大帮助,也很感谢我的伙伴。
这次作业让我学到了不少东西,每一次的经历都是一次成长。