四则运算

本项目基于Java实现了一个四则运算软件的初版,能够根据用户输入生成指定数量的数学题目,涵盖加减乘除及真分数运算,具备计分功能。详细介绍了从需求分析到代码实现的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人项目 — 小学四则运算 “软件”之初版

 

  • 作业要求地址:http://www.cnblogs.com/xiangxuer/p/9695909.html
  • github地址:https://github.com/CCCCLM/CLM.git
 1.时间计划与实际使用时间

 

PSP2.1Personal Software Process Stages预计hour实际hour
Planning计划0.10.1
· Estimate估计这个任务需要多少时间56.5
Development开发0.30.4
· Analysis需求分析 (包括学习新技术)0.40.4
· Design Spec生成设计文档0.30.2
· Design Review设计复审0.20.3
· Coding Standard代码规范0.10.1
· Design具体设计0.30.3
· Coding具体编码22.5
· Code Review代码复审0.30.3
· Test测试(自我测试,修改代码,提交修改)0.30.3


2.
需求分析:   

    作业需求:

      为任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数。

 

    题目分析:

      ▶ 编程语言为java;

      ▶ 题目数量由用户给出;

      ▶ 四则运算的题目要求:两个运算符,3个数值,数值必须是100以内的正整数

      ▶ 结果要求:答案为正数

      ▶ 计分功能

      ▷ 扩展需求:可以出有真分数的题目,可处理用户的真分数输入

 

  2.代码规范

      命名规范:使用匈牙利命名法

      程序风格:程序按照阶梯式编写,括号习惯使用其一个括号在语句后面,结尾括号另占一行

      注释规范:函数头的注释(“功能”,“返回值”),在一些关键的语句上面进行注释

 

3.具体设计

      设计了4个类:mian类用于程序的运行,Title作为题目的生成和答案的生成,SetRandomNunber作为随机的东西,NB记录随机数,一般传数据,

    Title类中的方法有:

RandomSymbolNumber():获得所有随机数
 RandomNumbers(): 获得所有随机符号
Calculation()  逻辑计算
GetTitles()  生成所有题目
GetAnswer()  生成所有答案

 

4.主要代码

     逻辑计算

for(int i=0;i<numberSymbol.length;i++){
if(i>=1&&z==1){
h=i;
i--;
}
if(numberSymbol[i].equals("*")){
answer= numberA[i]*numberA[i+1];
numberA[i]=answer;
for(int j=i;j<numberSymbol.length;j++){
if(j<numberSymbol.length-1){
numberA[j+1]=numberA[j+2];
numberSymbol[j]=numberSymbol[j+1];
numberSymbol[j+1]="a";
}
}
z=1;

l++;

}
if(numberSymbol[i].equals("/")){
answer=numberA[i]/numberA[i+1];
numberA[i]=answer;
for(int j=i;j<numberSymbol.length;j++){
if(j<numberSymbol.length-1) {
numberA[j + 1] = numberA[j + 2];
numberSymbol[j] = numberSymbol[j + 1];
numberSymbol[j+1]="b";
}
}
z=1;
l++;

}
if(h!=0) {
i = h;
h = 0;
}
}
for(int i=0;i<numberSymbol.length-l;i++){
if(i>=1){
h=i;
i--;
}
if(numberSymbol[i].equals("-")){
answer= numberA[i]-numberA[i+1];
numberA[i]=answer;
for(int j=i;j<numberSymbol.length;j++){
if(j<numberSymbol.length-1) {
numberA[j + 1] = numberA[j + 2];
numberSymbol[j] = numberSymbol[j + 1];
}
}
if(h!=0) {
l++;
}
}
if(numberSymbol[i].equals("+")){
answer=numberA[i]+numberA[i+1];
numberA[i]=answer;
for(int j=i;j<numberSymbol.length;j++){
if(j<numberSymbol.length-1) {
numberA[j + 1] = numberA[j + 2];
numberSymbol[j] = numberSymbol[j + 1];
}
}
if(h!=0) {
i++;
}
}
if(h!=0) {
i = h;
h=0;
}
}
5.测试
测试其实自己能发现较多的问题,例如一开始没考虑除法分母不能为0的问题。输入没有容错。
6。问题和解决方法:
一开始逻辑计算的时候,逻辑上有很错误,导致了走了很多弯路,例如乘法和除法的优先计算,
在打代码的过程中,没有想到计算后数组的指向问题,计算后忘了又要从前开始计算,直接计算下一个,
后来通过不断的测试哈检查解决灵刺问题。

7.项目运行结果截图

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Cclm/p/9765454.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值