https://git.coding.net/kjc976118457/work2.git

201421123017 康建灿 201421123016 郑怀勇

一、需求分析

  1. 记录用户的对错总数。
  2. 程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
  3. 有计时功能,能显示用户开始答题后的消耗时间。
  4. 具有GUI界面

二、功能设计

三、代码展示:

文件数据保存:

public class pro{int t=0,f=0;void file(int d,int count) {File file = new File("D:/text.txt");String line =null;try {BufferedReader br = new BufferedReader(new FileReader(file));try {while((line = br.readLine()) != null){String[] num = line.split("#");t=Integer.parseInt(num[1]);f=Integer.parseInt(num[3]);}} catch (IOException ex) {}} catch (FileNotFoundException ex) {get(d,count);}get(d,count);}public void get(int d,int count) {FileOutputStream fop = null;File file;String content = "    #"+(d+t)+"# ȷ#"+(count+f)+"#";try {file = new File("D:/text.txt");fop = new FileOutputStream(file);if (!file.exists()) {file.createNewFile();}byte[] contentInBytes = content.getBytes();fop.write(contentInBytes);fop.flush();fop.close();} catch (IOException e) {e.printStackTrace();} finally {try {if (fop != null) {fop.close();}} catch (IOException e) {e.printStackTrace();}}}}

  GUI主界面:

public class start extends JFrame implements ActionListener{private JLabel numText;private JLabel tagLabel,messageLabel;private JTextField numEdit;private JButton commitBtn;public start(){this.setBounds(500, 200, 300, 300);this.setResizable(false);this.setTitle("        ");initView();}private void initView(){JPanel mainPanel = new JPanel();mainPanel.setLayout(new BorderLayout(5,5));JPanel panel = new JPanel();panel.setLayout(new GridLayout(2,2));numEdit = new JTextField();commitBtn= new JButton("ȷ ");commitBtn.setFont(new java.awt.Font("   ", 100, 32));commitBtn.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);commitBtn.addActionListener(this);panel.add(new JLabel("     ɼ     Ŀ "));panel.add(numEdit);numEdit.setFont(new java.awt.Font("    ", 100, 32));numEdit.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);JPanel panel2 = new JPanel();panel2.setLayout(new GridLayout(2,1));tagLabel = new JLabel();panel2.add(tagLabel);panel2.add(commitBtn);mainPanel.add("Center",panel);mainPanel.add("South",panel2);add(mainPanel);}@Overridepublic void actionPerformed(ActionEvent arg0) {String num = numEdit.getText();boolean pass = false;if(num==null||num.equals("")){messageLabel.setText("        Ŀ     ");return;}else pass=true;if(pass){int m=Integer.parseInt(num);new test(m).show();this.dispose();}else{messageLabel.setText("          ");}}
}

计时器:

    timer.start();timeText.setText("  ʱ  :"+timeText.getText());//timeText.setText("time");commitBtn = new JButton("ȷ  ");commitBtn.addActionListener(this);commitBtn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {timer.stop();for(int i=0;i<m;i++){String answer = answerEdit[i].getText();if(answer.equals(c[i])){count++;}}int d=(int)m-count;pro r=new pro();r.file(d,count);String time= timeText.getText();double g=(double)count/m;new result(m,count,g,time).show();}});

生成四则运算:

   private void check(String answer) {}public static String  Fenshu(int i,String b[],int a[][],String c[]){int x=(int)(0+Math.random()*(9-0+1));int y=(int)(0+Math.random()*(9-0+1));while(x>=y||y==0||x==0){x=(int)(0+Math.random()*(9-0+1));y=(int)(0+Math.random()*(9-0+1));}int k=(int)(0+Math.random()*(9-0+1));int t=(int)(0+Math.random()*(9-0+1));while(k>=t||t==0||k==0){k=(int)(0+Math.random()*(9-0+1));t=(int)(0+Math.random()*(9-0+1));}int o=(int)(0+Math.random()*(3-0+1));if(o==0){b[i]="("+x+"/"+y+")+("+k+"/"+t+")=";a[i][0]=x*t+k*y;a[i][1]=y*t;int n=divisor(a[i][0],a[i][1]);c[i]=a[i][0]/n+"/"+a[i][1]/n;}if(o==1){b[i]="("+x+"/"+y+")-("+k+"/"+t+")=";a[i][0]=x*t-k*y;a[i][1]=y*t;int n=divisor(a[i][0],a[i][1]);c[i]=a[i][0]/n+"/"+a[i][1]/n;}if(o==2){b[i]="("+x+"/"+y+")*("+k+"/"+t+")=";a[i][0]=x*k;a[i][1]=y*t;int n=divisor(a[i][0],a[i][1]);c[i]=a[i][0]/n+"/"+a[i][1]/n;}if(o==3){b[i]="("+x+"/"+y+")  ("+k+"/"+t+")=";a[i][0]=x*t;a[i][1]=k*y;int n=divisor(a[i][0],a[i][1]);c[i]=a[i][0]/n+"/"+a[i][1]/n;}return b[i]+c[i];};public static String Zhengshu(int i,String b[],String c[]){int x=(int)(0+Math.random()*(100-0+1));int y=(int)(0+Math.random()*(100-0+1));int z=(int)(0+Math.random()*(3-0+1));if(z==0){b[i]=x+"+"+y+"=";c[i]=x+y+"";}if(z==1){b[i]=x+"-"+y+"=";c[i]=x-y+"";}if(z==2){b[i]=x+"*"+y+"=";c[i]=x*y+"";}if(z==3){b[i]=x+"  "+y+"=";int n=divisor(x,y);c[i]=x/n+"/"+y/n;}return b[i]+c[i];}public static int divisor(int i, int j)
{int k=1,s;for(s=1;s<=i&&s<=j;s++){if(i%s==0&&j%s==0)k=s;}return k;}

四、测试运行截图:

五、PSP

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

六、总结

经过将近一星期的对题目的理解与分析,虽然最终完成了任务,但在这过程中发现了许多问题。

首先,因为Java是在大二的时候学习的,经过一年的时间,加上平时编程量太少,对GUI界面的编程基本上忘光了,许多步骤了程序需要重新再学习。

其次,第一次作业的程序在这次发现有许多不完善的地方需要改进。花费了不少时间。

再次,关于两人的分工探讨,对题目的理解与解决方法有许多不同的见解需要达成一致。特别是文件存储和图形界面,更是花费了好一阵子。

最后,对两人在此次的完成作业的过程做出所谓“汉堡包”式的评价:

先说贬义的:很明显两个人都是懒人协会的,对作业只会一拖再拖,不到万不得已绝不动程序。

来在夸自己的:在时间紧迫的关键时候我们总能爆发出背水一战的勇气,完成任务的速度飞快。

最后在批判一下:或许程序员真的不适合我们,两个人的编程技术真的是烂到家里。

七,综上,附上合照一张

转载于:https://www.cnblogs.com/kkjc/p/6547995.html

结对编程1-基于GUI的四则运算生成器相关推荐

  1. 结队编程-基于gui的四则运算生成器

    成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...

  2. 结对编程——paperOne基于java的四则运算 功能改进

    项目成员:张金生     张政 由于新的需求,原本使用JSP的实现方式目前改为Java实现,即去除了B/S端. 需求分析: 1.四则运算要满足整数运算.分数运算两种: 2.运算题目随机,并且可以打印题 ...

  3. java周志第二周_20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算

    20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 1.Git提交日志已经实现一个功能/一个bug修复的注释说明,如图所示: 2.测试代 ...

  4. java 四则运算gui_结对编程-四则运算GUI的实现

    一.项目成员以及coding地址: 二.结对编程题目描述 在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI,成为一个有基本功能.一定价值的程序.在下面的 ...

  5. 结对编程1 - 四则运算生成器的改进(201421123040,60,61)

    题目要求 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一 ...

  6. 【结对编程】四则运算生成器

    结对项目报告 源码及接口说明地址:https://github.com/hzphzp/ArithmeticCore/tree/master/ArithmeticCore 一.功能实现 按照用户设置的要 ...

  7. 结对编程作业——四则运算GUI程序

    毛忠庆 201421122088 赵嘉楠 201421122065 源代码存放位置:https://gitee.com/ouwen0819/SiZeYunSuan.git 题目描述 使用 -n 参数控 ...

  8. 张天钰 内大计算机学院,20175305张天钰Java结对编程四则运算

    Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...

  9. 小学四则运算结对项目报告(GUI)

    小学四则运算结对项目报告(GUI) 一.Coding.Net项目地址: https://git.coding.net/wsshr/Calculation.git 二.PSP表格(完成前): PSP 任 ...

最新文章

  1. C#零碎知识点笔记(容易混淆的一些点)
  2. 整理的常用JAVA开源库简介
  3. 微信小程序初始化 operateWXData:fail invalid scope
  4. Quality of Service 0, 1 2
  5. 前端压缩图片,前端压缩图片后转换为base64.
  6. 编程题:字符串的指针引用。用指针法实现。功能:将字符串str2复制连接到str1...
  7. opsforlist 存在贼覆盖_RedisTemplate集合使用说明-opsForList(二)
  8. oracle pivot 去除引号,使用pivot显示列式统计结果实例
  9. 简单html倒计时器代码,js简单倒计时实现代码
  10. 计算机时间与网络时间无法同步,电脑时间与网络时间不同步解决办法
  11. 测试微信好友是否删除软件,如何测试微信好友是否删了你?
  12. [Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
  13. YOLOv5目标检测算法——通俗易懂的解析
  14. jQuery常用插件介绍
  15. 基于C#+Mysql实现(WinForm)企业的设备管理系统【100010018】
  16. 微服务应用性能分析实战14 互通有无:如何设计跨语言的 APM 交互协议?
  17. Unity-奥义技能背景变黑效果
  18. Android中的数据存储
  19. python3.9下错误,pip安装matplotlib卡在Building wheel for matplotlib (setup.py)..不动的原因与解决
  20. fftw_plan_many_dft 使用

热门文章

  1. 啥是前端开发工程师必会的5种网页布局方法?
  2. 12 个实用的前端开发技巧总结
  3. win8锁定计算机,Win8怎么关闭锁屏功能
  4. 4a怎么打开sqlserver_百元级别荣耀路由X3和小米路由4A,哪款真的香?
  5. win7 nginx php 环境,win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel开发环境
  6. matlab 查找字符串中第一个不为空格的_替换空格(剑指offer第三题)
  7. NTV Media Server G3 API All in One
  8. Servlet详细讲解
  9. Tensorflow学习之 卷积神经网络 (一)什么是卷积?
  10. RNN、GRU、LSTM