软件工程第二次作业—结对编程

一.成员
沈奇 1500802098
赵慧玲 1500802107 博客链接
二.代码链接
coding链接
三.各部分功能截图
1.设计一个图形界面(GUI)的四则运算应用程序,完成加法、减法、乘法、除法运算
(1)点击按钮:整数运算,分数运算,检查,正确结果,出题,退格,清屏,退出。
(2)显示框:题目,倒计时,正确结果,出题数,正确数,错误数,检查结果。
(3)输入框:输入整数结果,输入分数结果。
2.界面如图所示:

3.功能演示:
(1)整数运算:先点击按钮“整数运算”再点击按钮“出题”,显示题目,开始20秒倒计时,输入整数
结果,点击按钮“检查”判断正误,点击按钮“正确结果”显示正确结果,如果20秒内没有做完,自
动判断正误,显示正确结果,直接进行下一题。统计出题数,正确数,错误数。
代码如下:
void C四则运算2Dlg::OnBnClickedzhengshu()
{
judge=1;
for(int i=0;i<10;i++)
str[i]=_T("");
for(int p=0;p<10;p++)
{
int i=(int)rand()%10;
int j=(int)rand()%9+1;
int k=(int)rand()%100/25;
CString strk("");
switch(k)
{
case 0:
strk+=_T("+");
a[p]=i+j;
break;
case 1:
strk+=_T("-");
a[p]=i-j;
break;
case 2:
strk+=_T("");
a[p]=i
j;
break;
case 3:
try
{
a[p]=i/j;
strk+=_T("/");
}
catch(...)
{
p--;
}
}
CString stri((char)(i+48));
CString strj((char)(j+48));
str[p]+=stri+=strk+=strj;
}
}


(2)分数运算:先点击按钮“分数运算”再点击按钮“出题”,显示题目,开始20秒倒计时,输入分数
结果,点击按钮“检查”判断正误,点击按钮“正确结果”显示正确结果,如果20秒内没有做完,自
动判断正误,显示正确结果(并可以进行约分和假分数转化为代分数),直接进行下一题。统计
出题数,正确数,错误数。
代码如下:
void C四则运算2Dlg::OnBnClickedfenshu()
{
// TODO: 在此添加控件通知处理程序代码
judge=2;
for(int i=0;i<10;i++)
str1[i]=_T("");
for(int p=0;p<10;p++)
{
int i=(int)rand()%10;
int j=(int)rand()%10;
CString strk1("");
CString strk2("");
CString strk3("");
CString strk4("");
CString strk5("");
CString strk6("");
CString strk7("");
while(j0||i>=j)
{
i=(int)rand()%10;
j=(int)rand()%10;
}
int x=(int)rand()%10;
int y=(int)rand()%10;
while(y
0||x>=y)
{
x=(int)rand()%10;
y=(int)rand()%10;
}
int k=(int)rand()%100/25;
switch(k)
{
case 0:
strk1+=_T("/");
strk2+=_T("+");
strk3+=_T("/");
strk4+=_T("(");
strk5+=_T(")");
strk6+=_T("(");
strk7+=_T(")");
b[p][0]=iy+xj;
b[p][1]=jy;
break;
case 1:
strk1+=_T("/");
strk2+=_T("-");
strk3+=_T("/");
strk4+=_T("(");
strk5+=_T(")");
strk6+=_T("(");
strk7+=_T(")");
b[p][0]=i
y-xj;
b[p][1]=j
y;
break;
case 2:
strk1+=_T("/");
strk2+=_T("");
strk3+=_T("/");
strk4+=_T("(");
strk5+=_T(")");
strk6+=_T("(");
strk7+=_T(")");
b[p][0]=i
x;
b[p][1]=jy;
break;
case 3:
b[p][0]=i
y;
b[p][1]=j*x;
strk1+=_T("/");
strk2+=_T("/");
strk3+=_T("/");
strk4+=_T("(");
strk5+=_T(")");
strk6+=_T("(");
strk7+=_T(")");
}
CString stri((char)(i+48));
CString strj((char)(j+48));
CString strx((char)(x+48));
CString stry((char)(y+48));
str1[p]+=strk4+=stri+=strk1+=strj+=strk5+=strk2+=strk6+strx+=strk3+=stry+=strk7;
}
}

(3)倒计时功能20秒后自动判断该题的正确性,并停止答题:
代码如下:
void C四则运算2Dlg::OnTimer(UINT nIDEvent)
{ n--;
CString strl;
strl.Format(_T("%d"),n);
GetDlgItem(xianshijishi)->SetWindowText(strl);
if(n==0)
{
OnBnClickedchuti();
OnBnClickedjiancha();
OnBnClickedtruejieguo1();
KillTimer(1);
n=21;
}

}

(4)退格:点击一次退一格。
代码如下:
void C四则运算2Dlg::OnBnClickeddelete1()
{
// TODO: 在此添加控件通知处理程序代
UpdateData(true);
int L=bian4.GetLength();
bian4.Delete(L-1,1);
GetDlgItem(shuru)->SetWindowText(bian4);

}


(5)清屏:显示框,输入框内容全为零。
代码如下:
void C四则运算2Dlg::OnBnClickedclears()
{
// TODO: 在此添加控件通知处理程序代码
CString str("0");
GetDlgItem(xianshi)->SetWindowText(str);
GetDlgItem(truejieguo)->SetWindowText(str);
GetDlgItem(IDCLOSE)->SetWindowText(str);
GetDlgItem(IDC_STATICa)->SetWindowText(str);
GetDlgItem(IDCANCEL)->SetWindowText(str);
GetDlgItem(xianshijishi)->SetWindowText(str);
GetDlgItem(shuru)->SetWindowText(str);
KillTimer(1);
}


(6)判断对错

结对编程照片:

四.心得体会
在这次结对编程中我们需要做一个四则运算出题器,经过一起讨论后,也鉴于我们的能力,我们选择了C++,
用MFC来做。虽然对改编译环境有一些稍微的认识,但还是有很多的东西不清楚,所以我们也在网上学了很多,
并进一步的了解该编译器。我们之间互相帮助,互相教对方,可以得到能力上的互补。可以让编程环境有效地
贯彻。在一块的商讨增强代码和产品质量,并有效的减少bug。降低了学习成本。我们在一起一边编程,一边共
享知识和经验,有效地在实践中进行学习。在编程中,相互讨论,更快更有效地解决了问题。我的伙伴心很细,
找出了很多我没有找到的bug,然后我们也进行了一系列改进这是我需要学习的地方。

posted @ 2017-05-09 21:54  胡萝卜xu  阅读(202)  评论(0编辑  收藏  举报