小组成员:王震(201421123054)、王杰(201421123055)

Coding地址:https://git.coding.net/a506504661/sssss.git

一、题目描述

我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:

  1. 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
  2. 有计时功能,能显示用户开始答题后的消耗时间。
  3. 界面支持中文简体/中文繁体/英语,用户可以选择一种;

二、需求分析

  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:

Personal Software Process Stages

Time (h) Senior

Student

Time (h)

计划

0.5 0.7
估计这个任务需要多少时间 8 10.2
开发 3 2.7
需求分析(包括学习新技术) 0.5 1.5
生成设计文档 0 0
设计复审 0 0
代码规范 0.5 0.7
具体设计 0.2 0.4
具体编码 2 3
代码复审 0.3 0.2
测试(自我测试,修改代码,提交修改) 0.5 0.6
报告 0.5 0.8
测试报告 0.1 0.1
计算工作量 0.1 0.1
并提出过程修改计划 0.1 0.1
   
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

结对编程1----基于java的四则运算生成器的更多相关文章

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

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

  2. 结对编程——paperOne基于java web的简易四则运算出题网站

    项目成员:张金生     张政 需求分析: 1.要进行四则运算: 2.运算题目随机: 3.进行对错判断: 4.整数运算. 程序概要: 1.用JSP实现: 2.用户可选择题目数量: 3.答题页用表格列出 ...

  3. 结对编程1-基于GUI的四则运算生成器

    201421123016郑怀勇     201421123017康建灿 程序代码 / 康建灿 一.需求分析 记录用户的对错总数. 程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算. 有 ...

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

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

  5. 结对编程1 —— 基于GUI和Swing的四则运算题目生成器

    合作伙伴 201421123102 王艳秋 201421123106 陈 雄 代码地址 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI( ...

  6. 结对作业--基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址 :https://coding.net/u/zhang1995/p/wo ...

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

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

  8. 20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算

    一.码云链接 项目名称FAO 码云链接 二.需求分析 实现一个命令行程序: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确 ...

  9. 结对作业:基于GUI实现四则运算

    1)Coding.Net项目地址:https://git.coding.net/day_light/GUIszysLL.git 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的 ...

随机推荐

  1. MongoDB安全策略

    一,修改启动端口 mongo的默认端口为27017 如果启用的是27017端口并且在公网上很容易被人攻击,所以第一点我们要修改端口 sudo ./mongod --dbpath=/data/db -- ...

  2. 【Java学习笔记之八】java二维数组及其多维数组的内存应用拓展延伸

    多维数组声明 数据类型[][] 数组名称; 数据类型[] 数组名称[]; 数据类型数组名称[][]; 以上三种语法在声明二维数组时的功能是等价的.同理,声明三维数组时需要三对中括号,中括号的位置可以在 ...

  3. 【HTTP权威指南】第三章-HTTP报文

    HTTP是因特网的信使,报文就是信使运送的包裹. 这一章包含: 报文如何流动 报文的三个组成部分(起始行,首部,实体的主体部分) 请求报文和响应报文的区别 请求报文支持的各种功能(方法) 响应报文返回 ...

  4. Oracle Windows安装图解

    一. Oracle 下载 官方下地址 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.htm ...

  5. Markdown几个简单的例子

    定义型列表 语法说明: 定义型列表由名词和解释组成.一行写上定义,紧跟一行写上解释. 解释的写法:紧跟一个缩进(Tab) Markdown : 轻量级文本标记语言,可以转换成html,pdf等格式(左 ...

  6. ThinkSNS积分商城系统功能详解!

    积分商城含PC端.Android APP.iOS APP:在ThinkSNS PC端首页导航栏点击"拓展功能",然后选择"积分商城"进行体验:APP端则是在&q ...

  7. Spring集成RabbitMQ-使用RabbitMQ更方便

    如果提到Spring,你脑海中对他的印象还停留在SSH三大框架之一,那或许你该好好重新认识这个家伙. 在IT技术日新月异的今天,他还能让你忘不了并与他朝夕相处,他,肯定有自己的绝活.如今他早已经不是孤 ...

  8. 安卓开发中SQLite的使用(附实例)

    在Android平台上系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取.下面以我自己创建的收入信息表(InAccount)为例,来学习SQLite的使用. 主要是四个 ...

  9. 神经网络与深度学习笔记 Chapter 2.

    转载请注明出处http://www.cnblogs.com/zhangcaiwang/p/6886037.html 以前都没有正儿八经地看过英文类文档,神经网络方面又没啥基础,结果第一章就花费了我将近 ...

  10. Integer陷阱(0~127和其他 数值相等对象比较)

    Integer 类在对象中包装了一个基本类型 int 的值. 有一个陷阱存在,经常出现在面试题中,情况如下面代码 public class IntegerDemo { public static vo ...