结对编程1----基于java的四则运算生成器
小组成员:王震(201421123054)、王杰(201421123055)
Coding地址:https://git.coding.net/a506504661/sssss.git
一、题目描述
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
- 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
- 有计时功能,能显示用户开始答题后的消耗时间。
- 界面支持中文简体/中文繁体/英语,用户可以选择一种;
二、需求分析
1.有计时功能:在答题结束时,能够显示用户答题所用时间。
2.有语言切换功能:界面可以支持中文简体、中文繁体、英语的切换
3.有相应的界面区域以及按钮等。
三、程序设计
主要流程图:
四则运算Calculator类:
GUI类:
四、代码展示
四则运算实现相关代码:
加法
Calculator add(Calculator r){ // 加法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b + denominator * a;
int newDenominator = denominator * b;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}
减法
Calculator sub(Calculator r){ // 减法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b - denominator * a;
int newDenominator = denominator * b;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}
乘法
Calculator muti(Calculator r){ // 乘法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * a;
int newDenominator = denominator * b;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}
除法
Calculator div(Calculator r){ // 除法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b;
int newDenominator = denominator * a;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}
分数
int numerator; // 分子
int denominator; // 分母
void setNumeratorAndDenominator(int a, int b){ // 设置分子和分母
int c = f(Math.abs(a),Math.abs(b)); // 计算最大公约数
numerator = a / c;
denominator = b / c;
if(numerator< && denominator<){
numerator = - numerator;
denominator = - denominator;
}
}
计时器相关代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Calculator cal = new Calculator();
String h=InputField.getText();
int g = Integer.parseInt(h);
String[] all={""};
all=cal.answer();
c=all[];
jTextField1.setText("("+all[]+")"+all[]+"("+all[]+")"+"=");
IntputField2.setText("");
answer.setText("");
congratulations.setText("");
now=System.currentTimeMillis();
i++; }
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
over=System.currentTimeMillis();
now1=((over-now) / ( * * ) % )+":"+((over-now)/ ( * )% )+":"+((over-now)/ % );
String a=now1+"";
jTextField7.setText(a);
}
语言选择相关代码:
jMenu1.setText("文字转换");
jMenu1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenu1ActionPerformed(evt);
}
}); jMenuItem2.setText("英语");
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem2ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem2);
jMenu1.add(jSeparator1); jMenuItem3.setText("中文简体");
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem3ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem3); jMenuItem1.setText("中文繁体");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
GUI界面相关代码:
private javax.swing.JTextField InputField;
private javax.swing.JTextField IntputField2;
private javax.swing.JTextField answer;
private javax.swing.JTextField congratulations;
private javax.swing.JTextField good;
private javax.swing.JButton jButton1;//开始做题按钮
private javax.swing.JButton jButton2;//查看答案按钮
private javax.swing.JButton jButton3;//结束答题按钮
private javax.swing.JButton jButton4;//下一题按钮
private javax.swing.JLabel jLabel1;//四则运算生成器标签
private javax.swing.JLabel jLabel10;//正确答案标签
private javax.swing.JLabel jLabel2;//请输入题数标签
private javax.swing.JLabel jLabel3;//题目标签
private javax.swing.JLabel jLabel4;//下一题标签
private javax.swing.JLabel jLabel5;//你的答案是标签
private javax.swing.JLabel jLabel6;//答题数标签
private javax.swing.JLabel jLabel7;//错题数标签
private javax.swing.JLabel jLabel8;//正确率标签
private javax.swing.JLabel jLabel9;//所用时间标签
private javax.swing.JMenu jMenu1;//文字转换选择菜单
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;//中文繁体选项
private javax.swing.JMenuItem jMenuItem2;//英语选项
private javax.swing.JMenuItem jMenuItem3;//中文简体选项
private javax.swing.JPanel jPanel1;//界面格局
private javax.swing.JPopupMenu jPopupMenu1;
private javax.swing.JPopupMenu jPopupMenu2;
private javax.swing.JRadioButtonMenuItem jRadioButtonMenuItem1;
private javax.swing.JPopupMenu.Separator jSeparator1;
private javax.swing.JPopupMenu.Separator jSeparator2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField7;
private javax.swing.JTextField mistake;
private javax.swing.JTextField title1;
四、测试
开始做题:
错题
对题
结束
切换文字
五、实验小结
本次实验对于要求方面有很多问题的不懂,比如按键不匹配,错题不会累加等等,记过讨论和咨询,完成了本次结对实验,收益很多。
PSP:
|
||||||||||||||||||||||||||||||||||||||||||||||||||
结对编程1----基于java的四则运算生成器的更多相关文章
- 结对编程——paperOne基于java的四则运算 功能改进
项目成员:张金生 张政 由于新的需求,原本使用JSP的实现方式目前改为Java实现,即去除了B/S端. 需求分析: 1.四则运算要满足整数运算.分数运算两种: 2.运算题目随机,并且可以打印题 ...
- 结对编程——paperOne基于java web的简易四则运算出题网站
项目成员:张金生 张政 需求分析: 1.要进行四则运算: 2.运算题目随机: 3.进行对错判断: 4.整数运算. 程序概要: 1.用JSP实现: 2.用户可选择题目数量: 3.答题页用表格列出 ...
- 结对编程1-基于GUI的四则运算生成器
201421123016郑怀勇 201421123017康建灿 程序代码 / 康建灿 一.需求分析 记录用户的对错总数. 程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算. 有 ...
- 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...
- 结对编程1 —— 基于GUI和Swing的四则运算题目生成器
合作伙伴 201421123102 王艳秋 201421123106 陈 雄 代码地址 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI( ...
- 结对作业--基于GUI的四则运算生成器
组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址 :https://coding.net/u/zhang1995/p/wo ...
- 结队编程-基于gui的四则运算生成器
成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...
- 20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算
一.码云链接 项目名称FAO 码云链接 二.需求分析 实现一个命令行程序: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确 ...
- 结对作业:基于GUI实现四则运算
1)Coding.Net项目地址:https://git.coding.net/day_light/GUIszysLL.git 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的 ...
随机推荐
- 一个想法照进现实-《IT连》创业项目:聊聊IT连App是如何思考解决IT人员单身问题的
前言: 根据最早我编写的IT联盟社区众筹计划书的思路方向:社交->资讯=>评级=>培训. 现在在实现第一个阶段中,而且这个阶段可能会走很久. 今天开文,主要是讲述一下,现在的版本为什 ...
- 【python密码学编程】5.反转加密法
#Reverse Cipher message = 'there can keep a secret,if two of them are dead.' translated = '' i = len ...
- Java微信公众平台开发之扫码支付模式一
官方文档点击查看准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败)借鉴了很多大神的文章,在此先谢过了大体过程:先扫码(还没有确定实际要支付的金额),这个码是商品的二维码,再生 ...
- 【FlashPlayer】-Debug版本-开发人员推荐
Adobe的Flash-Player的版本分为“普通版本”和“Debug版本”,后者可以协助开发者测试和调试程序. 那么,先给出Debug版本的下载地址:http://www.adobe.com/su ...
- 关于修改了db2 instance下面文件夹权限导致的不可连接
前一段时间,我修改了db2inst1目录下的所有文件的权限,目的是方便其他用户访问和查看里面的文件信息.可是修改了之后,我用IBM data studio就始终连接不上数据库了. 查看了错误代码,看提 ...
- 伪验证码(含随机验证码方法)js+css
HTML----------------------------------------------<!DOCTYPE html><html><head><m ...
- python selenium报错整理
element not visible 没有加等待时间 元素没有被选定,很多时候是因为没有最大化窗口,网页窗口只显示一部分,所以找不到元素! <exception str() failed> ...
- ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决
通过终端安装程序sudo apt-get install xxx时出错: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource t ...
- 8种Java排序算法整理
package org.hbz.test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; im ...
- 《CS:APP》二进制炸弹实验(phase_1-3)
<深入理解计算机系统>第三章的bomb lab,拆弹实验:给出一个linux的可执行文件bomb,执行后文件要求分别进行6次输入,每一次输入错误都会导致炸弹爆炸,程序终止.需要通过反汇编来 ...