博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20162302 - 20162319 结对编程项目-四则运算(第一周)
阅读量:5292 次
发布时间:2019-06-14

本文共 2154 字,大约阅读时间需要 7 分钟。

结对编程项目-四则运算(第一周)

  • 需求分析

1、支持四则运算(加减乘除)算式的生成

2、支持对于所生成的题目给与答案解析
3、可以让用户作答并且判断答案是否正确
4、可以统计正确率
5、支持括号
6、支持真分式(本周未实现)

  • 设计思路

  • 首先要有一个部分负责算式的生成(四则运算类和算式生成类)

    :负责数字和符号的生成
import java.util.Random;public class 四则运算 {    int 符号编码, 数字;    String 符号;    Random 符号随机 = new Random();    Random 数字随机 = new Random();    public 四则运算() {    }    public String 生成符号(){        符号编码 = 符号随机.nextInt(4);        符号解析(符号编码);        return 符号;    }    public int 生成数字(){        数字 = 数字随机.nextInt(100);        return 数字;    }    public void 符号解析(int a){        if (a==0)            符号 = "+";        else if(a==1)            符号 = "-";        else if (a==2)            符号 = "*";        else if (a==3)            符号 = "/";    }    public String toString(){        return 数字+符号;    }}

:是四则运算类的子类,负责调用父类的方法根据用户的需求以字符串的形式生成单个算式

import java.text.DecimalFormat;public class 生成算式 extends 四则运算 {    int 阶数, 数字;    String 算式, 符号;    DecimalFormat fmt = new DecimalFormat("0");    public 生成算式 (int n){        阶数 = n;        生成(阶数);    }    public String 生成(int j){        数字 = 生成数字();        算式 = fmt.format(数字);        算式 = 算式.concat(" ");        for(int i=1; i
  • 然后是运算式子的类,使其可以生成以便于判断答案(算式运算器类和格式转换器类)

    :使用到了栈的方法可以运算后缀表达式,在更新以后又可以作为格式转换器的子类进行一步转换并运算,使其也可以支持前缀表达式。
    :专门用于转换中缀式为后缀式的类。
代码篇幅过大转换和运算都要用到栈

格式转换器

  • 最后要有驱动器

    :负责调用运算器和生成器达到生成算式和答案的目的。在命令行里面输出算式,然后由用户来作答,系统可以判断答案是否正确并给出正确率。
import java.util.Scanner;import java.text.NumberFormat;public class 驱动器 {    public static void main (String[] args){        int 正确个数=0;        Scanner scan = new Scanner(System.in);        NumberFormat 百分比形式 = NumberFormat.getPercentInstance();        生成算式 a = new 生成算式(2);        算式运算器 s = new 算式运算器();        格式转换器 g = new 格式转换器();        String b = a.生成(2);        String b1 = g.stringToArithmetic(b);        int answer1 = s.运算(b1);        System.out.print(b+"= ");        int Answer1 = scan.nextInt();        if (answer1 == Answer1) {            System.out.println("√");            正确个数 ++;        }        else            System.out.println("×");

1062717-20170514221452285-67364152.png

UML图

  • Junit测试

    JUnit测试中缀表达式转化为后缀表达式的转换器

    1062717-20170514205227832-2069815015.png
    JUnit测试两种引用(直接引用转换并计算和分步骤转换和计算)方式答案是否一样
    1062717-20170514211315441-1828891579.png

  • 运行截图

    1062717-20170514231539504-99532926.png

  • 合作伙伴

  • 姓名:莫礼钟
  • 学号:20162319
  • 博客链接:

转载于:https://www.cnblogs.com/yangjingdian/p/6852380.html

你可能感兴趣的文章
《构建之法》第五章自习感想与知识点
查看>>
[Swift]LeetCode741. 摘樱桃 | Cherry Pickup
查看>>
[Xcode 实际操作]六、媒体与动画-(8)使用CATransaction Reveal制作渐显动画
查看>>
[Xcode 实际操作]八、网络与多线程-(5)使用UIApplication对象发送邮件
查看>>
bzoj 1093: [ZJOI2007]最大半连通子图
查看>>
springCloud的zuul基于config和github实现热更新
查看>>
python学习笔记(pip下载安装)
查看>>
CSS
查看>>
shell 管道和tee使用时获取前面命令返回值
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
[TypeScript] Understanding Generics with RxJS
查看>>
一、基础篇--1.3进程和线程-基本概念
查看>>
Linux kernel ‘ioapic_read_indirect’函数拒绝服务漏洞
查看>>
WordPress GRAND FlAGallery插件“s”跨站脚本漏洞
查看>>
zoj3690 Choosing number
查看>>
阳宇宸:网站开发的常用语言
查看>>
CF 600 E 启发式合并
查看>>
保险配置
查看>>
【高并发解决方案】2、集群概述
查看>>