完成了项目要求的展示内容,并没有做进一步的完善,以下代码仅供参考
父类Cars:
//车的序号、名称、租金、载货量、载客量
public class Cars {
public String carsname;//名称
public int id,personLoad;//序号、载客量
public double carsrental,goodLoad; //租金、载货量
}
子类客车Bus:
//车的子类--客车,设置客车的序号、名称、租金、载客量
public class Bus extends Cars {
public Bus(int id,String carsname,double carsrental,int personLoad){ //客车子类的构造方法
this.id=id;
this.carsname=carsname;
this.carsrental=carsrental;
this.personLoad=personLoad;
}
}
子类货车Truck:
//车的子类--货车,设置货车的序号、名称、租金、载货量
public class Truck extends Cars {
public Truck(int id,String carsname,double carsrental,int goodLoad){ //货车子类的构造方法
this.id=id;
this.carsname=carsname;
this.carsrental=carsrental;
this.goodLoad=goodLoad;
}
}
子类皮卡PickUp:
//车的子类--皮卡,设置客车的序号、名称、租金、载客量、载货量
public class PickUp extends Cars {
public PickUp(int id,String carsname,double carsrental,int personLoad,double goodLoad){ //皮卡子类的构造方法
this.id=id;
this.carsname=carsname;
this.carsrental=carsrental;
this.personLoad=personLoad;
this.goodLoad=goodLoad;
}
}
答答租车系统:
import java.util.Scanner;
public class Users {
static int carsnum,carsday,allpersons; //static静态变量保证类内的所有对象都能使用该成员变量,分别是租车的数量、天数和总载客量
static double allgoods,allmoney;//总载货量、总价
static int[] carsid; //车的序号
//创建一个数组并初始化,数组类型是父类Cars的各子类的对象
static Cars[] carsForRent={new Bus(1,"奥迪A4",500,4),new Bus(2,"马自达6",400,4),new PickUp(3,"皮卡雪",450,4,2),new Bus(4,"金龙",800,20),new Truck(5,"松花江",400,4),new Truck(6,"依维柯",1000,20)};
public static void main(String[] args) {
// TODO Auto-generated method stub
Users user=new Users();
user.isUsed();
carsnum=user.carsRentNum();
carsid=new int[carsnum]; //用户输入的需要租车的数量即为数组的长度
for(int i=1;i<=carsnum;i++){
System.out.println("请输入第"+i+"辆车的序号");
carsid[i-1]=user.carsRentID();
} //用户需要租车的类型序号存入数组中
carsday=user.carRentDays();
user.displayBill();
}
//是否使用答答租车系统,若使用,则打印租车类型及价目表;若使用,则退出
void isUsed(){
System.out.println("欢迎使用答答租车系统\n");
System.out.println("您是否要租车:(1 是 0 否)");
Scanner input=new Scanner(System.in);
int inputnum=input.nextInt();
if(inputnum==1){
System.out.println("您可租车的类型及其价目表:\n"+"序号\t"+"汽车名称\t"+"租金\t"+"容量\t");
for(Cars carsForUser:carsForRent){
if(carsForUser.getClass()==Bus.class){
System.out.println(carsForUser.id+".\t"+carsForUser.carsname+"\t"+carsForUser.carsrental+"元/天\t"+"载人:"+carsForUser.personLoad+"人"+"\n");
}
else if(carsForUser.getClass()==Truck.class){
System.out.println(carsForUser.id+".\t"+carsForUser.carsname+"\t"+carsForUser.carsrental+"元/天\t"+"载货:"+carsForUser.goodLoad+"吨"+"\n");
}
else if(carsForUser.getClass()==PickUp.class){
System.out.println(carsForUser.id+".\t"+carsForUser.carsname+"\t"+carsForUser.carsrental+"元/天\t"+"载人:"+carsForUser.personLoad+"人\t"+"载货:"+carsForUser.goodLoad+"吨"+"\n");
}
}
}else{
System.exit(0);
}
}
//用户需要租车的数量
int carsRentNum(){
System.out.println("请输入您要租汽车的数量:");
Scanner input=new Scanner(System.in);
int inputnum=input.nextInt();
return inputnum;
}
//用户需要哪辆车,输入对应车型的序号
int carsRentID(){
Scanner input=new Scanner(System.in);
int inputnum=input.nextInt();
return inputnum;
}
//用户需要租车的天数
int carRentDays(){
System.out.println("请输入租车天数:");
Scanner input=new Scanner(System.in);
int inputnum=input.nextInt();
return inputnum;
}
//打印用户的账单
void displayBill(){
StringBuilder str_person=new StringBuilder();
StringBuilder str_goods=new StringBuilder();
for(int id:carsid){
for(Cars carsForUser:carsForRent){
if(carsForUser.id==id){
allmoney+=carsForUser.carsrental;//
if(carsForUser.getClass()==Bus.class){
str_person.append(carsForUser.carsname+" ");
allpersons+=carsForUser.personLoad;
}
if(carsForUser.getClass()==Truck.class){
str_goods.append(carsForUser.carsname+" ");
allgoods+=carsForUser.goodLoad;
}
if(carsForUser.getClass()==PickUp.class){
str_person.append(carsForUser.carsname+" ");
str_goods.append(carsForUser.carsname+" ");
allpersons+=carsForUser.personLoad;
allgoods+=carsForUser.goodLoad;
}
}
}
}
System.out.println("您的账单:\n"+"***可载人的车有:\n"+str_person.toString()+"\t共载人:"+allpersons+"人\n");
System.out.println("***可载货的车有:\n"+str_goods.toString()+"\t共载货:"+allgoods+"吨\n");
System.out.println("***租车总价格:"+allmoney*carsday+"元\n");
}
}
在Eclipse中运行即可。
热门评论
这个中间有很多错误嘛!系统里面的 user.isUsed();以及后面的几个词汇 都没有预先定义方法 直接引用 自然会报错 后面if语句里面多加一个for而且还不是循环,逻辑语法就是错误的
构造也可以直接写一个默认值,属性最好是私有化, 程序写大了,万一被改动,很难找到什么地方的问题,所以尽量一定要私有
方法的模块细分还是挺好的, 我是执行类里面 只写了两个方法, 一个是display 用于展示用户输入信息 一个是billPrint 打印账单