20165326 四则运算-结对编程 总结

四则运算-结对编程 总结

一、需求分析

  • 能随机生成n道四则运算题目,n由使用者输入
  • 支持整数和分数
  • 支持多运算符
  • 能够判断正误,错误时能提醒并输出正确答案
  • 能计算出正确率
  • 能多次生成题目,直到使用者选择退出
  • 文件:
    • 处理生成题目并输出到文件
    • 完成题目后从文件读入并判题

      二、设计思路

      基于之前的工作,这一阶段的主要重心放在了生成txt文件,对文件进行输入输出等操作,此处设计了两个主类QuestionsResults分别实现这两个操作。输出题目放在Exercisies.txt中,结果放在ExercisesResults.txt中,实现在读入程序并修改后打开txt文件用以查看程序的运行结果。

      三、关键代码及解释

      :

      在程序中用记事本(可执行文件)打开Exercises.txt文件

      Process p=null;
      try {
          p=Runtime.getRuntime().exec("notepad.exe Exercises.txt");
      } catch (Exception e) {
          e.printStackTrace();
      }

从文件读入题目并判题

        Calculator jdg = new Calculator();//创建一个新的`Calculator`对象,进行计算
        NifixToSuffix nts = new NifixToSuffix();//创建一个`NifixToSuffix`对象,将中缀式转换为后缀式
        NumberFormat fmt = NumberFormat.getPercentInstance();//创建一个`NumberFormat`对象,将分数转换为百分数
        FileInputStream fis = new FileInputStream("Exercises.txt");//创建指向`Exercises.txt`文件的输入流
        InputStreamReader isr = new InputStreamReader(fis);//将isr定义为fis的上转型对象
        BufferedReader in = new BufferedReader(isr);//创建 `BufferedReader`流读取文本行
        StringTokenizer tokenizer1 = null, tokenizer2 = null;//创建`StringTokenizer`对象作分隔标记
        String token1, token2, token3, token4;
        String s1 = null;
        String str;
        int q = 0, count = 0;
        PrintStream ps = new PrintStream("ExercisesResult.txt");//创建指向`ExercisesResult.txt`的输出流
        while ((str=in.readLine()) != null) { //从`Exercises.txt`文件中读入文本行,文件中每个题目都是一行,且形式都为“题目n:表达式 =答案”。
            tokenizer1 = new StringTokenizer(str, ":");//以":"作为分隔标记
            token1 = tokenizer1.nextToken();//将":"前的内容赋给token1(“题目n”)
            token2 = tokenizer1.nextToken();//将":"后的内容赋给token2(“表达式 =答案”)
            tokenizer2 = new StringTokenizer(token2, "=");//以"="作为分隔标记
            token3 = tokenizer2.nextToken();//将"="前的内容赋给token3(“表达式”)
            token4 = tokenizer2.nextToken();//将"="后的内容赋给token4(“答案”)
            nts.conversion(token3);//将token3转化为后缀表达式
            if (token4.equals(jdg.evaluate(nts.getMessage()))) {//判断输入答案是否等于计算结果
                s1 = "正确!";
                q++;
            } else {
                s1 = "错误,正确答案为:" + jdg.evaluate(nts.getMessage());
            }

            String s2 = str + "\n" + s1 + "\n\n";
            ps.append(s2);//将题目及判断结果写入到`ExercisesResult.txt`文件中
            count++;
        }
:

        double accuracy = (double) q / count;
        String s3 = "完成" + count + "道题目,答对" + q + "道题,正确率为" + fmt.format(accuracy);//计算题目数目及正确率,将正确率转化为百分数。
        ps.append(s3);

四、测试方法

NifixToSuffer类方法的测试(中缀转后缀)

Calculator类方法的测试(四则运算)

RationalNumber类方法的测试(有理数及真分数的计算)

五、运行过程截图

六、代码托管

码云链接

七、遇到的困难及解决方法

  • Q1:在文本中计算统计正确率时,输出正确率都是0%,如下图:

  • 解决方法:仔细查看代码后,我们发现,在向文本中输入题目时,会在“=”后面多加了一个空格,导致在判断输入结果与计算结果时比较出现错误,将空格去掉后,就可以正常运算了。

八、结对评价

我的小伙伴还是一如既往的给力,我们在后期扩展需求的时候遇到了很多问题,通过查阅资料和结合往期的学习一一解决,我有很多不太理解的地方都是她耐心细致的讲解给我听,对我有很大的帮助。

小伙伴的博客链接www.cnblogs.com/sunxiaoxuan/p/8904613.html

九、结对照片

十、PSP

PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
Planning 计划
· Estimate · 估计这个任务需要多少时间 1 1
Development 开发
·Analysis ·需求分析(包括学习新技术) 1.5 4.5
·Design Spec ·生成设计文档 1 1.2
·Disign Review ·设计复审(和同事审核设计文档) 0.5 0.8
·Code Standard ·代码规范 1 1.5
·Design ·具体设计 1.5 2.5
·Coding ·具体编码 5 7
·Code Review ·代码复审 1 1.5
·Test ·测试(自我测试,修改代码,提交修改) 2 3
Reporting 报告
·Test Report ·测试报告 1.5 2
·Size Measurement ·计算工作量 1 1
·Postmortem&Process Improvement Plan ·事后总结,并提出过程改进计划 1 1
合计 18 27
参考资料

2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算

结对编程项目-四则运算

现代软件工程讲义 个人项目和结对项目练习 四则运算

逆波兰算法实现四则运算

如何使用java程序打开一个文件?

原文地址:https://www.cnblogs.com/Czzzz/p/8908353.html

时间: 2024-07-31 09:53:52

20165326 四则运算-结对编程 总结的相关文章

网络四则运算结对编程

一.结对信息 项目组合 郭炜埕 201521123065 郑晓丽 201521123066 项目地址 (https://gitee.com/vicheng/four_operations/tree/master) 二.结对编程 1.需求分析 原来的代码只实现简单的两位数之间的加减乘除,而我们为需要改进其功能,实现了三位数的计算,并加了括号 改进后界面: 改进前类图: 改进后类图: 2.程序设计 3.代码展示 关键代码展示: ··· double g(double a, double b, Str

四则运算 结对编程

基本功能:1.一个带有用户界面的四则运算程序2.用户可以自己输入数据3.支持负数运算4.中间结果同样符合用户参数要求 界面效果:1.主界面 2.参数设置界面 原理分析:程序的大致流程为:用户进入主界面,点集“生成题目”,跳转到参数设置界面,用户设置完成后点击确定,主窗口从子窗口对象中提取各个参数生成算式,用户点击“打印题目”后将算式在listbox控件中输出. 为了方便起见,将生成算式的功能独自封装为一个类,在读取参数后直接调用这个类所实例化的对象的不同方法来生成算式. 生成算式的类主要包括三个

20165230 结对编程项目-四则运算 整体总结

20165230 结对编程项目-四则运算 整体总结 一.需求分析 随机生成题目 生成的题目个数从命令行输入 用户可选择生成不同难度的题目,比如通过参数指定: (1) 运算符个数范围 (2) 运算符限定(小学一年级题目只生成 + - 题目) 能多次生成题目 题目运算(判题) 支持多运算符 支持整数 支持真分数 题目合法性判断 可独立使用 可用于测试生成题目的正确性 扩展需求 题目去重 支持多语言 处理生成题目并输出到文件 完成题目后从文件读入并判题 二.设计思路 设计一个IntNumber类,用来

20172330 2017-2018-2 《程序设计与数据结构》结对编程项目-四则运算

1.结对成员 严域俊20172333 担任角色(团队分工) 1.前期分析流程 领航员:严域俊 操作员:李楠 原因:我是对于我们要编写的类寻找一些方法来进行实现,以及如何方便快捷的进行编写.而严域俊同学则是对于整个四则运算过程要求进行一一确定需要编写什么样的类, 2.中期各自分工编写类 该阶段主要是进行各自任务分工,由于之前的讨论我们的目的较为明确分为三个步奏,第一是严域俊同学进行编写一个可以随机生成不同等级的题目类,其次就是我编写一个可以进行中缀转后缀并输出后缀表达式及结果的类来承接他的题目,最

结对编程总结:简单的四则运算生成程序

1.题目描述:           面向小学生,随机生成30个100以内的四则运算,并且用户可以录入结果,检查用户录入的结果是否是正确的. 2.结对编程说明 结对对象:尤建  博客地址:http://www.cnblogs.com/lovelyYakir/ 双方贡献:2:1 3.本程序描述: a. 本程序在原有题目的基础上加以了部分改进: 1. 随机生成指定个数的四则运算. 2.可以输入四则运算的上下限. 4.结对编程照片: 5.源程序代码: MyExpression.java package

结对编程之四则运算

学习进度条 点滴成就 学习时间 新编写代码行数 博客量(篇) 学习知识点 第一周 2h 0 0 了解软件工程 第二周 3h 0 1 项目开题 第三周 5h 0 1 需求文档.用例图 第四周 8h 100 1 结对编程 第五周 12h 120 0 软件工程 第六周 15h 200 0 编译原理.软件工程详细设计 第七周 20h 100 1 软件测试 1. 结对编程对象:范心莲 2013110410 对方博客地址:http://www.cnblogs.com/FancyLian/ 双方贡献比例: 1

结对编程项目——四则运算

1. 结对编程项目---四则运算 (10分) 基本功能要求: 1) 实现一个带有用户界面的四则运算.2) 生成的题目不能重复.3) 支持负数,例如-1,-1/2,-3‘4/5等.(达成) 需要支持的基本设定参数 1) 题目的数量  2) 数值的范围  3) 题目中最多几个运算符(目前没有达成)  4) 题目中或运算过程中有无有分数(比如进行整数除法的时候不能除尽) 5) 题目中是否有乘除法  6) 题目中是否有括号 (目前没有达成) 7) 题目中或运算过程中有无负数         学习感受:

结对编程《四则运算》

1.结对编程题目是:面向小学生,随机生成30个100以内的四则运算,并且用户可以录入结果,检查用户录入的结果是否是正确的. 2.结对编程对象:晏蜀杰,博客地址:http://www.cnblogs.com/ysjwj320/ 3双方贡献度: 1:2 4.结对编程照片: 5.源程序代码: MyExpression.java package com.yanshujie.calculator; import java.util.Map; public interface MyExpression {

软件工程项目之二:结对编程——四则运算生成计算程序

0x01 :简介 本次的编程任务是完成一个具有UI界面的,具备四则运算生成.计算.判断对错功能的程序.本次程序使用C#语言编写,用时为2周. 0x02 :软件工程和PSP表格记录 PSP 2.1 Persinal Software Process Stages Time(Estimated) Time(Real) Planning 计划     Estimate 估计这个任务需要多少时间 24h 36h Development 开发     Analysis 需求分析(包括学习新技术) 8~10