继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

达达租车系统,详细代码菜鸟版

不想她是借口
关注TA
已关注
手记 1
粉丝 4
获赞 32

因为楼主是新手.用了两天时间,参考各种代码写出来的租车系统,因为也是新手,所以都知道新手大概哪个地方不会,我都会把这些地方详细的写出来,我个人写了两组代码 我会一 一贴出来供大家参考。
首先 创建一个名为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;
        }

}}

以下为执行图
图片描述
如果以上代码有错误的地方望大家指出来,或有不懂的地方可以提问。

打开App,阅读手记
21人推荐
发表评论
随时随地看视频慕课网APP

热门评论

代码所有的都一样,只是类名变了,为什么运行不出来

简短,适合初学者,用中文命名反而一目了然,哈哈,和我胃口,谢谢楼主。

大哥我想请问一下为什么数组Car [ ]car,是Car型呢?  变量类型不应该是String ,int之类的吗? 比如String[ ] car.

查看全部评论