这里主要设计了三块程序:测试程序,租车系统以及汽车类。
汽车类对象作为租车系统的属性。
程序中没有使用接口,因为在这个问题中汽车类属性较多,而基本没有什么方法,所以我只使用了继承。
另外没有对意外情况的处理,比如租车数量<1或者>6等等,这样主干会看的更清楚些,当然也不排除是因为我比较懒。
意外情况处理的程序我也做了一个,用到了异常的相关知识,有兴趣的可以看一下:Java入门第二季6.1问题编码Plus版
先放测试程序
import java.util.Scanner;
public class TestRent
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
System.out.println("欢迎使用答答租车系统:");
System.out.println("您是否要租车:1是 0否");
if(in.nextInt()==1){
CarRent cr=new CarRent();
cr.initial();//存储车辆信息
cr.showCar();//展示车辆信息
System.out.println("请输入您要租汽车的数量:");
cr.rentCar(in.nextInt());//调用租车程序
}
System.out.println("谢谢使用!");
}
}
下边是父类,既可以载重也可以载人,这个很简单,都可以看明白,我就不注释了
class Car
{
public int id;//编号
public int seat;//载人数
public int load;//载重数
public int price;//价格
public String name;//名称
Car(int id, String name, int price, int seat, int load){
this.id=id;
this.seat=seat;
this.load=load;
this.price=price;
this.name=name;
}
//覆盖Object.toString(),这是为了展示信息时使用
public String toString(){
return id+".\t"+name+"\t"+price+"元/天\t载人:"
+seat+"人 载货:"+load+"吨";
}
}
只载人的车,重写了父类的toString方法,同时,载重设为0
class SeatCar extends Car
{
SeatCar(int id, String name, int price, int seat){
super(id, name, price, seat, 0);
}
public String toString(){
return id+".\t"+name+"\t"+price+"元/天\t载人:"
+seat+"人";
}
}
只载重的车,重写toString方法,载人为0
class LoadCar extends Car
{
LoadCar(int id, String name, int price, int load){
super(id, name, price, 0, load);
}
public String toString(){
return id+".\t"+name+"\t"+price+"元/天\t载货:"
+load+"吨";
}
}
最后是租车系统,这个内容要多一些
class CarRent
{
private Car[] car=new Car[6];
//初始化车辆信息,这里利用了多态,初始化根据对象有所不同
void initial(){
car[0]=new SeatCar(1,"奥迪A4",500,4);//载人类
car[1]=new SeatCar(2,"马自达6",400,4);
car[2]=new Car(3,"皮卡雪6",450,4,2);//载人载重类
car[3]=new SeatCar(4,"金龙",800,20);
car[4]=new LoadCar(5,"松花江",400,4);//载重类
car[5]=new LoadCar(6,"依维柯",1000,20);
}
//展示车辆信息
void showCar(){
System.out.println("您可租车的类型及其价目表:");
System.out.println("序号\t汽车名称\t租金\t容量");
//利用foreach输出车辆信息
for(Car c:car)
System.out.println(c);//这里会自动调用toString()方法,多态的意义主要再这里体现
}
//展示载人车辆信息,并计算载人数
void seatCar(int[] nums){//传入所有被选中的车辆
int tseat=0;//计算总载人数
System.out.println("***可载人的车有:");
for(int i=0;i<nums.length;i++){
if(car[nums[i]].seat==0)continue;//载人为0,则跳过本次循环
System.out.print(car[nums[i]].name+"\t");
tseat+=car[nums[i]].seat;
}
System.out.println("共载人:"+tseat+"人");
}
//这是展示载重车辆,并计算总载重
void loadCar(int[] nums){//传入所有选中车辆
int tload=0;//计算总载重
System.out.println("***可载货的车有:");
for(int i=0;i<nums.length;i++){
if(car[nums[i]].load==0)continue;//载重为0,则跳过本次循环
System.out.print(car[nums[i]].name+"\t");
tload+=car[nums[i]].load;
}
System.out.println("共载货:"+tload+"吨");
}
//计算租金
void getMoney(int day, int[] nums){//传入租期,选中车辆
int money=0;
for(int i=0;i<nums.length;i++){
money+=car[nums[i]].price;
}
System.out.println("***租车总价格:"+(money*day)+"元");
}
//选择车辆
void rentCar(int num){
int[] nums=new int[num];
Scanner in=new Scanner(System.in);
for(int i=0;i<num;i++){
System.out.println("请输入第"+(i+1)+"辆车的序号:");
nums[i]=in.nextInt()-1;//车辆序号-1就是对应车辆的数组下标
}
System.out.println("请输入租车天数:");
int day=in.nextInt();
System.out.println("您的帐单:");
seatCar(nums);
loadCar(nums);
getMoney(day,nums);
}
}
点击查看更多内容
180人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦