继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

达达租车系统

慕神1332585
关注TA
已关注
手记 1
粉丝 14
获赞 133
**Car.java**//车(包括所有车型)
package com.carSystem;

public class Car {

    private String name;//汽车名
    private double money;//租金
//  private String day;  天数是客户自己定的,不需要系统设定
    private int person;//载客数
    private double weight;//载货量
    private int Number;//序号
    //get set方法  
    //JAVA面向对象编程中的封闭性和安全性。封闭性即对类中的域变量进行封闭操作,即用private来修饰他们,
    //如此一来其他类则不能对该变量访问。
    //这样我们就将这些变量封闭在了类内部,这样就提高了数据的安全性
    //当我们想要操作这些域变量怎么办呢?我们可以通过两种方法,第一中即通过public方式的构造器(或称构造函数),
    //对象一实例化就对该变量赋值。
    //  第二种就是通过上面提到的set和get方法
     public int getNumber(){
          return Number;
      }
      public void setNumber(int Number){
          this.Number=Number;
      }

    public String getName(){

        return name;

    }
  public void setName(String name){

        this.name=name;

    }
  public double getMoney(){

      return money;
  }
  public void setMoney(double money){

      this.money=money;
  }
  public int getPerson(){
      return person;

  }
  public void setPerson(int person){

      this.person=person;
  }
  public double getWeight(){
      return weight;
  }
  public void setWeight(double weight){
      this.weight=weight;
  }

}

**Bus.java**//公交
package com.carSystem;

public class Bus extends Car {

    private String name;
    private int person;
    private double money;
    private int Number;
//  构造函数  初始化值  1.构造函数必须与类同名(如果一个源文件中有多个类,那么构造函数必须与公共类同名)
//  2.每个类可以有一个以上的构造函数
//  3.构造函数可以有0个、1个或1个以上的参数
//  4.构造函数没有返回值
//  5.构造函数总是伴随着new 新对象操作一起调用
        public Bus(int Number,String name, int person, double money){
        this.name=name;
        this.person=person;
        this.money=money;
        this.Number=Number;
    }
         public int getNumber(){
              return Number;
          }
          public void setNumber(int Number){
              this.Number=Number;
          }

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;

    }
    public int getPerson(){
        return person;
    }
    public void setPerson(int person){
        this.person=person;

    }
    public double getMoney(){
        return money;
    }

    public void setMoney(double money){
        this.money=money;
    }

}

**LittleCar.java**//小车
package com.carSystem;

public class LittleCar extends Car {

    private String name;
    private int person;
    private double money;
    private int Number;
//  构造函数  初始化值  1.构造函数必须与类同名(如果一个源文件中有多个类,那么构造函数必须与公共类同名)
//  2.每个类可以有一个以上的构造函数
//  3.构造函数可以有0个、1个或1个以上的参数
//  4.构造函数没有返回值
//  5.构造函数总是伴随着new 新对象操作一起调用
        public LittleCar(int Number,String name, int person, double money){
        this.name=name;
        this.person=person;
        this.money=money;
        this.Number=Number;
    }
        public int getNumber(){
              return Number;
          }
          public void setNumber(int Number){
              this.Number=Number;
          }

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;

    }
    public int getPerson(){
        return person;
    }
    public void setPerson(int person){
        this.person=person;

    }
    public double getMoney(){
        return money;
    }

    public void setMoney(double money){
        this.money=money;
    }

}

**Lorry.java**//重型卡车(货车)
package com.carSystem;

public class Lorry extends Car {

    private String name;
    private int person;
    private double money;
    private double weight;
    private int Number;
//  构造函数  初始化值  1.构造函数必须与类同名(如果一个源文件中有多个类,那么构造函数必须与公共类同名)
//  2.每个类可以有一个以上的构造函数
//  3.构造函数可以有0个、1个或1个以上的参数
//  4.构造函数没有返回值
//  5.构造函数总是伴随着new 新对象操作一起调用
        public Lorry(int Number,String name, int person, double money,double weight){
        this.name=name;
        this.person=person;
        this.money=money;
        this.weight=weight;
        this.Number=Number;
    }

    public int getNumber(){
              return Number;
          }
          public void setNumber(int Number){
              this.Number=Number;
          }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;

    }
    public int getPerson(){
        return person;
    }
    public void setPerson(int person){
        this.person=person;

    }
    public double getMoney(){
        return money;
    }

    public void setMoney(double money){
        this.money=money;
    }

    public double getWeight(){
        return weight;
    }

    public void setWeight(double weight){
        this.weight=weight;
    }

}

**PickUp.java**//皮卡
package com.carSystem;

public class PickUp extends Car {

    private String name;
    private int person;
    private double money;
    private double weight;
    private int Number;
//  构造函数  初始化值  1.构造函数必须与类同名(如果一个源文件中有多个类,那么构造函数必须与公共类同名)
//  2.每个类可以有一个以上的构造函数
//  3.构造函数可以有0个、1个或1个以上的参数
//  4.构造函数没有返回值
//  5.构造函数总是伴随着new 新对象操作一起调用
        public PickUp(int Number,String name, int person, double money,double weight){
        this.name=name;
        this.person=person;
        this.money=money;
        this.weight=weight;
        this.Number=Number;
    }

        public int getNumber(){
              return Number;
          }
          public void setNumber(int Number){
              this.Number=Number;
          }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;

    }
    public int getPerson(){
        return person;
    }
    public void setPerson(int person){
        this.person=person;

    }
    public double getMoney(){
        return money;
    }

    public void setMoney(double money){
        this.money=money;
    }

    public double getWeight(){
        return weight;
    }

    public void setWeight(double weight){
        this.weight=weight;
    }

}

**InitailCar.java**//main函数文件
package com.carSystem;

import java.util.Scanner;//导入Scanner包

public class InitailCar {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.println("您是否想要租车?是:1      否:2");
//扫描从控制台输入的字符,Scanner是用于扫描输入文本的类名,input仅仅是对象名,你可以换成任意的非java保留
//如a、b、c都行,new是给对象new(开辟)一个空间存储扫描进来的东西
//System.in 是PrintStream(字节打印流)的一个实例 ,只能按字节读取   
        //一句Scanner scan=new Scanner(System.in)之后,下面不需要再重复
       Scanner scan=new Scanner(System.in);
        int inputNum=scan.nextInt();
        //要注意是"==",而不是"="
        if (inputNum==1){

            System.out.println("以下是可租车的类型与其价格表");
/*          \n 回车换行 
            \t 横向跳到下一制表位置 
            \v 竖向跳格 垂直制表符 
            \b 退格 
            \r 回车 
            \f 走纸换页 
            \\ 反斜线符"\" 
            \' 单引号符 
            \a 鸣铃 */
            System.out.println("汽车名称"+"\t"+"载客数"+"\t"+"租金/天"+"\t"+"载货量");
            //int[] a = {1,2,3,4};
            //int[] a = new int[]{1,2,3,4};两者相同,定义时直接初始化数组
            //JAVA 里面的数组名是一个引用变量,引用变量是放在是放在一个栈里面,而JAVA数组本身就是对象,
            //Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
            //所以如果不new一下,就无法得到这个数组,即引用变量没有引用的对象。
            //而在C++中,数组名实际上是数组的首地址,是一个指针,数组在声明之后就已经生成了这个数组对象。就不用new了
            Car [] carMessage={new LittleCar(1,"奥迪A4",5,500),new LittleCar(2,"马自达6",4,400),new Bus(3,"金龙客车",25,800),new Lorry(4,"松花江",4,400,5),new Lorry(5,"依维柯",4,1000,10),new PickUp(6,"皮卡雪6",3,450,2)};
            //for each语句   Car是引用Car.java    i为变量名        carMessage为数组名
            for(Car i:carMessage){
                if(i instanceof LittleCar){
                    System.out.println(i.getNumber()+"."+i.getName()+"\t"+i.getPerson()+"\t"+i.getMoney());
                }
                if(i instanceof Bus){
                    System.out.println(i.getNumber()+i.getName()+"\t"+i.getPerson()+"\t"+i.getMoney());
                }
                if(i instanceof Lorry){
                    System.out.println(i.getNumber()+i.getName()+"\t"+i.getPerson()+"\t"+i.getMoney()+"\t"+i.getWeight());
                }
                if(i instanceof PickUp){
                    System.out.println(i.getNumber()+i.getName()+"\t"+i.getPerson()+"\t"+i.getMoney()+"\t"+i.getWeight());
                }
            }
            System.out.println("请输入你要租车的数量");
            int count=scan.nextInt();
            int totalPerson=0;
            double totalWeight=0;
            double totalMoney=0;
            for(int p=0;p<count;p++){
                System.out.println("请输入你要选择的第"+(p+1)+"辆车的序号");
                //System.out.println("1.奥迪A4"+"\t"+"2.马自达6"+"\t"+"3.金龙客车"+"\t"+"4.松花江"+"\t"+"5.依维柯"+"\t"+"6.皮卡雪6");
                int chooseNum=scan.nextInt();
                System.out.println("你选的是车型是:");
                //数组的引用,[chooseNum-1]表示在数组carMessage中的第几个数
                if(carMessage[chooseNum-1]instanceof LittleCar){
                    System.out.println(carMessage[chooseNum-1].getName()+"\t"+carMessage[chooseNum-1].getPerson()+"\t"+carMessage[chooseNum-1].getMoney());
                    totalPerson+=carMessage[chooseNum-1].getPerson();
                    totalMoney+=carMessage[chooseNum-1].getMoney();
                }
                if(carMessage[chooseNum-1]instanceof Bus){
                    System.out.println(carMessage[chooseNum-1].getName()+"\t"+carMessage[chooseNum-1].getPerson()+"\t"+carMessage[chooseNum-1].getMoney());
                    totalPerson+=carMessage[chooseNum-1].getPerson();
                    totalMoney+=carMessage[chooseNum-1].getMoney();
                }
                if(carMessage[chooseNum-1]instanceof Lorry){
                    System.out.println(carMessage[chooseNum-1].getName()+"\t"+carMessage[chooseNum-1].getPerson()+"\t"+carMessage[chooseNum-1].getMoney()+"\t"+carMessage[chooseNum-1].getWeight());
                    totalPerson+=carMessage[chooseNum-1].getPerson();
                    totalMoney+=carMessage[chooseNum-1].getMoney();
                    totalWeight+=carMessage[chooseNum-1].getWeight();
                }
                if(carMessage[chooseNum-1]instanceof PickUp){
                    System.out.println(carMessage[chooseNum-1].getName()+"\t"+carMessage[chooseNum-1].getPerson()+"\t"+carMessage[chooseNum-1].getMoney()+"\t"+carMessage[chooseNum-1].getWeight());
                    totalPerson+=carMessage[chooseNum-1].getPerson();
                    totalMoney+=carMessage[chooseNum-1].getMoney();
                    totalWeight+=carMessage[chooseNum-1].getWeight();
                }
            }
            System.out.println("请输入你租车的天数");
            int days=scan.nextInt();
            //totalMoney=totalMoney*days;
            System.out.println("你组了"+count+"辆车");
            System.out.println("总载人数为:"+totalPerson+"人");
            System.out.println("总载货量为:"+totalWeight+"吨");
            System.out.println("总天数为"+days+"天");
            System.out.println("总租金为"+totalMoney*days+"元");

        }else if(inputNum==2){
                System.out.println("欢迎下次再来!");

        }else{
            System.out.println("您输入的信息有误!请重新输入!");

        }

        }

    }
打开App,阅读手记
56人推荐
发表评论
随时随地看视频慕课网APP

热门评论

还行,就是代码太臃肿了

还行,就是代码太臃肿了

汽车数量写入那有问题 下边的for循环里循环条件应该减一

查看全部评论