实验二:结对编程--第二阶段

一、实验目标:

1)体验敏捷开发中的两人合作。

2)进一步提高个人编程技巧与实践。

二 、实验内容:

1)根据以下问题描述,练习结对编程(pair programming)实践;

2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。

3)要求在结对编程工作期间,两人的角色至少切换 4 次;

4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。

扫描二维码关注公众号,回复: 10427752 查看本文章

三、实验内容:

1、代码规范:

实验采用j基于JAVA的GUI编程,需要调用库中大量的包,以实现程序的界面化处理。

编写JAVA语言的代码规范有:

命名规范:

  变量和函数为小驼峰法标识, 即除第一个单词之外,其他单词首字母大写

  全局变量为大写

  常量 (如 PI) 为大写

对象定义的规则:

  将左花括号与类名放在同一行。

  冒号与属性值间有个空格。

  字符串使用双引号,数字不需要。

  最后一个属性-值对后面不要添加逗号。

  将右花括号独立放在一行,并以分号作为结束符号。

2.程序的总体设计

 3、结对编程过程

编程之前,我和周宗逸决定使用GUI实现该功能。

一来我们觉得用界面的方式实现该项目,在人机交互方面相较于传统的命令行式编程有无可比拟的优势。虽然在GUI不是实现界面编程的最佳途径,但是GUI中包括了大量的包和现成的函数可供调用。因为我在暑假因为课程设计的需要,做过关于GUI方面的编程,所以对这方面有一定的了解,所以在完成相关框架样式的搭建上来说,就有比较有经验。而我的搭档则完成关于四则运算具体步骤的实施,因为这部分大多涉及基础语法的应用,但是工作量较大,需要考虑的东西较多,对于我的搭档来说是一个利弊兼而有之的挑战。

我们在结对编程过程中,用QQ视频通话实时共享电脑编程实况,目前来看是最直接的能够了解彼此编程进程和解决当下问题的方式。

 4、部分代码

记录和读取对措数

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;
}

  5、运行结果

1)主界面

 2)超出预设范围报错

3)从文件调出题目答题

4)结果与答案的比对

 5)题目做完和计时结束

6)界面中涉及的语言问题,我们最后放弃了,因为代码复写的东西太多,反而使得整个程序显示的冗长。

四、实验总结

    1.在进行代码编辑之前的准备工作,我们就面临了很多问题,比如模块下载不成功、模块导入不成功等。寻找能正真解决问题的方法也比较漫长,不是方法不适用就是方法不正确,我们参考多个平台(百度、CSDN、博客园等)最终找到解决问题的方法。

    2.由于之前学习GUI编程是比较浅层次的,由于GUI做界面会存在很多问题(格式调节不易,容错率较低,代码耦合性高)等问题。需要我们借鉴很多网络上的范本,参考别人数据结构,仿照前人精简的模块,写自己的代码。

    3.GUI最头疼的问题就是库、包与函数的调用,要调用的对象不存在,需要换或者下载对应的对象(本次编程涉及的东西不多,暂且未碰到此类棘手的问题)。代码在编译修改的每阶段都很头疼,因为很多东西根本不知道具体是干嘛的,需要一一百度,找很多资料。

结对编程(阶段一):https://www.cnblogs.com/alanandpython/p/12545811.html

成员博客地址&仓库地址

1 周宗逸:https://www.cnblogs.com/zzynb/

2 周乐天 https://www.cnblogs.com/alanandpython/


3 仓库地址:https://www.github.com/zhoudashuaibi/homeworkillers

猜你喜欢

转载自www.cnblogs.com/alanandpython/p/12624233.html