博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四则运算实现软件工程
阅读量:6569 次
发布时间:2019-06-24

本文共 3376 字,大约阅读时间需要 11 分钟。

https://github.com/yekai1/-.git

题目:

能自动生成小学四则运算题目,并且不能出现负数;

能支持真分数的四则运算

功能设计:

实现四则运算题目和答案的生成,对生成的四则运算题目进行查重,支持对提供的题目进行查重和答案求解并给出正确错误及题目重复的结果。

设计实现:

类1:生成随机数

类2:生成整个表达式
类3:表达式转换成为逆波兰式
类4:树
类5:类中存放一个数的分子与分母,同时toString方法输出真分数形式
类6:计算结果
类7:二叉树的查重
类8:主函数

代码说明:

生成表达式:

 

def createarithmetic(self):    list = []    f1 = function1.function1()    f2 = function2()    operator_no = random.randint(1,3)    if operator_no == 1:        list.append(f1.createNum())        list.append(f2.createOperator())        list.append(f1.createNum())    elif operator_no == 2:        start = random.randint(0,2)        end = 0        if start == 0:            end == 0        else:            end = start +1        for i in range(1,4):            if i == start:                list.append("(")            list.append(f1.createNum())            if i == end:                list.append(")")            list.append(f2.createOperator())        list.pop()    elif operator_no == 3:        start = random.randint(0, 3)        end = 0        if start == 0:            end == 0        else:            end = start + 1 + random.randint(0,1)            if end >= 4:                end=4        for i in range(1, 5):            if i == start:                list.append("(")            list.append(f1.createNum())            if i == end:                list.append(")")            list.append(f2.createOperator())        list.pop()    else:        list.append(f1.createNum())        list.append(f2.createOperator())        list.append(f1.createNum())    return  list

 

  逆波兰式生成:

def toRPN(self,list):    right = []    aStack = []    position = 0    while True:        if self.isOperator(list[position]):            if list ==[] or list[position] == "(" :                aStack.append(list[position])            else:                if list[position] == ")":                    while True:                        if aStack != [] and aStack[-1] !="(" :                            operator = aStack.pop()                            right.append(operator)                        else :                            if aStack !=[]:                                aStack.pop()                            break                else:                    while True:                        if aStack != [] and self.priority(list[position],aStack[-1]):                            operator = aStack.pop()                            if operator != "(":                                right.append(operator)                        else:                            break                    aStack.append(list[position])        else:            right.append(list[position])        position = position +1        if position >= len(list):            break    while aStack != []:        operator = aStack.pop()        if operator != "(":            right.append(operator)    return  right

  测试运行:

主界面

 

 

 

功能选择:   

 

题目:

答案:

psp

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

转载于:https://www.cnblogs.com/yekainull/p/10563452.html

你可能感兴趣的文章
Trafficserver Cluster模式
查看>>
亚马逊推出 Blox,用于 EC2 容器服务的开源工具集合
查看>>
Linux:在中国没有真正的新闻
查看>>
iOS推送功能极光推送的介绍与实现
查看>>
单用户模式与grub加密
查看>>
Chromium Graphics: 3D上下文及其虚拟化 - Part I
查看>>
jquery javascript获得网页的高度和宽度
查看>>
2019 -2-15 复习
查看>>
vim锁定屏幕
查看>>
实用的 JavaScript 调试小技巧
查看>>
027移除元素
查看>>
Linux下清理内存和Cache方法
查看>>
CodeVS 1018 单词接龙(DFS)
查看>>
我的博客园的CSS和html设置
查看>>
工作中简单的kettle使用
查看>>
spark shuffle:分区原理及相关的疑问
查看>>
Laravel5.5 使用第三方Vendor添加注册验证码
查看>>
06- Linux下sublime下载与使用
查看>>
前端文摘:Web 开发模式演变历史和趋势
查看>>
将图片序列转化为视频文件
查看>>