• 结对编程作业


    1.项目成员

    黄绍桦:201521123014
    花雨芸:201521123102
    码云地址:https://gitee.com/huangsh1/software_pair_programming
    结对照片
    

    2.改进现有代码

    覆盖率统计截图

    发现的问题:

    简繁英的切换不完善(鼠标事件监听异常)
    代码编码不规范
    复习错题集不完善
    统计率不正确
    

    改进与扩展(需求分析):

    1)规范代码样式;
    2)修正简繁英切换的问题;
    3)修改界面左下角正确率显示不正确的问题。
    4)加入乘方和括号的表达式
    5)优化复习错题集
    

    3.程序设计:针对新开发功能做设计,建议使用思维导图。

    ·思维导图

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

    语言切换:
    Simplified_Chinese.setText("简");
            Simplified_Chinese.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    Simplified_ChineseMouseClicked(evt);
                }
            });
    
            Traditional_Chinese.setText("/繁");
            Traditional_Chinese.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    Traditional_ChineseMouseClicked(evt);
                }
            });
    
            English.setText("/English");
            English.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    EnglishMouseClicked(evt);
                }
            });
    
    创建答题历史记录和错题集:
        public void Histroy_create() {
            String path = "f:\Myapp";
            File f = new File(path);
            if (!f.exists()) {
                f.mkdirs();
                String fileName = "histroy.txt";
                File file = new File(f, fileName);
                if (!file.exists()) {
                    Writer writer = null;
                    try {
                        writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
                    } catch (UnsupportedEncodingException | FileNotFoundException e) {
                        e.printStackTrace();
                    }
                    try {
                        if (writer != null) {
                            writer.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    
                }
                f.mkdirs();
                String fileName2 = "histroy_num.txt";
                File file2 = new File(f, fileName2);
                if (!file2.exists()) {
                    Writer writer = null;
                    try {
                        writer = new OutputStreamWriter(new FileOutputStream(file2), "UTF-8");
                    } catch (UnsupportedEncodingException | FileNotFoundException e) {
                        e.printStackTrace();
                    }
                    try {
                        if (writer != null) {
                            writer.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                }
                Histroy_saveNum();
            }
    
        }
    
        public void Histroy_save() {
            FileWriter writer;
            String fileName = ("f:\Myapp\histroy.txt");
            try {
                writer = new FileWriter(fileName, true);
                writer.write(str);
                writer.write("
    ");
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        public void Histroy_saveNum() {
            FileWriter writer2;
            String fileName2 = ("f:\Myapp\histroy_num.txt");
            try {
                writer2 = new FileWriter(fileName2, true);
                writer2.write(str2);
                writer2.write("
    ");
                writer2.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    括号:
            for (int j = 0; j < leftNums; j++) {
                    exp += "(";
                }
                
                if (exp.length() > leftNums && exp.charAt(exp.length() - leftNums - 1) == '^') {
                    int matchPos = i + 1;
                    for (int j = 0; j < leftNums; j++) {
                        exp = exp.substring(0, exp.length() - 1);
                        while (rightPosMap.get(matchPos) <= 0) {
                            matchPos++;
                        }
                        rightPosMap.put(matchPos, rightPosMap.get(matchPos) - 1);
                    }
                    exp += random.nextInt(4);
                } else {
                    int generateNum = (random.nextInt(40) - 20);
                    if (generateNum < 0 && (leftPosMap.get(i + 1) == 0 || rightPosMap.get(i + 1) == 0)) {
                        exp += "(" + generateNum;
                        rightPosMap.put(i + 1, rightPosMap.get(i + 1) + 1);
                    } else {
                        exp += generateNum;
                    }
                }
                int rightNums = rightPosMap.get(i + 1);
                for (int j = 0; j < rightNums; j++) {
                    exp += ")";
                }
    
    去除产生除0:
    public static ArrayList<ExpAndAns> generateExps(int num) {
            HashSet<MinPreFormat> hashSet = new HashSet<>();
            ArrayList<ExpAndAns> res = new ArrayList<>();
            for (int i = 0; i < num; i++) {
                String exp = generateNewExp();
                String postexp = trans(exp);
                Node root = createExpTree(postexp);
                MinPreFormat minPreFormat = minPre(root);
                if (hashSet.contains(minPreFormat)) {
                    i--;
                } else {
                    Rational ans = calc(postexp);
                    if (ans.getM_down() == 0) {
                        i--;
                    } else {
                        hashSet.add(minPreFormat);
                        res.add(new ExpAndAns(exp, ans));
                    }
                }
            }
            return res;
        }
    

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

    主界面:


    答题界面:

    错题集:

    历史记录:

    覆盖率:

    码云提交记录

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

    结对编程的确大大提高了编程效率,通过队友的提点,更快得理解原代码并且看出问题所在,修改起来事半功倍。

    4.提供此次结对作业的PSP

    在开始实现程序之前,请使用以下PSP表格,在第3列填上自己对每个环节的估计时间(单位:分钟).
    在做每个环节的过程中,请在第4列填上对应环节的实际消耗时间(单位:分钟).

  • 相关阅读:
    关于 flutter_boost splash加载动画
    [BS-23] AFN网络请求上拉/下拉刷新的细节问题总结
    [BS-22] Objective-C中nil、Nil、NULL、NSNull的区别
    [BS-21] 关于OC中对象与指针的思考
    [BS-20] 导航控制器和视图控制器在添加控制器的区别
    ios runtime swizzle
    关于C、OC、C++、OC++、Swift的一些常识
    iOS多线程知识总结--GCD
    使用代码创建AutoLayout约束
    iOS中NSLog输出格式大全
  • 原文地址:https://www.cnblogs.com/hyy786030686/p/8644725.html
Copyright © 2020-2023  润新知