201571030142 四则运算

        GitHub项目地址:  https://github.com/SmileZhbb/zhaohb

一、需求分析

  • 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
  • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
  • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt中,不要输出额外信息文件目录与程序目录一致。
  • 扩展功能可以用:在算式中包含括号,计算存在真分数的式子。

二、功能分析

         (1) 根据提示输入数字m(即要产生的式子个数)。

         (2)输出学号且随机生成m个包含两个运算符的式子,计算结果。

         (3)将运算结果输出到指定文件result.txt中。

三、设计思路和过程

         (1) 键盘接收m,用random方法产生对应运算数的随机数和对应运算符的随机数;

         (2)利用do_whie循环判断生成的随机数是否符合表达式的条件,如果符合准备产生算式,如果不符合重新生成。

         (3)如果产生运算符的随机数为0,产生加法,赋值为question,计算出答案赋值为answer。随机数为1,产生减法,随机数为2,产生乘法,随机数为3,产生除法。

         (4)将question和answer赋值给datasourse,利用WriteToFile write=new WriteToFile("result.txt",datasourse)输出结果。

四、运行结果

     (1)在eclipse中运行代码如图所示:

 

      (2) result.txt中显示如下:

  

五、核心代码

			Scanner num =new Scanner(System.in);
			System.out.print("请输入个数:");  
		        m =num.nextInt();		       
	                ArrayList<String> datasourse=new ArrayList<String>();
	                String question=new String();
			Random r = new Random();
			Scanner in = new Scanner(System.in);
			System.out.println("学号:201571030142");
			for (int i = 1; i <= m; i++) {
				// 随机生成题目question(包括数据和符号),计算答案answer
				//String question = null;
				int answer = 0;
				int a, b, c,d;
				c = r.nextInt(4);
				do {
					a = r.nextInt(100);
					b = r.nextInt(100);
					d = r.nextInt(100);
				} while ((c == 3 && b == 0) 
						|| (c == 3 && a % b != 0)
						|| (c == 2 && a * b > 100) 
						|| (c == 1 && a < b)
						|| (c == 0 && a + b > 100));
				if (c == 0) {
					question = a + "+" + b +"+"+d;
					answer = a + b + d;
				} else if (c == 1) {
					question = a + "-" + b+"+"+d;
					answer = a - b + d;
				} else if (c == 2) {
					question = a + "*" + b+"*"+d;
					answer = a * b * d;
				} else {
					question = a + "/" + b+"*"+d;
					answer = a / b * d;
				}
				// 输出题目question
				datasourse.add(question+"="+answer);
				//System.out.println(i + ")"+ question + "="+answer);				
			}
		

 将question和answer赋值给datasourse,写入result.txt。

			for ( int i = 0; i < datasourse.size(); i++){
				  System.out.println(datasourse.get(i));				 
				}
			WriteToFile write=new WriteToFile(
					"result.txt",datasourse);
			System.out.println("已写入result.txt!");

六、小结

          在本次实验设计中,发现了自己的很多不足:

          (1)java基础知识点掌握不牢固,知识模糊,结构混乱。

          (2)动手能力太差,面对一个问题,不知道如何去实现它,参考大量资料才完成此次作业。

          (3)实验过程设计简单,部分功能不太完善。

          在这次设计实验过程中,遇到了很多问题。这都是值得我反思的。为什么不知道这个结构?为什么老是出现bug?在今后的学习中,应当认真学习,

    重新改进,在下一次的实验设计中,能够更好的完成。

          学到的知识点:

          java写入文件有三种方法:

                     FileWriter fileWritter = new FileWriter();

                     BufferedWriter bw = new BufferedWriter();

                     FileOutputStream写入文件

七、PSP

PSP2.1任务内容计划完成需要的时间(min)实际完成需要的时间(min)
Planning计划 3060
Estimate 估计这个任务需要多少时间,并规划大致工作步骤  2040
Development开发240 600
Analysis 需求分析 (包括学习新技术)20 20
Design Spec生成设计文档  20 30
Design Review 设计复审 (和同事审核设计文档) 2030
Coding Standard代码规范 (为目前的开发制定合适的规范)  30 60
Design具体设计 4060
Coding具体编码300 400
Code Review代码复审 20 20
Test测试(自我测试,修改代码,提交修改) 30 40
 Reporting报告 30 45
Test Report测试报告 10 20
Size Measurement计算工作量 5 5
Postmortem & Process Improvement Plan事后总结 ,并提出过程改进计划 58

转载于:https://www.cnblogs.com/SmileZhb/p/8614616.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值