结对编程1

队友学号:栗海辉 201421123121 黄良静 201421123103

题目描述:

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

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

题目要求:

1.一个小组中的两个同窗选取比较优秀的 做业1 (两我的的都独立完成了), 把它做为本次做业的基础,而后再修改。
2.结对编程实现上述功能,一样的,在程序正式开发以前,请先预估下PSP每一个环节的消耗时间,并在过程当中统计实际耗时,最后提交PSP表格。依然注意,这个主要是给大家本身看的,没必要造假数据。
3.在两人合做的过程当中, 请看下面的内容web

a. 知足代码风格规范和代码设计规范(参考书第4章4.1-4.3内容)http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html编程

  • 请重视这点,在开发时两我的要有口头上的沟通:“好的,咱们一块儿在开发中遵照一块儿承认的编码规范”
  • 请把大家约定的编码规范文档也提交到git

b. 给人提意见的方式——送一个汉堡包http://www.cnblogs.com/xinz/archive/2011/08/22/2148776.html小程序

c. 理解领航员和驾驶员两种角色关系,并在结对编程中两我的轮流作对方的角色。两人都必须参与本次做业的编码工做,并在git提交日志上体现这点。函数

需求分析:

  • 记录用户的对错总数,程序退出再启动的时候,能把之前的对错数量保存并在此基础上增量计算。
    • 1.首先应该建立一个用于存放错误题目的.txt文件。
    • 2.在每次判断函数之后若判断为错误,应把生成的题目自动存放到txt文件中。
    • 3.每次增长错误题目的时候记录的错题数目应该+1.
    • 4.错误题目的数量也保存到一个文件中记录下来,每当有错误实时更新错误数量。
  • 有计时功能,能显示用户开始答题后的消耗时间。
    • 1.首先记录时间的计数器不能被界面覆盖应该放置在明显的顶部或者右上方。
    • 2.在运行过程当中不该该应在未作完题目以前不可以终止计时,而且在答题完成之后终止技术工做。
    • 3.在每次从新开始答题的时候计时器自动清零。
  • 界面支持中文简体/中文繁体/英语,用户能够选择一种。
    • 1.引用SetThreadUILanguage函数用于转换语言
    • 2.添加改变语言的按钮,用于连接不一样语言的切换
    • 3.用不一样的按钮实现改变不一样的语言。
    • 4.初始使用语言为系统语言。

程序设计:针对选择的新开发功能作设计,使用思惟导图

代码展现:

初始化赋值正确错误题数

FILE * in;
    if (fopen_s(&in, "tf.txt", "r")!=0)
    {
        fopen_s(&in, "tf.txt", "w");
    }
    fscanf_s(in, "%d,%d", &t, &f);
    fclose(in);
    n = t + f;

写入编码

FILE * out;
             fopen_s(&out, "tf.txt", "w");
    fprintf_s(out, "%d,%d", t, f);
    fclose(out);

插入定时器

void CMFCApplication1Dlg::OnTimer(UINT_PTR nIDEvent)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    static UINT s1 = 0;
    static UINT f1 = 0;
    static UINT h1 = 0;
    CString str;
    switch (nIDEvent) 
    {
    case 1:
        s1++;
        if (s1 == 60) { s1 = 0; f1++; }
        if (f1 == 60) { f1 = 0; h1++; }
        str.Format(_T("%02i:%02i:%02i"), h1, f1, s1);
        SetDlgItemText(IDC_EDIT6, str);
        break;
    case 2:
        s2++;
        if (s2 == 60) { s2 = 0; f2++; }
        if (f2 == 60) { f2 = 0; h2++; }
        str.Format(_T("%02i:%02i:%02i"), h2, f2, s2);
        SetDlgItemText(IDC_EDIT8, str);
        break;
    }
    CDialogEx::OnTimer(nIDEvent);
}

使用定时器

SetTimer(1, 1000, NULL);

使用代码实如今生成题目前没法提交答案,提交答案前没法生成下一道题。.net

GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON2)->EnableWindow(TRUE);

切换语言

以改线程语言来切换使用的语言包命令行

SetThreadUILanguage(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));  \\使用English(美式)

程序运行截图:

小结感觉:结队编程真的可以带来1+1>2的效果吗?经过此次结队编程,请谈谈你的感觉和体会。

经历了第一次结队编程明显的问题主要体如今不一样人的心理上的差别。平时编程都是本身一我的搞定。不管是编程方向仍是编程结构都是本身作主。可是结队编程是两我的的事情,编写代码用的基本语法和编写规范都要让两我的都看的舒服都要看的懂才能够。在开发过程当中,要打起100%的精神。两我的在不断的审查过程当中不管是编写代码的人仍是审查的人都应该从新再讲代码从新审视。将往往段程序作到准确无误。线程

码市连接 https://git.coding.net/lenmo/MFC_sizeyunsuan.git

描述结队的过程,提供非摆拍的两人在讨论、细化和编程时的结队照片:

提供这次结队做业的PSP:

相关文章
相关标签/搜索