为了账号安全,请及时绑定邮箱和手机立即绑定

答答租车系统代码--引用数组存储租车信息,能自动计算账单。也有自留坑,有需要的同学可以一起交流/ 请大神看看

看完第一季和第二季写的答答租车系统代码:

有需要的同学可以拿去试跑一下,也请和我交流一下,有什么可以改进的。因为最近做得东西大多数跟数据库有关,做Java项目好缺乏

有不足的地方--》如何更好地把类提取出来 // 如何更好处理需要存储客户需求的数组

首次访问页:

package com.imooc.carrentsys;

import java.util.Scanner;

public class ClientService {  //客户服务层,首页显示都在这个类里进行修改
		
		public int indication ;
		
		public int ClientSearch(){
			System.out.println("您好,欢迎来到租车网!");
			System.out.println("如要租车,请按1 ;如不租车,请按0");
						
			Scanner  input = new Scanner(System.in);
			indication = input.nextInt();
			return indication;     //返回指示,在main方法里面只接收指示——是否租车
		}
}


车的信息,为车分类:私家车、皮卡和货车 (运用继承知识点--》子类构造函数必须创建)

package com.imooc.carrentsys;

public class Car {
			public int num;     //车的编码
			public String name;	   //车的名字
			public double rent;     //车的租金/天
			public String load;     //车的容量
			
			/*
			 * 车的构造函数 ,在我看来,这道题不需要给车的类型分类,但从长远的角度来看--》分类管理,当车不是10台,而是800台
			 * 此时有分类创建并存储在数据库不同的表格里会更好,易检查,易修复
			 */
			public Car(int num,String name ,double rent,String load){   
			this.num=num;
			this.name =name;
			this.rent=rent;
			this.load=load;
			}

			@Override
			public String toString() {
				return  num + " " +  name  + " " + rent
						+ " " + load + " ";
			}
			
			
}
package com.imooc.carrentsys;

public class PrivateCar extends Car {

	public PrivateCar(int num, String name, double rent, String load) {  //子类也要定义构造函数,系统不会执行默认的无参构造函数
		super(num, name, rent, load); //super()显式执行父类的构造函数 ,算是创建车子类的知识点提醒
		// TODO Auto-generated constructor stub
	}

}
package com.imooc.carrentsys;

public class Truck extends Car{

	public Truck(int num, String name, double rent, String load) {
		super(num, name, rent, load);
		// TODO Auto-generated constructor stub
	}

		
}
package com.imooc.carrentsys;

public class Pickup  extends  Car{

	public Pickup(int num, String name, double rent, String load) {
		super(num, name, rent, load);
		// TODO Auto-generated constructor stub
	}

	
		
}

车列表信息,定义已经有的车型

package com.imooc.carrentsys;

public class CarInfo {
		public String[] title ={"序号 "," 车型 "," 租金(元/天) "," 容量 "};
		public Car[] carInfo ={new PrivateCar(001 ,"  奥迪A4 ", 500," 载人:4人"),   //继承关系,使用多态——》父类引用数组
							             	 new PrivateCar(002 ,"  马自达006", 400," 载人:4人"),
								             new Pickup(003 ,"  皮卡雪006",450," 载人:4人  载货:2吨 "),
								             new PrivateCar(004 ,"  金龙 ",800," 载人:20人"),
								             new Truck(005 ,"  松花江 ",800," 载货:4吨 "),
								             new Truck(006 ,"  依维 ",1000," 载货:20吨 ")};   //Car信息列表初始化,Car作为数组类型
		
		public void CarList(){
			//System.out.println("Test:"+carInfo[1]);   //写引用类型数组,carInfo引用中存储指向对象的地址  com.imooc.carrentsys.PrivateCar@a298b7
			System.out.println("你可租用的车型以及租金列表:");
			//System.out.println(title);
			for(int i=0;i<title.length;i++){
				System.out.print(title[i]); 
				//System.out.println(carInfo[i]);   打印carInfo的信息,com.imooc.carrentsys.PrivateCar@a298b7
			}
			System.out.println();  //单行键,更加美观
			for(int i=0;i<carInfo.length;i++){
				System.out.println(carInfo[i]); 
				//System.out.println(carInfo[i]);   打印carInfo的信息,com.imooc.carrentsys.PrivateCar@a298b7
			}
		}
}

用户的租车需求

package com.imooc.carrentsys;

import java.util.Scanner;

public class RentCount {   //根据顾客的租车要求显示账单
	int rentNum =0; //租车数量
	int[] carChoose = new int[7]; //客户的需求车型,初始化数组内存空间,才可以存放数值--不算是一个聪明的做法
	int rentDur=0;
	
	
	public void rentCar(){	
	System.out.println("您好,请输入要租车的数量:");
	Scanner input = new Scanner(System.in);
	rentNum = input.nextInt();   //显示有客户需要租用几辆车,这里有个限制,客户不能同时选择一款车的多个数量,学习前端的必要性
	
	for(int temp=1 , i=0;temp<=rentNum;temp++,i++){
		System.out.println("您好,请输入你想要租的第"+temp+"辆车型编码");
		Scanner inputCarNum = new Scanner(System.in);	
		 //String[] carChoose = null  ;   局部变量必须进行初始化,
	    carChoose[i] =inputCarNum.nextInt();   //数组存储客户输入的租车编码,如果有数据库,一般通过编码去数据库选取,这里只能hardcode
		}
	}
	
	public void rentDay(){
		System.out.println("您好,请输入要租车的天数:");
		Scanner input = new Scanner(System.in);
		rentDur = input.nextInt();  //知道客人租几天
	}
	
	
}	


Test类,还有部分逻辑操作

package com.imooc.carrentsys;

public class RentCarSys {
	
	public static void main(String[] args){
	ClientService client = new ClientService();  //是否要租车,不租就退出,租车就继续往下执行程序
	if (client.ClientSearch()==0){
		System.out.println("欢迎访问答答租车网"); 
	}
	else{
		CarInfo carInformation = new CarInfo();
		carInformation.CarList();   //显示车列表信息
		System.out.println();  //空一行,仅作为视觉上的美观
		
		RentCount rentCount =  new RentCount();  //收集客户的租车需求
		rentCount.rentCar();
		rentCount.rentDay();
		System.out.println(); 
		
		System.out.println("您的订单如下:")  ; //对题目做了一点改动,把客户的对车的需求列出来
		System.out.println("您的租车天数:"+rentCount.rentDur)  ; 
		
		int temp =0;
		double bill = 0; //帐的数目
		for(;  temp<rentCount.rentNum;temp++){  //自留坑,不能用数组的length,否则会把所有空间的读一遍
			 for(int i =0; i<carInformation.carInfo.length;i++){
				 if(rentCount.carChoose[temp]==carInformation.carInfo[i].num){
					 System.out.println(carInformation.carInfo[i]);
					 bill+=carInformation.carInfo[i].rent;
				 }
			 }
			
		}
		
		System.out.print("您的账单为:"+(bill *rentCount.rentDur));   
		
	}
	
	
	}
		
}


正在回答

7 回答

抱歉,上面的错了,修改了一下http://img1.sycdn.imooc.com//56b5851c000190d808010291.jpg

0 回复 有任何疑惑可以回复我~
#1

梁XX 提问者

棒!
2016-02-06 回复 有任何疑惑可以回复我~
#2

梁XX 提问者

棒!!
2016-02-06 回复 有任何疑惑可以回复我~

厉害太厉害了

0 回复 有任何疑惑可以回复我~

感谢楼主,学到很多。谢谢


0 回复 有任何疑惑可以回复我~

题目里面要求要分别列出可以载客的车和可以载货的车啊,还要算出总载人数和总载货量,这两个才是难点啊。两个不同属性,在子类里面有交叉。你却直接把两个量合成一个量当做字符出输出了。。。。

0 回复 有任何疑惑可以回复我~
#1

梁XX 提问者

大概是当初觉得并不难....I am so sorry
2016-03-31 回复 有任何疑惑可以回复我~
#2

蓝天16 回复 梁XX 提问者

...sorry啥,我也是想多看看别人的解决思路,主要是互相学习嘛,从你里面我也获得了不少东西。加油
2016-04-01 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//56b57e910001f9f508540258.jpg对于楼主的自留坑,这里补充了一下。学生小白,如有错误,还请指正。

0 回复 有任何疑惑可以回复我~

好像还欠缺一点,如果租的天数不一样好像程序就不能使用了;如果我2租3天,4租5天就算不了了

     


 

0 回复 有任何疑惑可以回复我~
package com.dada;
import java.util.Scanner;
public class RentCount {
	int rentNum =0; //租车数量
    int[] carChoose = new int[7]; //客户的需求车型,初始化数组内存空间,才可以存放数值--不算是一个聪明的做法
    int rentDur=0;
     
     
    public void rentCar(){   

System.out.println("您好,请输入要租车的数量:");
    Scanner input = new Scanner(System.in);
    rentNum = input.nextInt();   //显示有客户需要租用几辆车,这里有个限制,客户不能同时选择一款车的多个数量,学习前端的必要性
     
    for(int temp=1 , i=0;temp<=rentNum;temp++,i++){
        System.out.println("您好,请输入你想要租的第"+temp+"辆车型编码");
        while(carChoose[i]==0)
        { Scanner inputCarNum = new Scanner(System.in);  
         //String[] carChoose = null  ;  
        int a=0;
         a=inputCarNum.nextInt();//局部变量必须进行初始化,
        if(a>=1&&a<=6)
        {carChoose[i] =a;} 
        else{ System.out.println("请重新输入");}//数组存储客户输入的租车编码,如果有数据库,一般通过编码去数据库选取,这里只能hardcode
        }}
    }
     
    public void rentDay(){
        System.out.println("您好,请输入要租车的天数:");
        Scanner input = new Scanner(System.in);
        rentDur = input.nextInt();  //知道客人租几天
    }
     
     
}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

答答租车系统代码--引用数组存储租车信息,能自动计算账单。也有自留坑,有需要的同学可以一起交流/ 请大神看看

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信