软件工程第二次作业—结对编程
一.成员
沈奇 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]=ij;
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(y0||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]=iy-xj;
b[p][1]=jy;
break;
case 2:
strk1+=_T("/");
strk2+=_T("");
strk3+=_T("/");
strk4+=_T("(");
strk5+=_T(")");
strk6+=_T("(");
strk7+=_T(")");
b[p][0]=ix;
b[p][1]=jy;
break;
case 3:
b[p][0]=iy;
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)判断对错
结对编程照片:
四.心得体会
在这次结对编程中遇到了很多问题,我们在网上也查了很多相关的知识点,从中也学到了很多
东西,对可视化编程有了进一步的认识与学习。对程序进行了多次改进,并一步步的实现了该
有的功能。和同伴结对编程学习了很多,熟悉了两人合作的模式,有问题共同探讨并得到了解
决,提高了我们的学习兴趣。我的伙伴虽然有点粗心但是他的理解能力比我好,这一点是需要
我学习的,在我们共同做出最初成品后我也找到了许多的bug,比如倒计时后的自动出题等等,
我们都一一的解决了,和他一起合作我学到了很多,也感受到了结对编程的魅力。