Java小项目---租车管理系统

来源:互联网 发布:淘宝买到盗版书怎么办 编辑:程序博客网 时间:2024/04/30 12:01

这几天刚刚开始学Java,应该学了有接近3天了。刚好发现一个100行左右的小项目来锻炼一下自己。

题目:

小明的公司有一个滴滴公司,专门做租车生意。他有3种车型:
1:只能载人
2:只能载物
3:能载人能载物
小明有点懒,所以委托你 做一个软件去帮助小明管理这个公司 。
ps: 题目是自己编的(逃

一.项目要求:

!!!根据所学内容来完成以下项目

1.展示所有可租车辆
2.选择车型和租车辆
3.展示租车清单。

包括:
1:车型
2:总载货数,总载客数
3:金额

二.项目分析:

1.数据模型分析

分析模型主要功能,建立的属性和方法
1.三种车型 只能载人的Buscar类型 只能载货trunk类型 两种都能的Pickup类型
所以 我们可以建立一个 Car类型表示作为他们父类 去公用方法和属性。

2.业务模型分析

分析用户需求:1用户是否租车。2用户租车类型及数量。3提示用户需付金额

三.实现部分:

1. 创建一个父类Car

有4个属性 2个共有的name和rent 是可被继承的 剩下两个是私有的不可被继承 但可以通过函数去获取

package www.contentcl.cn;public class Car {    public String name;   //车名    public double rent;   //租金    private double memp;  //载人数    private double mems;  //载货数    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public double getRent() {        return rent;    }    public void setRent(double rent) {        this.rent = rent;    }    public double getMemp() {        return memp;    }    public void setMemp(double memp) {        this.memp = memp;    }    public double getMems() {        return mems;    }    public void setMems(double mems) {        this.mems = mems;    }}

2.在创建一个只能载人的子类Buscar

Buscar 只能载人,所以继承了父类的rent和name 并且拥有自己的属性
memp

package www.contentcl.cn;public class Buscar extends Car {    private double memp; //载人数    public Buscar(String name, double rent, double memp){        this.name = name;        this.rent = rent;        this.memp = memp;    }    public double getMemp() {        return memp;    }    public void setMemp(double memp) {        this.memp = memp;    }}

3.在创建一个只能载人的子类trunk

trunk 只能载人,所以继承了父类的rent和name 并且拥有自己的属性
mems

package www.contentcl.cn;public class trunk extends Car {    private double mems; //载货数    public trunk(String name, double rent, double mems){        this.name = name;        this.rent = rent;        this.mems = mems;    }    public double getMems() {        return mems;    }    public void setMems(double mems) {        this.mems = mems;    }}

4。在创建一个两种都能的子类Pickup

Pickup 继承了父类的rent和name 并且拥有自己的属性
mems和memp

package www.contentcl.cn;public class Pickup extends Car {    private double memp;  //载人数    private double mems;  //载货数    public Pickup(String name, double rent, double memp,double mems){        this.name = name;        this.rent = rent;        this.memp = memp;        this.mems = mems;    }    public double getMems() {        return mems;    }    public void setMems(double mems) {        this.mems = mems;    }    public double getMemp() {        return memp;    }    public void setMemp(double memp) {        this.memp = memp;    }}

5 最后我们来写总有主函数的主类

因为有提示语句所以就 不谢注释了
先用一个 Car 类型的数组 用多态的方式去创建对象
然后进行操作】

package www.contentcl.cn;import java.util.Scanner;public class Main {    public static void main(String[] args) {        // TODO Auto-generated method stub        Car car[] ={new Buscar("奔驰",500,5), new Buscar("宇通",1000,30),                           new trunk("依维柯",1000,40), new trunk("松花江",300,4),                    new Pickup("皮卡雪",700,4,2),new Pickup("大皮卡",1500,6,13)};    Scanner input = new Scanner(System.in);    System.out.println("\t欢迎您进入万达租车系统!!!");    System.out.println("\t租车请按1   其他请按2");    int sign = input.nextInt();    if (sign == 1){        int count=0;        System.out.println("车辆管理目录:");        for (Car ecar:car){            count++;            System.out.print("序号:"+count+"    车型: "+ecar.name+"\t租金:"+ecar.rent+"/天");            if (ecar.getMemp()!=0&&ecar.getMems()==0)                System.out.println("\t客载:"+ecar.getMemp()+'人');            else if (ecar.getMems()!=0&&ecar.getMemp()==0)                System.out.println("\t货载:"+ecar.getMems()+'吨');            else                 System.out.println("\t客载:"+ecar.getMemp()+"人  "+"货载:"+ecar.getMems()+'吨');        }        double sum=0,sump=0,sums=0;        System.out.println("请输入你要预定个的车辆数:");        int num = input.nextInt();        System.out.println("请输入你要租车的编号:(用空格隔开)");        for (int i=0; i<num; i++){            //System.out.println("请输入你要租车的编号:");            int num1 = input.nextInt();            if (num1<1||num1>6){                System.out.println("车辆不存在,请重新输入:");                num1 = input.nextInt();            }            sum += car[num1-1].getRent();            sump += car[num1-1].getMemp();            sums += car[num1-1].getMems();        }        System.out.println("请输入你要租车的天数:");        int day = input.nextInt();        sum *= day;        sump *= day;        sums *= day;        if(sump!=0&&sums==0)            System.out.println("共载:"+sump+"人");        else if(sump==0&&sums!=0)            System.out.println("共载:"+sump+"货物");        else             System.out.println("共载:"+sump+"人,"+sums+"货物");        System.out.println("请支付"+sum+"元");        System.out.println("欢迎下次光临!!!!!");    }    else if (sign==2){        System.out.println("傻逼,只能租车,重新输入吧:");        sign = input.nextInt();    }    else {        System.out.println("无效命令,请重新输入:");        sign = input.nextInt();    }    }}

程序 有2大方面没有完成

1:java实现实现c的cls 类型功能 比较麻烦 所以没有实现 所以我就没有使用while(true){} 这就意味着 如果如果不是1 就会直接结束程序 所以这方面还需要改进一下
2:想法还没有去实现 过几天做好补上
想去做一个 用户输入自身的人数和货物量 然后自动生成最优解的算法 ,当然需要用到贪心算法 ,其实也很好实现。先休息下 ,过段时间再弄