软件工程第二次作业—结对编程
1.两人组成一队,进行结对编程
组员:
吴香南 1500802037 博客园地址: https://www.cnblogs.com/wxn-151/
张芙蓉 1500802026 博客园地址: http://www.cnblogs.com/sunshine-free/
代码地址: https://coding.net/u/wxn_151/p/SZYS/git/tree/master/
2.从第一次软件工程作业中选出一人的作业作为这次作业的基础
答:选择了自己第一次软件工程作业的代码加以修改添加利用到这一次作业中。
3.设计一个图形界面(GUI)的四则运算应用程序,可以是PC桌面的图形界面程序、网页程序或者手机程序
4.设计的应用程序可以完成加法、减法、乘法、除法运算
整数的加法:
整数的减法:
整数的乘法:
整数的除法:
真分数的加法:
真分数的减法:
真分数的除法:
真分数的乘法:
整数四则运算代码:
private void random_number0()
{
Random rd = new Random();
n1 = rd.Next(1, 100);
n2 = rd.Next(1, 100);
int k = rd.Next(0,4);
String[] str1 = new String[] { n1.ToString(), "+", n2.ToString() };
String[] str2 = new String[] { n1.ToString(), "-", n2.ToString() };
String[] str3 = new String[] { n1.ToString(), "*", n2.ToString() };
String[] str4 = new String[] { n1.ToString(), "/", n2.ToString() };
switch (k)
{
case 0:
{
for (int i = 0; i < 3; i++)
textBox1.AppendText(str1[i]);
result = n1 + n2;
}
break;
case 1:
{
for (int i = 0; i < 3; i++)
textBox1.AppendText(str2[i]);
result = n1 - n2;
}
break;
case 2:
{
for (int i = 0; i < 3; i++)
textBox1.AppendText(str3[i]);
result = n1 * n2;
}
break;
case 3:
{
for (int i = 0; i < 3; i++)
textBox1.AppendText(str4[i]);
result = n1 / n2;
}
break;
}
}
5.应用程序可以完成真分数的四则运算
例如:1/2 + 1/3 = 5/6
例如:1/5 + 3/10 = 1/2(而不是5/10)
例如:1'1/3 - 2/3 = 2/3 (是1'1/3而不是4/3,注意:“ ' ”为1'1/3整数与分数的分隔符)
例如:1/2 * 3/4 = 3/8
例如:1/(2/3) = 1'1/2(而不是3/2)
真分数代码如下:
private void random_number()
{
Random rd = new Random();
r1 = rd.Next(1, 10);
r2 = rd.Next(1, 10);
if (r1 > r2)
{
int m = r1;
r1 = r2;
r2 = m;
}
r3 = rd.Next(1, 10);
r4 = rd.Next(1, 10);
if (r3 > r4)
{
int n = r3;
r3 = r4;
r4 = n;
}
int k = rd.Next(0, 4);
String[] str1 = new String[] { r1.ToString(), "/", r2.ToString(), "+", r3.ToString(), "/", r4.ToString() };
String[] str2 = new String[] { r1.ToString(), "/", r2.ToString(), "-", r3.ToString(), "/", r4.ToString() };
String[] str3 = new String[] { r1.ToString(), "/", r2.ToString(), "*", r3.ToString(), "/", r4.ToString() };
String[] str4 = new String[] { "(",r1.ToString(), "/", r2.ToString(),")", "/","(", r3.ToString(), "/", r4.ToString(),")" };
switch (k)
{
case 0:
{
for (int i = 0; i < 7; i++)
textBox1.AppendText(str1[i]);
fenmu = r2 * r4;
fenzi = r1 * r4 + r3 * r2;
x = gcd(fenzi, fenmu);
fenzi = fenzi / x;
fenmu = fenmu / x;
if (fenzi > fenmu)
{
d = fenzi / fenmu;
fenzi = fenzi - (fenmu * d);
r = new String[] { d.ToString(),"'",fenzi.ToString(), "/", fenmu.ToString() };
}
else
r=new String[]{fenzi.ToString(),"/",fenmu.ToString();
}
break;
case 1:
{
for (int i = 0; i < 7; i++)
textBox1.AppendText(str2[i]);
fenmu = r2 * r4;
fenzi = r1 * r4 - r3 * r2;
x = gcd(fenzi, fenmu);
fenzi = fenzi / x;
fenmu = fenmu / x;
if (fenzi > fenmu)
{
d = fenzi / fenmu;
fenzi = fenzi - (fenmu * d);
r = new String[] { d.ToString(), "'", fenzi.ToString(), "/", fenmu.ToString() };
}
else
r = new String[] { fenzi.ToString(), "/", fenmu.ToString() };
}
break;
case 2:
{
for (int i = 0; i < 7; i++)
textBox1.AppendText(str3[i]);
fenmu = r2 * r4;
fenzi = r1 * r3;
x = gcd(fenzi, fenmu);
fenzi = fenzi / x;
fenmu = fenmu / x;
if (fenzi > fenmu)
{
d = fenzi / fenmu;
fenzi = fenzi - (fenmu * d);
r = new String[] { d.ToString(), "'", fenzi.ToString(), "/", fenmu.ToString() };
}
else
r = new String[] { fenzi.ToString(), "/", fenmu.ToString() };
}
break;
case 3:
{
for (int i = 0; i < 11; i++)
textBox1.AppendText(str4[i]);
fenmu = r2 * r3;
fenzi = r1 * r4;
x = gcd(fenzi, fenmu);
fenzi = fenzi / x;
fenmu = fenmu / x;
if (fenzi > fenmu)
{
d = fenzi / fenmu;
fenzi = fenzi - (fenmu * d);
r = new String[] { d.ToString(), "'", fenzi.ToString(), "/", fenmu.ToString() };
}
else
r = new String[] { fenzi.ToString(), "/", fenmu.ToString() };
}
break;
}
}
6.有退格和清屏的功能
退格:
退格代码:
private void button6_Click(object sender, EventArgs e)
{
textBox2.Focus();
SendKeys.Send("{BACKSPACE}");
}
清空:
清空代码:
private void button5_Click(object sender, EventArgs e)
{
textBox2.Text = "";
}
7.让程序能接受用户输入答案,并判定对错。
代码:
if (textBox2.Text == result.ToString())
{
right++;
MessageBox.Show("恭喜你,答对了!你很棒棒噢~");
}
if (textBox2.Text.ToString()== r.ToString())
MessageBox.Show("恭喜你,答对了!你很棒棒噢~");
if (textBox2.Text.ToString()!=r.ToString())
MessageBox.Show("抱歉,答错了!加油,你是最棒的~ 正确答案是:"+r.ToString());
if (textBox2.Text != result.ToString())
MessageBox.Show("抱歉,答错了!加油,你是最棒的~ 正确答案是:" + result.ToString());
选做(至少完成一个)
1.增加“倒计时”功能,每个题目必须在20秒钟完成,如果完不成,得0分进入下一题
随机出题:
倒计时结束:
自动进入下一题:
也可以手动进入下一题
倒计时代码:
private void timer1_Tick(object sender, EventArgs e)
{
t = t - 1;
label4.Text = t.ToString();
if (t <= 0)
{
timer1.Enabled = false;
textBox2.Enabled = false;
MessageBox.Show("很遗憾,时间到了!进入下一题~" );
textBox2.Enabled = false;
textBox1.Text = "";
t = 20;
label4.Text = t.ToString();
timer1.Enabled = true;
timer1.Interval = 1000;
timer1.Start();
random_number0();
}
}
2.可以统计用户总的练习题目数量,正确的数量,并且在程序重新启动后能保持记录
点击成绩,再点击查看
代码:
private void button9_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.Show();
}
退出:
代码:
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("再接再厉哟~");
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = Form1.count.ToString();
textBox2.Text = Form1.right.ToString();
string[] k=new string[]{((Form1.right/Form1.count)*100).ToString(),"%"};
for (int i = 0; i < 2; i++)
textBox3.AppendText(k[i]);
}
FINAL:
①结对编程时的照片
②结对编程的心得体会
答:通过这次结对编程,感觉合作也很重要,虽然有些东西自己能做,但是两个人做的时候能提高效率,更省时。对于代码能力不是很好的我来说,本身这个四则运算的界面是很有难度的,但是有了队友的监督和审查,学的很快,两个人合作虽然会有意见不合,但是求同存异的同时有了解到了另一种方法,也是很大的进步,虽然做出来的东西不咋地,但是也算是我的第一个小项目了,我还是很开心。