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》一书,根据书中记述,公司应该非常快速的发行软件,而且软件本身也应该在发行的过程中不断得到改善,而结对编程则可以更加快速的实现这一点。通过本次实验,我们发现了结对编程的一些优势,在结对编程的过程当中两个程序员可以互相帮助,互相教对方,可以得到能力上的互补,可以增强代码的质量。在编程中,互相讨论,可以更快更有效的解决问题。但是,结对编程也存在一些缺点,在编程中,两个人可能会产生分歧和矛盾,正是由于这种问题的存在,才会让彼此双方都要去考虑对方的意见,这样才能更好的完成实验。总而言之,通过这次的结对编程实验,我们学到了很多,同时也进一步加强了彼此之间的交流与合作。

  • 相关阅读:
    安装Hadoop
    爬取全部的校园新闻
    理解爬虫原理
    复合数据类型,英文词频统计
    字符串操作、文件操作,英文词频统计预处理
    了解大数据的特点、来源与数据呈现方式
    四则运算升级
    初级四则运算
    分布式版本控制系统Git的安装与使用
    作业——12 hadoop大作业
  • 原文地址:https://www.cnblogs.com/Fraster/p/6832701.html
Copyright © 2011-2022 走看看