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" + "欢迎下次光临!------------------------");
 }
}

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

(0)

相关推荐

  • java实现简单租车系统

    本文实例为大家分享了java实现租车系统Demo,供大家参考,具体内容如下 这也是参考了mooc上的一个基础项目,所以拿来写一下.不过我的Demo肯定有不好或者错误的地方,欢迎指出 1.项目功能/需求 a.展示所有可租车辆 b.选择车型.租车量 c.展示租车清单,包含:总金额.总载货量.总载客量 2.项目系统UML图 3.项目源码Demo Car类 package Car.rental; public class Car { private String name; private int re

  • Java实现答答租车系统

    本文实例为大家分享了Java实现答答租车系统的具体代码,供大家参考,具体内容如下 项目需求: 基本界面需求: and: 最后是把账单打印出来: 个人代码实现 基本思路:考虑到车辆之间的共性,设置一个父类Car, 子类MannedCar(载人), Truck(载货),BothCary(既载人又载货),三者继承父类Car的price, name属性, getName()方法, 同时重写getPersonNum, getGoodsNum方法. Car.java: package Car; public

  • Java实现一个达达租车系统的步骤详解

    本文介绍的是利用java编写一个控制台版的"达达租车系统",下面话不多说了,来看看详细实现方法吧. 实现目标 java编写一个控制台版的"达达租车系统" 实现功能 1.展示所有可租车辆 2.选择车型.租车量 3.展示租车清单,包含:总金额.总载货量及其车型.总载人量及其车型 三大分析 数据模型分析 业务模型分析 显示和流程分析 实现效果 租车页面 租车账单 实现思路 首先定义一个Car类,它包含基本功能:车名.载客数.载货量.日租金.接着创建三个小类,分别是客车类.

  • java实现租车系统

    今天用JAVA编写了一个租车系统,过程中主要遇到的两个问题: 1.输出数组信息问题: 在得到cars[]数组后,要生成租车信息表,目前有两种思路:一是用循环输出:二是用Arrays.toString()输出数组信息. 用toString()方法输出数组输出--@--形式的哈希码地址,这里需要对toString()方法进行重写,在数组涉及到的类中进行重写. 不过用第二种方法输出的其实还是一个数组,形式如图所示.那么问题来了--还有没有更好的输出方法呢? 2.父类方法不能访问子类成员变量: 本来在父

  • Java实现租车管理系统

    需求: 完成一个和用户互动的租车管理系统,当中包括基础的增删改查,以及输出实时地热度排行榜! 功能设计: 在工程的包com.Test02中,搭建4个类,分别是程序启动(carSysStart).控制台(carConsole).数据存储内存库(carData_base).系统的功能类(carFunction) 具体代码如下: 1.程序启动 package com.Test02; public class carSysStart { public static void main(String[]

  • 基于java实现租车管理系统

    概述 基于java + swing + JFrame 的图书馆管理系统,租车,还车,管理员管理用户,付款等. 部分代码 public class Login extends JFrame { private static final long serialVersionUID = 1L; /** * 登录窗体 */ public Login() { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // 设置顶部提示文字和主窗

  • Java毕业设计实战之共享租车信息管理系统的实现

    基于servlet+jsp+jdbc的后台管理系统,包含5个模块:汽车账户部管理.租车账户部管理.汽车信息管理表.租车记录表.租车租聘表.功能完整,均能实现增删查改. 运行环境: jdk8+tomcat8.5+mysql5.7+Eclipse 项目技术: servlet+jsp+jdbc+easyui+jquery       主页登陆注册业务: public class ForeServlet extends BaseForeServlet { /** * 显示主页 * * @param re

  • 使用Python实现租车计费系统的两种方法

    要求: #出租车计费************************************************************************************** # 要求:循环输入公里数,自动计算所需费用,费用计算公式如下 # 0.公里数小于等于0时输出: #   请输入正确的公里数进行计算,程序结束 # 1.出租车起步价8元,包含2公里 # 2.超过两公里的部分,每公里收取1.2元 # 3.超过12公里的部分,每公里收取1.5元 方法一: while True:

  • java实现汽车租赁系统

    本文实例为大家分享了java实现汽车租赁系统的具体代码,供大家参考,具体内容如下 //车类 public abstract class Vehicle { //车牌号 品牌 日租金 private String id; private String brand; private int perRent; public Vehicle(){} //Vehicle的带参构造方法 public Vehicle(String id, String brand, int perRent) { this.i

  • Java 文创商城系统的实现流程

    一.项目简述 功能:本系统分用户前台和管理员后台. 前台展示+后台管理,前台界面可实现用户登录,用户注 册,商品展示,商品明细展示,用户信息修改,密码修 改,购物车添加,商品购买,商品结算,订单查询,购物 车查询,后台管理可实现商品管理,订单管理,用户管理 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spring + SpringMVC

随机推荐