因为楼主是新手.用了两天时间,参考各种代码写出来的租车系统,因为也是新手,所以都知道新手大概哪个地方不会,我都会把这些地方详细的写出来,我个人写了两组代码 我会一 一贴出来供大家参考。
首先 创建一个名为Car的父类
package javaapplication39;
public abstract class Car {
public String ming;//车名
public double jia ;//车价
public int ren;//载客人数
public double dun;//拉货吨数
}
不要吐槽我为什么都是用拼音...不懂英文没办法
然后分别创建三个子类
第一个子类为客车类
package javaapplication39;
public class CarImpl extends Car {
public CarImpl(String ming,double jia,int ren){
this.ming=ming;
this.jia=jia;
this.ren=ren;
}
@Override
public String toString(){//注意这里要重写toString方法 以便后面要输出类的构造方法的时候,没办法输出构造方法内的数据
return (ming+"\t"+jia+"\t"+ren+"人");
}
}
第二个为货车类
package javaapplication39;
public class CarIm extends Car {
public CarIm(String ming,double jia,double dun){
this.ming=ming;
this.jia=jia;
this.dun=dun;
}
public String toString(){
return (ming+"\t"+jia+"\t"+dun+"吨");
}
}
第三个为皮卡车类
package javaapplication39;
public class CarIp extends Car {
public CarIp(String ming,double jia,int ren,double dun){
this.ming=ming;
this.jia=jia;
this.ren=ren;
this.dun=dun;
}
public String toString(){
return (ming+"\t"+jia+"\t"+ren+"人"+"\t"+dun+"吨");
}
}
下面是主类
package javaapplication39;
import java.util.Scanner;
public class JavaApplication39 {
public static void main(String[] args) {
Car []car={//利用数组的方法给每个类里的构造方法赋值
new CarImpl("奥迪a4",500,4),//赋值三个拉客车的车型
new CarImpl("马自达6",400,4),
new CarImpl("金龙鱼",800,20),
new CarIm("松花江上",400,4),//赋值两个拉货车的车型
new CarIm("维克托",1000,20),
new CarIp("皮卡丘6",450,4,2),//赋值一个记拉货又拉客的车型
};
System.out.println("******欢迎使用卡布达租车系统******");
System.out.println("*****确认租车吗 1确认 2否*****");
Scanner fake=new Scanner(System.in);
if(fake.nextInt()==1){//如果用户输入为1 则进入系统
System.out.println("下列为现有车型");
System.out.println("车号"+"\t车名"+"\t金额"+"\t拉客量&拉货量");
for(int i=0;i<car.length;i++){//循环所有类的构造方法中的数据.此时因为重写了toString方法,才会输出我们想要输出的内容
System.out.println((i+1)+"\t"+car[i]);
}
System.out.println("您要租几辆车?");
int a=fake.nextInt();//用来保存用户要购买的车辆数量
Car[] shu=new Car[a];//设置一个数组 用来保存用户想购买的车辆
double jin=0;//用来保存金额总和
int ren=0;//用来保存人数总和
double dun=0;//用来保存吨数总和
int tian=0;//用来保存用户租车天数
for(int i=1;i<=a;i++){
System.out.println("请输入第"+i+"辆车的车号");
int b=fake.nextInt();//用来保存用户输入的车辆序号
shu[i-1]=car[b-1];//把用户选的车辆序号对应的车辆信息传给数组
System.out.println(shu[i-1]);
System.out.println("您要租几天?");
tian=fake.nextInt();
jin=jin+(shu[i-1].jia*tian);
}
System.out.println("******车辆清单******");
System.out.println("载客的车辆有");
for(int i=0;i<a;i++){//设置循环 输出数组里保存的车辆名称
if(shu[i].ren!=0){//如果是载客车的话就输出车名
System.out.print(shu[i].ming+"\t");
}ren=ren+shu[i].ren;//用来保存车辆的总人数
}
System.out.println("载客人数共"+ren+"个人");
System.out.println("拉货车辆有");
for(int i=0;i<a;i++){//设置循环 输出数组里保存的车辆名称
if(shu[i].dun!=0){
System.out.print(shu[i].ming+"\t");//如果为载货车就输出车名
}
dun=dun+shu[i].dun;//保存车辆总吨数
}System.out.println("拉货吨数共"+dun+"吨");
System.out.println("******总金额共"+jin+"元*****");
}else{
System.out.println("欢迎下次再来");
}}
}
以下为执行后的程序图
下面为第二组代码的主类,只有主类是因为和第一种方法的父类子类相类似,就是变量名有变动,大家可以随自己的喜好随意改动变量名
package javaapplication38;
import java.util.Scanner;
import java.util.Arrays;
/**
*
* @author Administrator
*/
public class NewMain {
public static void main(String[] args) {
Car car []= new Car[]{//用数组的方法配合循环new所有对象
new Coach("奥迪A4",500,4),
new Coach("马达6",400,4),
new Coach("金龙",800,20),
new HuoChe("松花江",400,4),
new HuoChe("依维柯",1000,20),
new PiKa("皮卡",450,4,2),
};
System.out.println("********欢迎来到达达租车系统*******");
System.out.println("******确认租车吗 1是 2否*******");
Scanner fake=new Scanner(System.in);
if(fake.nextInt()==1){//如果用户输入的数为一 那么进入主程序
System.out.println("您可以租用的汽车类型和价目表如下:");
System.out.println("序号\t汽车类型\t租金\t\t容量");
for(int i=0;i<car.length;i++){//利用循环的方法循环出所有类中的构造方法
System.out.println((i+1)+"\t"+car[i]);
}
System.out.println("******您要租几辆车?******");
double c=0;//记录价格
String d="";//记录拉货车 因为需要分开输出拉货车跟拉人车 所以设置两个变量
String h="";//记录拉人车
double e=0;//记录吨数
int f=0;//记录人数
int a=fake.nextInt();
for(int i=1;i<=a;i++){
System.out.println("*请输入第"+i+"辆车的序号*");
int b=fake.nextInt();
String p="";//设置一个输出用户输入的车序号的车名变量
p=car[b-1].name;//把车名付给p
System.out.println("车名为"+p);//输出车名
System.out.println("*****此车您要租车多少天?******");
int tian=fake.nextInt();
c= car[b-1].price*tian+c;//记录租车金额乘与租车天数的金额总和
e=car[b-1].dun*tian+e;//记录车辆的吨数总和
f=car[b-1].ren*tian+f;//记录车辆的人数总和
if(car[b-1].ren!=0){
h=car[b-1].name+h;
}
if(car[b-1].dun!=0.0){//如果用户输入的车辆里有吨数 那么就把车名付给d
d=car[b-1].name+d;
}
}
System.out.println("******您的账单******");
System.out.println("载客的车有");
System.out.println("\t"+h+"\t总人数为"+f);
System.out.println("拉货的车有");
System.out.println("\t"+d+"\t总吨数为"+e);
System.out.println("*价格总和为");
System.out.println(c);
System.out.println("***确认支付"+c+"元并租车吗? 1确认 2否***");
int l=fake.nextInt();
if(l==1){
System.out.println("**您已确认支付"+c+"并成功租车,祝您生活愉快**");
}
}else{
System.out.println("欢迎下次再来");
return;
}
}}
以下为执行图
如果以上代码有错误的地方望大家指出来,或有不懂的地方可以提问。
热门评论
代码所有的都一样,只是类名变了,为什么运行不出来
简短,适合初学者,用中文命名反而一目了然,哈哈,和我胃口,谢谢楼主。
大哥我想请问一下为什么数组Car [ ]car,是Car型呢? 变量类型不应该是String ,int之类的吗? 比如String[ ] car.