共分11个类,其中一个主程序,一个管理类,两个接口(载人和载货),一个父类,六个子类(对应6个车型)。
PS: 1、代码中没有考虑异常,学过异常的朋友请忽略这点。
2、多数类名首字母没有大写,完成后才意识到,所以懒得改了。
3、如果有其他问题,可在下方留言。
父类:
vecle
package disizhang;
public abstract class vecle {
String name;
int price;
String capacity;
}
两个接口:
1、 Icargo
package disizhang;
public interface Icargo {
public double cargo();
}
2、 Iperson
package disizhang;
public interface Iperson {
public int person();
}
然后是6个车型的子类:
1、aodi
package disizhang;
public class aodi extends vecle implements Iperson{
aodi(){
this.name="奥迪A4";
this.price=500;
this.capacity="载人:4人";
}
public int person(){
return 4;
}
}
2、jinlong
package disizhang;
public class jinlong extends vecle implements Iperson{
jinlong(){
this.name="金龙";
this.price=800;
this.capacity="载人:20人";
}
public int person(){
return 20;
}
}
3、mazida
package disizhang;
public class mazida extends vecle implements Iperson{
mazida(){
this.name="马自达6";
this.price=400;
this.capacity="载人:4人";
}
public int person(){
return 4;
}
}
4、pikaxue
package disizhang;
public class pikaxue extends vecle implements Iperson, Icargo{
pikaxue(){
this.name="皮卡雪6";
this.price=450;
this.capacity="载人:4人 载货:2吨";
}
public int person(){
return 4;
}
public double cargo(){
return 2;
}
}
5、songhuajiang
package disizhang;
public class songhuajiang extends vecle implements Icargo{
songhuajiang(){
this.name="松花江";
this.price=400;
this.capacity="载货:4吨";
}
public double cargo(){
return 4;
}
}
6、yiweike
package disizhang;
public class yiweike extends vecle implements Icargo{
yiweike(){
this.name="依维柯";
this.price=1000;
this.capacity="载货:20吨";
}
public double cargo(){
return 20;
}
}
一个管理类,定义了输出车辆信息和计算价钱两个方法
package disizhang;
import java.util.Scanner;
public class admin {
private static final boolean vecle = false;
Scanner in=new Scanner(System.in);
//定义一个备租车辆的数组
vecle[] carList={new aodi(),new mazida(),new pikaxue(),
new jinlong(),new songhuajiang(),new yiweike()};
public void priceMenu(){//通过此方法输出车辆信息
System.out.println("欢迎使用哒哒租车系统");
System.out.println("您是否要租车:1是 0否");
int inputNum=in.nextInt();
if(inputNum==1){
System.out.println("您可租车的类型及价目表");
System.out.println("序号\t汽车名称\t租金\t容量");
//通过遍历备租车辆,输出备租车辆信息
for(int i=0;i<carList.length;i++){
System.out.println((i+1)+"\t"+carList[i].name+"\t"+
carList[i].price+"元/天\t"+carList[i].capacity);
}
}else if(inputNum==0){
System.out.println("系统已经退出");
System.exit(0);
}else{
//怎么修改,可以在打印下面这句话后,循环输出以上操作,输出"欢迎使用哒哒租车系统"
System.out.println("输入有误,请重新输入");
}
}
public void priceSum(){//通过此方法,计算租金
System.out.println("请输入您要租汽车的数量");
int rentNum=in.nextInt();
//定义一个客户已选车辆的数组
vecle[] carSelected=new vecle[rentNum];
for(int i=0;i<rentNum;i++){
System.out.println("请输入第"+(i+1)+"辆车的序号");
int carNum=in.nextInt();
carSelected[i]=carList[carNum-1];
}
System.out.println("请输入您要租汽车的天数");
int rentDay=in.nextInt();
System.out.println("您的账单:");
System.out.println("***可载人的车有:");
int sumPerson=0;
//循环遍历carSelected,如果constanceof Iperson,则输出这些元素
for(vecle car:carSelected){
if(car instanceof Iperson){
System.out.print(car.name+"\t");
sumPerson=sumPerson+((Iperson) car).person();
}
}
System.out.println("共载人:"+sumPerson+"人");
System.out.println("***可载货的车有:");
double sumCargo=0;
double sumPrice=0;
for(vecle car:carSelected){//又循环了一边,增加了程序运行时间
sumPrice=sumPrice+car.price*rentDay;
if(car instanceof Icargo){
System.out.print(car.name+"\t");
//这里为什么系统把CAR强制转换成Icargo,不太明白
sumCargo=sumCargo+((Icargo) car).cargo();
}
}
System.out.println("共载货:"+sumCargo+"吨");
System.out.println("***租车总价格:"+sumPrice+"元");
}
}
一个主程序
package disizhang;
public class rent {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
admin a=new admin();
a.priceMenu();
a.priceSum();
}
}
THE END 效果展示:
欢迎使用哒哒租车系统
您是否要租车:1是 0否
1
您可租车的类型及价目表
序号 汽车名称 租金 容量
1 奥迪A4 500元/天 载人:4人
2 马自达6 400元/天 载人:4人
3 皮卡雪6 450元/天 载人:4人 载货:2吨
4 金龙 800元/天 载人:20人
5 松花江 400元/天 载货:4吨
6 依维柯 1000元/天 载货:20吨
请输入您要租汽车的数量
3
请输入第1辆车的序号
1
请输入第2辆车的序号
3
请输入第3辆车的序号
6
请输入您要租汽车的天数
2
您的账单:
可载人的车有:
奥迪A4 皮卡雪6 共载人:8人
可载货的车有:
皮卡雪6 依维柯 共载货:22.0吨
***租车总价格:3900.0元
点击查看更多内容
7人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦