结对项目:自动生成小学四则运算题目程序
=================
这个作业属于哪个课程 | 软件工程 |
---|---|
作业要求 | 作业要求 |
Github | Github链接 |
小队成员 | |
这个作业的目标 | 熟悉结对编程,实现自动生成小学四则运算题目程序,对给定的题目文件和答案文件,判定答案中的对错并进行数量统计 |
核心功能实现
1. 生成题目
实现思路:
随机生成参数列表和运算符列表
判断算式是否存在括号
if 存在不括号:
返回获取到的无括号算式
else:
返回获取到的括号算式
算式存在括号
括号数为1时
利用 **random.randint(0, len(op_list) - 1)**来决定左括号的位置
利用 **random.randint(left_bracket_index + 1, len(parameter_list) - 1)**来决定右括号的位置括号数为2时
随机获取括号类型
if 括号类型为并列:
循环获取参数列表和运算符列表获取到算式时,在相应的的位置插入括号,即:( A +B ) + ( C + D )
else 括号类型为嵌套:
先确定外层括号的位置,再利用递归,传递外层括号里的子字符串,从而确定内从括号,最终得到嵌套括号的算式
流程图
代码截图
######生成一万道题目生成
2. 计算
实现思路
先处理算式,得到参数和操作符组成的列表,例如:' 1 + 2' 处理成 ['1', '2', '3']创建数字栈和操作符栈进行循环获取算式列表如果是数字则压入数字栈如果是操作符while True 的循环如果操作符栈为空,或者运算符为 '(' 时入栈,break如果当前操作符的优先级比栈顶操作符的优先级高入栈,break如果当前操作符为 ')',且栈顶操作符为 '(''(' 出栈,丢掉 ')',break如果当前操作符的优先级比栈顶操作符的优先级低获得数字栈最后两个元素、操作符栈最后一个元素,进行计算如果除数为零、被除数大于除数、结果为负数return Error得到结果入栈if 循环之后如果数字栈和操作符栈还有内容while 直到操作符栈不为空:计算如果除数为零、被除数大于除数、结果为负数,return Error得到的结果入栈数字栈的元素就是计算得出的结果
流程图
代码截图
3. 多线程查询是否存在生成重复问题
部分代码截图
功能运行
命令行参数
python Myapp.py [args|args]
[args]
├─ -h --help # 输出帮助信息
├─ -n # 指定生成表达式数量,默认10
├─ -r # 指定生成表达式各个数字的取值范围,默认10
├─ -e # 需和-a参数共同使用进行批改,指定练习文件
├─ -a # 需和-e参数共同使用进行批改,指定答案文件
└─ -g # 开启GUI
命令行界面
1. -h
2. -r -n (也可以只输入一个参数)
3. -e -a (需要同时输入两个参数)
GUI 界面(-g)
####采用了多线程的界面,任何操作不会阻塞其他操作,例如:可以在生成答案的同时批改作业,支持一万道题目的生成等等
1. 生成题目以及在线做题(有验证答案和查看答案两个功能)
2. 设置题目数量以及范围(默认两个值都为10)
3. 检查题目答案(输入两个文件路径即可开始检查)
单元测试
样例及输出结果
异常处理
命令行输入参数错误
GUI输入错误
性能分析
GUI界面性能
生成题目
- 采用多线程生成题目,当生成题目过大时更换更为简便的判断生成重复问题函数
检查答案对错
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 100 | 80 |
· Estimate | · 估计这个任务需要多少时间 | 100 | 80 |
Development | 开发 | 1680 | 2110 |
· Analysis | · 需求分析 (包括学习新技术) | 40 | 30 |
· Design Spec | · 生成设计文档 | 100 | 70 |
· Design Review | · 需求分析 (包括学习新技术) | 80 | 100 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 90 |
· Design | · 具体设计 | 100 | 120 |
· Coding | · 具体编码 | 800 | 1050 |
· Code Review | · 代码复审 | 250 | 300 |
· Test | · 测试(自我测试,修改代码,提交修改) | 250 | 350 |
Reporting | 报告 | 100 | 90 |
· Test Repor | · 测试报告 | 20 | 20 |
· Size Measurement | · 计算工作量 | 20 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 50 |
· 合计 | 1880 | 2280 |
结对项目:自动生成小学四则运算题目程序相关推荐
- 结对项目——自动生成小学四则运算题目的命令行程序(基于Python)
这个作业属于课程 软件工程 这个作业的要求在哪里 结对项目 这个作业的目标是 实现一个自动生成小学四则运算题目的命令行程序 成员 3118005408 方俊涛 .3118005409 冯宇航 GitH ...
- myapp——自动生成小学四则运算题目的命令行程序(侯国鑫 谢嘉帆)
1.Github项目地址 https://github.com/baiyexing/myapp.git 2.功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 功能(已全部实现) 使用 -n ...
- 自动生成小学四则运算题目的程序.心得体会
http://t.cn/RAS67B0 源代码 #include<stdio.h> #include<stdlib.h> #include<time.h> main ...
- 计算式二级python_python实现自动生成小学四则运算题目(软工第二次项目作业)...
前言 软件工程 作业要求 作业目标 结对编程:代码实现.性能分析.异常处理说明.记录PSP表格 代码见: github 个人信息:朱育清 3118005437 信安二班 我的partner 个人信息: ...
- 自动生成小学四则运算题目
c++语言 思想:首先用rand产生随机数,for循环确定出题的数量,然后根据两个随机数相加除以4的余数来确定随机产生运算符号. 代码: #include<iostream> using ...
- 软件工程关于自动生成四则运算题目程序的见解
1.需求分析 一个程序员在编写程序前第一件事就是要知道我要编写的程序是要干什么的,它要那些功能. 题目中要求一个能自动生成小学四则运算题目的程序,分析起来很简单,做起来也很简单. 2.实施 由于是小学 ...
- java实现加减乘除运算符随机生成十道题并判断对错_简单小程序——产生三十道小学四则运算题目...
题目要求程序可以生成三十道小学四则运算题目. 因为要随机生成题目,则需要产生随机数,因此我上网搜索了生成随机数的方法,选择了使用Random类得到规定范围内的随机数.因为一个运算需要三个元素,两个参与 ...
- 个人项目——二柱子的生成小学生四则运算题程序
二柱子的生成小学生四则运算题程序 一.程序要求 1.自动生成30道小学生四则运算题 2.除了整数外,还要可以生成真分数的四则运算 二.程序设计思想 程序分两个部分:整数部分和分数部分 1.定义变量:第 ...
- 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档
Swagger是一个描述RESTful的Web API的规范和框架.如果使用ASP.NET的话,可以用Swashbuckle来自动生成Swagger,具体参考如何使 WebAPI 自动生成漂亮又实用在 ...
最新文章
- YSLOW法则中,为什么yahoo推荐用GET代替POST?
- oracle 物化视图 --转
- 物联网安防技术融合在细分领域的应用分析
- 搜狗520甜蜜告白攻势:爱的心动 让她看见
- Android 硬编码
- iphone/ipad 连接smb服务器,备份照片
- Spring Boot 定制个性 banner
- allure趋势图无数据
- unity通过点击按钮获取手机验证码
- Android websocket闪退,退出手机浏览器,websocket会自动关闭,不是长持续吗
- 基于Python的离线OCR图片文字识别(四)——支持txt文件指定路径保存
- 怎么设置虚拟拨号服务器,如何设置PPPoE上网(ADSL虚拟拨号)
- ncut matlab,matlab call Ncut: Matrix is too large to convert to linear index.
- securefx显示linux目录,使用secureFX连接到linux上需要在linux上配置什么
- 远程视频监控如何实现 需要哪些条件
- 【博文】:甲骨文收购AMD的缘由
- linux自带网络监控,在Linux中如何通过nload来监控网络使用情况
- 感动全世界的一个童话 【看懂的算情圣了】
- 企业OA移动办公为何首选手机APP?
- 有趣的微分方程之伯努利方程