结对编程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表格记录下你估计将在程序的各个模块的 ...
随机推荐
- Hello world! My first blog!
Hello world! My first blog!
- Linux - 简明Shell编程05 - 条件语句(Case)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash var=$1 # 将脚本的第一 ...
- oracle启动 init.ora spfile pfile[转]
昨天晚上快下班的时候,公司数据库突然堵住了,一个buf表中累计了20多W的数据提取不出来,改了程序,效果不明显.因为之前有一次也重启过oracle,所以这次还是想把oracle重启一下,因为那些数据都 ...
- MyISAM 和InnoDB 区别
MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别 为:MyISAM类型不支持事务处理等高级处 ...
- GitHub Student Developer Pack创建个人网站
链接:https://zhuanlan.zhihu.com/p/20531579 这个开发包里有什么?作为学生开发者,如何最大化利用它的价值? Atom编辑器,GitHub推出的编辑器,和Sublim ...
- rtems的GNU(GCC)编译环境配置
// 创建目录 /home/shael/rtems/build //存放解压包和编译包目录 /home/shael/rtems/archive //存放源码包目录 /home/shael/rt ...
- css3文字与字体样式
css3使用服务器端字体: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- Java 异常框架
一张图看懂Java 异常框架之间的关系. 说明: 受检异常:编译的时候报错. 费受检异常:运行时报错,需要知道几个常见的异常 NullPointerException(空指针异常) ArrayInde ...
- python web入门程序
python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...
- 【可视化】div背景半透明
css实现元素半透明使用 opacity:0.x 实现背景色半透明:rgba(a,b,c,x); x为透明度0,到1