20194705-自动生成四则运算题第一版报告

一、需求分析

  家长为了减少锻炼小学生的出题时间,简化自己的时间效率,于是利用程序写出自动生成运算题。这不仅仅可以减少家长的时间、也能为老师提供一个简单快速的出题方式。

二、功能设计

(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中

三、设计实现

其中文件写入需要FileWriter对象、随机生成数字需使用到Math.random()函数,使用for switch、if等函数判断运行条件。

四、测试运行

1791052-20190916214212830-1657330094.png

1791052-20190916214219400-1368709372.png

五、代码片段

1.去掉重复的题排除结果为负数、超一百的数

    if (c >= 100 || c < 0) {//排除超过100、负数的情况
                i--;
                continue;
            }
             //将题以字符方式拼接 
            String h = m + "" + operachar + n + "=";
             //去掉重复的题
            if (write_file.contains(h)) {
                i--;
                continue;
            }   

2.随机产生运算符

char[] opera_all = { '*', '/', '+', '-' };//选择进行运算的运算符、选择随机符号
        char operachar;
        String write_file = "";//要写入文件的字符
        int m , n , c =0;//定义 m,n 两个运算数 ,c是m和n 运算操作的结果
        //进行10次循环
        for (int i = 0; i < 10; i++) {
            //每次产生随机数(从数组取运算符号)
            int ope = num.nextInt(4);
            operachar = opera_all[ope];

3.打开文件写入及关闭

    
        write_file = write_file +"第"+(i+1)+"题:"+h + " " + "\n"; //写入操作
        
        f.write(write_file);//写入文件
        
        f.close();//文件关闭

六、总结

先计划好,再从基本功能开始,慢慢完善功能和代码。

七、PSP

PSP2.1任务内容计划共完成需要的时间(min)实际完成需要的时间(min)
Planning计划130120
Estimate估计这个任务需要多少时间,并规划大致工作步骤110130
Development开发2020
Analysis需求分析 (包括学习新技术)1820
Design Spec生成设计文档108
Design Review设计复审 (和同事审核设计文档)1015
Coding Standard代码规范 (为目前的开发制定合适的规范)1015
Design具体设计2023
Coding具体编码6066
Code Review代码复审1013
Test测试(自我测试,修改代码,提交修改)1116
Reporting报告1010
Test Report测试报告88
Size Measurement计算工作量88
Postmortem & Process Improvement Plan事后总结 ,并提出过程改进计划1015

转载于:https://www.cnblogs.com/dongdi/p/11530534.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于 Python 的自动生成四则运算目的程序实现方案: ```python import random # 定义运算符 operators = ['+', '-', '*', '/'] # 定义数字范围 min_num = 1 max_num = 100 # 定义生成表达式的函数 def generate_expression(): # 随机生成两个数字 num1 = random.randint(min_num, max_num) num2 = random.randint(min_num, max_num) # 随机选择一个运算符 op = random.choice(operators) # 生成表达式字符串 expression = "{} {} {}".format(num1, op, num2) # 返回表达式字符串和答案 if op == '+': answer = num1 + num2 elif op == '-': answer = num1 - num2 elif op == '*': answer = num1 * num2 else: answer = num1 / num2 return expression, answer # 定义生成表达式列表的函数 def generate_expressions(num): expressions = [] answers = [] for i in range(num): expression, answer = generate_expression() expressions.append(expression) answers.append(answer) return expressions, answers # 定义检查答案的函数 def check_answer(expression, answer, user_answer): if answer == user_answer: print("{} = {},回答正确!".format(expression, user_answer)) return 1 else: print("{} = {},回答错误!正确答案为 {}。".format(expression, user_answer, answer)) return 0 # 定义运行测试的函数 def run_test(): # 用户输入条件 num = int(input("请输入目数量:")) operators_str = input("请输入要使用的运算符(+,-,*,/中的任意组合,例如'+-'表示使用加法和减法):") nums_range_str = input("请输入数字范围(用空格分隔,例如'1 100'表示使用1-100之间的数字):") # 解析用户输入条件 operators_to_use = [] for op in operators_str: if op in operators: operators_to_use.append(op) if not operators_to_use: operators_to_use = operators nums_range = nums_range_str.split() if len(nums_range) == 2: min_num = int(nums_range[0]) max_num = int(nums_range[1]) else: min_num = 1 max_num = 100 # 生成目 expressions, answers = generate_expressions(num) # 等待用户输入答案并检查 score = 0 for i in range(num): print("第{}:{}".format(i + 1, expressions[i])) user_answer = int(input("请输入答案:")) score += check_answer(expressions[i], answers[i], user_answer) # 计算得分并输出测试结果 print("测试结束,得分:{}/{}。".format(score, num)) # 运行测试程序 run_test() ``` 以上代码中,我们通过定义多个函数实现了生成四则运算表达式、生成指定数量的四则运算表达式、计算表达式答案、检查用户输入答案是否正确等功能,并通过一个 `run_test` 函数将这些功能组合起来,实现了一个简单的四则运算自动生成程序。您可以根据自己的需求和实际情况进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值