结对编程1-基于GUI的四则运算生成器
https://git.coding.net/kjc976118457/work2.git
201421123017 康建灿 201421123016 郑怀勇
一、需求分析
- 记录用户的对错总数。
- 程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
- 有计时功能,能显示用户开始答题后的消耗时间。
- 具有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的四则运算生成器相关推荐
- 结队编程-基于gui的四则运算生成器
成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...
- 结对编程——paperOne基于java的四则运算 功能改进
项目成员:张金生 张政 由于新的需求,原本使用JSP的实现方式目前改为Java实现,即去除了B/S端. 需求分析: 1.四则运算要满足整数运算.分数运算两种: 2.运算题目随机,并且可以打印题 ...
- java周志第二周_20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 1.Git提交日志已经实现一个功能/一个bug修复的注释说明,如图所示: 2.测试代 ...
- java 四则运算gui_结对编程-四则运算GUI的实现
一.项目成员以及coding地址: 二.结对编程题目描述 在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI,成为一个有基本功能.一定价值的程序.在下面的 ...
- 结对编程1 - 四则运算生成器的改进(201421123040,60,61)
题目要求 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一 ...
- 【结对编程】四则运算生成器
结对项目报告 源码及接口说明地址:https://github.com/hzphzp/ArithmeticCore/tree/master/ArithmeticCore 一.功能实现 按照用户设置的要 ...
- 结对编程作业——四则运算GUI程序
毛忠庆 201421122088 赵嘉楠 201421122065 源代码存放位置:https://gitee.com/ouwen0819/SiZeYunSuan.git 题目描述 使用 -n 参数控 ...
- 张天钰 内大计算机学院,20175305张天钰Java结对编程四则运算
Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...
- 小学四则运算结对项目报告(GUI)
小学四则运算结对项目报告(GUI) 一.Coding.Net项目地址: https://git.coding.net/wsshr/Calculation.git 二.PSP表格(完成前): PSP 任 ...
最新文章
- C#零碎知识点笔记(容易混淆的一些点)
- 整理的常用JAVA开源库简介
- 微信小程序初始化 operateWXData:fail invalid scope
- Quality of Service 0, 1 2
- 前端压缩图片,前端压缩图片后转换为base64.
- 编程题:字符串的指针引用。用指针法实现。功能:将字符串str2复制连接到str1...
- opsforlist 存在贼覆盖_RedisTemplate集合使用说明-opsForList(二)
- oracle pivot 去除引号,使用pivot显示列式统计结果实例
- 简单html倒计时器代码,js简单倒计时实现代码
- 计算机时间与网络时间无法同步,电脑时间与网络时间不同步解决办法
- 测试微信好友是否删除软件,如何测试微信好友是否删了你?
- [Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
- YOLOv5目标检测算法——通俗易懂的解析
- jQuery常用插件介绍
- 基于C#+Mysql实现(WinForm)企业的设备管理系统【100010018】
- 微服务应用性能分析实战14 互通有无:如何设计跨语言的 APM 交互协议?
- Unity-奥义技能背景变黑效果
- Android中的数据存储
- python3.9下错误,pip安装matplotlib卡在Building wheel for matplotlib (setup.py)..不动的原因与解决
- fftw_plan_many_dft 使用
热门文章
- 啥是前端开发工程师必会的5种网页布局方法?
- 12 个实用的前端开发技巧总结
- win8锁定计算机,Win8怎么关闭锁屏功能
- 4a怎么打开sqlserver_百元级别荣耀路由X3和小米路由4A,哪款真的香?
- win7 nginx php 环境,win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel开发环境
- matlab 查找字符串中第一个不为空格的_替换空格(剑指offer第三题)
- NTV Media Server G3 API All in One
- Servlet详细讲解
- Tensorflow学习之 卷积神经网络 (一)什么是卷积?
- RNN、GRU、LSTM