package 答答租车系统改;
/*建立了一个抽象Car类,因为属性定义为私有的所以要getter和setter。(封装)
-
*/
public abstract class Car {
private int xuhao;//车的序号
private String name;//车的名字
private int money;//车的租金public int getXuhao() {
return xuhao;
}
public void setXuhao(int xuhao) {
this.xuhao = xuhao;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
package 答答租车系统改;
/*建立了一个ZaiRen接口,创造了一个zairen的抽象方法。
- */
public interface ZaiRen {
public abstract int zairen(int i);
}
package 答答租车系统改;
/*建立了一个ZaiHuo接口,创造了一个zaihuo的抽象方法。
- */
public interface ZaiHuo {
public abstract int zaihuo(int i);
}
package 答答租车系统改;
/*建立了一个ZaiRenHeHuo接口,继承了ZaiRen接口和ZaiHuo接口。
- */
public interface ZaiRenHeHuo extends ZaiRen, ZaiHuo {
}
package 答答租车系统改;
/*建立了一个Car类的子类XiaoQiChe类并实现了ZaiRen接口。
-
*/
public class XiaoQiChe extends Car implements ZaiRen {private int xuhao;
private String name;
private int money;
private int zairen;public int getXuhao() {
return xuhao;
}
public void setXuhao(int xuhao) {
this.xuhao = xuhao;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public int getzairen() {
return zairen;
}
public int zairen(int zairen) {//金龙这类车算是bus,由于没写bus类在zairen判断
if(zairen <= 4){//判断人数大小
return 4;
}else{
return 20;
}}
public XiaoQiChe(int xuhao, String name, int money, int zairen){//XiaoQiChe类的构造方法
this.xuhao = xuhao;
this.name = name;
this.money = money;
this.zairen = zairen;}
}
package 答答租车系统改;
/*建立了一个Car类的子类PiKa类并实现了ZaiRen接口和ZaiHuo接口。
-
*/
public class PiKa extends Car implements ZaiRenHeHuo {private int xuhao;
private String name;
private int money;
private int zairen;
private int zaihuo;public int getXuhao() {
return xuhao;
}
public void setXuhao(int xuhao) {
this.xuhao = xuhao;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public int getzairen() {
return zairen;
}
public int zairen(int zairen) {return 4;
}
public int getzaihuo() {
return zaihuo;
}
public int zaihuo(int zaihuo) {return 2;
}
public PiKa(int xuhao, String name, int money, int zairen, int zaihuo){
this.xuhao = xuhao;
this.name = name;
this.money = money;
this.zairen = zairen;
this.zaihuo = zaihuo;}
}
package 答答租车系统改;
/*建立了一个Car类的子类HuoChe类并实现了ZaiHuo接口。
-
*/
public class HuoChe extends Car implements ZaiHuo {private int xuhao;
private String name;
private int money;
private int zaihuo;public int getXuhao() {
return xuhao;
}
public void setXuhao(int xuhao) {
this.xuhao = xuhao;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public int getzaihuo() {
return zaihuo;
}
public int zaihuo(int zaihuo) {
if(zaihuo <= 4){//判断货的多少
return 4;
}else{
return 20;
}
}public HuoChe(int xuhao, String name, int money, int zaihuo){
this.xuhao = xuhao;
this.name = name;
this.money = money;
this.zaihuo = zaihuo;}
}
package 答答租车系统改;
import java.util.Scanner;
public class InitailCar {
public static void main(String[] args) {
//接口的引用指向实现接口的的对象
ZaiRen ab1 = new XiaoQiChe(1, "奥迪A4", 500, 4);
ZaiRen ab2 = new XiaoQiChe(2, "马自达6", 400, 4);
ZaiRenHeHuo ab3 = new PiKa(3, "皮卡雪6", 450, 4, 2);
ZaiRen ab4 = new XiaoQiChe(4, "金龙", 800, 20);
ZaiHuo ab5 = new HuoChe(5, "松花江", 400, 4);
ZaiHuo ab6 = new HuoChe(6, "依维柯", 1000, 20);
//父类的引用指向子类对象
Car car1 = new XiaoQiChe(1, "奥迪A4", 500, 4);
Car car2 = new XiaoQiChe(2, "马自达6", 400, 4);
Car car3 = new PiKa(3, "皮卡雪6", 450, 4, 2);
Car car4 = new XiaoQiChe(4, "金龙", 800, 20);
Car car5 = new HuoChe(5, "松花江", 400, 4);
Car car6 = new HuoChe(6, "依维柯", 1000, 20);
System.out.println("欢迎使用答答租车系统");
System.out.println("您是否想要租车?是:1 否:2");
Scanner scan = new Scanner(System.in);//Scanner对象只要写一次就行
int inputNum = scan.nextInt();
if (inputNum == 1){
System.out.println("以下是可租车的类型与其价格表");
System.out.println("序号"+"\t"+"汽车名称"+"\t"+"租金/天"+"\t"+"容量");
//父类引用的数组里面保存多个子类对象
Car [] carMessage={new XiaoQiChe(1, "奥迪A4", 500, 4), new XiaoQiChe(2, "马自达6", 400, 4), new PiKa(3, "皮卡雪6", 450, 4, 2), new XiaoQiChe(4, "金龙", 800, 20), new HuoChe(5, "松花江", 400, 4), new HuoChe(6, "依维柯", 1000, 20)};
//这个输出表的方式不好
System.out.println(car1.getXuhao()+"."+"\t"+car1.getName()+"\t"+car1.getMoney()+"\t"+"载人"+ab1.zairen(4));//在xiaoqiche类里定义了zairen()括号里的数,自己随便写小于等于4返回4,大于4返回20
System.out.println(car2.getXuhao()+"."+"\t"+car2.getName()+"\t"+car2.getMoney()+"\t"+"载人"+ab2.zairen(4));
System.out.println(car3 .getXuhao()+"."+"\t"+car3 .getName()+"\t"+car3 .getMoney()+"\t"+"载人"+ab3.zairen(1)+"载货"+ab3.zaihuo(1));
System.out.println(car4.getXuhao()+"."+"\t"+car4.getName()+"\t"+car4.getMoney()+"\t"+"载人"+ab4.zairen(5));
System.out.println(car5.getXuhao()+"."+"\t"+car5.getName()+"\t"+car5.getMoney()+"\t"+"载货"+ab5.zaihuo(4));//在huoche类定义了zaihuo(),同理
System.out.println(car6.getXuhao()+"."+"\t"+car6.getName()+"\t"+car6.getMoney()+"\t"+"载货"+ab6.zaihuo(10));
}else{
System.out.println("再见");
}
//System.out.println();//断行可有可无
int sum = 0;//金额
int p = 0;//可载人数
int c = 0;//可载货吨
String nsum1="";//初始化属性
String nsum2="";
String nsum3="";
String nsum4="";
String nsum5="";
String nsum6="";
System.out.println("请输入您要租车的数量");
int M = scan.nextInt();
if(M <= 6){
for(int J = 1; J <= M; ++J){
System.out.println("请输入第"+J+"辆车的序号");
int T = scan.nextInt();
//输入的T和车的序号相等,就获得了该车的属性
//这个方式也不是很满意
if(T == car1.getXuhao()){
sum += car1.getMoney();
nsum1 += car1.getName();
p += ab1.zairen(1);
}
if(T == car2.getXuhao()){
sum += car2.getMoney();
nsum2 += car2.getName();
p += ab2.zairen(1);
}
if(T == car3.getXuhao()){
sum += car3.getMoney();
nsum3 += car3.getName();
p += ab3.zairen(1);
c += ab3.zaihuo(1);
}
if(T == car4.getXuhao()){
sum += car4.getMoney();
nsum4 += car4.getName();
p += ab4.zairen(5);
}
if(T == car5.getXuhao()){
sum += car5.getMoney();
nsum5 += car5.getName();
c += ab5.zaihuo(1);
}
if(T == car6.getXuhao()){
sum += car6.getMoney();
nsum6 += car6.getName();
c += ab6.zaihuo(5);
}
}
}else{
System.out.println("输入错误");
}
System.out.println();
System.out.println("请输入您租的天数");
int Sum = 0;//总金额
int D = scan.nextInt();
if(D == 0){
System.out.println("输入错误");
}else{
Sum = sum * D;
}
System.out.println("您的账单:");
System.out.println("可载人的车有:");
//System.out.println(nsum1+"\t"+nsum2+"\t"+nsum3+"\t"+nsum4);
//上面输出方式的改进,依然觉得不好
String[] nsum = {nsum1,nsum2,nsum3,nsum4};
for(int i = 0; i <nsum.length; ++i){
System.out.print(nsum[i]+" ");
}
System.out.println();
System.out.println("共载人:"+p+"个");
System.out.println();
System.out.println("可载货的车有:");
String[] nsum0 = {nsum3,nsum5,nsum6};
for(int i = 0; i <nsum0.length; ++i){
System.out.print(nsum0[i]+" ");
}
System.out.println();
System.out.println("共载货:"+c+"吨");
System.out.println("总价格:"+Sum+"元");
}
}
/ \n 回车换行 \t 横向跳到下一制表位置 \v 竖向跳格 垂直制表符 \b 退格 \r 回车 \f 走纸换页 \ 反斜线符"\" \' 单引号符 \a 鸣铃 /之前都没人告诉我
比如说“您是否想要租车?是:1 否:2 ” 你输了2之后的还会执行;“你输入的第J辆车的序号”你输入的数不符合规范还会执行等等问题还没有搞定。
以上都是自己的愚见,为什么用接口是因为看了 睿智狂人 的想法(以下1234都是他的)MD觉得接口没用好,不知道咋整。写了好久好累,依旧觉得不好。
1、创建两个接口(载客接口A-载客量)、(载货接口B-载货量),载客和货接口C extend 载客接口A,载货接口B(载客量、载货量),一个抽象父类Car(车型、单价-->元/天);
2、实现-卡车类 extend 父类Car implement 载货接口B; 实现-客车类 extend 父类Car implement 载客接口A; 实现-皮卡类 extend 父类Car implement 载客和货接口C;
3、租车系统类:一维数组 实例化 卡车对象、客车对象 和 皮卡对象;
4、客户选车、分类汇总车辆后,输出租车明细与总价。
共同学习,写下你的评论
评论加载中...
作者其他优质文章