package carrentsys;//系统首页
import java.util.Scanner;//扫描
public class Dadazuchexitong {
public void dadazuchexitong1 (){
System.out.println("欢迎使用答答租车系统");
System.out.println("您是否要租车:1是 0否");//租车系统界面
}
public void dadazuchexitong2 (){
Scanner input=new Scanner(System.in);
int in = input.nextInt();
if(in==0){
System.out.println("谢谢使用,欢迎再次登录!");
System.exit(0);//方法结束,退出答答租车系统
}else if(in==1){
System.out.println("您可租车的类型及其价目表:");
}else{
System.out.println("输入有误,请重新输入!");
System.out.println("您是否要租车:1是 0否");
dadazuchexitong2();
}
}
}
package carrentsys;
public class Car {//Car分类是为了后期的维护更方便 把三种车型分开 系统中车子的序号、名字、租金为车的共有属性,创建Car父类简化代码 容量分载人载物,定义变量方便调用
int num;
String name;
double rent;
int lond1;//容量为载人
int lond2;//容量为载物,
public Car(int num,String name,double rent){//创建一个有参的构造函数,方便对车的参数信息进行编辑录入
this.num=num;//this关键字的应用
this.name=name;
this.rent=rent;
}
}
package carrentsys;
public class Privatecar extends Car {
public Privatecar(int num, String name, double rent, int lond1) {
super(num, name, rent);
this.lond1=lond1;
// TODO Auto-generated constructor stub
}
@Override
public String toString() { //重写Truck的toString(),,因为没有重写的话默认调用object类的toString()方法,打印的是地址值
return num + ". " + name + " " + rent //返回有参构造函数的值
+ "元/天 " +"载人:"+ lond1 + "人 ";
}
}
package carrentsys;
public class Truck extends Car {
public Truck(int num, String name, double rent, int lond2) {
super(num, name, rent);
this.lond2=lond2;
// TODO Auto-generated constructor stub
}
@Override
public String toString() {//重写Truck的toString(),,因为没有重写的话默认调用object类的toString()方法,打印的是地址值
return num + ". " + name + " " + rent //返回有参构造函数的值
+ "元/天 " +"载货:"+ lond2 + "吨 ";
}
}
package carrentsys;
public class Pickup extends Car {
public Pickup(int num, String name, double rent, int lond1, int lond2) {
super(num, name, rent);
this.lond1=lond1;
this.lond2=lond2;
// TODO Auto-generated constructor stub
}
@Override
public String toString() {//重写Truck的toString(),,因为没有重写的话默认调用object类的toString()方法,打印的是地址值
return num + ". " + name + " " + rent //返回有参构造函数的值
+ "元/天 " +" 载人:"+ lond1 + "人 " +"载货:"+ lond2 + "吨";
}
}
package carrentsys;
public class CarList { //车子的列表信息
public static Car[] Carlist={new Privatecar(001," 奥迪A4", 500, 4),
new Privatecar(002," 马自达6", 400, 4),new Pickup(003 ," 皮卡雪6",450,4,2),
new Privatecar(004 ," 金龙 ",800,20), new Truck(005 ," 松花江 ",400,4),
new Truck(006 ," 依维柯 ",1000,20)};// 定义一个静态变量的数组来存储Car类的信息,静态方便调用相当于全局变量
public static void carlist(){
System.out.println("序号 汽车名称 租金 容量");
for(int i=0;i<Carlist.length;i++){//使用循环遍历输出数组Car内的内容
System.out.println(); //打印的时候空一行,使得结果更清晰
System.out.println(Carlist[i]);
}
}
}
package carrentsys; //租车客户信息的采集
import java.util.Scanner;//import调用util中的Scanner扫描工具 输入的数据
public class RentInfo {
static int rentnum,rentday;//租车数量、天数 后期算账单时要使用,定义为静态变量
static int carchoose[]=new int[CarList.Carlist.length];//定义一个数组,用来存储用户选择的车的类型,记得数组要初始化 数组长度由车子的数量决定,即Carlist的数组长度 后面还继续使用定义为静态变量,方便调用
public static void rentinfo(){
System.out.println("请输入您要租汽车的数量:(1到"+CarList.Carlist.length+"之间)");
Scanner num=new Scanner(System.in);//调用Scanner建立初始化对象
rentnum=num.nextInt();//采集租客输入的租车数量
if (rentnum>CarList.Carlist.length||rentnum<0){//判断输入的是否是有效数字,是则继续,否则提示有误重新输入
System.out.println("输入有误,请重新输入!!!");
rentinfo(); //通过调用rentinfo()来实现跳转 直到输入有效数据
}else{
for(int i=0;i<rentnum;i++){
System.out.println("请输入第"+(i+1)+"辆车的序号:");
Scanner carnum=new Scanner(System.in);
carchoose[i]=carnum.nextInt();//把输入的车的序号存储在carchoose数组中
}
System.out.println("请输入租车天数:");
Scanner day=new Scanner(System.in);
rentday=day.nextInt();//采集客户输入的租车天数
}
}
package carrentsys;
public class Rentbill {
static int t;
static int f=0;
static int g=0;//t,f,g都有在调用静态值,处理的是静态引用
static double rent=0,bill=0;//处理的是静态引用,得定义成静态变量
public static void rentbill(){
System.out.println("您的账单:");
System.out.println("***可载人的车有:");
for(int i=0;i<RentInfo.rentnum;i++){
t=RentInfo.carchoose[i];
rent += CarList.Carlist[t-1].rent;//一天 的租金
if(CarList.Carlist[t-1].lond1>0){//通过调用lond1来判断选择的车型是否可以载人,可以则输出车型名称,否则继续
System.out.print(CarList.Carlist[t-1].name);//输出选择的车型中可以载人的车型名称
}
f+=CarList.Carlist[t-1].lond1;//统计客户所租车型能够载客的人数
}
System.out.print("共载人:"+f+"人");
System.out.println();
System.out.println("***可载货的车有:");
for(int i=0;i<RentInfo.rentnum;i++){
t=RentInfo.carchoose[i];
if(CarList.Carlist[t-1].lond2>0){//通过调用lond2来判断选择的车型是否可以载货,可以则输出车型名称,否则继续
System.out.print(CarList.Carlist[t-1].name);//输出选择的车型中可以载货的车型名称
}
g+=CarList.Carlist[t-1].lond2;//统计客户所租车型能够载货的吨数
}
bill=rent*RentInfo.rentday;//计算账单
System.out.print(" 共载货:"+g+"吨");
System.out.println();
System.out.print("***租车总价格:"+bill+"元");
}
}
package carrentsys;//测试类
public class Initail {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Dadazuchexitong in=new Dadazuchexitong();//建立对象
in.dadazuchexitong1();//系统首页 调用对象方法1
in.dadazuchexitong2();// 调用对象方法2
CarList.carlist();//汽车车型列表 数据
RentInfo.rentinfo();//业务模型
Rentbill.rentbill();//显示模型
}
}