随机四则运算的出题程序java

一、设计思想

1.功能较多必须有菜单选择项,将一个大程序分为若干个功能模块的小程序,逐个实现
2.针对题目避免重复时先将已生成的算式保存,然后将下一条生成的式子进行判断是否已生成,
如果生成则返回循环语句的上一条,重新生成四则运算式子。
3.针对可定制,可以申请动态存储内存,通过用户输入来完成定制。
4.针对可以控制参数,相对菜单,每个菜单功能对应一个控制参数,每个参数功能对应一个函数通过switch语句判断。
4.1针对是否有乘除法、通过用户选择,来确定,实现是通过定义运算符号定义顺序
如Fuhao={+,-,*,/}产生循环式可产生前两条和前四条运算
其它以此有针对性地进行算法分析实现

二、代码

package com.minirisoft;
import java.util.*;
public class Sizeyunsuan {
	public static void main(String[] args){	
		Scanner input=new Scanner(System.in);
		System.out.println("请输入要输出多少道运算题");
		int h=input.nextInt();
		String [] arr1=new String[h];
		System.out.println("请输入你要计算数的最大值");
		int g=input.nextInt();
		System.out.println("**************菜单选择程序****************");
		System.out.println("请选择要使用的功能:");
		System.out.println("1.   整数加减法运算!");
		System.out.println("2.   整数四则运算!");
		System.out.println("3.   分数的加减运算");
		System.out.println("4.   分数的四则运算");
		System.out.println(" *********************************************");
		Random random = new Random();
	    char arr[] = {'+','-','*','/'};
		int a=input.nextInt();
		switch(a){	
		case 1:
		{
			 System.out.println("请选择减法是否有负数;0:无负数,1:有负数");
			 int f=input.nextInt();
			 int i;
			 switch(f)
			 {
			 case 0:
			 {
				 for(i=0;i<h;i++)
		         {
					 String str=random.nextInt(g)+" "+arr[random.nextInt(2)]+" "+random.nextInt(g)+"=";
					 
					
					 System.out.println(str);
		         }
				 break;
			 }
			 case 1: 
			 {
		         for(i=0;i<h;i++)
		         {
		            System.out.println(-random.nextInt()%g+" "+arr[random.nextInt(2)]+" "+(-random.nextInt())%g+"=");
		         }
		         break;
			 }
		     default:
		         System.out.println("输入的数有误,请输入0或1");
			 }
		     break;
		}
		case 2:
		{
			System.out.println("**************四则运算菜单选择程序****************");
			System.out.println("请选择要使用的功能:");
			System.out.println("1.   正整数无余数四则运算!");
			System.out.println("2.   可负整数无余数四则运算!");
			System.out.println("3.   正整数可有余数四则运算");
			System.out.println("4.   可负整数可有余数四则运算");
			System.out.println(" *********************************************");
			int f=input.nextInt();
			 switch(f)
			 {
			 case 1:
			 {
				 for(int i=0;i<h;i++)
		         {
					 int u=random.nextInt(g);
			         int v=random.nextInt(g)+1;
			         char w=arr[random.nextInt(4)];
			         if(u%v==0 && w=='/'){
			        	 System.out.println(u+" "+w+" "+v+"=");
			         }
		            else
		            	System.out.println(u+" "+arr[random.nextInt(3)]+" "+v+"=");
		         }
				 break;
			 }
			 case 2: 
			 {
				 for(int i=0;i<h;i++)
		         {
					 int u=-random.nextInt()%g;
			         int v=-random.nextInt()%g;
			         char w=arr[random.nextInt(4)];
			         if(v!=0 && u%v==0 && w=='/' )
			        	 System.out.println(u+" "+w+" "+v+"=");
		            else
		            	System.out.println(u+" "+arr[random.nextInt(3)]+" "+v+"=");
		         }
				 break;
			 }
			 case 3:
			 {
				 for(int i=0;i<h;i++)
		         {
					 int u=random.nextInt(g);
			         int v=random.nextInt(g)+1;
			         char w=arr[random.nextInt(4)];
			         System.out.println(u+" "+w+" "+v+"=");
		         }
				 break;
			 }
			 case 4:
			 {
				 for(int i=0;i<h;i++)
				 {
				 int u=-random.nextInt()%g;
		         int v=-random.nextInt()%g;
		         char w=arr[random.nextInt(4)];
		         System.out.println(u+" "+w+" "+v+"=");
				 }
				 break;
			 }
		     default:
		         System.out.print("输入的数有误,请输入1--4的整数");
			 }
			
		}
		case 3:
		{
			System.out.println("请选择减法是否有负数;0:无负数,1:有负数");
			 int f=input.nextInt();
			 switch(f)
			 {
			 case 0:
			 {
				 for(int i=0;i<h;i++)
		         {
		            System.out.println(random.nextInt(g)+"/"+random.nextInt(g)+1+" "+arr[random.nextInt(2)]+" "+random.nextInt(g)+"/"+random.nextInt(g)+1+"=");
		         }
				 break;
			 }
			 case 1: 
			 {
		         for(int i=0;i<h;i++)
		         {
		            System.out.println(-random.nextInt()%g+"/"+random.nextInt(g)+1+" "+arr[random.nextInt(2)]+" "+-random.nextInt()%g+"/"+random.nextInt(g)+1+"=");
		         }
		         break;
			 }
		     default:
		         System.out.println("输入的数有误,请输入0或1");
			 }
			break;
		}
		case 4:
		{
			System.out.println("**************四则运算菜单选择程序****************");
			System.out.println("请选择要使用的功能:");
			System.out.println("1.   正分数四则运算!");
			System.out.println("2.   可负分数四则运算!");
			System.out.println(" *********************************************");
			int f=input.nextInt();
			 switch(f)
			 {
			 case 1:
			 {
				 for(int i=0;i<h;i++)
		         {
					 int u=random.nextInt(g);
			         int v=random.nextInt(g)+1;
			         int x=random.nextInt(g);
			         int y=random.nextInt(g)+1;
			         char w=arr[random.nextInt(4)];
		            System.out.println(u+"/"+v+" "+w+" "+x+"/"+y+"=");
		         }
				 break;
			 }
			 case 2: 
			 {
				 for(int i=0;i<h;i++)
		         {
					 int u=-random.nextInt()%g;
			         int v=-random.nextInt()%g;
			         int x=-random.nextInt()%g;
			         int y=-random.nextInt()%g;
			         char w=arr[random.nextInt(4)];
			         if(v!=0 && w=='/' )
			        	 System.out.println(u+"/"+v+" "+w+" "+x+"/"+y+"=");
		            else
		            	System.out.println(u+"/"+v+" "+arr[random.nextInt(3)]+" "+x+"/"+y+"=");
		         }
				 break;
			 }
		     default:
		         System.out.print("输入的数有误,请输入1或2");
			 }
			 break;
		}
		 default:
			 System.out.println("输入的数有误,请输入1--4的整数");
		}    	
	}
}

 三、实现截图

四、PSP0级 记录表

一、项目计划总结:

 

周活动总结表

姓名:杨广鑫                                            日期:2015.3.13

日期       任务

听课

编写程序

阅读课本

准备考试

 

 

日总计

周日

 

 

 

 

 

 

 

周一

 

 

 

 

 

 

 

周二

 100

 60

 20

 

 

 

 180

周三

 

 120

 

 

 

 

120

周四

 

 

 10

 

 

 

10

周五

 100

 50

 15

 

 

 

 165

周六

 

 45

 

 

 

 

45

周总结

 200

 275

 45

 

 

 

 520

阶段时间和效率                                            周数(上一次周活动表的周数+1):

不包括上一周在内的累计时间                                                                         

总计

 

 

 

 

 

 

 

平均

 

 

 

 

 

 

 

最大

 

 

 

 

 

 

 

最小

 

 

 

 

 

 

 

以前各周的累计时间                                                                                    

总计

 200

 275

  45

 

 

 

 520

平均

 200

 275

  45

 

 

 

 520

最大

 200

 275

  45

 

 

 

 520

最小

 200

 275

  45

 

 

 

 520

二、时间记录表:

学生        杨广鑫                                             日期   2015313 

教师        王建民                                             课程           PSP       

日期

开始时间

结束时间

中断时间

净时间

活动

备注

 3.10

 19:15

 20:15

 

60

编程序 

作业 

 3.11

1430

2114

 有

 120

 编程序

作业

 3.12

 

 

 

 

 

3.13

1850

1940

50

完善程序

作业

 3.14

 9:10

9:55

 

45

完善程序

 作业

 

 

 

 

 

 

 

 

三、缺陷记录日志:

学生     杨广鑫      

日期     2015313  

教员       王建民   

程序号                

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

 3.10

 1

 a2

运行

运行之后马上

1min

 

 在输入时未导入java.util.*

 3.10

 2

a3

编译

 编译

1min

 

 在判断ifph[] == 1)条件时,==写成=

 3.10

 3

B1

运行

运行之后

3min

 

 在运行时,输出的结果虽然正确,但格式却不正确,行间距混乱

 3.12

4

a1

编译

编译

1min

 

漏掉;

3.13

5

B2

运行

运行之后

15min

 

在运行时,输出的格式不是按要求的输出的,原因是if语句插入的位置不正确

 

五、体会心得

在编程过程中出现很多问题。比如一个算法感觉逻辑上没问题,代码也没错误,但是程序结果就不按照自己的想法去实现;

另外对java编程还很不熟练,对于一些简单的函数还得查阅资料,才能写出。

由于原来是用c++写程序的,现在用java感觉一些编程有细微差距,还需要适应java。

 

posted @ 2015-03-15 11:24  杨广鑫  阅读(1392)  评论(2编辑  收藏  举报