第二次作业--结队编程1 (101 109)

201421123101 曾丽君 201421123109 王钧任

【Coding地址】(https://git.coding.net/zlj201421123101/The-second-assignment.git)

一、题目描述

我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。实现了以下三种功能:

1、记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算;
2、有计时功能,能显示用户开始答题后的消耗时间;
3、界面支持中文简体/中文繁体/英语,用户可以选择一种。

二、需求分析

1、实现历史对错题数记录;
2、有计时功能,能显示用户开始答题后的消耗时间;
3、界面支持中文简体/中文繁体/英语,用户可以选择一种。

三、思维导图

四、主要代码说明

1、判断答案是否正确并输出:

char * edaanpanduan(char daan[],char * shuru,char * timu)
{
    static char panduanjieguo[30];
    FILE * in ,* out,* cuoti;

    in=fopen("leijitimushu.txt","r");
    fscanf(in,"%d,%d",&eright,&ewrong);
    fclose(in);


    if(strcmp(shuru,edaan)==0)
    {
        strcpy(panduanjieguo,"Right!");
        eright++;
        
    }
    else
    {
        strcpy(panduanjieguo,"wrong!");
        strcat(panduanjieguo,"Answer is:");
        strcat(panduanjieguo,edaan);
        ewrong++;
        cuoti=fopen("cuotiji.txt","a");
        fprintf(cuoti,"%s=%s  wrong!Right answer is %s\n",timu,shuru,edaan);
        fclose(cuoti);
    }

    out=fopen("leijitimushu.txt","w");
    fprintf(out,"%d,%d",eright,ewrong);
    fclose(out);



    return panduanjieguo;
}

2、实现生成题目的按钮触发事件:

void c1::OnButton1() 
{
    // TODO: Add your control notification handler code here
    UpdateData();
    m_etimu=etimushengcheng();
    UpdateData(false);
    estart=clock();
}

3、实现提交答案并判读输出的按钮:

void c1::OnButton2() 
{
    // TODO: Add your control notification handler code here
    extern char daan[10];
    char s[20];
    UpdateData();
    char *shuru =m_eshuru.GetBuffer(m_eshuru.GetLength());
    char *timu=m_etimu.GetBuffer(m_etimu.GetLength());
    m_edaan=edaanpanduan(daan,shuru,timu);
    efinish= clock();
    eduration =(double)(efinish-estart)/CLOCKS_PER_SEC;
    sprintf(s,"%g",eduration);
    m_eyongshi=s;
    itoa(eright,s,10);
    m_eright=s;
    itoa(ewrong,s,10);
    m_ewrong=s;
    UpdateData(false);
}

4、按下按钮打开错题集文本:

void c1::OnButton3() 
{

    ::WinExec("notepad.exe cuotiji.txt",SW_SHOW);
}

五、功能实现截图

六、小结

代码中对于界面支持多种语言的设计还存在不足,如果发现该功能代码中有需要修改的地方,每种语言都需要去进行修改。对于结对编程是否真的能够带来1+1>2的效果,通过这次结对编程,我有了深刻的体会。在本次结对编程作业中,我们的主要讨论地点是图书馆,由我负责把控全局,进行架构上的设计,队友负责具体敲键盘实现代码。在队友敲代码时,我进行反思这部分代码有什么问题,哪里可以进行优化,与其他部分的关系是什么,下一步应该如何进行处理。结对编程的过程收获颇多,我觉得结对编程有好有坏,但是好处远远大于的不好的地方。两个人难免会遇到意见不同的时候,关键是看此时如何协调、如何沟通、如何采钠。如果团队协调得很好,那么两个人的力量是绝对大过一个人的。结对编程可以很好的起到督促的作用,这主要是因为有的时候如果一个人编程,可能会出现懈怠的情绪,而两个人共同编程会互相激励,起到促进作用。在个人编程时,有时会出现对整体架构把握不清的情况,这时如果能跟队友共同讨论分析,会大大加快理解以及设计的速度,能够使代码质量得到极大的提升。
PSP2.1 Personal Software Process Stages Time (%) Senior Student(/hour) Time (%)(/hour)
· Planning 计划 2.5h 2h
· Estimate 估计这个任务需要多少时间 34h 44h
· Analysis 需求分析 (包括学习新技术) 3h 4h
· Coding Standard 代码规范 1h 1h
· Design 具体设计 3h 3h
· Coding 具体编码 25h 30h
· Test 测试(自我测试,修改代码,提交修改) 1.5h 2h
Reporting 报告 1h 2h

posted on 2017-03-14 21:37  曾丽君  阅读(296)  评论(3编辑  收藏  举报