这篇文章将为大家详细讲解有关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实现租车系统的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。