java实现租车系统

 更新时间:2019年01月29日 09:38:31   作者:chao2016  
这篇文章主要为大家详细介绍了java实现租车系统,以及遇到的两个问题解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

今天用JAVA编写了一个租车系统,过程中主要遇到的两个问题:

1、输出数组信息问题:

在得到cars[]数组后,要生成租车信息表,目前有两种思路:一是用循环输出;二是用Arrays.toString()输出数组信息。

用toString()方法输出数组输出……@……形式的哈希码地址,这里需要对toString()方法进行重写,在数组涉及到的类中进行重写。

不过用第二种方法输出的其实还是一个数组,形式如图所示。那么问题来了——还有没有更好的输出方法呢?

2、父类方法不能访问子类成员变量:

本来在父类Car中写好的getPersonCapacity()和getGoodCapacity()方法似乎不能访问子类中的personCapacity和goodCapacity 这两个成员变量,导致调用参数时始终为0;所以在各子类方法中又独立加上了前面两个方法,问题得以解决。

运行效果图:

代码如下:

package rentCarSys;
/*
 * 总共有三种车型:载人Auto,载货Van,载人载货Pickup
 * Car 为这三种车型的父类
 * 有4种属性:
 * 编号 = number
 * 品牌 = brand
 * 租金/天 = fee
 * 载人容量 = personCapacity
 * 载货容量 = goodCapacity
 */
public class Car {
 int number;
 String brand;
 double fee;
 int personCapacity;
 double goodCapacity;
 
 public Car(int number, String brand, double fee){ //构造方法
 this.number = number;
 this.brand = brand;
 this.fee = fee;
 }
 
 public int getNumber(){
 return number;
 }
 
 public String getBrand(){
 return brand;
 }
 
 public double getFee(){
 return fee;
 }
 
 public int getPersonCapacity(){
 return personCapacity;
 }
 
 public double getGoodCapacity(){
 return goodCapacity;
 }
 
}
package rentCarSys;
/*
 * Auto为载人汽车,除了Car中的属性之外还有载人容量 personCapacity
 */
public class Auto extends Car{
 
 private int personCapacity;
 
 public Auto(int number, String brand, double fee, int personCapacity) {
 
 super(number, brand, fee);
 this.personCapacity = personCapacity;
 }
 
 public int getPersonCapacity() {
 return personCapacity;
 }
 
 @Override
 public String toString() {
 return number + "\t" + brand + "\t" + fee + "元/天\t" + personCapacity + "人\n";
 }
 
}

package rentCarSys;
/*
 * Van为载货汽车,除了Car中的属性之外还有载货容量 goodCapacity
 */
public class Van extends Car{
 
 private double goodCapacity;
 
 public Van(int number, String brand, double fee, double goodCapacity) {
 
 super(number, brand, fee);
 this.goodCapacity = goodCapacity;
 
 }
 
 public double getGoodCapacity(){
 return goodCapacity;
 }
 
 public String toString() {
 return number + "\t" + brand + "\t" + fee + "元/天\t" + goodCapacity + "吨" + "\n";
 }
 
}

package rentCarSys;
/*
 * Pickup为载人载货汽车,除了Car中的属性之外还有载人容量 personCapacity,载货容量goodCapacity
 */
public class Pickup extends Car{
 
 private int personCapacity;
 private double goodCapacity;
 
 public Pickup(int number, String brand, double fee, int personCapacity, double goodCapacity) {
 
 super(number, brand, fee);
 this.personCapacity = personCapacity;
 this.goodCapacity = goodCapacity;
 
 }
 
 public int getPersonCapacity() {
 return personCapacity;
 }
 
 public double getGoodCapacity(){
 return goodCapacity;
 }
 
 @Override
 public String toString() {
 return number + "\t" + brand + "\t" + fee + "元/天\t" +
 personCapacity + "人\t" + goodCapacity + "吨\n";
 }
}
package rentCarSys;
 
import java.util.Arrays;
import java.util.Scanner;
 
public class Login {
 
 public static void main(String[] args){
 
 Scanner input = new Scanner(System.in);
 Car[] cars = new Car[6];
 
 System.out.print("欢迎使用答答租车系统:");
 System.out.print("您是否要租车?1、是 2、否(请输入1或2)");
 int input1 = input.nextInt();
 if (input1 == 1){
 System.out.println("下面是所有车的信息:");
 
 cars[0] = new Auto(1, "奥迪A4", 500.0, 4);
 cars[1] = new Auto(2, "马自达6", 400.0, 4);
 cars[2] = new Pickup(3, "皮卡雪6", 450.0, 4, 2);
 cars[3] = new Auto(4, "金龙", 800.0, 20);
 cars[4] = new Van(5, "松花江", 400.0, 4);
 cars[5] = new Van(6, "依维柯", 1000.0, 20);
 
 System.out.println("序号\t" + "汽车名称\t" + "租金\t\t" + "容量(载人/载货)");
 System.out.println(Arrays.toString(cars));
// for(int i = 0; i < cars.length; i++){
// System.out.println("编号:"+ (i+1) +" 品牌:"+ cars[i].getBrand() 
// +" 租金:"+ cars[i].getFee() +"/天 载客量:"+ cars[i].getPersonCapacity()+"人"
// +" 载货量:"+ cars[i].getGoodCapacity()+"吨" );
// }
 }else{
 System.out.println("谢谢使用,再见!");
 }
 
 System.out.print("请输入你要租几种车:");
 int rentNum = input.nextInt();
 
 //selected用来保存客户选中了什么车型,以及每种车型的辆数,与car数组是对应关系
 int[] selected = new int[6];
 
 for (int i = 1; i <= rentNum; i++){
 System.out.println("请输入第" + i + "种车型的序号:" );
 int nums = input.nextInt() - 1;
 System.out.println(cars[nums].getBrand() +"总共需要多少辆:");
 int num = input.nextInt();
 selected[nums] = num;
 }
 
 System.out.println("请输入租车天数:");
 int daysNum = input.nextInt();
 
 System.out.println("您的账单:--------------------------");
 double total = 0;
 for (int i = 0; i < cars.length; i++){
 if (selected[i] !=0 ){
 System.out.println(selected[i] + "辆" + cars[i].getBrand() +
 " 总共载客量:"+selected[i]*cars[i].getPersonCapacity()+"人"+
 " 总共载货量:"+selected[i]*cars[i].getGoodCapacity()+"吨"+
 " "+daysNum+"天单项费用:"+selected[i]*cars[i].getFee()*daysNum+"元");
 total += selected[i]*cars[i].getFee()*daysNum;
 }
 }
 System.out.println("租车总费用:" + total + "元" + "\n" + "欢迎下次光临!------------------------");
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java图片滑动验证(登录验证)原理与实现方法详解

    java图片滑动验证(登录验证)原理与实现方法详解

    这篇文章主要介绍了java图片滑动验证(登录验证)原理与实现方法,结合实例形式详细分析了java图片滑动登录验证的相关原理、实现方法与操作技巧,需要的朋友可以参考下
    2019-09-09
  • java实现请求缓冲合并的示例代码

    java实现请求缓冲合并的示例代码

    我们对外提供了一个rest接口给第三方业务进行调用,但是由于第三方框架限制,导致会发送大量相似无效请求,这篇文章主要介绍了java实现请求缓冲合并,需要的朋友可以参考下
    2024-04-04
  • Java实体类中Set按照对象的某个字段对set排序

    Java实体类中Set按照对象的某个字段对set排序

    这篇文章主要介绍了Java实体类中Set按照对象的某个字段对set排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • Java线程的并发工具类实现原理解析

    Java线程的并发工具类实现原理解析

    本文给大家讲解Java线程的并发工具类的一些知识,通过适用场景分析大数据量统计类任务的实现原理和封装,多个示例代码讲解的非常详细,对java线程并发工具类相关知识感兴趣的朋友一起学习下吧
    2021-06-06
  • SpringBoot Admin健康检查功能的实现

    SpringBoot Admin健康检查功能的实现

    admin主要就是告诉运维人员,服务出现异常,然后进行通知(微信、邮件、短信、钉钉等)可以非常快速通知到运维人员,相当报警功能,接下来通过本文给大家介绍SpringBoot Admin健康检查的相关知识,一起看看吧
    2021-06-06
  • Spring Shell应用程序开发流程解析

    Spring Shell应用程序开发流程解析

    这篇文章主要介绍了Spring Shell应用程序开发流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 深入理解Java之HashMap源码剖析

    深入理解Java之HashMap源码剖析

    这篇文章主要介绍了深入理解Java之HashMap源码剖析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 详解Spring学习总结——Spring实现AOP的多种方式

    详解Spring学习总结——Spring实现AOP的多种方式

    这篇文章主要介绍了详解Spring学习总结——Spring实现AOP的多种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • spring mvc实现登录账号单浏览器登录

    spring mvc实现登录账号单浏览器登录

    这篇文章主要为大家详细介绍了spring mvc实现登录账号单浏览器登录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Spring Boot配置内容加密实现敏感信息保护

    Spring Boot配置内容加密实现敏感信息保护

    之前我们讲过的配置相关知识都是Spring Boot原生就提供的,而今天我们将介绍的功能并非Spring Boot原生就支持,但却非常有用:配置内容的加密
    2021-11-11

最新评论