一、链接

结对编程成员博客园地址:

201521123009 徐璐琳 博客园地址:http://www.cnblogs.com/abonxxxu/ 码云地址:https://gitee.com/abonxxxu/events
201521123028 李家俊 博客园地址:http://www.cnblogs.com/KILL-ljj/ 码云地址:https://gitee.com/Forgetaboutj/events

结对编程码云地址:https://gitee.com/abonxxxu/software_engineering__pair_programming
代码上传截图:

照片:

源代码:https://git.coding.net/qwx_hh/java-szys.git

二、代码

1.需求分析:

源代码的基本功能和设计思路如上图 ,在功能上,源代码的核心模块是Arithmetic(),也就是计算模块,除此之外,源代码中还有Work_Time(计时功能模块),History(历史题目存取模块),Frame(图形界面模块),QAlist(实现问题和答案的模块)
为了实现新的需求,我们需要在代码上实现三个主要的功能:
①重复运算内容检测
②实现括号和多运算符运算,实现复合运算
③实现乘方运算

2.程序设计:

由于主要是实现计算上的功能,因此我们在Arithmetic.java(用于实现运算的模块)上做出修改,以实现需求分析中预计的功能)

3.代码展示:
对于加减乘除+乘方基本算法(整数):

    public String int_operation(){int result = 0;if(a==0)result=f+g;if(a==1)result=f-g;if(a==2)result=f*g;for(int i = 0; i <= flage; i++)//查询num3中有没有与result相同的元素{if(result == num3[i])return null;//如果有相同的返回null}num3[flage++] = result;//如果没有相同的就把新的result的值放入num3中astr = String.valueOf( result);if(a==3){if(g==0){astr=int_operation();return astr;}else{if(g!=0&&g!=1){int d=common_divisor(f,g);f=f/d;g=g/d;astr = (f+"/"+g);}if(g==1)astr=(""+f);}}if(a==4){result=(int) Math.pow(f, g);}return astr;}

对于加减乘除+乘方基本算法(分数):

    public String fra_operation(){this.b = new Random().nextInt(10)%(10-1+1) + 1;this.c = new Random().nextInt(10)%(10-2+1) + 2;this.d = new Random().nextInt(10)%(10-1+1) + 1;this.e = new Random().nextInt(10)%(10-2+1) + 2;if(c<b||e<d||c%b==0||e%d==0){astr=fra_operation();return astr;}int fz=1,fm=c*e;if(a==0)fz=b*e+c*d;if(a==1){fz=b*e-c*d;if(fz==0){return astr=("0");}}if(a==2)fz=b*d;if(a==3){fz=b*e;fm=c*d;}int f=common_divisor(fm,fz);if(f>0){fm=fm/f;fz=fz/f;}if(f<0){fm=-fm/f;fz=-fz/f;}if(a==4){fz=(int) Math.pow(b*e, f);fm=(int) Math.pow(c*d, f);}astr = (fz+"/"+fm);return astr;}

对于分数中最大公约数的处理:

    public static int common_divisor(int m,int n){while(m%n!=0){int t=m%n;m=n;n=t;}return n;}
对于计时函数:
public class Work_Time extends TimerTask{static int y=0;static int z=0;@Overridepublic void run() {// TODO Auto-generated method stubString str_second = Frame.Time.getText().substring(6);int x = Integer.parseInt(str_second);if(Frame.Time.getText().equals("00:00.00")){x=0;y=0;z=0;}x++;if(z<10){if(y<10){if(x<100)Frame.Time.setText("0"+z+":0"+y+"."+x);if(x==100){y++;Frame.Time.setText("0"+z+":0"+y+".0");x=0;}}if(y<60&&y>=10){if(x<100)Frame.Time.setText("0"+z+":"+y+"."+x);if(x==100){y++;Frame.Time.setText("0"+z+":"+y+".0");x=0;}}if(y==60){y=0;x=0;z++;}}if(z<60&&z>=10){if(y<10){if(x<100)Frame.Time.setText(z+":0"+y+"."+x);if(x==100){y++;Frame.Time.setText(z+":0"+y+".0");x=0;}}if(y<60&&y>=10){if(x<100)Frame.Time.setText(z+":"+y+"."+x);if(x==100){y++;Frame.Time.setText(z+":"+y+".0");x=0;}}if(y==60){y=0;x=0;z++;}else{Frame.Time.setText("超过一小时了,偶尔放弃也不是坏事呢。");}}}}

对于减少重复题目(主要代码):

int [][] num2 = new int[10][4];
int [][] num1 = new int[10][2];
int [] num3 = new int [10];//保存每道题的结果
int flage = 0;//记录num3数组中的元素个数
int flage2 = 0;//保存整数数组num1中的个数
int flage3= 0;//保存分数数组num2的个数
·
·
·public String toString(){if(x==true){//先判断在num1里面有没有相同的元素for(int i = 0; i <= flage2; i++){if((f == num1[i][0] && g == num1[i][1]) || (f == num1[i][0] || g == num1[i][1]))return null;}//如果没有就把原来的值放入num1[flage2++][0] = f;num1[flage][1] = g;if(a==0)qstr=(f+"+"+g+"=");if(a==1)qstr=(f+"-"+g+"=");if(a==2)qstr=(f+"*"+g+"=");if(a==3)qstr=(f+"/"+g+"=");if(a==3)qstr=(f+"/"+g+"=");if(a==4)qstr=(f+"^"+g+"=");}if(x==false){//先判断在num2里面有没有分数运算相同的元素for(int i = 0; i <= flage3; i++){if((b == num2[i][0] && c == num2[i][1] && d == num2[i][2] && e == num2[i][3]) || (b == num2[i][2] && c == num2[i][3] && d == num2[i][0] && e == num2[i][1]))return null;}//如果没有就把原来的值放入num2[flage3++][0] = b;num2[flage3][1] = c;num2[flage3][2] = d;num2[flage3][3] = e;if(a==0)qstr=(b+"/"+c+"+"+d+"/"+e+"=");if(a==1)qstr=(b+"/"+c+"-"+d+"/"+e+"=");if(a==2)qstr=(b+"/"+c+"*"+d+"/"+e+"=");if(a==3)qstr=(b+"/"+c+"/"+d+"/"+e+"=");if(a==4)qstr=(b+"/"+c+"^"+d+"/"+e+"=");}return qstr;}

4.程序运行:


乘方功能:

单元测试:

重复率测试:

HTML:

CHECKSTYLE:

效能测试:



5.小结感受:

这一次结对编程对于没什么编程水平的我来说感觉很难受,在第一次看代码的时候,还有跟我的编程搭档徐同学合作的时候,我甚至有很多听不懂、看不懂的地方,于是我把源代码的代码规范作为我的切入点,慢慢的了解到了这个程序的构造,以及我看不懂的地方究竟是做什么用的,慢慢的我就对程序有所了解,最后在设计脑图和需求分析的时候也起到很大的作用。所以也十分感谢我耐心勤劳的搭档徐同学带我飞=-=,同时也感谢念学长的优质程序,思路清晰,让我在看的时候很快就能看懂。

这次的结对编程,让我切身找到了一种在做项目的感觉(虽然做出来的也不是什么大东西),我认为要想合作做好一个项目(程序),首先建立在分工明确的情况下,各司其职,然后要有不断的交流,这样可以大幅减少配合上的失误,也避免了在完成的过程中产生矛盾。在项目的大体思路上,我们先是在源代码上进行分析→找出优缺点,发现逻辑泥球→对代码进行改进,简化代码→不断测试,再次改进→做总结,完成PSP等。

PSP:

转载于:https://www.cnblogs.com/KILL-ljj/p/8623885.html

软工网络15结对编程练习相关推荐

  1. 软工网络15结对编程练习(201521123007谭燕)

    链接 学号:201521123006:博客链接: http://www.cnblogs.com/KimHeechul/p/8644402.html 学号:201521123007:博客链接: http ...

  2. 软工网络15结对编程练习 201521123056 吴剑通

    0.结对编程成员: 吴剑通博客地址:https://www.cnblogs.com/wjt960310/ 杨钧宇博客地址:http://www.cnblogs.com/GOB8023/ 码云地址:ht ...

  3. 软工网络15个人作业5--软件工程总结

    一.请回望开学时的第一次作业,你对于软件工程课程的想象 1. 对比开篇博客你对课程目标和期待,"希望通过实践锻炼,增强计算机专业的能力和就业竞争力",对比目前的所学所练所得,在哪些 ...

  4. 2021秋软工实践第一次结对编程作业

    这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践第一次结对编程作业 这个作业的目标 实现博饼软件原型并进行博客写作 学号 031902139 队友学 ...

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

    软件工程网络15结对编程作业 1.项目成员 学号:201521123014 博客地址:http://www.cnblogs.com/huangsh/ 学号: 201521123102 博客地址:htt ...

  6. 2022秋软工实践 第一次结对编程作业

    2022秋软工实践 第一次结对编程作业 需求分析 (1)Need,需求 (2)Approach,做法 (3)Benfit,好处 (4)Competitors,竞争 (5)Delivery,推广 UML ...

  7. 软工网络15团队作业8——Beta阶段敏捷冲刺

    Deadline:软工网络15团队作业8--Beta阶段敏捷冲刺 1. 新成员 新加入我们的是网络1512 的班长,杨泽斌和童欢.主要负责我们的产品测试与用户体验 于是我们的团队成员有 廖余俊(cap ...

  8. 2021秋软工实践第一次结对编程作业-需求分析

    博饼软件需求分析 一.简要说明 博饼,是厦门人几百年来独有的中秋传统活动,是一种独特的月饼文化,也是厦门人对历史的一种传承.现在,博饼依然是厦门人最钟爱的中秋活动,也是最热闹的一个民俗节日形式. 目前 ...

  9. 软工网络15团队作业1——团队组队展示

    团队展示 1.队名 Cool3469 2.队员学号(标记组长) 赵铭 --201521123093 吴慧婷--201521123094 [组长] 刘舒婷--201521123096 陈敏 --2015 ...

最新文章

  1. 概率分布之间的距离度量以及python实现(三)
  2. chrome 网页重新加载_在Chrome中为各个网页设置自定义重新加载时间
  3. 我对CSS选择器的认识
  4. python爬虫的用途_python爬虫用途
  5. php javascript 不执行,javascript – 不工作php按钮来执行操作
  6. 拟态个人主页UI源码开源
  7. bzoj1031 [JSOI2007]字符加密 后缀数组改
  8. bash: go: 未找到命令_golang快速入门[2.3]-go语言开发环境配置-linux
  9. 每日一题_JavaScript.利用Js操作frameset框架集对象实现购物车?
  10. 剑指offer面试题[40]-数组中只出现一次的数字
  11. git与github远程连接代码库使用笔记
  12. Druid连接池jar包的下载 配置和简单使用
  13. python读取shp文件,
  14. sim7020c功耗_SIM7020C NB-IoT HAT教程
  15. ROS机器人语音模块
  16. vue3 Extraneous non-props attributes (modelValue) were passed to component but could not be automati
  17. Mac配置ll的查看命令
  18. 远程链接linux桌面的软件,远程linux桌面软件
  19. 永远不怕IE主页地址被修改
  20. 太阳系及银河系尺寸的直观概念

热门文章

  1. 使用Mahout搭建推荐系统之入门篇-Mahout实战
  2. HTTP 请求报文、响应报文格式详解
  3. Thinkpad T470p 在 Ubuntu 20.04 启用指纹识别
  4. jstree 选中指定节点-yellowcong
  5. ARCOCAD 五轴测量PH20
  6. 团建游戏----啤酒大赛
  7. 解读Git与SVN的区别(集中式VS分布式)
  8. 用事实说话,我是如何快速入门一个新领域的
  9. 计算机三级网络技术ppt介绍,计算机三级网络技术课件.ppt
  10. 股票历史行情数据api_历史API