• 结对编程——四则运算


    Coding地址:

    https://coding.net/u/ltt979/p/Teamwork/git/tree/master/

    结队成员:

                   廖婷婷 201421123001

                   刘伟霞 201421123008

    一、题目要求:

    本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。
    在下面的功能需求中实现两个:

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

    二、需求分析:

    1.在作业1的基础上,让程序基于GUI界面实现

    2.支持中文简体/繁体/英语三种语言,用户可自主选择

    3.程序退出时,能将用户所做题目存为历史记录

    4.程序有计时的功能,每道题目都能显示做题时间

    三、功能分析:

    1.基本功能:
       支持整数、真分数的四则运算程序,用户能够选择题目数。在用户答题后,能够判断对错,错误及显示正确答案并统计正确率。

    2.扩展功能:

    • 实现中文简体、繁体、英语三种语言界面的切换;
    • 用户所做的题目可以保存;
    • 实现计时功能,并显示用户做题所用的时间。

    四、设计实现:

    五、代码说明

    程序中判断答案的代码如下(为中文版的),在切换到英文等其他语言时,只需将显示正确错误的的中文设置为英文,而生成题目的函数并不需要有任何的改变。

    char* Submit(char result[],char * answer)
    {
        static char prompt[20]; 
        FILE * in;
        FILE * out;
    
        in=fopen("number.txt","r");
        fscanf(in,"%d,%d",&right,&wrong);
        fclose(in);
        
        if(strcmp(answer,result)==0)
        {   
            strcpy(prompt,"正确!");
            right++;
        }
        else
        {   
            strcpy(prompt,"错误!  ");
            strcat(prompt,"正确答案是:");
            strcat(prompt,result);
            wrong++;
        }
    
        out=fopen("number.txt","w");
        fprintf(out,"%d,%d",right,wrong);
        fclose(out);
    
        return prompt;
    }

    整个工程总共有三个界面:选择语言的界面、中文界面和英文界面(中文繁体的只需创建一个新的界面,然后调用之前的函数即可)。界面之间的跳转使用按钮来控制,以下是部分代码(主界面到中文界面):

    void CTeamworkDlg::OnChinese() 
    {
        // TODO: Add your control notification handler code here
        chinese chinese;
        CTeamworkDlg::OnOK();
        chinese.DoModal();
        
    }

    每一题计时的代码如下:

    void chinese::OnButton() 
    {
        // TODO: Add your control notification handler code here
        UpdateData();
        m_Show1=Draw();
        start=clock();
        UpdateData(false);
    }
    
    void chinese::OnButton_Submit() 
    {
        // TODO: Add your control notification handler code here
        finish= clock();
        duration =(double)(finish-start)/CLOCKS_PER_SEC;
        sprintf(temp,"%g",duration);
        m_Show3=temp;
        UpdateData(false);
    }

    计时功能通过按钮实现,在生成题目之后开启时钟,在提交之后在记录一个时间,两个时间的差值就是本题的用时。

    六、测试运行

    七、PSP展示:

    PSP2.1 Personal Software Process Stages Time (%) Senior Student(/hour) Time (%)(/hour)
    · Planning 计划 2 1.5
    · Estimate 估计这个任务需要多少时间 30 27
    · Analysis 需求分析 (包括学习新技术) 0.5 0.5
    · Coding Standard 代码规范 1 1.5
    · Design 具体设计 3 3.5
    · Coding 具体编码 30 35
    · Test 测试(自我测试,修改代码,提交修改) 1 2
    Reporting 报告 1 1

    八、个人总结:

         第一次用结队编程的方式来编写程序,有点不习惯。平时实验和作业都是自己编写代码,就算是组队编程,也都是各自写各自的,比较重视功能的实现,不会注意自己编写的代码是否规范,他人是否能够理解。一开始不知道要如何合作,尤其是我和我的小伙伴平常所用的编程语言还不相同。因为是结队,我们两个人用一台电脑,在我小伙伴编程时,我能在旁边学习边审核监督,使我学习的速度加快不少。并且在结队过程中,一人能在一旁提醒,避免了一个人编写代码时,容易忘记实现一下功能和一下代码规范问题,在测试环节也比较容易发现问题,解决问题的想法也更多,只要两个人分工明确,沟通顺利,能达到一加一大于二的效果。

  • 相关阅读:
    基于Tire树和最大概率法的中文分词功能的Java实现
    通过 Spring RestTemplate 调用带请求体的 Delete 方法(Delete With Request Body)
    《高效能程序员的修炼》之译者序(本书将于7月初上市,人民邮电出版社)
    JVM类加载过程学习总结
    Web安全之Cookie劫持
    2016第40周五
    年轻By塞缪尔·厄尔曼
    2016第40周三
    2016第40周二
    果断歌
  • 原文地址:https://www.cnblogs.com/ltt979/p/6552738.html
Copyright © 2020-2023  润新知