慕课网学习项目之答答租车系统

来源:互联网 发布:棉先生衣服怎么样 知乎 编辑:程序博客网 时间:2024/06/08 07:31

答答租车系统


租车系统需求:

1.一个租车系统,有轿车,货车和皮卡三种。

轿车可以载人,不能载货。
货车可以载货,不能载人。
皮卡可以载货可以载人。

2.真是所有可以租的车辆。

3.选择车型,租车量

4.展示租车清单,包括总金额、总载货量及车型、总载人量及车型

分析:

一开始,想法是写两个接口,分别有载人属性和载货属性,然后轿车继承载人接口,货车继承载货接口,皮卡继承载人和载货接口,但是因为接口不能定义变量,这个想法不知道怎么进行下去了。

后来又想到只用继承的方法,写一个Car类,只有属性,各种类型的车可以在构造方法里给所需要的属性赋值就行了。于是就有了下面代码。





首先是Car类 只有各种属性就行了

package com.project01;public class Car {public String Type; //货车类型public int Money; //货车每天的单价public double GoodsHold;//载货量public int PersonHold; // 载人量}



然后是小轿车的类,继承Car类,然后在构造方法里给载人量PersonHold、货车类型Type和货车每天的单价Money这三个属性赋值

package com.project01;public class Carriage extends Car {public Carriage(String type, int money, int personhold) {Type = type;Money = money;PersonHold = personhold;// TODO Auto-generated constructor stub}}


同样的还有卡车类
package com.project01;public class Truck extends Car {public Truck(String type, int money , double goodsHold) {Type = type;Money = money;GoodsHold = goodsHold;// TODO Auto-generated constructor stub}}
皮卡类
package com.project01;public class Pickup extends Car {public Pickup(String type, int money, int personHold, double goodsHold) {Type = type;Money = money;PersonHold = personHold;GoodsHold = goodsHold;// TODO Auto-generated constructor stub}}


最后在实现里面:

1.首先输入卡车的信息,可以利用父类来指向子类的方法来实现,以方便管理。

int TypeCount = 3;  //汽车类型共3种Car arrCar[] = new Car[TypeCount];//车的信息输入部分Car car1 = new Carriage("宝马",800,6);Car car2 = new Truck("雪铁龙",700,8.0);Car car3 = new Pickup("红旗",650,4,6.0);arrCar[0] = car1;arrCar[1] = car2;arrCar[2] = car3;

2.判断是否正确进入系统:

一个简单的if

Scanner begin = new Scanner(System.in);System.out.println("欢迎使用答答租车系统!");System.out.println("您是否要租车?");System.out.println("1.是   2.否");int begin1 = begin.nextInt();if(begin1 == 2){System.out.println("程序结束,请退出!");return;}

3.利用Car类型的数组可以很容易的输出各种车的属性:

//信息展示部分System.out.println("您可租的车及类型:");System.out.println("序号    汽车名称   租金          容量");for(int i = 0; i < arrCar.length ;i++){System.out.print((i+1) + ".       ");System.out.print(arrCar[i].Type+"      ");System.out.print(arrCar[i].Money+"元/天      ");System.out.print(arrCar[i].GoodsHold+"吨");System.out.println(arrCar[i].PersonHold+"人");}


4.租车部分,首先判断下输入是否合理

//租车部分System.out.println("请输入要租的车的数量:");Car arrCar1[] = new Car[20];Scanner input = new Scanner(System.in);int number;while(true){number = input.nextInt();if(number>0&&number<20){break;}else{System.out.println("输入错误,请从新输入!");}}

5.然后选车,利用车的信息展示的时候的序号来制定要选的车,同时判断输入是否正确。

//选车部分for(int i = 0; i<number ; i++){System.out.println("请输入第" + (i+1) + "辆要租的车的序号:");Scanner order = new Scanner(System.in); int j  = order.nextInt();while(true){if(j>3||j<1){System.out.println("输入错误,请从新输入!");j  = order.nextInt();}else{break;}}switch(j){case 1:arrCar1[i] = car1;break;case 2:arrCar1[i] = car2;break;case 3:arrCar1[i] = car3;break;default:break;}}



6.结算,

//账单部分System.out.println("请输入要租的天数:");Scanner daysInput = new Scanner(System.in);int days = daysInput.nextInt();int totalMoney = 0;for(int i = 0 ; i<number; i++){System.out.println(arrCar1[i].Money);totalMoney += days * arrCar1[i].Money;}System.out.println("***可载人的车有:");int totalPerson = 0;for(int i = 0;i<number;i++){if(arrCar1[i].PersonHold!=0){System.out.println(arrCar1[i].Type);totalPerson += arrCar[i].PersonHold;}}System.out.println("能载的人共:" +totalPerson);System.out.println("***可载货的车有:");int totalGoods = 0;for(int i = 0;i<number;i++){if(arrCar1[i].GoodsHold!=0){System.out.println(arrCar1[i].Type);totalGoods += arrCar[i].GoodsHold;}}System.out.println("能载的货物共:" +totalGoods+"吨");System.out.println("***租车的总价格为:" + totalMoney);



完成。




这个项目主要是学习利用父类指向子类的实例化方法是前面学习知识的一个总结。继续加油!!!