一、需求分析
(1)处理用户的错误输入,比如输入字母或符号等,处理除法运算中分母为0的情况,处理结果为负数的情况,保证是小学水平不出现负数,比如不能出现5-8=-3这种情况;
(2)用户可以设定倒计时;
(3)用户可以设定随机整数的范围和题目数量;
(4)用户可以选择哪种计算类型,比如加减乘除,或可选择软件随机生成四则运算中的一种;
(5)用户可以选择随机生成的题目中是否带有小括号,比如(2+3)*5,如果是gui程序,添加这个功能可以用复选框实现;
(6)保证生成过的题目不再重复出现。
这是在第二次上的内容增加的几个需求,这从原本适合小学生做的然后加以改进添加计时器之类的。
二、设计思路
1,、对于错误输入可以采取if语句来判定然后给出提示,至于分母 为0,或者为负的情况就可以用随机数范围来控制
2、对于倒计时我原来第一次是用控制台做的,然后去网上百度计时器,然后添加代码错误后来改做窗体。窗体吧原来书上就有代码,添加一个timer控件就可以成功;
3、对于随机数的范围和数量 可以选择用户输入然后从文本框上获取这种形式。
4、至于是选择还是随机 只要不把文本框关闭就可以自己输入,如果想随机就点击开始嘛。
5、对于是否选择带括号的就可以再添加一个窗体选带括号这个海尔米做出来,有待改进。
6、保证题目不在重复可以用循环来但是网上代码看不懂就还在研究。
三、代码实现
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 Chapter四则运算 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public static int Count = 0; private int t = 60; public static int right = 0; private void button1_Click_1(object sender, EventArgs e) { label4.Text = t.ToString(); timer1.Enabled = true; timer1.Interval = 1000; timer1.Start(); RandomNum(); } private void RandomNum() { Random ran = new Random(); int n3,n4; int n1=Convert.ToInt32(textBox4.Text); int n2=Convert.ToInt32(textBox5.Text); n3 = ran.Next(n1, n2); n4 = ran.Next(n1, n3); textBox1.Text = n3.ToString(); textBox2.Text = n4.ToString(); textBox3.Text = ""; } 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; label4.Text = t.ToString(); } private void button3_Click(object sender, EventArgs e) { label1.Text = "+"; } private void button4_Click(object sender, EventArgs e) { label1.Text = "-"; } private void button5_Click(object sender, EventArgs e) { label1.Text = "*"; } private void button6_Click_1(object sender, EventArgs e) { label1.Text = "/"; } private void textBox3_KeyDown_1(object sender, KeyEventArgs e) { int x1 = Convert.ToInt32(textBox6.Text); int sum; string m = label1.Text; int result; switch (m) { case "+": sum = int.Parse(textBox1.Text) + int.Parse(textBox2.Text); break; case "-": sum = int.Parse(textBox1.Text) - int.Parse(textBox2.Text); break; case "*": 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 (int.TryParse(textBox3.Text, out result) == false) { MessageBox.Show("请输入数字"); Count++; } if (textBox3.Text == sum.ToString()) { right++; RandomNum(); } Count++; } if (Count >= x1) { textBox3.Enabled = false; Form2 frm = new Form2(); frm.ShowDialog(); } } private void button2_Click_1(object sender, EventArgs e) { textBox3.Enabled = false; Form2 frm = new Form2(); frm.ShowDialog(); } private void Form1_Load(object sender, EventArgs e) { } private void button7_Click(object sender, EventArgs e) { Form3 frm = new Form3(); frm.ShowDialog(); } } }
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 Chapter四则运算 { 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.right / (double)(Form1.Count)) * 100).ToString() + "%"; } } }
四、测试
五、PSP耗时分析
PSP2.1 | Personal Software Process Stages | Time(h) |
Planning | 计划 | |
• Estimate | 估计这个任务需要多长时间 | 30 |
Development | 开发 | |
• Analysis | 需求分析 | 0.5 |
• Design Spec | 生成设计文档 |
2 |
• Coding Standard | 代码规范 | 1 |
• Design | 具体设计 | 1 |
• Coding | 具体代码 | 20 |
• Code Review | 代码复审 | 1 |
• Text | 测试 | 0.5 |
Reporting | 报告 | |
• Test Report | 测试报告 | 0.5 |
• Size Measurement | 计算工作量 | 0.5 |
• Postmortem | 事后总结 | 3 |
六 、编程总结
在结对编程里,中间是个艰辛的历程 对于自己逻辑有点不自信 ,感觉这样小程序自己的脑袋都转不过来了, 对于增量的解决是有好几种方法但是自己所能实现的方法却不多
而且中间还有很多不知到怎么写方法,上网查查讨论讨论总算解决一些容易的 还有好多没做出来 ,反正就是练习的还不够 还带继续努力 ,在结对编程里或许同伴的某个想法
突然说出来然后感觉很对,有些 自己不是很会的知识就会帮助我更进一步,这点感觉挺好的
七、增量的解决
解决了1234四个增量
我的结对伙伴是刘国建