结对编程-四则运算练习器git
姓名:廖云涛
学号:1500802076 博客地址算法
姓名:高原:
学号:1500802075 博客地址编程
实现代码: public Form1()
{
i = 0;
Num0fQuestion = 0;
TrueAnswer = 0;
MessageBox.Show("输入整数运算结果时,如有小数,请保留两位小数。例如:0.50。\n输入分数运算结果是,请注意格式,例如:1'3/4或是-1'2/3");
InitializeComponent();
}数组
生成整数题目的实现:
private void button1_Click(object sender, EventArgs e)
{
this.button10_Click(sender, e);
bug = true;
if (textBox1.Text == "" || textBox2.Text == "")
{
MessageBox.Show("请输入题目数量和范围!!!");
return;
}
size = Convert.ToInt32(textBox1.Text);
high = Convert.ToInt32(textBox2.Text);
if (i >= size)
{
i++;
MessageBox.Show("题目已作完!");
return;
}
label5.Text = T.ToString();
timer1.Enabled = true;
timer1.Interval = 1000;
timer1.Start();
double num_1;
double num_2;
int oper;
char[] opera = new char[4] { '+', '-', '', '/' };
Random ra = new Random();
num_1 = ra.Next(0, high);
num_2 = ra.Next(0, high);
oper = ra.Next(0, 4);
while (num_2 == 0 && opera[oper] == '/')
{
num_2 = ra.Next(0, high);
}
textBox3.AppendText(Convert.ToString(num_1) + Convert.ToString(opera[oper]) + Convert.ToString(num_2) + "=\n");
if (opera[oper] == '+')
Result_1.Add(num_1 + num_2);
if (opera[oper] == '-')
Result_1.Add(num_1 - num_2);
if (opera[oper] == '')
Result_1.Add(num_1 * num_2);
if (opera[oper] == '/')
Result_1.Add(Math.Round(num_1 / num_2, 2));
i++;
}
对于计时的实现:
private void timer1_Tick(object sender, EventArgs e)
{
if (T <= 0 && i <= size)
{
timer1.Enabled = false;
textBox5.Enabled = false;
User_Result.Add("");
MessageBox.Show("时间到!");
textBox5.Enabled = true;
this.button1_Click(sender, e);
}
if (i > size)
{
textBox5.Enabled = false;
timer1.Stop();
label5.Text = "0";
return;
}
T--;
label5.Text = T.ToString();
}dom
真分数生成的实现:
private void button2_Click(object sender, EventArgs e)
{
this.button10_Click(sender, e);
bug = false;
if (textBox1.Text == "")
{
MessageBox.Show("请输入题目数量!!!");
return;
}
size = Convert.ToInt32(textBox1.Text);
if (i >= size)
{
i++;
MessageBox.Show("题目已作完!");
return;
}
label5.Text = T.ToString();
timer2.Enabled = true;
timer2.Interval = 1000;
timer2.Start();
int oper;
char[] opera = new char[4] { '+', '-', '', '/' };
Random ra = new Random();
num1 = ra.Next(0, 10);
num2 = ra.Next(0, 10);
while (num2 == 0)
num2 = ra.Next(0, 10);
Num_1.Add(num1);
Num_2.Add(num2);
Fraction(ref num1, ref num2);
if (temp != 0)
{
if (num1 != 0)
textBox3.AppendText(temp + "'" + Convert.ToString(num1) + "/" + Convert.ToString(num2));
else
textBox3.AppendText(temp.ToString());
}
if (temp == 0)
{
if (num1 != 0)
textBox3.AppendText(Convert.ToString(num1) + "/" + Convert.ToString(num2));
else
textBox3.AppendText("0");
}
oper = ra.Next(0, 4);
textBox3.AppendText(" " + opera[oper].ToString() + " ");
num1 = ra.Next(0, 10);
num2 = ra.Next(0, 10);
while (num2 == 0)
num2 = ra.Next(0, 10);
while (num1 == 0 && opera[oper] == '/')
num1 = ra.Next(0, 10);
int child = num1;
int mother = num2;
Fraction(ref child, ref mother);
if (temp != 0)
{
if (child != 0)
textBox3.AppendText(temp + "'" + Convert.ToString(child) + "/" + Convert.ToString(mother) + "=\n");
else
textBox3.AppendText(temp + "=\n");
}
if (temp == 0)
{
if (child != 0)
textBox3.AppendText(Convert.ToString(child) + "/" + Convert.ToString(mother) + "=\n");
else
textBox3.AppendText("0" + "=\n");
}
if (opera[oper] == '+')
{
Result_2.Add(Num_1[i] num2 + Num_2[i] * num1);
Result_3.Add(num2 * Num_2[i]);
}
if (opera[oper] == '-')
{
Result_2.Add(Num_1[i] * num2 - Num_2[i] * num1);
Result_3.Add(num2 * Num_2[i]);
}
if (opera[oper] == '')
{
Result_2.Add(Num_1[i] num1);
Result_3.Add(num2 * Num_2[i]);
}
if (opera[oper] == '/')
{
Result_2.Add(Num_1[i] * num2);
Result_3.Add(num1 * Num_2[i]);
}
int child1;
int mother1;
Result_4.Add(0);
child1 = Result_2[i];
mother1 = Result_3[i];
Fraction(ref child1, ref mother1, i);
if (child1 < 0)
Result_2[i] = -child1;
Result_2[i] = child1;
Result_3[i] = mother1;
if (Result_4[i] != 0)
{
if (Result_2[i] != 0)
{
if (child1 < 0)
ResultOfFrac.Add(Result_4[i] + "'" + Convert.ToString(-Result_2[i]) + "/" + Convert.ToString(Result_3[i]));
else
ResultOfFrac.Add(Result_4[i] + "'" + Convert.ToString(Result_2[i]) + "/" + Convert.ToString(Result_3[i]));
}
else
ResultOfFrac.Add(Convert.ToString(Result_4[i]));
}
if (Result_4[i] == 0)
{
if (Result_2[i] != 0)
ResultOfFrac.Add(Convert.ToString(Result_2[i]) + "/" + Convert.ToString(Result_3[i]));
else
ResultOfFrac.Add(Convert.ToString(Result_4[i]));
}
i++;
}测试
对于记录已作题数和答对题数,由于要求在程序从新运行时能保存以往的记录,因此要有文件的建立读取和修改。
private void button8_Click(object sender, EventArgs e)
{
if (!File.Exists("F:\TestTxt.txt"))
{
FileStream File = new FileStream(@"F:\TestTxt.txt", FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
StreamWriter sw = new StreamWriter(File);
sw.WriteLine(Num0fQuestion + "\n" + TrueAnswer);
MessageBox.Show("答题总数:" + Num0fQuestion + "\n答对题数:" + TrueAnswer);
sw.Close();
File.Close();
Num0fQuestion = 0;
TrueAnswer = 0;
}
else
{
FileStream File = new FileStream(@"F:\TestTxt.txt", FileMode.Open, FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(File);
StreamReader sr = new StreamReader(File);
int A = Convert.ToInt32(sr.ReadLine());
int B = Convert.ToInt32(sr.ReadLine());
sw.Close();
sr.Close();
File.Close();
A += Num0fQuestion;
B += TrueAnswer;
MessageBox.Show("答题总数:" + A + "\n答对题数:" + B);
File = new FileStream(@"F:\TestTxt.txt", FileMode.Truncate, FileAccess.Write);
sw = new StreamWriter(File);
sw.WriteLine(A + "\n" + B);
sw.Close();
File.Close();
Num0fQuestion = 0;
TrueAnswer = 0;
}
}this
这次做业是用C#的Winform进行编写的,由于以前在选修课有学过C#的相关知识,因此对于Winform开发仍是比较熟悉的。整个结对编程过程当中,我负责了前期代码的编写,而个人队友则负责监督代码中的错误以及bug测试。大一大二这两年基本上编程都是本身一我的完成的,遇到不会的问题会本身从网上查些资料,或是借鉴其余人的项目。而经过此次结对编程,我明显体会到了编程效率的提升,两我的在一块儿编程能够有效避免一些好笑的低级错误,例如数组的溢出,动态数组的定义等等小问题,因此编程质量也有了很大的提升,我认为结对编程适合于时间紧迫的开发任务,两我的能够在一块儿分析问题解决问题,经过不停的头脑风暴和知识碰撞来解决问题。可是也会由于两我的的编程习惯不一样而致使任务进行的过程当中出现分歧,在算法逻辑方面会有不一样的争议,这个时候就须要两我的来妥善解决,是迁就仍是改变。因此结对编程在解决一我的完成比较吃力的项目时是有很大好处的,毕竟一我的的能力,知识等方面不如两我的那么全面,结对编程能够弥补我的能力不足的问题。