zoukankan      html  css  js  c++  java
  • 实验二:结对编程--第二阶段

    一、实验目标:

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

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

    二 、实验内容:

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

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

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

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

    三、实验内容:

    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

  • 相关阅读:
    JAVA基础——编程练习(二)
    JAVA基础——面向对象三大特性:封装、继承、多态
    JVM内存
    50. Pow(x, n) (JAVA)
    47. Permutations II (JAVA)
    46. Permutations (JAVA)
    45. Jump Game II (JAVA)
    43. Multiply Strings (JAVA)
    42. Trapping Rain Water (JAVA)
    41. First Missing Positive (JAVA)
  • 原文地址:https://www.cnblogs.com/alanandpython/p/12624233.html
Copyright © 2011-2022 走看看