zoukankan      html  css  js  c++  java
  • 个人作业1——四则运算题目生成程序(基于控制台)

    一、需求分析

    (1)除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    (2)运算符为 +, −, ×, ÷;
    (3)并且要求能处理用户的输入,并判断对错,打分统计正确率;
    (4)要求能处理用户输入的真分数, 如 1/2, 5/12 等。

    二、功能设计

    (1)基本功能:
           需求分析的基础需求的全部
    (2)扩展功能:
           对于错误答案的四则算式,输出正确答案

    三、设计实现

    (1)能够实现生成整数和分数的式子并实现计算;
    (2)能够控制生成式子的个数;
    (3)能够实现判断对错并计算正确率。

    四、代码说明

    (1)求最大公约数

     int getNumerator(){
        	 return numerator;
        	 }
         
         int getDenominator(){
        	 return denominator;
        	 }
         
         int f(int a,int b){
        	 if(a < b){
        		 int c = a;
        		 a = b;
        		 b = c;
        		 }
        	 int r = a % b;
        	 while(r != 0){
        		 a = b;
        		 b = r;
        		 r = a % b;
        		 }
    	       return b;
    	       }
    

     (2)加减乘数四则运算

     Calculate add(Calculate r){
    		int a = r.getNumerator();
    		int b = r.getDenominator();
    		int newNumerator = numerator * b + denominator * a;
    		int newDenominator = denominator * b;
    	    Calculate result = new Calculate(newNumerator,newDenominator);
    	    return result;
    	    }
         
         Calculate sub(Calculate r){
        	 int a = r.getNumerator();
        	 int b = r.getDenominator();
        	 int newNumerator = numerator * b - denominator * a;
        	 int newDenominator = denominator * b;
        	 Calculate result = new Calculate(newNumerator,newDenominator);
        	 return result;
        	 }
         
         Calculate muti(Calculate r){
        	 int a = r.getNumerator();
        	 int b = r.getDenominator();
        	 int newNumerator = numerator * a;
        	 int newDenominator = denominator * b;
        	 Calculate result = new Calculate(newNumerator,newDenominator);
        	 return result;
         }
         
         Calculate div(Calculate r){
        	 int a = r.getNumerator();
        	 int b = r.getDenominator();
        	 int newNumerator = numerator * b;
        	 int newDenominator = denominator * a;
        	 Calculate result = new Calculate(newNumerator,newDenominator);
        	 return result;
         }
    

     (3)主函数随机生成运算题,由答题者输入计算答案,系统判定对错,若为错则给出正确答案

    public class Test {
    
    	public static void main(String[] args) {
    			int x,i;
    			System.out.println("请输入题目的数量");
    			Scanner scan=new Scanner(System.in);
    			x=scan.nextInt();
    			String shu[]=new String [x];
    			int z1,z2,P,m1,m2;
    			System.out.println("请输入分母的大小范围");
    			P=scan.nextInt();
    			
    			for(i=0;i<x;i++){
    				m1=1+(int)(Math.random()*P);//随机生成一个小于B的分母
    				z1=1+(int)(Math.random()*m1);//生成一个比分母小的分子,实现真分数
    				m2=1+(int)(Math.random()*P);//随机生成一个小于B的分母
    				z2=1+(int)(Math.random()*m2);//生成一个比分母小的分子,实现真分数
    				int c=(int)(Math.random()*3);//生成运算符
    				
    				Calculate r1=new Calculate(z1,m1);
    				Calculate r2=new Calculate(z2,m2);
    				Calculate result=new Calculate();
    				
    				if(c == 0){
    					int a,b;
    					System.out.println(z1+"/"+m1+"+"+z2+"/"+m2+"=");
    					result=r1.add(r2);
    					a = result.getNumerator();
    		    		b = result.getDenominator();
    		    		
    		    		Scanner sc0 = new Scanner(System.in);
    		    		String c1 = sc0.nextLine();
    		    		String c2=(a+"/"+b);
    		    		if(c1.equals(c2))
    		    			System.out.println("回答正确"+"
    ");  
    		    		else System.out.println("回答错误"+"
    "+"运算结果为:"+a+"/"+b);
    		    		}
    				
    				if(c == 1){
    					int a,b;
    					System.out.println(z1+"/"+m1+"-"+z2+"/"+m2+"=");
    					result=r1.sub(r2);
    					a = result.getNumerator();
    		    		b = result.getDenominator();
    		    		
    		    		Scanner sc1 = new Scanner(System.in);
    		    		String c1 = sc1.nextLine();
    		    		String c2=(a+"/"+b);
    		    		if(c1.equals(c2))
    		    			System.out.println("回答正确"+"
    "); 
    		    		else System.out.println("回答错误"+"
    "+"运算结果为:"+a+"/"+b);
    		    		}
    				
    				if(c == 2){
    					int a,b;
    					System.out.println(z1+"/"+m1+"x"+z2+"/"+m2+"=");
    					result=r1.muti(r2);
    					a = result.getNumerator();
    		    		b = result.getDenominator();
    		    		
    		    		Scanner sc2 = new Scanner(System.in);
    		    		String c1 = sc2.nextLine();
    		    		String c2=(a+"/"+b);
    		    		if(c1.equals(c2))
    		    			System.out.println("回答正确"+"
    ");  
    		    		else System.out.println("回答错误"+"
    "+"运算结果为:"+a+"/"+b);
    		    		}
    				
    				if(c == 3){
    					int a,b;
    					System.out.println(z1+"/"+m1+"÷"+z2+"/"+m2+"=");
    					result=r1.div(r2);
    					a = result.getNumerator();
    		    		b = result.getDenominator();
    		    		
    		    		Scanner sc3 = new Scanner(System.in);
    		    		String c1 = sc3.nextLine();
    		    		String c2=(a+"/"+b);
    		    		if(c1.equals(c2))
    		    			System.out.println("回答正确"+"
    "); 
    		    		else System.out.println("回答错误"+"
    "+"运算结果为:"+a+"/"+b);
    		    		}
    				}
    			}
    	}
    

    (5)结果展示

    (6)总结

    这次代码是软件工程的第一个作业,也是我大学以来真正自己绞尽脑汁写的代码,感受真的不太一样,虽然没有按时提交作业,但是助教的理解和鼓励给了我很多支持,还有舍友的不断帮忙,一起完成了这份代码,感谢!因为有了自己的思考而完成的代码,虽然在很多优秀的同学看来不过是很简单普通的代码,但是对于自己的意义却是完全不一样的,这份代码让我开始敢于迈出自我编程的第一步。加油!

  • 相关阅读:
    博客园 投放 谷歌广告(google adsense) 且不被屏蔽掉
    JAVA与C#程序调用DOS命令
    redhat 5 安装apache 2.2
    解决"Windows 安装程序不允许从远程桌面连接安装"
    测试使用windows live writer的adsense coder发布文章
    解决:apache 整合redmine 启动报错 mod_passenger.so: failed to map segment from shared object: Permission denied
    企业级安全服务权限控制 Acegi安装系统介绍 Spring Framework安全系统
    解决Rails升级问题
    解决MyEclipse 7开发EXTJS 每次保存都要编译js的导致开发效率很低的问题
    解决:redmine 安装 rake db:migrate encoding: utf8
  • 原文地址:https://www.cnblogs.com/zyt77/p/6551317.html
Copyright © 2011-2022 走看看