手记

答答租车系统,仅仅使用第二季的知识。自己两天完成

使用了三个私有公共变量,使用了两个接口,继承,多态也都用到。不使用集合,仅用第二季知识打造的答答租车。
Car父类

package com.sss;
/**
 * @Author  Spv
 * @Date      2016年7月20日 上午8:18:21
 * @Version 1.0
 *
 */
public abstract class Car {
    private int id;
    private String name;
    private int price;              //定义三个共性私有量

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }                                                                        //set跟get取得私有量的访问方式
    public abstract void getMessage();                 //定义抽象显示信息方法
    }

三个子类

package com.sss;
/**
 * @Author  Spv
 * @Date      2016年7月20日 上午8:32:47
 * @Version 1.0
 *
 */
public class Cargo extends Car implements IPCarryGoods{
    private int weight;            //增加载重车特有载重变量
@Override
public int carryGoods(){
    return weight;                  //重写接口的载货函数,返回载货量
}

public int getWeight() {
        return weight;
    }
    public void setWeight(int weight) {
        this.weight = weight;
    }
public Cargo(int id,String name,int weight,int price){
    this.setId(id);
    this.setName(name);
    this.setWeight(weight);                            //构造方法,设置车的属性,载重车增加重量赋值,后面同理。
    this.setPrice(price);

}
@Override
public void getMessage(){
    System.out.println(getId()+"\t"+getName()+"\t                "+"载货:"+weight+"吨"+"\t"+getPrice());
    //重写父类的显示信息函数,增加载货量
 }
}
package com.sss;
/**
 * @Author  Spv
 * @Date      2016年7月20日 上午8:23:07
 * @Version 1.0
 *
 */
public class PersonCar extends Car implements IPCarryPeople{
    private int person;                            //载人类车增加载人变量

    @Override
    public int carryPeople(){
        return person;                         //重写载人接口函数,返回载人数
    }

public int getPerson() {
        return person;
    }
    public void setPerson(int person) {
        this.person = person;
    }
public PersonCar(int id,String name,int person,int price){
    this.setId(id);
    this.setName(name);
    this.setPerson(person);
    this.setPrice(price);

}
@Override
public void getMessage(){
    System.out.println(getId()+"\t"+getName()+"\t"+"载人:"+person+"人"+"\t                "+getPrice());
    //重写父类显示函数,增加载人量显示。
 }
}
package com.sss;
/**
 * @Author  Spv
 * @Date      2016年7月20日 上午8:36:32
 * @Version 1.0
 *
 */
public class Pickup extends Car implements IPCarryGoods,IPCarryPeople{             //实现双接口
    private int person;
    private int weight;                          //增加载人载货变量

    @Override
    public int carryGoods(){
        return weight;                             //重写载货接口返回载重量
    }
    @Override
    public int carryPeople(){
        return person;                             //重写载人接口返回载人数
    }

    public int getPerson() {
        return person;
    }
    public void setPerson(int person) {
        this.person = person;
    }
    public int getWeight() {
        return weight;
    }
    public void setWeight(int weight) {
        this.weight = weight;
    }
    public Pickup(int id,String name,int person,int weight,int price){
        this.setId(id);
        this.setName(name);
        this.setPerson(person);
        this.setWeight(weight);
        this.setPrice(price);

    }
    @Override
    public void getMessage(){
        System.out.println(getId()+"\t"+getName()+"\t"+"载人:"+person+"人"+"\t"+"载货:"+weight+"吨"+"\t"+getPrice());
        //重写父类显示函数,增加载人载重显示
     }
    }

两个接口

package com.sss;
/**
 * @Author  Spv
 * @Date      2016年7月20日 上午11:03:49
 * @Version 1.0
 *
 */
public interface IPCarryGoods {
        public abstract int carryGoods();           //载货接口
    }
package com.sss;
/**
 * @Author  Spv
 * @Date      2016年7月20日 上午10:49:26
 * @Version 1.0
 *
 */
public interface IPCarryPeople {
    public abstract int carryPeople();   //载人接口
}

主程序

 package com.sss;

import java.util.Scanner;

/**
 * @Author  Spv
 * @Date      2016年7月20日 上午8:40:03
 * @Version 1.0
 *
 */
public class SystemSpv {
        static Car car1=new PersonCar(1, "奔驰", 5, 600);                 //这里我随便定义的名字跟重量什么的,当时状态好,不想去
        static Car car2=new PersonCar(2, "宝马", 5, 300);                //翻具体视频上什么值,灵感来了就顺着写下去,程序员的必杀技啊!
        static Car car3=new Cargo(3, "解放", 50, 500);
        static Car car4=new Cargo(4, "红牛", 80, 800);
        static Car car5=new Pickup(5, "皮卡", 3, 40, 200);
        static Car car6=new Pickup(6, "卡卡", 4, 10, 400);                 //多态赋值
        static Car[] cars={car1,car2,car3,car4,car5,car6};                   //实例化数组
        static void show(){                                                            //定义显示函数
        for(Car each:cars){                                                             //数组遍历的for each用法,一种可以简化遍历数组的方式。
            each.getMessage();                                                        //调用显示函数
            }
        }

        public static int getPeopleSum(Object o) {                          //定义获取总人数的方法
            if (o instanceof IPCarryPeople) {                                       //判断是否有载人量instance of是一种向下转换的类型判断函数,理解一下就好
             int peopleSum = 0;
             peopleSum += ((IPCarryPeople) o).carryPeople();             //有就进入计算,这里是强制类型转换,以方便调用返回人数的函数
             return peopleSum;
            } else {
            return 0;                                                                         //不具有载人量,返回值为0
             }
            }

        public static int getWeightSum(Object o) {                       // 这一部分同上 你们懂的
            if (o instanceof IPCarryGoods) {
             int WeightSum = 0;
             WeightSum += ((IPCarryGoods) o).carryGoods();
             return WeightSum;
            } else {
            return 0;
             }
            }

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("欢迎光临spv租车系统,租车请按1,返回请按其它。");
        int button=sc.nextInt();
        if(button==1){
            System.out.println("可租车项如下:");
            System.out.println("序号"+"\t"+"名字"+"\t"+"规格"+"\t"+"                       价格");
            show();                                                                       //我把方法都抽象成函数了,直接调用。
            System.out.println("请选择你要租车的数量:");

        int peopleSum=0;
        int weightSum=0;
        int priceSum=0;

        int num=sc.nextInt();
        for(int j=1;j<=num;j++){
            System.out.println("请输入第"+j+"辆车的序号");
            int id=sc.nextInt();

            peopleSum+=getPeopleSum(cars[id-1]);                           //同上计算总量直接调用函数
            weightSum+=getWeightSum(cars[id-1]);
            priceSum+=cars[id-1].getPrice();
        }

           System.out.println("请输入租车天数:");                             //这一部分都很easy你们能懂的。
           int day=sc.nextInt();
            priceSum=priceSum*day;
           System.out.println("您的账单:");
           System.out.println("共租车"+num+"辆,"+"共租车"+day+"天");
           System.out.println("一共可载"+peopleSum+"人,"+"一共载货"+weightSum+"吨");
           System.out.println("总价格"+priceSum+"元");
           sc.close();                                                                     //关闭键盘输入
          } else{
              System.out.println("即将退出系统");
          }
        }
    }
14人推荐
随时随地看视频
慕课网APP