当前位置: 首页 > 编程日记 > 正文

软件工程网络15结对编程作业

软件工程网络15结对编程作业

1.项目成员

  • 学号:201521123014 博客地址:http://www.cnblogs.com/huangsh/
  • 学号: 201521123102 博客地址:http://home.cnblogs.com/u/hyy786030686/
  • 结对编程码云项目地址:https://gitee.com/huangsh1/software_pair_programming

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<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;}

程序运行截图

主界面:
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 Paparazzi 阅读(...) 评论(...) 编辑 收藏

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

相关文章:

【THML】兴唐第二十八节课 几个小程序

1、第一个html文件 <HTML><Head><title>小米商城</title></head><body><font size 6 color blue>小米巨能写</font><hr /><img src "index.jpg" width "300px"><p>标签组成部分&a…

Android系统默认Home应用程序(Launcher)的启动过程源代码分析

在前面一篇文章中&#xff0c;我们分析了Android系统在启动时安装应用程序的过程&#xff0c;这些应用程序安装好之后&#xff0c;还需要有一个Home应用程序来负责把它们在桌面上展示出来&#xff0c;在Android系统中&#xff0c;这个默认的Home应用程序就是Launcher了&#xf…

Data - 数据思维 - 下篇

9 - 数据解读与表达 数据解读 数据解读需要选择一个基点、一个参照系&#xff0c;单独的一个数值往往不具备价值&#xff0c;它只是数字。 注意点&#xff1a; 关注异常值&#xff0c;并深究WHY?相互验证、大胆假设、多方验证。把握趋势或者规律。归纳总结、数清理明。数据表达…

cas server 配置

1.修改cas server的deployerConfigContext.xml <bean id"dataSource" class"org.apache.commons.dbcp.BasicDataSource"> <property name"driverClassName"> <value>com.microsoft.sqlserver.jdbc.SQLServerDriv…

四 Vue学习 router学习

index.js: 按需加载组件&#xff1a; const login r > require.ensure([], () > r(require(/page/login)), login); 把JS文件分模块&#xff0c;安需加载&#xff0c;而不是&#xff0c;整个都加载。 routes &#xff1a; 定义路径和组件的mapping关系。c…

Oracle 10.2.0.5.4 Patch Set Update (PSU) – Patch No: p12419392

有关Oracle patch和PSU&#xff0c;PSR 说明参考我的blog&#xff1a;Oracle 补丁体系 及opatch 工具 介绍http://blog.csdn.net/tianlesoftware/article/details/5809526Oracle 10g 最新的版本是10.2.0.5.4. 其中的5是PSR 版本号&#xff0c;4是PSU版本号。MOS 上的2篇文档&am…

【数据库】兴唐第二十八节课零散知识点汇总

1、group by order by等都要放到语句的最后 2、表格标签&#xff1a; <table> <tr>表示行 <td>表示一个行里的单元格 </table> 3、表格调整 内容水平方向跳整&#xff1a; align"center" 表示水平居中 align 有三个值&#xff1a;left…

服务器端往手机端推送数据的问题(手机解决方案)

1.方案一&#xff1a; 思路&#xff1a;使用socket连接&#xff0c;在手机端开个socketserver&#xff0c;然后服务器端连接手机端&#xff0c;实现服务器端的不定时发送数据。 MIDlet关闭时, 你可以通过sms激活它. midlet运行时, 你可以通过socket来解决双向推数据的功能. 个人…

软件测试实验一

实验报告 a) The brief description that I install junit, hamcrest and eclemma. Junit&#xff0c;hamcrest 上网下载junit,hamrest包&#xff0c;然后在项目中新建文件夹lib,复制包到其中&#xff0c;然后单击项目->build path -> configer build path,然后在把包加入…

【java】兴唐第二十九节课作业

将用户在网页填写的信息输入数据库 数据库&#xff1a; create table user_infer(id int(2) not null auto_increment primary key,user_name varchar(12), password varchar(64) not null,real_name varchar(8) not null,age int(3) ); JAAVEE stuList <% page langu…

【php】【psr】psr2 编码风格规范

为避免浏览多个作者参与编写的项目时&#xff0c;因风格的不同造成不便时&#xff0c;大家可以使用同一套风格规范来统一标准 代码必须遵循PSR1的规范缩进使用4个空格&#xff0c;而不是TAB键缩进每行代码控制在80-120个每个namespace申明语句后&#xff0c;每个use申明语句块后…

代码生成器项目正式启动

SVN地址是&#xff1a; svn://www.oksvn.com/CodeAssistant J2EE的项目开发工作本身充斥着各种重复&#xff0c;各种复制&#xff0c;各种粘贴&#xff0c;所以&#xff0c;才会出现了Spring和Struts2这些优秀的框架。 但是在使用这些框架的时候&#xff0c;有些问题也会不停的…

查询XML节点 value

查询XML节点 value&#xff1a;通过nodes 指定到节点通过Value属性取出值Declare Xml xmlset Xml<Employee><ID>1</ID><ID>2</ID></Employee>SELECT ID.value(.,Nvarchar(500)) as EmployeeID FROM Xml.nodes(Employee/ID) Employee(…

JQUERY动态生成当前年份的前5年以及后 2年

由于工作需要&#xff0c;赶紧记录下来转载于:https://www.cnblogs.com/wjhaaa/p/8652298.html

osgearth+vs2010安装

OSGEARTH VS2010 安装*VS 平台不重要,本教程也适用于VS2008等。假设我的OSG目录为&#xff1a;D&#xff1a;/OSG*本教程参考网上osgearthvs2008安装。 一、准备工作下载: http://osgearth.org/wiki/Downloads 1. CURL (curl-7.21.7.tar.gz): http://curl.haxx.se/downl…

Contos7 克隆实例 以及 配置网络-服务-等相关信息

以下为我自己整理的克隆虚拟机和设置固定IP的方法&#xff0c;记录一下&#xff0c;以防忘记&#xff1a; 桥接模式网络配置 1、配置ip地址等信息在文件里做如下配置&#xff1a; /etc/sysconfig/network-scripts/ifcfg-ens33 命令&#xff1a; vi /etc/sysconfig/network-sc…

【jdbc】兴唐第三十一节课之修改数据和查询数据(使用自己写的DBUtil)

一、修改数据 方法一 代码实现&#xff1a; public static void opDBByNormal() {DruidDataSource dds new DruidDataSource(); dds.setUsername("root");dds.setPassword("root");dds.setUrl("jdbc:mysql://localhost:3306/system");dds.se…

ios4.2文件夹及多任务

ios4.2的文件夹和多任务可谓是主要特性,但是安装完后我却丝毫不知道该怎么做...在网上找了好久总算解决了 多任务:双击home键,在屏幕下方就会显示当前正在执行的任务,如http://tech.sina.com.cn/it/2010-11-22/22334894444.shtml所示. 文件夹操作:见视频http://v.youku.com/v_s…

利用Unity3D制作简易2D计算器

利用Unity3D制作简易2D计算器 标签&#xff08;空格分隔&#xff09;&#xff1a; uiniy3D 1. 操作流程 在unity3DD中创建一个新项目 注意选择是2D的&#xff08;因为默认3D&#xff09; 在Assets框右键新建C#脚本 在新建的C#脚本中写入下列代码 代码下载地址 https://downlo…

将moss 2007的模板文件导入到moss 2010

最近公司HR请请将一个moss2007的调查模板文件导入到我们部门的Moss protal 上面。 我想这是举手之劳&#xff0c;就爽快的答应了。 但是导入时却报如下错误&#xff1a; ErrorMicrosoft SharePoint Foundation version 3 templates are not supported in this version of the p…

C算法--黑盒测试

黑盒测试 系统会判断每组数据的输出结果是否正确。 单点测试只需要按正常的逻辑执行一遍程序即可。 多点测试&#xff1a; while...EOF型 while...&#xff08;T--&#xff09;型 在多点测试中&#xff0c;每次循环都要重置一下变量和数组&#xff0c;否则在下一次数据来临时变…

【java】兴唐第三十一节课之反射

知识点 一、获取类对象、 方法一 代码实现&#xff1a; Class myDriver Class.forName("com.mysql.jdbc.Driver"); 方法二&#xff1a; 代码实现&#xff1a; Class mysqlDriver com.mysql.jdbc.Driver.class; 注&#xff1a;方法二中Driver前面的东西可以…

ADO.NET与ORM的比较(5):MyBatis实现CRUD

说明&#xff1a;这是一个系列文章&#xff0c;在前面的四篇当中周公分别讲述了利用ADO.NET、NHibernate、Linq to SQL及EntityFramework来实现CRUD功能&#xff08;C:Create/R:Read/U:Update/D:Delete&#xff09;&#xff0c;在这里再讲述另一种框架&#xff0c;那就是MyBati…

BZOJ1391: [Ceoi2008]order

【传送门&#xff1a;BZOJ1391】 简要题意&#xff1a; 有n个工作&#xff0c;m种机器&#xff0c;每种机器可以租或买来&#xff0c;给出租和买的费用&#xff0c;每个工作有若干个工序&#xff0c;每个工序需要用某种机器完成&#xff0c;完成工作可以获得利润 求出完成n个工…

MongoDB(3)--有关NoSQL及MongoDB的一些概念

学习任何东西在没有理解的前提下去背熟一些概念是没有用的&#xff0c;就像只背会了几个概念而没有理解的开发人员去面试是经不住面试官的追问的。前面的两篇对MongoDB做了简单的介绍&#xff0c;能够很快上手&#xff0c;对MongoDB有一个感性的认识。本篇大部分内容来自MongoD…

SpringBootMybatis 关于Mybatis-generator-gui的使用|数据库的编码注意点|各项复制模板...

mysql注意点&#xff1a; 1.有关编码 create table user( id int primary key auto_increment, name varchar(255), password varchar(255) )ENGINEInnoDB AUTO_INCREMENT11 DEFAULT CHARSETutf8; 需要加上引擎的注释和默认数据库编码 application.properties的默认写法 #数据源…

【java】兴唐第三十节课之零三知识点总结

1、服务器通过session id来辨别用户 2、绝对路径与相对路径 (1)相对路径 . :当前路径 .. :向上返回一层路径 &#xff08;2&#xff09;绝对路径&#xff1a; 查找所有的文件都是从根目录出发 目录结构如图 代码实现&#xff1a; <div><span><a href …

(续)我对09毕业生说两句

上次写那篇文章已经是09年2月份&#xff0c;转眼2年过去&#xff0c;一直没想好再说些什么。后来想想也不用刻意说些什么&#xff0c;就是闲聊一下我的一些新看法吧。 简 历这个东西很重要&#xff0c;从简历上可以看出很多信息来。有很多人喜欢写自己细致认真。可以从简历上看…

Python Socket请求网站获取数据

Python Socket请求网站获取数据 ---阻塞 I/O ->收快递&#xff0c;快递如果不到&#xff0c;就干不了其他的活 ---非阻塞I/0 ->收快递&#xff0c;不断的去问&#xff0c;有没有送到&#xff0c;有没有送到,...如果送到了就接收 ---I/O多路…

用户控件和服务器控件的数据绑定

一、绑定Repeater控件的数据源 aspx.cs文件中绑定Repeater控件的数据源在BindDataSource()中&#xff1a; protected override void BindDataSource(){ this.rpID.DataSource this.dataList; this.rpID.DataBind();}Repeater控件事件OnItemDataBound&#xff0c;表示在循环…