公园停车场管理

一、项目目的

设停车场采用南北方向的双口,每个口都有一个入口和出口。另外停车场入口处各有一个单车道的等候通道,并允许等候的车辆因急事从等候通道直接开走。

二、实验内容

设计停车场模拟管理程序。

  • 采用栈和队列等数据结构;
  • 实现对等候车辆的管理;
  • 实现对停车位的管理。

三、实验要求

1、实验报告要求用Java语言实现,2或3人一组。

2、完成“数据结构项目情境实验报告”。

3、完成项目程序代码的编写,并能正确运行

四、开发环境及人员分工

集成开发环境(IDE)

              Eclipse   JAVA 

项目成员

分工

五、实现过程详细说明及流程图

1.停车场采用南北方向的双口,采用栈和队列实现每个口都有一个入口和出口。

2.停车场入口处各有一个单车道的等候通道,实现对等候车辆的管理

3.允许等候的车辆因急事从等候通道直接开走,实现对停车位的管理

六、实验总结

        《数据结构》是一门实践性很强的课程,上机实习是对学生全面综合素质进行训练的一种最基本的方法,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!

七、代码实现(程序粘贴,运行结果截图)

 

 

 

package CarParking;

import java.text.SimpleDateFormat;

import java.util.Date;

public class Car {

    private String number;  //车牌号

    private Date inTime;    //汽车进入停车场的时间

    private Date outTime;   //汽车退出停车场的时间

    public Car(){

        this.number="";

        inTime=null;

        outTime=null;

    }

    public Car(String num){

        this.number=num;

        inTime=null;

        outTime=null;

    }

    public String getNumber() {

        return number;

    }

    public void setNumber(String number) {

        this.number = number;

    }

    public String getInTime() {

        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        return f.format(inTime);

    }

    public void setInTime(Date inTime) {

        this.inTime = inTime;

    }

    public String getOutTime() {

        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        return f.format(outTime);

    }

    public void setOutTime(Date outTime) {

        this.outTime = outTime;

    }

}

package CarParking;

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class InOutCar {

    private InStack inCar;          //停车场

    private OutStack outCar;        //临时栈

    private Queue waitCar;          //候车区

    public InOutCar(){

        inCar = new InStack();

        outCar = new OutStack();

        waitCar = new Queue();

    }

    //停车到停车场

    public void inCar(String number){

        Car car = new Car(number);

        //判断停车场是否满了

        if (!inCar.isFull()){

            //没满,停车到停车场

            inCar.push(car);

            System.out.println("*********************");

            System.out.println("您的车牌号:"+inCar.getTop().getNumber());

            System.out.println("进入停车场时间:"+inCar.getTop().getInTime());

            System.out.println("*********************");

        }else{

            //满了,停车到候车区

            waitCar.enqueue(car);

            System.out.println("*********************");

            System.out.println("您的车牌号:" + car.getNumber());

            System.out.println("停车场已满,您现在在等待中,您的位置是第" + waitCar.getSize() + "个");

            System.out.println("*********************");

        }

    }

    //打印停车场信息

    public void parkPrint() {

        System.out.println("停车位     车牌号     到达时间");

        System.out.println("------------------------------");

        inCar.print();

    }

    //打印候车区信息

    public void waitPrint() {

        System.out.println("位置     车牌号");

        System.out.println("------------------------------");

        waitCar.print();

    }

    //退出停车场

    public void outCar(String number){

        try {

            while (!inCar.getTop().getNumber().equals(number)){

                //把之后进入的车辆先退出停车场

                outCar.push(inCar.pop());

            }

            Car oCar = inCar.pop();

            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

            Date inTime = df.parse(oCar.getInTime());

            Date outTime = df.parse(oCar.getOutTime());

            long time = outTime.getTime() - inTime.getTime();

            System.out.println("*********************");

            System.out.println("你的车牌号:"+oCar.getNumber());

            System.out.println("进入停车场时间:"+oCar.getInTime());

            System.out.println("离开停车场时间:"+oCar.getOutTime());

            System.out.println("需要交纳的费用:"+time/1000 * Parking.getPrice()+"元");

            System.out.println("*********************");

            //把退出停车场的车加回去

            int length = outCar.getLength();

            for (int i = 0;i < length;i++){

                inCar.push(outCar.pop());

            }

            //如果候车场有车,就安排进停车场

            if (waitCar.getSize() != 0){

                inCar.push(waitCar.dequeue());

            }

        } catch (ParseException e) {

            e.printStackTrace();

        }

    }

}package CarParking;

import java.util.Date;

public class InStack implements MyStack {

    private int maxsize;

    private int top;

    private Car[] inCar;



    public InStack(){

        maxsize = 5;

        inCar = new Car[maxsize];

        top = -1;

    }

    //入栈 同时将系统时间压入

    public void push(Car car) {

        Date time = new Date(); //时间类

        car.setInTime(time);

        inCar[++top] = car;

    }

    @Override

    public Car pop() {

        Car item = null;

        if (!empty()){

            item=inCar[top--];

            item.setOutTime(new Date());

        }

        return item;

    }

    @Override

    public boolean isFull(){

        if (top == maxsize - 1){

            return true;

        }else{return false; } }

    @Override

    public boolean empty(){

        if (top == -1){

            return true;

        }else{ return false; }  }

    public int getLength() {

        return top + 1;

    }

    public Car getTop() {

        return inCar[top];}

    public void print(){

        for (int i = 0;i < getLength();i++){

            System.out.printf("%3d %12s %21s",(i+1),inCar[i].getNumber(),inCar[i].getInTime());

            System.out.println(); } }}                                  

package CarParking;

public class OutStack implements MyStack {

    private int maxsize;

    private int top;

    private Car[] outCar;

    public OutStack(){

        maxsize = 5;

        outCar = new Car[maxsize];

        top = -1;  }

    //判断是否满了

    public boolean isFull(){

        if (top == maxsize - 1){

            return true;

        }else{

            return false; }}//入栈public void push(Car car) {if (!isFull()){outCar[++top] = car;}} //出栈

    public Car pop(){

        Car item = null;

        if (!empty()){

            item=outCar[top--]; } return item; } //判断是否为空

    public boolean empty(){

        if (top == -1){return true;}else{return false;}}

    public int getLength() {return top + 1;}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值