小组成员:王震(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. My first_leetcode_Rever Ingeter 数字翻转java实现(办法集合)

    7. Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321  Example2: x = -123, ...

  2. 搭建 keras + tensorflow

    每次搭建深度学习环境的总要搜索各类参考.  这次搭环境,自己做个记录.这样以后搭建环境就拿自己 的文章做主线索引.  (如果参照我的博客安装的,欢迎转载分享 ) 1. 安装操作系统 (ubuntu-1 ...

  3. python自动化运维三:数据报表定制以及scapy模块介绍

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } Excel也是报表的一个重要的工具.这里首先接受下excel的操作.先来看一个简单的 ...

  4. 连上Wi-Fi 热点自动弹窗的实现方法

    当我们连上某个热点, 自动弹出登录窗口的专业名称叫做: Captive portal 原理, 实现方式有三种 1 : dns 跳转, 在热点上面实现配置, 把所有dns请求返回都配置为:服务器地址 : ...

  5. WebGL开发入门

    ­­­Getting started with WebGL development WebGL开发入门 What is Unity WebGL? 什么是Unity WebGL? The WebGL b ...

  6. SpringMVC的@RequestParam的解释

    自SpringMVC4.2之后,RequestParam内部有4个参数: 1.String name 2.String value 3.boolean required 4.String defaul ...

  7. AndroidTv Home界面实现原理(一)——Leanback 库的使用

    接下去应该是梳理一下 Android Tv 主界面实现原理及解析的一个系列博客了,大体上的安排是先介绍 Google 官方提供的 Leanback 库的使用,如何使用该库来实现简单的 Home 界面, ...

  8. Tkinter 导入安装包

    Tkinter (capitalized) refers to versions <3.0. tkinter (all lowecase) refers to versions ≥3.0

  9. Capacitor电容

    capacitor无正负极性. cap electrolit有极性,实际中不能接反,否则电容会烧毁或爆炸. MULTISIM仿真中接反会有漏阻存在,但不会烧毁. 电容的分类 按结构可分为:固定电容,可 ...

  10. 关于 DropDownList 循环绑定中遇到的问题

    1绑定DataTable 简单直接下部分就ok了 this.DropDownList1.DataSource = DataTable; this.DropDownList1.DataTextField ...