• 四则运算


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

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

     

    PSP2.1 Personal Software Process Stages 预计hour 实际hour
    Planning 计划 0.1 0.1
    · Estimate 估计这个任务需要多少时间 5 6.5
    Development 开发 0.3 0.4
    · Analysis 需求分析 (包括学习新技术) 0.4 0.4
    · Design Spec 生成设计文档 0.3 0.2
    · Design Review 设计复审 0.2 0.3
    · Coding Standard 代码规范 0.1 0.1
    · Design 具体设计 0.3 0.3
    · Coding 具体编码 2 2.5
    · Code Review 代码复审 0.3 0.3
    · Test 测试(自我测试,修改代码,提交修改) 0.3 0.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.项目运行结果截图

  • 相关阅读:
    文件上传&ContentType请求格式
    Ajax的简单操作
    外键的变种,单表和多表的查询
    Sql 库和表的基本操作、基本数据类型
    协程、IO多路复用、
    线程/进程锁、池,进程的数据共享
    进程和线程相关
    用wampserver安装thinksns时点击index.php显示空白
    类中的初始化函数作用
    python中的from XX import YY与import YY
  • 原文地址:https://www.cnblogs.com/Cclm/p/9765454.html
Copyright © 2020-2023  润新知