亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

答答租車系統代碼--引用數組存儲租車信息,能自動計算賬單。也有自留坑,有需要的同學可以一起交流/ 請大神看看

看完第一季和第二季寫的答答租車系統代碼:

有需要的同學可以拿去試跑一下,也請和我交流一下,有什么可以改進的。因為最近做得東西大多數跟數據庫有關,做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 提問者

棒?。?/div>
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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號