数学四则运算(二)结对编程1.1
一 需求分析
本次我们做的程序依旧是数学的四则运算,但是进行了部分的增量开发,接下来,我们谈谈这个程序的相关需求,此程序是一个1—10的四则运算,那么可以想到主要用于小学生,(ps 个人想法,不排除其他高年级的使用,因为用户可以输入任意的随机数范围),此外,本程序还可能会出现在家庭、教育机构和部分教学网站上面,因为他们可能会给学生出一些简单的数学题目,可以自由设置测试时间,题目数量等内容,而这一程序正好解决了这一个问题,我想,产品的需求必须首先知道用户需要什么,要以客户为中心。而这个产品正好解决了这个问题。所以,我感觉这个产品的需求应该挺不错的。
二 设计思路
1 用户第一步可以先自由设定题目的数量,测试时间,随机数产生的范围等(也是增量内容的全部),这样做的目的不仅使客户完成了测试,最主要的是可以自由设置相关内容,更加适合不同层次的客户。
2 如果用户没有进行相关内容的设置,(PS题目数量用户不设置也可以进行下一步)那么系统会自动进行提示,这样可以使软件与客户的交互性更强,进而更加符合用户的使用习惯。
3 如果用户相关内容设置完毕,并且点击计时开始按钮,系统会根据用户设定的相关内容,自动产生符合用户的随机数、题目数量和测试时间等,并且调用用户选择的一种计算方式,并且进行相关的计算
4 当用户设置的测试时间或者题目数量进行完毕时,那么系统会自动给出提示,并且统计和显示出来题目总数,题目正确数,题目错误数,题目正确率等内容。(ps 当然用户自行点击结束时,也可以给出来相关提示)
三 代码书写
form1代码:
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
{
public Form1()
{
InitializeComponent();
}
public static int count = 0; //定义题目总数,正确数,四则运算的变量
public static int right = 0;
public static int sum;
public static int lefttime;
public static int m1, m2;
public void RandomNum() //定义随机产生随机数的方法
{
try
{
Random ran = new Random();
int n1, n2;
m1 = Convert.ToInt32(textBox5.Text);
m2 = Convert.ToInt32(textBox6.Text);
n1 = ran.Next(m1, m2);
n2 = ran.Next(m1, n1);
textBox2.Text = n1.ToString();
textBox3.Text = n2.ToString();
textBox4.Text = "";
}
catch (Exception ex)
{
MessageBox.Show("请输入数值范围");
}
}
private void button1_Click(object sender, EventArgs e) //计时开始按钮的单击事件
{
int minute;
try
{
minute = int.Parse(this.textBox7.Text);
}
catch (System.Exception ex)
{
this.label8.Text = "输入错误";
return;
}
lefttime = minute;
this.timer1.Interval = 1000;
this.timer1.Enabled = true;
this.timer1.Start();
RandomNum();
}
private void textBox4_KeyDown(object sender, KeyEventArgs e) //触发enter键的事件
{
string m = textBox1.Text;
int n = Convert.ToInt32(textBox8.Text);
int result; // 定义四种运算方式
switch (m)
{
case "+":
sum = int.Parse(textBox2.Text) + int.Parse(textBox3.Text);
break;
case "-":
sum = int.Parse(textBox2.Text) - int.Parse(textBox3.Text);
break;
case "×":
sum = int.Parse(textBox2.Text) * int.Parse(textBox3.Text);
break;
case "÷":
sum = int.Parse(textBox2.Text) * int.Parse(textBox3.Text);
break;
default:
break;
}
if (e.KeyCode == Keys.Enter) //判断输入值是否为数字
{
if (int.TryParse(textBox4.Text, out result) == false)
{
MessageBox.Show("请输入数字");
count++;
}
else
{
if (textBox4.Text == sum.ToString())
{
right++;
count++;
RandomNum();
}
else
{
count++;
RandomNum();
}
}
}
if (n == count) //判断题目数量,是否结束运算
{
MessageBox.Show("题目答完,请重新开始");
textBox3.Enabled = false;
Form2 frm2 = new Form2();
frm2.ShowDialog();
this.Close();
}
}
private void button2_Click(object sender, EventArgs e) //点击结束按钮事件
{
textBox3.Enabled = false;
Form2 frm2 = new Form2();
frm2.ShowDialog();
this.Close();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
this.label3.Text = this.textBox1.Text;
}
public void timer1_Tick(object sender, EventArgs e )//定义计时器
{
if (lefttime <= 0)
{
timer1.Enabled = false;
MessageBox.Show("答题时间到!");
textBox4.Enabled = false;
Form2 frm2 = new Form2();
frm2.ShowDialog();
}
this.label8.Text = "剩余时间" + lefttime.ToString() + "秒";
lefttime--;
}
}
}
form2代码
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 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分析
五 代码测试
六 增量开发
增量内容全部实现,么么哒
七 思考题
新增功能:不仅可以设置1—10的随机数范围,可以延伸到任意的范围,从而适合更多的学生
六 总结
这个是我们第一次进行的结对编程,现在对做这个结对编程的总结和感想对大家说一下吧。
这个程序我们之前做了一个类似的,为了使用户能够更好的使用软件,我们两个经过商讨,所以进行了页面的优化。在这个程序的实现过程中,遇到了一些困难,主要出现在增量开发这一部分,我们查阅了相关资料,进行多次代码的修改,从而把完整的程序作了出来!
接下来是我对做结对编程这一个过程的总结:
1.两个人的基础知识一定要扎实,否则中间会出一些意想不到的问题
2.两个人一定要有耐心,多进行沟通,思路要保持一致
3.两个人可以进行工作内容的转换调整,因为一个人做一件事情久了,都会烦
4.两个人一定要保持高度的默契,这样才会更好,更快的完成任务
5.要有团队精神,遇到问题共同解决
...........
这就是我的结对编程的整个过程,希望老师阅读后,批评指正,谢谢老师!