结对对象与其博客链接

20175312陶光远:https://www.cnblogs.com/20175312-tgy/p/10630566.html

需求分析

(一)功能需求

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<a;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<num;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<num;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程序设计》结对编程联系_四则运算(第一周:阶段总结)的更多相关文章

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

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

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

    20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址 对结对伙伴的评价:黄宇瑭同学的优势在于能够想出一 ...

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

    20172321『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172324 姓名 :曾程 伙伴第一周博客地址: 对结对伙伴的评价:一个很优秀的同学,在这次项目中 ...

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

    20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 结对伙伴 20172326康皓越 博客地址(http://www.cnblogs.com/326477465-a/p/90 ...

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

    20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 结对伙伴博客链接 刘辰同学对编程的积极程度很高,并且在编程能力上很不错,有 ...

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

    20172326『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 小组成员 20172313 余坤澎 20172332 于欣月 20172326 康皓越 小组编程照片 设计思路 通过一个E ...

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

    20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 小组成员 20172326康皓越 20172313余坤澎 20172332于欣月 小组编程照片 设计思路 设计一个生成符号 ...

  8. 2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算——第一周

    2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算 组队成员: 仇夏 学号: 20172310 博客地址:点击这里 1. 需求分析: 可生成题目: - 输入要想生成 ...

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

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

  10. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算 第二周

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

随机推荐

  1. Windows系统CMD下常用命令

    命令    功能ASSOC    显示或修改文件扩展名关联.ATTRIB    显示或更改文件属性.BREAK    设置或清除扩展式 CTRL+C 检查.BCDEDIT    设置启动数据库中的属性 ...

  2. 前端安全类——CSRF/XSS

    CSRF 概念:跨站请求伪造 全称:Cross-site request forgery 攻击原理:网站中某一个接口存在漏洞,用户在注册网站登录过 防御措施: 1.Token验证:引诱链接只会自动携带 ...

  3. Cmake出现CMake Error: Could not find CMAKE_ROOT !!!

    试了很多方式, 其实只需要这一句话!!!!!! hash -r

  4. 转载---JavaScript执行机制

    很好的一篇文章,原地址 JavaScript执行机制 这一次,彻底弄懂 JavaScript 执行机制 本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我. 不 ...

  5. IScroll5不能滑到最底端的解决办法

    IScroll总体上用起来比较简单,但是如果用不好的可能会产生底部一点滚动不上去的问题. 环境:weui+iscroll5 整体布局及id如下 searchbarwrapper   divscroll ...

  6. 第30月第18天 autolayout代码

    1.上下左右 [tipsLabel setTranslatesAutoresizingMaskIntoConstraints:NO]; { id view1 = tipsLabel; id view2 ...

  7. 【模板】最长公共子序列(LCS)。

    看过好多人的博客,感觉要么是太复杂要么就是太不容易理解. 那就亲自动手写一个通俗易懂的. 先定义两个数组,第一个数组为主,用第二个数组来匹配第一个,看能有多少可以对应上的. 所以,其实第一个数组的内容 ...

  8. imageview设置图片时超长超大图片超出限制(OpenGLRenderer: Bitmap too large to be uploaded into a texture (996x9116, max=4096x4096))

    问题:遇到超长图片,宽长等比缩放,比如宽度同屏幕同宽,长度等比放大,放到后遇到长度超出OpenGLRenderer的最大限制,导致图片无法显示出来: 解决办法: //图片超出GPU对于openglRe ...

  9. Deep Mutual Learning

    论文地址: https://arxiv.org/abs/1706.00384 论文简介 该论文探讨了一种与模型蒸馏(model distillation)相关却不同的模型---即相互学习(mutual ...

  10. jmeter创建时间函数

    固定格式的年月日 ${__time(yyyyMMdd,)} 20151214 //返回年月日 ${__time(HHmmss,)} 092816 //返回时分秒 ${__time(yyyyMMdd-H ...