新手做的,答答租車系統(tǒng),望大家多多指教~
首先定義Car抽象類;
package?dadasystem2; public?abstract?class?Car?{ private?String?name; private?int?num; private?int?person; private?int?weight; private?int?price; //定義4個私有成員變量,名字,數(shù)量,載客量,載重量,單價 public?abstract?void?show(); //定義輸出車輛信息的抽象函數(shù) public?String?getName()?{ return?name; } public?void?setName(String?name)?{ this.name?=?name; } public?int?getNum()?{ return?num; } public?void?setNum(int?num)?{ this.num?=?num; } public?int?getPerson()?{ return?person; } public?void?setPerson(int?person)?{ this.person?=?person; } public?int?getWeight()?{ return?weight; } public?void?setWeight(int?weight)?{ this.weight?=?weight; } public?int?getPrice()?{ return?price; } public?void?setPrice(int?price)?{ this.price?=?price; } }
然后定義小車類Scar,
package?dadasystem2; public?class?Scar?extends?Car?{ public?Scar?(String?name,int?num,int?person,int?price)?{ this.setName(name); //這里也可以不要this this.setNum(num); this.setPerson(person); this.setPrice(price); } @Override public?void?show()?{ //?TODO?Auto-generated?method?stub System.out.println(getName()+"\t"+getNum()+"\t"+getPerson()+"\t"+"-"+"\t"+getPrice()); } }
定義載貨車Lcar,
package?dadasystem2; public?class?Lcar?extends?Car?{ public?Lcar?(String?name,int?num,int?weight,int?price)?{ setName(name); //可以不要this setNum(num); setWeight(weight); setPrice(price); } @Override public?void?show()?{ //?TODO?Auto-generated?method?stub System.out.println(getName()+"\t"+getNum()+"\t"+"-"+"\t"+getWeight()+"\t"+getPrice()); } }
定義載人載貨兩用車Bcar,
package?dadasystem2; public?class?Bcar?extends?Car?{ public?Bcar?(String?name,int?num,int?person,int?weight,int?price)?{ setName(name); //好像可以不要this setNum(num); setPerson(person); setWeight(weight); setPrice(price); } @Override public?void?show()?{ //?TODO?Auto-generated?method?stub System.out.println(getName()+"\t"+getNum()+"\t"+getPerson()+"\t"+getWeight()+"\t"+getPrice()); } }
最后看看測試類,
package?dadasystem2; import?java.util.Scanner;; public?class?Test? { public?static?void?main(String[]?args)? { //?TODO?Auto-generated?method?stub Car?car[]?= { new?Scar("野馬",?10,?5,?500), new?Scar("奔奔",?10,?8,?300), new?Lcar("東方",?10,?10,?1000), new?Lcar("重汽",?10,?40,?3000), new?Bcar("皮卡",?10,?2,?3,?500), new?Bcar("卡車",?10,?5,?5,?800) }; //創(chuàng)建car車型數(shù)組,存放6個不同的車型對象 System.out.println("***歡迎使用答答租車系統(tǒng)***"); System.out.println("租車請按1,退出請按其他鍵。"); Scanner?in1?=?new?Scanner(System.in); while?(in1.nextInt()==1)? { System.out.println("序號"+"\t"+"車名"+"\t"+"可租車量"+"\t"+"載人量"+"\t"+"載貨量"+"\t"+"價格"); for?(int?i=0;?i<=5;?i++)? { System.out.print((i+1)+"\t"); car[i].show(); } System.out.println("------------------------------------------------"); System.out.print("請輸入您要租車的數(shù)量:"); Scanner?in2?=?new?Scanner(System.in); int?NUM?=?in2.nextInt(); //用?NUM?表示需要租車的數(shù)量 Car?[]?Zcar?=?new?Car[NUM]; //創(chuàng)建Zcar數(shù)組,存放租車對象 for(int?j=0;?j<NUM;?j++?)? { System.out.println("請輸入您要租的第"+(j+1)+"輛車的序號:"); //循環(huán)進行?NUM?輛車的錄用和輸出信息 Scanner?in3?=?new?Scanner(System.in); int?flag?=?in3.nextInt(); //?flag?表示當(dāng)前第j輛車的?????租車的序號 Zcar[j]=car[flag-1]; car[flag-1].setNum(car[flag-1].getNum()-1); //?車型數(shù)組car中,第?flag?類車的數(shù)量-1,保證數(shù)量問題 System.out.println("第"+(j+1)+"輛車租車完成"); } System.out.println("------------"+NUM+"輛車租車完成------------"+"\n"+"下面開始統(tǒng)計數(shù)據(jù).........."); //租車完成,開始統(tǒng)計數(shù)據(jù)并輸出 int?per=0,?wei=0,?pri=0,?NUM2=0; for?(int?i=0;?i<NUM;?i++) { per?+=?Zcar[i].getPerson(); wei?+=?Zcar[i].getWeight(); pri?+=?Zcar[i].getPrice(); NUM2?+=?Zcar[i].getNum(); } System.out.println("一共租車"+NUM+"輛"); System.out.println("共可載"+per+"人"); System.out.println("共可載貨"+wei+"噸"); System.out.println("共需付款"+pri+"元"); ? System.out.print("請輸入付款金額:"); //加的小程序?????O(∩_∩)O哈哈~ Scanner?in4?=?new?Scanner(System.in); while?(pri!=in4.nextInt()) System.out.println("輸入錯誤,請重新輸入金額!"); System.out.print("請輸入付款密碼:"); Scanner?in5?=?new?Scanner(System.in); while?(in5.nextInt()!=123456) System.out.println("密碼錯誤,請重新輸入!"); System.out.println("交易成功!"); System.out.println("繼續(xù)租車請按1,退出請按其他鍵。"); } System.out.println("***歡迎再次使用本系統(tǒng),再見!***"); } }
本系統(tǒng)加了一個剩余車輛數(shù)量的程序,再輸入付款密碼,交易成功之后,可繼續(xù)租車,此時可租車輛就不再是默認的10輛了,會減去已租車輛數(shù)。
//程序還可以修改,加一個判斷 ? 當(dāng)租車數(shù)大于車輛剩余數(shù)量的時候 ? 返回錯誤
剛開始學(xué)java,還希望大家多多指導(dǎo)!?。?br />
測試車輛數(shù)量是否有更新:
現(xiàn)在想問問大神們,如何修改程序,可以在程序的任意位置,直接退出??
比如說租車完成后,要選擇繼續(xù)租車,才能看到車輛列表的更新狀態(tài),但是看了之后,有必須要再執(zhí)行一遍租車系統(tǒng),就很迷了,真的是迷~~~
2018-10-14
又看了一遍代碼,樓主恐怕對Scanner的調(diào)用有些誤會,Scanner in1=new Scanner中in1并不是一個具體數(shù)值而是一個類似方法調(diào)用中的對象,并不需要多次調(diào)用而是可以調(diào)用后整個類用一個對象使用方法的,就是說不需要in1,in2反復(fù)調(diào)用方法,新手看了樓主的代碼很可能對Scanner方法的使用產(chǎn)生誤會
2018-10-09
感謝樓主的代碼,順便一提測試類53行的代碼應(yīng)該移到22到23行之間,在輸入1重復(fù)運行時才能正確累計數(shù)值
2018-08-07
非常感謝樓主的代碼
2018-08-04
真厲害
2018-07-11
構(gòu)造器和構(gòu)造方法時同一個概念,只是不同稱謂而已吧
2018-06-08
請問為什么在構(gòu)造方法時沒有加上void 呢,不是沒有返回值嗎 ?我不加的話會報錯
2018-06-06
有幾個問題比較困惑. 求解.
Car car[]= {}? 這個創(chuàng)建組 為什么要用到父集中的Car呢?怎么思考到用這個的呢.
new Scar new Lcar. 我不太懂子集里面為什么構(gòu)造方法的方法名要跟子類的類名一樣呢?
我嘗試用public void Sscar 構(gòu)造? test里面new Sscar? 就會出錯 不太懂..
求教了謝謝.
2018-06-02
哥 厲害
2018-06-01
厲害 贊一個
2018-04-25
厲害啊