Java oop :租车系统
本期看点:
// 神州租车系统
// 声明一个车的数组,存储各种货车,客车和皮卡车
// 1、声明用户类记录用户名和密码
// 2、声明货车类,客车类和皮卡车类继承自车类
// 3、声明载物和载人的接口,货车继承载物的接口
// 客车继承载人的接口,皮卡车继承载人载物的接口
// 使用多态数组初始化车辆的信息,打印并计算租车的总价格
package a;//U12复习课2_租车系统
import java.util.Scanner;
public class Student{//demo1
public static void main(String[] args) {
che xiaohuoche=new huoche(1,"小货车",30,0,3);
che dahuoche=new huoche(2,"大货车",50,0,5);
che xiaokeche=new keche(3,"小客车",40,4,0);
che dakeche=new keche(4,"大客车",80,10,0);
che xiaopika=new pika(5,"小皮卡",60,2,4);
che dapika=new pika(6,"大皮卡",100,4,8);
che[] c=new che[6];
c[0]=xiaohuoche;c[1]=dahuoche;c[2]=xiaokeche;
c[3]=dakeche;c[4]=xiaopika;c[5]=dapika;
yonghu yh=new yonghu();
che[] c_zuche = null;
while(true){
System.out.println("---------神舟租车系统-----------");
System.out.println("请输入你的操作:1.登录 2.注册 3.退出系统");
Scanner s=new Scanner(System.in);
int num=s.nextInt();
if(num==1){
System.out.println("----执行登录操作----");
System.out.println("请输入用户名:");
String uname=s.next();
System.out.println("请输入你的密码");
String pwd=s.next();
if(uname.equals(yh.uname)&&pwd.equals(yh.pwd)){
System.out.println("登录成功!");
break;
}else{
System.out.println("登录失败");
}
}else if(num==2){
System.out.println("----执行注册操作----");
System.out.println("请输入用户名:");
String uname=s.next();
System.out.println("请输入你的密码");
String pwd=s.next();
System.out.println("请输入你的姓名");
String name=s.next();
yh.uname=uname;
yh.pwd=pwd;
yh.name=name;
System.out.println("注册成功!");
}else if(num==3){
System.exit(0);
}
}
//租车操作
while(true)/*死循环,while(flase)为永不循环*/{
System.out.println("欢迎你,"+yh.name+"请选择你的操作:");
System.out.println("1.查看车辆列表 2.进行租车 3.查看我的租车数 4.退出系统");
Scanner s1=new Scanner(System.in);
int num=s1.nextInt();
if(num==1){
for(che i:c){/*相当于for(int i=0;i<c.length;i++)*/
i.jieshao();
}
}else if(num==2){
System.out.println("请输入你要租的车辆数");
int num1=s1.nextInt();
c_zuche=new che[num1];
for(int i=0;i<num1;i++){
System.out.println("请输入第"+(i+1)+"车辆的编号");
int bianhao=s1.nextInt();
switch(bianhao){
case 1:
c_zuche[i]=xiaohuoche;break;
case 2:
c_zuche[i]=dahuoche;break;
case 3:
c_zuche[i]=xiaokeche;break;
case 4:
c_zuche[i]=dakeche;break;
case 5:
c_zuche[i]=xiaopika;break;
case 6:
c_zuche[i]=dapika;break;
}
}
System.out.println("租车成功!");
}else if(num==3){
if(c_zuche==null){
System.out.println("你还没有进行租车呢!");
}else{
int zongjiage=0;
int zongzairenliang=0;
int zongzaiwuliang=0;
for(che i:c_zuche){
i.jieshao();
zongjiage+=i.jiage;
zongzairenliang+=i.zaikeliang;
zongzaiwuliang+=i.zaiwuliang;
}
System.out.println("总价格"+zongjiage+"总载人量"+
zongzairenliang+"总载物量"+zongzaiwuliang);
}
}else{
System.exit(0);/*终止系统,不可为break,break是跳出循环*/
}
}
}
}
class yonghu{
String uname;
String pwd;
String name;
}
abstract class che{
/*abstract抽象父类可以改为普通父类,通过以下方法:删掉class 和void前面的abstract,在类中的方法中加上打印等语句等。*/
int bianhao;
String name;
int jiage;
int zaikeliang;
int zaiwuliang;
public che(int bianhao, String name, int jiage, int zaikeliang,
int zaiwuliang) {
this.bianhao = bianhao;
this.name = name;
this.jiage = jiage;/*因为che[] c=new che[6];声明在前面,即全局,故this.jiage或jiage等带点的在全局都可自己用 ,若声明在class中this.jiage或jiage等带点的就只可在class里面直接用*/
this.zaikeliang = zaikeliang;
this.zaiwuliang=zaiwuliang;
}
abstract void jieshao();
}
class huoche extends che {
public huoche(int bianhao, String name, int jiage,
int zaikeliang,int zaiwuliang) {
super(bianhao, name, jiage, zaikeliang,zaiwuliang);
}
void jieshao() {
System.out.println("编号"+this.bianhao+"\t名称"+this.name+
"\t价格"+this.jiage+"\t载物量"+this.zaiwuliang);
}
}
class keche extends che{
public keche(int bianhao, String name, int jiage, int zaikeliang,
int zaiwuliang) {
super(bianhao, name, jiage, zaikeliang, zaiwuliang);
}
void jieshao() {
System.out.println("编号"+this.bianhao+"\t名称"+
this.name+"\t价格"+this.jiage+"\t载人量"+this.zaikeliang);
}
}
class pika extends che{
public pika(int bianhao, String name, int jiage, int zaikeliang,
int zaiwuliang) {
super(bianhao, name, jiage, zaikeliang, zaiwuliang);
}
void jieshao() {
System.out.println("编号"+this.bianhao+"\t名称"+
this.name+"\t价格"+this.jiage+"\t载人量"+this.zaikeliang+"载物量"+
this.zaiwuliang);
}
}

