这两天跑去mooc学java了,课后有一个综合实战项目:编写属于你的“答答租车系统”,要用到封装、继承和多态的知识,实现代码如下:
父类:汽车 Car.java
public class Car {
public String name;
public int money;
public int passenger;
public int cargo;
public void show(){
System.out.print("\t" + name + "\t" + money + "元/天 ");
}
}
子类:载人的汽车 Manned.java
public class Manned extends Car {
public Manned(String newName,int newMoney,int newPassenger){
this.name = newName;
this.money = newMoney;
this.passenger = newPassenger;
}
public void show(){
super.show();
System.out.print("\t载人:" + passenger + "人");
}
}
子类:载货的汽车 Cargoed.java
public class Cargoed extends Car {
public Cargoed(String newName,int newMoney,int newCargo){
this.name = newName;
this.money = newMoney;
this.cargo = newCargo;
}
public void show(){
super.show();
System.out.print("\t载货:" + cargo + "吨");
}
}
子类:可载人也可载货的车 PickUp.java
public class PickUp extends Car {
public PickUp(String newName,int newMoney,int newPassenger,int newCargo){
this.name = newName;
this.money = newMoney;
this.passenger = newPassenger;
this.cargo = newCargo;
}
public void show(){
super.show();
System.out.print("\t载人:" + passenger + "人" + "\t载货:" + cargo + "吨");
}
}
系统实现: Demo.java
import java.util.Scanner;
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin = new Scanner(System.in);
System.out.println("欢迎使用答答租车系统:");
System.out.println("您是否要租车:1是 0否");
int a = cin.nextInt();
if(a != 1 && a != 0){
System.out.println("您的输入不正确,程序退出");
return;
}
else if(a == 0){
System.out.println("欢迎您下次再来!");
return;
}
else{
//直接用多态,父类引用的数组,里面保存多个子类对象
Car[] c ={
new Manned("奥迪A4",500,4),
new Manned("马自达6",400,4),
new Manned("金龙",800,20),
new PickUp("皮卡雪",450,4,2),
new Cargoed("松花江",400,4),
new Cargoed("依维柯",1000,20),
};
//显示价目表
System.out.println("您可租车的类型及其价目表:");
System.out.println("序号\t汽车名称\t租金\t容量");
for(int i = 0; i < 6; i++){
System.out.print(i+1 + ".");
c[i].show();
System.out.println("\n");
}
//用户输入租车信息,并统计租车信息
System.out.println("请输入您要租车的数量:");
int b = cin.nextInt();
System.out.println("请输入您要租车的天数:");
int day = cin.nextInt();
int count = 0;//租车总价格
String mannedName = "";
String cargoedName = "";
int mannedNum = 0;
int cargoedNum = 0;
for(int i = 0; i < b; i++){
System.out.println("请输入第" + (i+1) + "辆车的序号:");
int j = cin.nextInt()-1;
count += c[j].money * day;
if(j<=2){
mannedName += c[j].name + "\t";
mannedNum += c[j].passenger;
}
else if(j == 3){
mannedName += c[j].name + "\t";
mannedNum += c[j].passenger;
cargoedName += c[j].name + "\t";
cargoedNum += c[j].cargo;
}
else{
cargoedName += c[j].name + "\t";
cargoedNum += c[j].cargo;
}
}
//输出租车信息
System.out.println("****您的账单****");
System.out.println("**可载人的车有:");
System.out.println(mannedName + "共载人:" + mannedNum + "人");
System.out.println("**可载货的车有:");
System.out.println(cargoedName + "共载货:" + cargoedNum + "吨");
System.out.println("****租车总价格:" + count + "****");
}
}
}
运行结果如下:
总结:
1.实现一个项目,需要:建立数据模型,建立业务模型,显示和流程。
还不能把继承和多态和模型熟练的结合,需要更多练习。
2.项目没有实现封装。做的时候问题集中在对租车信息的统计上,通过很多次尝试和借鉴别人的才写出来。
3.注意多态的使用。