zoukankan      html  css  js  c++  java
  • 小学四则运算(2.0版本)

    小学四则运算(2.0版本)

    一、项目要求

    对第一版的四则运算进行升级,必须有PSP2.1标准步骤

    升级方式(可多选)

    1.功能升级   2.性能升级  3.界面升级   4.使用不同语言升级

    【易知大学】

    二、项目代码

    地址【GitHub】

    三、升级成果

    与1.0版本相比:

    1.增加了题目的类型选择项

    2.增加了有括号的题型

    3.改进了真分数的生成方式

    4.增加多个真分数运算的题型

    5.使用了中缀转后缀的运算方式

    四、PSP2.1表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 20 10
    Estimate 估计这个任务需要多少时间 10 10
    Development 开发 260 300
    Analysis 需求分析 (包括学习新技术) 20 20
    Design Spec 生成设计文档 10 15
    Design Review 设计复审 (和同事审核设计文档) 15 15
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 15 20
    Design 具体设计 15 10
    Coding 具体编码 100 150
    Code Review 代码复审 50 40
    Test 测试(自我测试,修改代码,提交修改) 30 30
    Reporting 报告 30 25
    Test Report 测试报告 25 25
    Size Measurement 计算工作量 10 10
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 15 15
    合计   370 395

    五、主要改进方法

    5.1 respeace()函数

    1 def respeace():   #转化为真分数
    2     f1 = integer_score()
    3     print(f1,'=',end = '')
    4     n = eval(f1)
    5     n = Fraction('{}'.format(n)).limit_denominator()    #小数转化为分数
    6     return n

    5.2 calcRevPolishNotation(numList = [])函数

     1 def calcRevPolishNotation(numList = []):#中缀表达式转后缀表达式步骤
     2     '''
     3     1.遇到操作数:添加到后缀表达式中或直接输出
     4     2.栈空时:遇到运算符,直接入栈
     5     3.遇到左括号:将其入栈
     6     4.遇到右括号:执行出栈操作,输出到后缀表达式,直到弹出的是左括号(注意:左括号不输出到后缀表达式)
     7     5.遇到其他运算符:弹出所有优先级大于或等于该运算符的栈顶元素,然后将该运算符入栈
     8     6.将栈中剩余内容依次弹出后缀表达式
     9     '''
    10 
    11     zhan = []
    12     i = 0
    13     while i < len(numList):
    14         re = 0
    15         if(numList[i].isdigit()):
    16             zhan.append(numList[i])        # 执行第1步
    17         else:
    18             a = float(zhan.pop())          # 执行第2步
    19             b = float(zhan.pop())
    20             if(numList[i] == '+'):
    21                 re = b + a
    22             elif(numList[i] == '-'):
    23                 re = b - a
    24             elif (numList[i] == '*'):
    25                 re = b * a
    26             elif (numList[i] == '/'):
    27                 re = b / a
    28             zhan.append(str(re))
    29         i += 1
    30     return zhan.pop()                      # 执行第3步

    5.3 zhongToList(str = '')函数

     1 def zhongToList(str = ''): #中缀表达式字符串转换为列表
     2     i = 0
     3     numStr = ''
     4     flag = False
     5     numList = []
     6     while i < len(str):
     7         if(str[i].isdigit()):
     8             numStr += str[i]
     9             flag = True
    10         else:
    11             if(flag):
    12                 numList.append(numStr)
    13                 numStr = ''
    14                 flag = False
    15             numList.append(str[i])
    16         i += 1
    17     if(flag):
    18         numList.append(numStr)
    19     return numList

    六、运行结果

    七、性能测试

    测试四则运算结果的时间(大约为1s)

    八、缺点

    性能不佳,部分函数测试运行100w次运行的时间过长

  • 相关阅读:
    结对编程项目---四则运算
    作业三(代码规范、代码复审、PSP)
    作业2(源程序管理软件与项目管理软件)
    学习总结
    作业1
    寒假超市实习
    《软件工程》课程总结
    结对编程项目---四则运算
    作业三: 代码规范、代码复审、PSP
    作业二(2)目前流行的源程序版本管理软件和项目管理软件都有哪些,各有什么优缺点?
  • 原文地址:https://www.cnblogs.com/xiayiLL/p/13743572.html
Copyright © 2011-2022 走看看