zoukankan      html  css  js  c++  java
  • 结队编程一

    码市链接:https://coding.net/u/Dt-ghost/p/homework2/git/tree/master/
    结队成员: 廖婷婷 201421123001
                  刘伟霞 201421123008
     
    一、题目要求:本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。
          在下面的功能需求中实现两个:
          1.记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算;
          2.有计时功能,能显示用户开始答题后的消耗时间;
          3.界面支持中文简体/中文繁体/英语,用户可以选择一种。   
     二、需求分析:
          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展示:
     
    八、个人总结:
         整个编程过程中,遇到不少的问题。类似[Error]:LNK2005 ——生成题目的函数写在Draw.h的头文件中,在只有中文界面时调用函数时没有任何的问题,而在加入英文界面的因为重复定义而出现了错误。上网百度后,发现只需声明该方法即可,并不需要重新定义其他与之功能相同的异名函数。在读入文件时,也曾就文件的路径编写时使用绝对路径或则相对路径出现过问题。一开始使用绝对路径编写,发现编译后运行生成的.exe文件时会出现错误。之后,将文件路径改为相对路径并将其移入到Debug文件夹中后就可以很好地实现实验要求的功能。同时,在计时方面仍有不足,只能够一题一题的统计时间。程序还有许多不足,之后会不断改进!!!
  • 相关阅读:
    MS CRM 2011 RC中的新特性(4)——活动方面之批量编辑、自定义活动
    最近的一些有关MS CRM 2011的更新
    MS CRM 2011 RC中的新特性(6)——连接
    MS CRM 2011 RC中的新特性(7)—仪表板
    参加MS CRM2011深度培训课程——第一天
    MS CRM 2011插件调试工具
    MS CRM2011实体介绍(四)——目标管理方面的实体
    MS CRM 2011 RC中的新特性(3)——客户服务管理方面
    MS CRM 2011 RC中的新特性(8)—数据管理
    ExtAspNet 登陆
  • 原文地址:https://www.cnblogs.com/Dt-ghost/p/6552708.html
Copyright © 2011-2022 走看看