答答租車系統代碼--引用數組存儲租車信息,能自動計算賬單。也有自留坑,有需要的同學可以一起交流/ 請大神看看
看完第一季和第二季寫的答答租車系統代碼:
有需要的同學可以拿去試跑一下,也請和我交流一下,有什么可以改進的。因為最近做得東西大多數跟數據庫有關,做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));??? } } }
2016-02-06
抱歉,上面的錯了,修改了一下
2016-04-30
厲害太厲害了
2016-04-28
感謝樓主,學到很多。謝謝
2016-03-28
題目里面要求要分別列出可以載客的車和可以載貨的車啊,還要算出總載人數和總載貨量,這兩個才是難點啊。兩個不同屬性,在子類里面有交叉。你卻直接把兩個量合成一個量當做字符出輸出了。。。。
2016-02-06
2016-01-06
好像還欠缺一點,如果租的天數不一樣好像程序就不能使用了;如果我2租3天,4租5天就算不了了
?????
?
2015-12-29