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文件夹中后就可以很好地实现实验要求的功能。同时,在计时方面仍有不足,只能够一题一题的统计时间。程序还有许多不足,之后会不断改进!!!
  • 相关阅读:
    Android--->activity高级运用,保存前一个界面为完成的数据savedInstanceState。
    Android--->activity界面跳转,以及查看生命周期过程
    Android--->Intent
    Android--->Button按钮操作
    安卓EditText按钮
    DDS视图&Button控件
    Android之EditText控件
    Android之TextView控件的学习
    usb免驱动摄像头实验
    Flash硬件原理
  • 原文地址:https://www.cnblogs.com/Dt-ghost/p/6552708.html
Copyright © 2011-2022 走看看