zoukankan      html  css  js  c++  java
  • 结对编程1 黄睿(201421123069)周迪(201421123089)

     黄睿 201421123069 周迪 201421123089

    coding.net 地址:https://coding.net/u/H1159650478/p/sizeyunsuanjiaqiang/git



    1.a. 需求分析:

     (1)实现GUI界面;
     (2)实现历史题目对错的统计;
     (3)实现用户答题题总共花费的时间。

       b. 程序设计:

                

                

      c. 代码展示:
       number这个类主要用于数字的设定,定义分子分母,如果是初级运算则分母直接为1,反之分子分母随机生成并生成为高级运算

    class number{
    int numerator;
    int denominator;
    number(int a,int b){
    this.denominator=b;
    this.numerator=a;
    }
    number(){
    
    }
    public void setNumeratorAndDenominator() {
        this.denominator=(int)(Math.random()*10) +1;
        this.numerator=(int)(Math.random()*10)%this.denominator;
    }
    public void setNumerator(){
        this.numerator=(int)(Math.random()*10);
    }
    }

      基于上次的作业进行的加减乘除运算

    number add(){
        int numD,num1N,num2N;
        int MaxGys=MaxGys(num1.denominator,num2.denominator);
        numD=num1.denominator*num2.denominator/MaxGys;
        num1N=numD/num1.denominator*num1.numerator;
        num2N=numD/num2.denominator*num2.numerator;
        number result=new number();
        result.denominator=numD;
        result.numerator=num1N+num2N;
        result=simplification(result);
        return result;
    }

      这些代码就是在做GUI界面了,我们设置了panel1~panel6来设定每一步的页面设计

    public class test extends JFrame implements ActionListener{
    testExerciseCreater pMaker=new testExerciseCreater();
    JTextArea area1=new JTextArea(1,10);
    JTextArea area2=new JTextArea(1,10);
    JPanel panel=new JPanel();
    JPanel panel1=new JPanel();
    JPanel panel2=new JPanel();
    JPanel panel3=new JPanel();
    JPanel panel4=new JPanel();
    JPanel panel5=new JPanel();
    JPanel panel6=new JPanel();
    JLabel label=new JLabel("请问你要做几道题目?");
    JLabel label1=new JLabel("初级 or 高级?");
    JLabel label2=new JLabel();
    JLabel label3=new JLabel();
    JLabel label4=new JLabel();
    JLabel label5=new JLabel();
    JButton button =new JButton("确定");
    JButton button1 =new JButton("初级");
    JButton button2 =new JButton("高级");
    JButton button3 =new JButton("下一步");
    JButton button4 =new JButton("提交");
    JButton button5 =new JButton("重返");
    int trueCount=0;
    String questNum;
    int easyOrDifficult,i=1;
    long startTime;
    long endTime;
    public test(){
    super("简单四则运算");
    area1.setText("");
    area2.setText("");
    button.setActionCommand("确定");
    button.addActionListener(this);
    button1.setActionCommand("初级");
    button1.addActionListener(this);
    button2.setActionCommand("高级");
    button2.addActionListener(this);
    button3.setActionCommand("下一步");
    button3.addActionListener(this);
    button4.setActionCommand("提交");
    button4.addActionListener(this);
    button5.setActionCommand("重返");
    button5.addActionListener(this);
    panel1.add(label);
    panel1.add(area1);
    panel1.add(button);
    getContentPane().add(panel);
    panel.add(panel1);
    panel2.add(label1);
    panel2.add(button1);
    panel2.add(button2);
    panel3.add(label2);
    panel3.add(area2);
    panel3.add(button4);
    panel4.add(label3);
    panel4.add(button3);
    panel5.add(label4);
    panel6.add(label5);
    panel6.add(button5);
    this.pack();
    }
    @Override

      这里我们在D盘建立了一个count.txt文本,使它最初的正确和错误题目数都为0,然后运行一次就统计一次并更新

    File file=new File("D:/count.txt");
    BufferedReader reader=null;
    try {
    reader=new BufferedReader(new FileReader(file));
    } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    String i=null;
    String i1=null;
    try {
    i=reader.readLine();
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    try {
    i1=reader.readLine();
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    PrintWriter writer=null;
    try {
    writer =new PrintWriter(new FileOutputStream(file));
    } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    writer.println((Integer.parseInt(i)+trueCount));
    writer.println((Integer.parseInt(i1)+(Integer.parseInt(questNum)-trueCount)));
    writer.flush();
    try {
    reader=new BufferedReader(new FileReader(file));
    } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    try {
    i=reader.readLine();
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    try {
    i1=reader.readLine();
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    } 

    这些代码前半部分是最后界面输出的正确数、错误数、耗时、总正确数和总错误数;
    后半部分就是循环出题的一个体现,如果选择2道题,做完一道之后返回到panel2重新做第二题。 

     label4.setText("正确:"+trueCount
                        +" 错误:"+(Integer.parseInt(questNum)-trueCount)
                        +" 耗时: "+((endTime-startTime)/1000)
                        +" s"
                        +" 总计正确: "+i
                        +" 总计错误: "+i1);
                panel.remove(panel4);
                panel.add(panel5);
                panel.revalidate();
                panel.repaint();
             }
         }
         if(e.getActionCommand().equals("提交")){
             if(area2.getText().equals(pMaker.resultStr)){
                label3.setText("正确");
                trueCount++;
                area2.setText("");
                pMaker=new testExerciseCreater();
                pMaker.creatExecercise(easyOrDifficult);
                label2.setText(pMaker.quesStr);
                panel.remove(panel3);
                panel.add(panel4);
                panel.revalidate();
                panel.repaint();
             }
             else{
                label3.setText("错误,正确答案是: "+pMaker.resultStr);
                pMaker=new testExerciseCreater();
                area2.setText("");
                pMaker.creatExecercise(easyOrDifficult);
                label2.setText(pMaker.quesStr);
                panel.remove(panel3);
                panel.add(panel4);
                panel.revalidate();
                panel.repaint();
             }
         }
         if(e.getActionCommand().equals("reenter")){
             area1.setText("");
             panel.remove(panel6);
             panel.add(panel1);
    
    
             panel.revalidate();
             panel.repaint();
         }
     }

     d. 程序运行:

     初始界面:

       

     选择界面:

       

     选择初级计算:

        

     

        

     选择高级计算:

       

       

      e. 小结感受:这次编程作业用到了以前只接触了一点点的图形界面,刚开始加功能进去觉得还可以,没有非常困难,但当做完功能之后请教别人图形界面如何起步时被告知最好先写GUI,然后就有点崩溃了。然后由于我上次的编程有点简单,所以就用了搭档的上一次作业,我们通过查看以前的书本,百度和请教大神,最后结对作业也完成了,但我们也发现自己还有很多不足需要补救,最明显的就是对于GUI就是小白这方面。对于1+1是否大于2,我们小组而言答案是肯定的,虽然对于老师给出的互换角色的方法没有非常适应,但我们还是觉得比自己一个人强很多,以后也会更好的去适应。最后感谢给予我们帮助的大神和老师们。

    2.结对照骗:

                  

    3.PSP:

    PSP2.1 Personal Software Process Stages Time Senior Student Time
    Planning 计划 5 6
    · Estimate 估计这个任务需要多少时间 7 6
    Development 开发 80 77
    · Analysis 需求分析 (包括学习新技术) 3 5
    · Design Spec 生成设计文档 5 6
    · Design Review 设计复审 5 9
    · Coding Standard 代码规范 4 3
    · Design 具体设计 23 24
    · Coding 具体编码 35 30
    · Code Review 代码复审 7 9
    · Test 测试(自我测试,修改代码,提交修改) 15 25
    Reporting 报告 10 7
    · 测试报告 5 4
    · 计算工作量 5 4
    · 并提出过程改进计划 2 3

  • 相关阅读:
    HTML撑起浮动子元素得父元素高度
    H5弃用标签和属性
    HTML常用转义字符
    php微信公众号开发入门
    常见正则表达式总结
    解决上下两个相邻图片之间存在默认间距的问题
    移动端真机调试的两种方法
    H5使用小结
    CF 11D
    Codeforces Round #639 (Div. 2) C Hilbert's Hotel (数学)
  • 原文地址:https://www.cnblogs.com/23hr/p/6551053.html
Copyright © 2011-2022 走看看