博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件工程网络15结对编程作业
阅读量:4634 次
发布时间:2019-06-09

本文共 5552 字,大约阅读时间需要 18 分钟。

1.项目成员

  • 学号:201521123014 博客地址:
  • 学号: 201521123102 博客地址:
  • 结对编程码云项目地址:

2.改进现有代码

原始代码思维导图:

1109839-20180325133306997-25307525.png

覆盖率统计截图:

1109839-20180325134054756-1029095856.png

发现的问题:

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

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

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

3.程序设计

思维导图:

1109839-20180325142101880-1036144873.png

关键代码展示:

语言切换: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("\r\n");            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("\r\n");            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
generateExps(int num) { HashSet
hashSet = new HashSet<>(); ArrayList
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; }

程序运行截图

主界面:

1109839-20180325144705362-69979788.png

1109839-20180325144933875-1017343436.png

1109839-20180325144941730-2028807248.png

答题界面:

1109839-20180325144723197-402996413.png

1109839-20180325144949161-1906561963.png

错题集:

1109839-20180325145120898-1251757096.png

历史记录:

1109839-20180325145126014-445709169.png

覆盖率:

1109839-20180325145239636-544325570.png

码云提交记录

1109839-20180325145636951-1498857338.png

两人合作

1109839-20180325145842699-1293049760.jpg

  • psp表格

1109839-20180325153516017-1659332235.png

小结

初次接触到结对编程,一开始的困难还是很大的,毕竟是异性,不是在同一个宿舍。只能跑图书馆。结对编程应该是类似于驾驶员和领航员的关系,但是在实践过程中确实有些困难,因为基础不是特别扎实,所以在前面一周基本都在复习JAVA的知识。看源代码的过程也会有点费解,花的时间比较长。但是总比一个人编程好。在结对过程中,一旦你有什么错误,对方都能帮你及时指正。总而言之还是有1+1>2的。
posted on
2018-03-25 15:35  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/huangsh/p/8644315.html

你可能感兴趣的文章
java学习之成员内部类
查看>>
json_encode时中文编码转正常状态
查看>>
流量调整和限流技术 【转载】
查看>>
Android WebView使用与JavaScript使用
查看>>
Axure 全局辅助线(转)
查看>>
图论之tarjan缩点
查看>>
C# 的快捷键汇总(一)
查看>>
正由另一进程使用,因此该进程无法访问此文件。
查看>>
linux简单优化
查看>>
洛谷 P1411 树
查看>>
打字游戏--飞机大战
查看>>
文本输入框、密码输入框
查看>>
内联式css样式,直接写在现有的HTML标签中
查看>>
HackerRank - Bricks Game
查看>>
Expect 教程中文版
查看>>
libcurl 客户端实例
查看>>
由Node.js事件驱动模型引发的思考
查看>>
easyUI样式之easyui-switchbutton
查看>>
在raspberry的jessie版系统上安装opencv3.0
查看>>
codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...
查看>>