结对编程-四则运算

一、结对成员:

蔡少杭 201421122111

XXX XXXXXXXXXXXX

项目开发的coding.net 地址:https://git.coding.net/HangZhe/HomeWork3.git

 

二、题目描述:

在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI,成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:

  1. 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。

  2. 有计时功能,能显示用户开始答题后的消耗时间。

  3. 界面支持中文简体/中文繁体/英语,用户可以选择一种;

 

三、项目实现:

1、需求分析

  • 首先需要一个GUI界面,方便用户操作,需要用到按钮,文本框,文字等控件。
  • 我给自己分派的任务是完成记录用户的对错总数,每次打开程序都能加载上次的对错总数。
  • 她的任务是完成计时的功能,在点击开始后开始计时,在用户点击提交或答完全部题目后停止计时。
  • 语言选择,设置为三种,中文简体,中文繁体和英文。

 

2、程序设计

  主要功能分为:生成题目、记录对错数、计时、语言切换。其中计算使用的是第一次作业中的生成四则运算表达式的方式。对错数打算是用文件记录,每次运行的开始时候先从文件读取对错数,每次答对答错都会对对错数进行修改。计时功能,当用户点击开始按钮开始答题时开始计时,结束答题或者答完所有题目后停止计时,使用的是C#中设置事件触发时间间隔的方式。语言切换默认开始是中文,当用户选择对应的语言的时候会做相应的切换,计划使用切换配置文件的方式来修改所有控件的文本。

 

3、代码展示

记录和读取对措数

if (!File.Exists(@"E:\\result.txt"))
{
      FileStream fss = new FileStream("E:\\result.txt", FileMode.Create);
      StreamWriter sww = new StreamWriter(fss);
      //开始写入
      sww.WriteLine("0");
      sww.WriteLine("0");
      //清空缓冲区
      sww.Flush();
      //关闭流
      sww.Close();
      fss.Close();
}

      FileStream fs = new FileStream("E:\\result.txt", FileMode.Open, FileAccess.Read);
      StreamReader read = new StreamReader(fs, Encoding.Default);
      string strReadline;
      while ((strReadline = read.ReadLine()) != null)
      {
           result_list.Add(strReadline);
      }

      read.Close();
      fs.Close();

      right_number=Convert.ToInt32(result_list[0]);
      wrong_number= Convert.ToInt32(result_list[1]);
      this.right_show_text.Text = right_number.ToString();
      this.wrong_show_text.Text = wrong_number.ToString();

      Program.right_wrong_init(right_number, wrong_number);

 

修改对错数

if (question_num <a)
{
     if (is_count)
     {
           is_count = false;
           this.anwser.Text = "";

                  
           Program.gen();
           question_num++;
           this.count_text.Text = "" + question_num.ToString() + "";
           this.label7.Text = Program.getNum();
      }
      else
      {      
             Program.gen();
             question_num++;   
             this.count_text.Text = "" + question_num.ToString() + "";
             this.label7.Text = Program.getNum();

             this.right_show_text.Text = Program.get_right_count().ToString();
             Program.add_wrong_count();
             this.wrong_show_text.Text = Program.get_wrong_count().ToString();


             FileStream fs3 = new FileStream("E:\\result.txt", FileMode.Create);
             StreamWriter sw3 = new StreamWriter(fs3);
             //开始写入
                    sw3.WriteLine(Program.get_right_count().ToString());
                    sw3.WriteLine(Program.get_wrong_count().ToString());
              //清空缓冲区
              w3.Flush();
              //关闭流
              sw3.Close();
              fs3.Close();
}

 

计时

public Form1()
{
      InitializeComponent();

      //timer控件可用
      this.timer1.Enabled = true;

      //设置timer控件的Tick事件触发的时间间隔
      this.timer1.Interval = 1800;

      //停止计时
      this.timer1.Stop();
}    

 

 //开始计时 this.timer1.Start(); 

 

private void timer1_Tick(object sender, EventArgs e)
{
            second_r++;
            if (second_r > 9)
            {
                second_r = 0;
                secend_l++;
            }
            if (secend_l > 5)
            {
                secend_l = 0;
                minute_r++;
            }
            if (minute_r > 9)
            {
                minute_r = 0;
                minute_l++;
            }
            time = minute_l.ToString()+minute_r.ToString()+":" +secend_l.ToString()+second_r.ToString();
            this.time_show_text.Text = time;
}

 

4、程序运行

1.主界面

 

 

2.开始之前必须输入题目数和表达式中数的运算范围,不大于这个值

 

3.开始答题,同时开始计时,答错答对的题数是提取自文件的,随着用户的答题结果而发生变化

 

4.用户输入答案,点击确定进行比较,正确就答对题数加1,错误就答错题数加1,然后点击下一题换题目

 

 

5.题目做完或者结束答题,结束计时

  

 

5、小结感受

本次作业是在第一次作业的基础上制作出图形界面,使用的是C#语言编写的窗体运用程序,计时和对错数记录的功能都已经实现,语言切换方面遇到字体资源无法加载的问题还在解决。

给我最大的感受就是团队协作真的很有趣,刚开始确实会有一些编码的不统一而产生分歧,但是随着双方规范的约定,就会很快适应对方的代码,也就能成功地整合。

 

四、运用“汉堡包”的方式,评价结对伙伴:

优点:队友的思维很活跃,我在思考一个问题没有思路时,她能给出我未曾想到的解决思路,瞬间让我恍然大悟。

缺点:一些变量名字的定义不是很好理解,需要询问后才能知道。

希望她提高的地方:在定义变量名字时尽量定义一些对方能瞬间理解的名字。

 

五、描述结对过程:

1.阅读作业的要求,确定这次作业的所有需求。

2.根据任务量和各自熟悉的领域划分,各自负责对应的功能模块。

3.制定编码规范,约定参数传递的方式,使用的语言,环境,开发模式等等。

4.开始各自的开发,期间遇到难以解决的问题就提出,共同讨论和解决。

5.完成各自功能模块后,整合代码,解决整合过程中遇到的问题。

6.测试程序,排查BUG。

 

六、展示PSP:

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 20 15
· Estimate 估计这个任务需要多少时间 24 20
Development 开发 500 650
· Analysis 需求分析 (包括学习新技术) 30 60
· Design Spec 生成设计文档 30 10
· Design Review 设计复审 30 15
· Coding Standard 代码规范 20 20
· Design 具体设计 25 32
· Coding 具体编码 200 350
· Code Review 代码复审 20 25
· Test 测试(自我测试,修改代码,提交修改) 30 25
Reporting 报告 30 45
· 测试报告 25 15
· 计算工作量 20 12
· 并提出过程改进计划 20 10
posted @ 2017-10-22 21:08  杭者  阅读(582)  评论(1编辑  收藏  举报