结对对象与其博客链接

需求分析

(一)功能需求

1.自动生成题目(本周已完成)

可生成包含不同运算符个数的题目

2.题目运算(判题)(这周先做了真分数,运算和后缀计算打算下周做)

实现中缀表达式转为后缀表达式并计算

判断用户答题正误,并输出正确结果

3.支持真分数(第二周内容,本周提前做了)

实现分数算式的计算

3.题目去重(扩展需求)

实现对自动生成表达式中相同题目的去重

(二)对需求的理解:

1.能随机生成多道四则运算题目,可由用户输入控制

2.支持整数和真分数(第二周内容,本周已做)

3.支持多运算符,运算符个数可由用户输入控制

4.能够判断正误,错误时能提醒并输出正确答案(这周先做了真分数,运算和后缀计算打算下周做)

5.可以计算正确率

设计思路

1.我们对支持多运算符的理解就是为:在输出前,由用户输入所要求的运算符个数,然后程序运行自动给出相应算式。

2.提前做了第二周真分数的内容,我们没有做出选项来确认用户是否需要进行真分数练习,希望下周可以对此进行优化,计算和后缀转换的内容打算下周做。

3.由于学习c语言的时候曾设计过类似于这样的四则运算的程序,可以说思路很快就捋顺了,具体怎么实施则经过商讨后翻译成Java语言。

4.总体思路就是这样了,具体思路见下面的UML类图。

UML类图

实验过程中的关键代码解释

题目生成代码(Timushengcheng.java)

public class Timushengcheng {

String[]Shengchengtimu;//设置生成题目的数组

int fuhaoshu,num;//接收用户所需的设定(题目个数、符号数个数)

public Timushengcheng(int num ,int fuhaoshu)//构造题目生成函数

{

this.num=num;

this.fuhaoshu=fuhaoshu;

Shengchengtimu=new String[num];

}

public String questionfuhaoshu(int a)//生成单个用户要求运算符个数的题目的方法

{

String express="";

String[]OC={"+","-","×","÷"};

for (int c=0;c

Zhenfenshu b = new Zhenfenshu();

String d=b.getZhenfenshu();

String e=OC[(int) (Math.random() * 4)];

while (d=="0"&&e=="÷") {

Zhenfenshu f=new Zhenfenshu();

d = f.getZhenfenshu();

}

express +=d+" "+e+ " ";

}

Zhenfenshu c=new Zhenfenshu();

String e=c.getZhenfenshu();

while (express.charAt(4*fuhaoshu-1)=='÷'&&e=="0")

{

Zhenfenshu d=new Zhenfenshu();

e=d.getZhenfenshu();

}

express+=e+" "+"=";

return express;

}

public void QuestionNum()//生成用户要求个数的题目,且将其放入生成题目数组中保存的方法

{

Timushengcheng F=new Timushengcheng(num,fuhaoshu);

for(int a=0;a

Shengchengtimu[a]=F.questionfuhaoshu(fuhaoshu);

}

public String[] getShengchengtimu()//返回生成题目数组的方法

{

return Shengchengtimu;

}

public String getShengchengtimu2(int a) //返回数组中指定索引处的方法

{

String b;

b=Shengchengtimu[a];

return b;

}

public String toString() //输出生成题目数组中表达式的方法

{

String a="";

for (int b=0;b

a+=Shengchengtimu[b]+"\n";

return a;

}

}

真分数生成代码(Zhenfenshu.java)

public class Zhenfenshu {

int numerator, denominator;

public Zhenfenshu() //设置真分数生成函数

{

numerator= (int) (Math.random()*51);

denominator= (int) (Math.random()*51);

if(denominator==0)

denominator=1;

xianzhi1();

}

public void xianzhi1()//主要使分母不为零

{

if (numerator != 0) {

int common = xianzhi2(Math.abs(numerator), denominator);

numerator = numerator / common;

denominator = denominator / common;

}

}

private int xianzhi2(int num1, int num2) //主要使分母大于分子(真分数)

{

while (num1 != num2)

if (num1 > num2)

num1 = num1 - num2;

else

num2 = num2 - num1;

return num1;

}

public String getZhenfenshu() //化简得到的分数直至最简

{

String result;

if(numerator==0)

result="0";

else

if(denominator==1)

result=numerator+"";

else

result=numerator+"/"+denominator;

return result;

}

}

#测试方法

##测试程序代码(TimushengchengTest.java)

import java.util.Scanner;

public class TimushengchengTest {

public static void main(String[] args){

int num,fuhaoshu;

Scanner scan=new Scanner(System.in);

System.out.print("题目个数为:");

num=scan.nextInt();

System.out.print("题目中的运算符个数为:");

fuhaoshu=scan.nextInt();

Timushengcheng a=new Timushengcheng(num,fuhaoshu);

a.QuestionNum();

System.out.println("生成的"+num+"个表达式为:");

System.out.println(a);

}

}

#运行结果截图

正常测试:

![](https://img2018.cnblogs.com/blog/1610016/201904/1610016-20190402160924263-1445029809.png)

异常测试

![](https://img2018.cnblogs.com/blog/1610016/201904/1610016-20190402160945419-547252247.png)

边界测试

![](https://img2018.cnblogs.com/blog/1610016/201904/1610016-20190402161000598-516537346.png)

#代码托管+码云链接

1.码云链接

https://gitee.com/Lyh20175309/java-besti-is-lyh/tree/master/jiedui1

2.代码托管

![](https://img2018.cnblogs.com/blog/1610016/201904/1610016-20190402180444765-1873805057.png)

#对结对的小伙伴做出评价

陶光远同学细心地给我讲解C语言知识,帮我弥补之前的缺漏,他是这个团队的真核,我充其量算一个辅助,他是中流砥柱

希望在接下来的活动中能帮助他更多

#PSP

PSP2.1|Personal Software Process Stages|预估耗时(分钟)|实际耗时(分钟)

--|--|--|--

Planning|计划| |

Estimate|估计这个任务需要多少时间|1100|1600

Development|开发| |

Analysis|需求分析 (包括学习新技术)|30|90

Design Spec|生成设计文档|30|40

Design Review|设计复审 (和同事审核设计文档)|60|60

Coding Standard|代码规范 (为目前的开发制定合适的规范)|60|60

Design|具体设计|60|60

Coding|具体编码|700|1100

Code Review|代码复审|60|60

Test|测试(自我测试,修改代码,提交修改)|30|60

Reporting|报告| |

Test Report|测试报告|20|20

Size Measurement|计算工作量|10|10

Postmortem & Process Improvement Plan|事后总结, 并提出过程改进计划|40|40

| |合计|1100|1600

java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第一周:阶段总结)...相关推荐

  1. 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

    20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: http://www.cnblogs.com/ ...

  2. 20172316 结对编程-四则运算 第一周 阶段总结

    20172316 结对编程-四则运算 第一周 阶段总结 1.项目内容 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目 ...

  3. 20172307 结对编程项目-四则运算 第二周 阶段总结

    20172307 结对编程项目-四则运算 第二周 阶段总结 (结队项目码云地址) 相关过程截图(关键代码处加了注释) 编写出实现中缀转后缀的类Transform /*Transform.java 作者 ...

  4. 20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

    一.结对对象 姓名:周亚杰 学号:20172302 担任角色:驾驶员(周亚杰) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...

  5. 20165330 结对编程项目-四则运算 第一周

    需求分析 实现一个命令行程序,要求:自动生成小学四则运算题目(加.减.乘.除) 可实现多个运算符一起运算 可以真分数形式输出结果 测试结果的正确性 统计题目完成数并计算正确率 设计思路 实验首先是完成 ...

  6. 20172305 结对编程项目-四则运算 第二周 阶段总结

    结对编程的好丽友 20172323 王禹涵:中缀转后缀 20172314 方艺雯:后缀表达式的计算 20172305 谭鑫:中缀表达式的输出 遇到的困难和解决方案 问题1:括号的添加方法 解决方案: ...

  7. 20162303 结对编程项目-四则运算 第一周输出阶段总结博客

    第一周(2017-5-14 23:59截止)输出阶段总结博客 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 ...

  8. python是高级程序语言_高级语言程序设计(Python)_中国大学MOOC(慕课)

    课程概述 "高级语言程序设计"类课程面向无编程基础的学生,培养其运用编程语言解决实际问题的编程能力,使学生掌握一门编程语言的基本语法.语句.控制结构以及结构化程序设计的基本思想和方 ...

  9. 初创公司怎么做销售数据分析_我在数据科学初创公司实习的第一周

    初创公司怎么做销售数据分析 There is no better teacher than experience. No matter how many stories a person hears ...

  10. 程序设计实习MOOC / 程序设计与算法(三)第一周测验

    作业题: 7. 填空(2分)简单的swap 通过码是 ( 请参考公告中的"关于编程作业的说明"完成编程作业(请注意,编程题都要求提交通过码,在openjudge上提交了程序并且通过 ...

最新文章

  1. java设计模式---合成模式2
  2. OAG – WhoIsWho 同名消歧竞赛发布 | 10万元奖金双赛道
  3. 虚拟化技术知识点初步梳理
  4. gitkraken同步建立repository与github上的repository
  5. mysql导出数据 程序_mysql导出数据
  6. php strstr 从尾部,PHP strstr() 和 strrchr() 详解
  7. python编程求极限_Sympy笔记一
  8. 20145326蔡馨熠《信息安全系统设计》第2周学习总结
  9. jQuery插件(多级菜单)
  10. HDU2526 浪漫手机【模拟】
  11. 根据生日计算年龄 java_Java 根据出生日期获得年龄
  12. 快速突破面试算法(内含从简到难的高频题型目录及每题的详解,已经归类整理好并外带博主的免费答疑)
  13. 【概率论】标准正态分布及概率表
  14. SGD(随机梯度下降)详解
  15. 【SQL】使用SQL求1-100的质数
  16. Spring web开发用post方法和button遇到http405的一种解决方法
  17. DES算法的加解密原理(详细算法+样例Demo)
  18. 深度学习——学习率衰减(learning rate decay)
  19. c#将字符串转换为数组_C#中怎样把一个字符串转换成字符形数组?
  20. PEP最新提案推出,Python将上线重大更新,带来了哪些新功能?

热门文章

  1. ubuntu18.04下载地址
  2. MySQL基础|设置登录用户权限,访问ip地址---防止数据库误删,详细版
  3. 您的连接不是私密连接的解决办法
  4. python编写交互界面查分,Python实现CET查分的方法 -电脑资料
  5. unicode 生僻字_[微软拼音小技巧] 如何用Unicode输入生僻字
  6. 2023年如何搭建最小可行性的产品文档/产品手册?
  7. 领英进阶技巧-google和LinkedIn结合
  8. 医院常见报表统计思路整理
  9. Solr搜索引擎 — 中文全拼简拼分词
  10. C#实现将度分秒化为弧度值