小组成员:王震(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类:

四、代码展示

四则运算实现相关代码:

  加法

  1. Calculator add(Calculator r){ // 加法运算
  2. int a = r.getNumerator();
  3. int b = r.getDenominator();
  4. int newNumerator = numerator * b + denominator * a;
  5. int newDenominator = denominator * b;
  6. Calculator result = new Calculator(newNumerator,newDenominator);
  7. return result;
  8. }

减法

  1. Calculator sub(Calculator r){ // 减法运算
  2. int a = r.getNumerator();
  3. int b = r.getDenominator();
  4. int newNumerator = numerator * b - denominator * a;
  5. int newDenominator = denominator * b;
  6. Calculator result = new Calculator(newNumerator,newDenominator);
  7. return result;
  8. }

乘法

  1. Calculator muti(Calculator r){ // 乘法运算
  2. int a = r.getNumerator();
  3. int b = r.getDenominator();
  4. int newNumerator = numerator * a;
  5. int newDenominator = denominator * b;
  6. Calculator result = new Calculator(newNumerator,newDenominator);
  7. return result;
  8. }

除法

  1. Calculator div(Calculator r){ // 除法运算
  2. int a = r.getNumerator();
  3. int b = r.getDenominator();
  4. int newNumerator = numerator * b;
  5. int newDenominator = denominator * a;
  6. Calculator result = new Calculator(newNumerator,newDenominator);
  7. return result;
  8. }

分数

  1. int numerator; // 分子
  2.    int denominator; // 分母
  3. void setNumeratorAndDenominator(int a, int b){ // 设置分子和分母
  4. int c = f(Math.abs(a),Math.abs(b)); // 计算最大公约数
  5. numerator = a / c;
  6. denominator = b / c;
  7. if(numerator< && denominator<){
  8. numerator = - numerator;
  9. denominator = - denominator;
  10. }
  11. }

计时器相关代码:

  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  2.  
  3. Calculator cal = new Calculator();
  4. String h=InputField.getText();
  5. int g = Integer.parseInt(h);
  6. String[] all={""};
  7. all=cal.answer();
  8. c=all[];
  9. jTextField1.setText("("+all[]+")"+all[]+"("+all[]+")"+"=");
  10. IntputField2.setText("");
  11. answer.setText("");
  12. congratulations.setText("");
  13. now=System.currentTimeMillis();
  14. i++;
  15.  
  16. }
  1. private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
  2. over=System.currentTimeMillis();
  3. now1=((over-now) / ( * * ) % )+":"+((over-now)/ ( * )% )+":"+((over-now)/ % );
  4. String a=now1+"";
  5. jTextField7.setText(a);
  6. }

语言选择相关代码:

  1. jMenu1.setText("文字转换");
  2. jMenu1.addActionListener(new java.awt.event.ActionListener() {
  3. public void actionPerformed(java.awt.event.ActionEvent evt) {
  4. jMenu1ActionPerformed(evt);
  5. }
  6. });
  7.  
  8. jMenuItem2.setText("英语");
  9. jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
  10. public void actionPerformed(java.awt.event.ActionEvent evt) {
  11. jMenuItem2ActionPerformed(evt);
  12. }
  13. });
  14. jMenu1.add(jMenuItem2);
  15. jMenu1.add(jSeparator1);
  16.  
  17. jMenuItem3.setText("中文简体");
  18. jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
  19. public void actionPerformed(java.awt.event.ActionEvent evt) {
  20. jMenuItem3ActionPerformed(evt);
  21. }
  22. });
  23. jMenu1.add(jMenuItem3);
  24.  
  25. jMenuItem1.setText("中文繁体");
  26. jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
  27. public void actionPerformed(java.awt.event.ActionEvent evt) {
  28. jMenuItem1ActionPerformed(evt);
  29. }
  30. });

GUI界面相关代码:

  1. private javax.swing.JTextField InputField;
  2. private javax.swing.JTextField IntputField2;
  3. private javax.swing.JTextField answer;
  4. private javax.swing.JTextField congratulations;
  5. private javax.swing.JTextField good;
  6. private javax.swing.JButton jButton1;//开始做题按钮
  7. private javax.swing.JButton jButton2;//查看答案按钮
  8. private javax.swing.JButton jButton3;//结束答题按钮
  9. private javax.swing.JButton jButton4;//下一题按钮
  10. private javax.swing.JLabel jLabel1;//四则运算生成器标签
  11. private javax.swing.JLabel jLabel10;//正确答案标签
  12. private javax.swing.JLabel jLabel2;//请输入题数标签
  13. private javax.swing.JLabel jLabel3;//题目标签
  14. private javax.swing.JLabel jLabel4;//下一题标签
  15. private javax.swing.JLabel jLabel5;//你的答案是标签
  16. private javax.swing.JLabel jLabel6;//答题数标签
  17. private javax.swing.JLabel jLabel7;//错题数标签
  18. private javax.swing.JLabel jLabel8;//正确率标签
  19. private javax.swing.JLabel jLabel9;//所用时间标签
  20. private javax.swing.JMenu jMenu1;//文字转换选择菜单
  21. private javax.swing.JMenuBar jMenuBar1;
  22. private javax.swing.JMenuItem jMenuItem1;//中文繁体选项
  23. private javax.swing.JMenuItem jMenuItem2;//英语选项
  24. private javax.swing.JMenuItem jMenuItem3;//中文简体选项
  25. private javax.swing.JPanel jPanel1;//界面格局
  26. private javax.swing.JPopupMenu jPopupMenu1;
  27. private javax.swing.JPopupMenu jPopupMenu2;
  28. private javax.swing.JRadioButtonMenuItem jRadioButtonMenuItem1;
  29. private javax.swing.JPopupMenu.Separator jSeparator1;
  30. private javax.swing.JPopupMenu.Separator jSeparator2;
  31. private javax.swing.JTextField jTextField1;
  32. private javax.swing.JTextField jTextField7;
  33. private javax.swing.JTextField mistake;
  34. 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. python进阶(4):初始面向对象

    一切皆对象! 面向过程-->面向对象 面向过程:根据业务逻辑从上到下堆叠代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更 ...

  2. 关于dfs+剪枝第一篇:hdu1010

    最近进入了dfs关于剪枝方面的学习,遇到的第一道题就是hdu的1010.一道很基础的剪枝..可我不幸地wa了很多次(待会再解释wa的原因吧QAQ),首先我们来看一下题目. Problem Descri ...

  3. IDE eclipse PyDev插件安装

    Python安装成功后,即要配置开发环境,这里选用Eclipse, 在Eclipse中安装PyDev插件,有多种方法,这里介绍最最常用的两种. 1)使用Eclipse安装插件,打开eclipse,进入 ...

  4. [js高手之路] vue系列教程 - 组件定义与使用上部(7)

    组件是vue框架比较核心的内容,那么什么是组件呢? 通俗点讲:组件是由一堆html, css, javascript组成的代码片段, 作用是为了实现模块的重用 组件的基本用法: <div id= ...

  5. 初学python类

    边看python官方2.7的文档,一边动手测试了一些例子加深自己的印象. 官方文档的网址:http://python.usyiyi.cn/python_278/tutorial/classes.htm ...

  6. Go指针

    Go 语言指针 Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务. 接下来让我们来一步步学习 Go 语言指针. 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地 ...

  7. 2、粘包现象(struct模块)

    昨天我们所做的套接字是有漏洞的,它会出现粘包现象,没有发现这个问题的我们今天会进行演示.今天也会稍微讲解一下基于udp的套接字. 一.基于udp的套接字 udp是无链接的,先启动哪一端都不会报错 ud ...

  8. 如何快速禁用约束 (解决ORA-O2266问题)

    业务场景: 某天truncate大量表时遇到错误ORA-O2266:表中的唯一/主键被启用的外键引用,不想看ER图来禁用大量复杂约束,所以研发了三种套路...   一. 最偷懒套路 如果要一次性导出很 ...

  9. 导入import com.sun.image.codec.jpeg.JPEGCodec出错

    在Eclipse中处理图片时,需要引入两个包:import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPE ...

  10. 【Linux】Apache Httpd 服务管理

    基本的操作方法: 本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: 推荐 [user@master1 ~]$  /usr/local ...