zoukankan      html  css  js  c++  java
  • 软件工程第二次作业 —— 结对编程

    1.小组成员

    汪浩 1500802117

    韩英璨 1500802104 博客园地址

    2.代码连接地址

    https://coding.net/u/iiiiii126/p/jieduibiancheng/git

    3.程序功能分析及截图
    (1)图形界面

    (2)设计的应用程序可以完成加法、减法、乘法、除法运算
    加法截图

    减法截图

    乘法截图

    除法截图

    代码
    void CMy1Dlg::OnBnClickedzhengshu()
    {
    // TODO: 在此添加控件通知处理程序代码
    s=true;
    n=0;
    n2=0;
    CString strz;
    strz.Format(_T("%d"),n2);
    GetDlgItem(cuo_wu)->SetWindowText(strz);
    GetDlgItem(zong_shu)->SetWindowText(strz);
    for(int p=0;p<100;p++)
    str[p]=_T("");
    for(int p=0;p<100;p++)
    {
    int i=(int)rand()%10;
    int j=(int)rand()%9+1;
    int k=(int)rand()%100/25;
    CString str0("");
    switch(k)
    {
    case 0:
    a[p]=i+j;
    str0+=_T("+");
    break;
    case 1:
    a[p]=i-j;
    str0+=_T("-");
    break;
    case 2:
    a[p]=ij;
    str0+=_T("
    ");
    break;
    case 3:
    try
    {
    a[p]=i/j;
    str0+=_T("/");
    }
    catch(...)
    {
    p--;
    }
    }

        CString stri;
        stri.Format(_T("%d"),i);
        CString strj;
        strj.Format(_T("%d"),j);
        str[p]+=stri+=str0+=strj;
    }
    

    }
    (3)应用程序可以完成真分数的四则运算

    代码
    void CMy1Dlg::OnBnClickedfenshu()
    {
    // TODO: 在此添加控件通知处理程序代码
    s=false;
    n=0;
    n2=0;
    CString strz;
    strz.Format(_T("%d"),n2);
    GetDlgItem(cuo_wu)->SetWindowText(strz);
    GetDlgItem(zong_shu)->SetWindowText(strz);
    for(int p=0;p<100;p++)
    str2[p]=_T("");
    for(int p=0;p<100;p++)
    {
    int i=(int)rand()%10;
    int j=(int)rand()%10;
    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;
    CString str0("");
    switch(k)
    {
    case 0:
    str0+=_T("+");
    b[p][0]=iy+xj;
    b[p][1]=jy;
    break;
    case 1:
    str0+=_T("-");
    b[p][0]=i
    y-xj;
    b[p][1]=j
    y;
    break;
    case 2:
    str0+=_T("");
    b[p][0]=i
    x;
    b[p][1]=jy;
    break;
    case 3:
    b[p][0]=i
    y;
    b[p][1]=j*x;
    str0+=_T("/");
    }
    CString stri((char)(i+48));
    stri+=_T("/");
    CString strj((char)(j+48));
    CString strx((char)(x+48));
    strx+=_T("/");
    CString stry((char)(y+48));
    CString strl("(");
    CString strr(")");
    str2[p]+=_T("(");
    str2[p]+=stri+=strj+=strr+=str0+=strl+=strx+=stry+=strr;
    int g=1;
    for(int c=1;(c<=b[p][0]||c<=(-b[p][0]))&&(c<=b[p][1]||c<=b[p][1]);c++)
    {
    if(b[p][0]%c0&&b[p][1]%c0)
    g=c;
    }
    b[p][0]/=g;
    b[p][1]/=g;
    }
    }
    (4)有退格和清屏的功能
    清屏截图
    点击清屏按钮,所有的数据将会被清空

    退格截图
    点击退格按钮,答案输入框里的数据就会减少一位

    代码
    void CMy1Dlg::OnBnClickedqingping()
    {
    // TODO: 在此添加控件通知处理程序代码
    KillTimer(1);
    CString strz("");
    CString strz1("0");
    GetDlgItem(timu)->SetWindowText(strz);
    GetDlgItem(jieguo)->SetWindowText(strz);
    GetDlgItem(zhengque)->SetWindowText(strz);
    GetDlgItem(9)->SetWindowText(strz);
    GetDlgItem(daojishi003)->SetWindowText(strz);
    GetDlgItem(da_an)->SetWindowText(strz);
    GetDlgItem(zong_shu)->SetWindowText(strz);
    GetDlgItem(cuo_wu)->SetWindowText(strz);
    }
    void CMy1Dlg::OnBnClickedButton2()
    {
    // TODO: 在此添加控件通知处理程序代码
    UpdateData(TRUE);
    if(strd.GetLength()>0)
    {
    strd.MakeReverse();
    strd.Delete(0,1);
    strd.MakeReverse();
    GetDlgItem(da_an)->SetWindowText(strd);
    }
    else
    {
    GetDlgItem(da_an)->SetWindowText(strd);
    }
    }
    (5)让程序能接受用户输入答案,并判定对错

    代码
    void CMy1Dlg::OnBnClickedjisuan()
    {
    // TODO: 在此添加控件通知处理程序代码

    UpdateData(TRUE);
    if(s)
    {
    	int x;
    	x=_ttoi(strd);
        if(x==a[n-1])
    	{
            GetDlgItem(jieguo)->SetWindowText(_T("回答正确"));
    		n2++;
    	}
        else
            GetDlgItem(jieguo)->SetWindowText(_T("回答错误"));
    }
    else
    {
    	int x1,x2;
    	CString fz;
    	CString fm;
    	int i=0;
    	while(strd.GetAt(i)!='/'&&strd.GetAt(i)!='')
    	{
    		fz+=strd.GetAt(i);
    		i++;
    	}
    	if(strd.GetAt(i)==''||strd.GetAt(i+1)=='')
    	{
    		GetDlgItem(da_an)->SetWindowText(_T("输入错误,请重新输入"));
    	}
    	else
    	{
    	     x1=_ttoi(fz);
    	     i++;
    	     while(strd.GetAt(i)!='')
    	    {
    		    fm+=strd.GetAt(i);
    		    i++;
    	    }
    	    x2=_ttoi(fm);
    	    if(x1==b[n-1][0]&&x2==b[n-1][1])
    		{
                GetDlgItem(jieguo)->SetWindowText(_T("回答正确"));
    			n2++;
    		}
            else
                GetDlgItem(jieguo)->SetWindowText(_T("回答错误"));
    	}
    }
    CString strz;
    strz.Format(_T("%d"),n2);
    GetDlgItem(cuo_wu)->SetWindowText(strz);
    

    }
    选做功能
    (2)增加“倒计时”功能,每个题目必须在20秒钟完成,如果完不成,得0分进入下一题

    代码
    void CMy1Dlg::OnTimer(UINT nIDEvent)
    {
    if(d==0)
    {

    	OnBnClickedjisuan();
    	OnBnClickedchuti();
    	
    	
    }
        else
        {    
        d--;
        CString strz;
        strz.Format(_T("%d"),d);
        GetDlgItem(daojishi003)->SetWindowText(strz);
        }
    

    }
    (3)可以统计用户总的练习题目数量,正确的数量,并且在程序重新启动后能保持记录

    代码
    int n=0; //出题总数
    int n2=0; //正确的数量

    if(s) //每次出题出题总数加一
    {
    GetDlgItem(timu)->SetWindowText(str[n]);
    n++;
    }
    else
    {
    GetDlgItem(timu)->SetWindowText(str2[n]);
    n++;
    }

    if(xa[n-1]) //每次回答正确正确的数量加一
    {
    GetDlgItem(jieguo)->SetWindowText(_T("回答正确"));
    n2++;
    }
    if(x1
    b[n-1][0]&&x2==b[n-1][1])
    {
    GetDlgItem(jieguo)->SetWindowText(_T("回答正确"));
    n2++;
    }
    4.谈谈对这次结对编程的感受
    (1)结对编程时的照片

    (2)编程感受及心得体会
    通过这次的结对编程实验,我们了解了结对编程就是两个人一起写一个程序。有实验证明,结对编程时间会比单人编程减少许多的代码bug,而且结对编程比单人更有效率,更加节省成本。结对编程的流行可以追溯到肯特 • 贝克在1999年撰写的《Extreme Programming Explained》一书,根据书中记述,公司应该非常快速的发行软件,而且软件本身也应该在发行的过程中不断得到改善,而结对编程则可以更加快速的实现这一点。通过本次实验,我们发现了结对编程的一些优势,在结对编程的过程当中两个程序员可以互相帮助,互相教对方,可以得到能力上的互补,可以增强代码的质量。在编程中,互相讨论,可以更快更有效的解决问题。但是,结对编程也存在一些缺点,在编程中,两个人可能会产生分歧和矛盾,正是由于这种问题的存在,才会让彼此双方都要去考虑对方的意见,这样才能更好的完成实验。总而言之,通过这次的结对编程实验,我们学到了很多,同时也进一步加强了彼此之间的交流与合作。

  • 相关阅读:
    php命令注入
    mysql事物
    安装php环境
    移除服务器缓存实例
    show user profile synchronization tools
    manual start user profile import
    JSON is undefined. Infopath Form People Picker in SharePoint 2013
    asp.net web 应用站点支持域账户登录
    Load sharepoint envirement by powershell
    sharepoint 2016 download
  • 原文地址:https://www.cnblogs.com/Fraster/p/6832701.html
Copyright © 2011-2022 走看看