zoukankan      html  css  js  c++  java
  • 结对编程1—模块化

    一、结对成员及coding.net地址

       张慧敏(201421122032)  coding.net地址:https://coding.net/u/Missyby/p/program1/git/tree/master/

       苏晓薇(201421031033)  coding.net地址:https://git.coding.net/Recos/myprogram.git

       视频演示:http://v.youku.com/v_show/id_XMzEwMjkwMDA0NA==.html?spm=a2h3j.8428770.3416059.1

    二、项目开发

    1、需求分析

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

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

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

    2、程序设计

       

    3、代码展示:展示每个功能的核心代码。

        我主要实现图形界面,增加计时功能,实现界面支持中文简体/中文繁体/英语,

        图形界面的设计主要用到jlabel,jpanel,jbutton等控件完成,为方便设置位置,我设置为absolute layout。

        计时器的实现,是先预定义Hours,Minutes,Seconds=0,每隔一秒加1,并setText,最后提交的时候,记录当前时间,用时可用时间差获得。

        界面的语言切换,是根据用户对radio的isselect保存choose值,从而修改控件的内容

    1.语言选择

    button.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if(chinese1.isSelected()){
                        new showview(1).show();
                    }else if(english.isSelected()){
                        new showview(2).show();
                    }else if(chinese2.isSelected()){
                        new showview(3).show();
                    }else
                        JOptionPane.showMessageDialog(null, "请选择一种语言");
                    
                    //中文英文监听        
                    dispose();
                }
            });
    if(choose==1){
                setTitle("四则运算生成器");
                lblNewLabel.setText("开始答题");
                label.setText("计时开始:");
                commitBtn.setText("提交");
            }else if(choose==2){
                setTitle("Arithmetic generator");
                lblNewLabel.setText("Arithmetic generator");
                label.setText("time starts:");
                commitBtn.setText("commit");
            }else if(choose==3){
                setTitle("四則運算生成器");
                lblNewLabel.setText("開始答題");
                label.setText("計時開始:");
                commitBtn.setText("提交");
            }else{
                JOptionPane.showMessageDialog(null, "error");
            }

    2.计时器

    contentPane.add(timeText);
            now.setHours(0);
            now.setMinutes(0);
            now.setSeconds(0);
            final Timer timer = new Timer(1000, new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    Date now2 = new Date(now.getTime() + 1000);
                    now = now2;
                    SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
                    timeText.setText(formatter.format(now));
                }
            });
            timer.start();
            timeText.setText(timeText.getText());

    4、程序运行:程序运行及每个功能的使用截图。

    1.选择语言,如果不选择,将会弹出提示框。

                

    2.输入题数,如果出错弹出提示框

     3.开始button添加计时监听

    4.答题结束,返回结果

    5.查看记录

     6、文件的存放

    三、总结

    1、小结感受:结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会

         这次的结对编程作业是在个人作业1 的基础上增量开发,增加3个功能,我主要实现图形界面,增加计时功能,实现界面支持中文简体/中文繁体/英语,过程也学习到了很多,比如我在GUI图形界面编程过程中添加对用户动作的监听上有比较深刻的学习,队友负责记录用户对错,实现对文件的操作,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。

         在配合默契的情况下,结对编程是可以带来1+1>2的效果的,不同功能实现和分工合作下可以更快学习新的技巧,增加编程的经验。

         通过这次结对编程,认识到合作开发的好处,不仅加快任务的实现,还可以促进良好的编程习惯的养成。

    2、运用“汉堡包”的方式,评价你的合作伙伴,指出优点、缺点,希望ta提高的地方

          优点:能够在模块化设计下独立完成并实现功能模块,遇到问题能认真钻研并解决。

          缺点:由于两人的编程习惯不一致,常常在阅读对方的代码时花费较多的时间。

          希望ta提高的地方:希望能不断积累更多的项目开发经验,同时也要养成良好的编程习惯,这样可以加快项目的整合。

    3、此次结对作业的PSP,PSP 表格中请填写花费的时间 (单位: 分钟)

    PSP2.1 Personal Software Process Stages Time Senior Student Time
    Planning 计划 30 20
    · Estimate 估计这个任务需要多少时间 20 30
    Development 开发 500 700
    · Analysis 需求分析 (包括学习新技术) 30 20
    · Design Spec 生成设计文档 30 20
    · Design Review 设计复审 20 20
    · Coding Standard 代码规范 20 20
    · Design 具体设计 50 70
    · Coding 具体编码 100 150
    · Code Review 代码复审 30 20
    · Test 测试(自我测试,修改代码,提交修改) 30 20
    Reporting 报告 30 40
    · 测试报告 20 20
    · 计算工作量 10 20
    · 并提出过程改进计划 10 10

  • 相关阅读:
    CodeForces 757C Felicity is Coming!(排列组合)
    Ural 1519 Formula 1( 插头dp )
    FZU 2187 回家种地 ( 扫描线 + 离散 求矩阵单次覆盖面积 )
    HDU 1255 覆盖的面积 ( 扫描线 + 离散 求矩阵大于k次面积并 )
    ZOJ 3841 Cards
    HDU 4012 Paint on a Wall(状压+bfs)
    Topcoder SRM653div2
    2015 GDUT校赛
    Topcoder SRM652div2
    CodeChef A String Game(SG)
  • 原文地址:https://www.cnblogs.com/bymissy/p/7711013.html
Copyright © 2011-2022 走看看