*问题描述
* 设停车藏是一个可以停放n辆车的狭长的通道,且只有一个大门可供进出。汽车在停车场内按到达的先后顺序,一次由北向南停放,若场内停放已满,那么就先停放在便道中。
* 一旦由车从停车场内出来后。便道中的第一辆车马上那个听进去。当停车场内由车要出来时。在他后面的车要为他让路。然后再按原顺序进入停车场,收取费用。
parking.java
/**
* ***********CopyRight**************
*-------Powered by QianXunNet-----
*-----Version 1.00 2009-01-17-----
*----- Design BY NiChao -----
*=========description===========
*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
*/
package yanweimin.Parking;
import java.util.Scanner;
import yanweimin.Parking.*;
import java.util.Scanner;
public class Park {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//设定一个便道和两个车库
System.out.println("the parking money is 10 yuan per hour");
System.out.println("input a num for the maxsize of parking:");
Scanner in = new Scanner(System.in);
int maxsize = in.nextInt();
Queue biandao = new Queue();
StackArray main = new StackArray(maxsize,"主车库");
StackArray fuzhu = new StackArray(maxsize, "辅助车库");
loop: while(true)
{
Scanner cin = new Scanner(System.in);
System.out.println("请输入当前时间:");
//======当前时间=======
int time = cin.nextInt();
System.out.println("select === 1: 到达 2.离去 3.结束程序");
int select = cin.nextInt();
switch(select)
{
//车辆到站
case 1 :
{
System.out.println("input the num of car");
int num = cin.nextInt();
Car mycar = new Car(time ,num);
int into = main.push(mycar);
if(into == -1)
{
biandao.addQueue(mycar);
}
break;
}
//出车库
case 2 :
{
System.out.println("input the num of the car you want to out:");
int num = cin.nextInt();
while( main.stackvalue[main.p].num != num)
{
Car acar = main.stackvalue[main.p];
main.pop();
fuzhu.push(acar);
}
Car right_car = main.stackvalue[main.p];
main.pop();
int money = (time - right_car.time)*10;
System.out.println("该车应该付费"+money);
while( fuzhu.p != -1)
{
Car acar = fuzhu.stackvalue[fuzhu.p];
fuzhu.pop();
main.push(acar);
}
if(biandao.rear != -1)
{
Car acar = biandao.queuevalue[0];
acar.time = time;
biandao.delQueue();
main.push(acar);
}
break;
}
case 3 :
{
break loop;
}
}
}
}
}
queue.class
package yanweimin.Parking;
//优化过的数组模拟的队列类
import yanweimin.Parking.Car;
public class Queue {
/*
* 查看队列数组中的数
*/
// public void coutQueue()
// {
//设定一根移动指针 用于指示当前的虚拟队头
// if(this.rear == -1)
// System.out.println("当前队列为空");
// else
// {
// int j = 0;
// for(int i =0; i<=rear;i++,j++)
// {
// System.out.print(queuevalue[i]+" ");
// }
// System.out.println("共有元素"+j+"个");
// }
// }
/*
* 向队列中增加元素
* @param num 欲增加的值
*/
public void addQueue(Car car)
{
//队列已满
if(this.rear == this.maxsize-1)
{
System.out.println("便道已满");
}
else
{
this.rear ++;
this.queuevalue[this.rear] = car;
System.out.println(" 车牌号为 "+car.num+"进入便道了");
}
}
/*
* 取出队列中的元素
* @return num 取出的元素
*/
public void delQueue()
{
if(this.rear == -1)
{
System.out.println(" 便道已经空");
}
else
{
Car car = this.queuevalue[0];
int temp = 0;
while ( temp != this.rear )
{
this.queuevalue[temp] = this.queuevalue[temp +1];
temp ++;
}
this.rear --;
System.out.println("车牌号为"+car.num+"出便道了");
}
}
public int maxsize = 20;
public Car[] queuevalue = new Car[maxsize];
public int rear = -1;
}
stackarray.class
package yanweimin.Parking;
import yanweimin.Parking.Car;
public class StackArray {
//构造函数
public StackArray(int maxsize,String name)
{
p = -1;
this.maxsize = maxsize;
stackvalue = new Car[maxsize];
this.name = name;
}
//打印数组内的数据
// public void print()
// {
//指针指向当前栈的有效数组上
// if(this.p==-1)
// System.out.println("栈空");
// else
//{
// int i = this.p;
// while(i>=0)
// {
// System.out.println(this.stackvalue[p]);
// i--;
// }
// }
// } //print
//进车库
//返回值 -1 没有成功进入车库
//返回值 1 成功进入车库
public int push(Car value)
{
if(this.p == this.maxsize-1 )
{
System.out.println(name+"已满");
return -1;
}
else
{
this.p++;
this.stackvalue[p] = value;
System.out.println("车牌为 "+value.num+"进入了"+this.name);
return 1;
}
} //push
public int pop()
{
// int temp = -1;
if(this.p == -1)
{
System.out.println("车库中已经没有车了");
return -1;
}
else
{
int temp;
temp = this.stackvalue[p].num;
System.out.println("车牌号为 "+temp+" 出"+this.name);
this.p--;
return temp;
}
}
int p; //栈内指针
int maxsize; //栈的最大容量
Car[] stackvalue;
String name;
}
测试结果
--------------------------------------------
the parking money is 10 yuan per hour
input a num for the maxsize of parking:
2
请输入当前时间:
5
select === 1: 到达 2.离去 3.结束程序
1
input the num of car
1
车牌为 1进入了主车库
请输入当前时间:
10
select === 1: 到达 2.离去 3.结束程序
1
input the num of car
2
车牌为 2进入了主车库
请输入当前时间:
15
select === 1: 到达 2.离去 3.结束程序
2
input the num of the car you want to out:
1
车牌号为 2 出主车库
车牌为 2进入了辅助车库
车牌号为 1 出主车库
该车应该付费100
车牌号为 2 出辅助车库
车牌为 2进入了主车库
请输入当前时间:
20
select === 1: 到达 2.离去 3.结束程序
1
input the num of car
3
车牌为 3进入了主车库
请输入当前时间:
25
select === 1: 到达 2.离去 3.结束程序
1
input the num of car
4
主车库已满
车牌号为 4进入便道了
请输入当前时间:
30
select === 1: 到达 2.离去 3.结束程序
1
input the num of car
5
主车库已满
车牌号为 5进入便道了
请输入当前时间:
35
select === 1: 到达 2.离去 3.结束程序
2
input the num of the car you want to out:
2
车牌号为 3 出主车库
车牌为 3进入了辅助车库
车牌号为 2 出主车库
该车应该付费250
车牌号为 3 出辅助车库
车牌为 3进入了主车库
车牌号为4出便道了
车牌为 4进入了主车库
请输入当前时间:
40
select === 1: 到达 2.离去 3.结束程序
2
input the num of the car you want to out:
4
车牌号为 4 出主车库
该车应该付费50
车牌号为5出便道了
车牌为 5进入了主车库
请输入当前时间:
45
select === 1: 到达 2.离去 3.结束程序
3
分享到:
相关推荐
在这个基于数据结构的停车场管理系统中,主要利用了栈(Stack)和队列(Queue)这两种基本数据结构来实现车辆的进出管理和费用计算。栈是一种后进先出(LIFO)的数据结构,常用于处理临时存储和撤销操作的问题;队列...
数据结构课程设计C++语言停车场管理系统源码,添加了UI数据结构课程设计C++语言停车场管理系统源码,添加了UI数据结构课程设计C++语言停车场管理系统源码,添加了UI数据结构课程设计C++语言停车场管理系统源码,添加...
在本数据结构课程设计中,我们关注的主题是“停车场管理”。这个项目旨在运用所学的数据结构知识来解决实际问题,让学生能够将理论与实践相结合,加深对数据结构的理解。在这个设计中,我们可能会涉及到多种数据结构...
"数据结构C语言版课程设计停车场管理系统方案" 本文基于C语言实现了一个停车场管理系统的设计方案,使用栈模拟停车场,队列模拟便道,实现了停车场的收费管理系统。下面是相关的知识点: 1. 数据结构:栈和队列 ...
停车场问题是一个典型的计算机科学中的数据结构应用问题,它涉及到如何有效地管理和操作数据,尤其是当数据具有特定的行为和约束时。在这个场景中,我们使用“栈”这种数据结构来模拟一个单向进出的停车场系统,同时...
数据结构在停车场管理系统中的应用是本实训的核心内容。在停车场管理这一特定场景中,数据结构扮演着关键角色,主要用于组织和处理车辆的进入、离开以及费用计算等信息。以下是实训中涉及的重要知识点: 1. **栈与...
本文档为数据结构停车场管理问题源代码,亲测可以运行,C语言编写
### 停车场管理问题--数据结构课程设计 #### 需求分析 ##### 问题描述 本项目旨在设计一款模拟现实生活中停车场管理的软件。假设存在一个单门停车场,车辆按照到达顺序停放,停车场空间有限。若停车场已满,则后续...
3. 停车场(ParkingLot):整个停车场是一个更大的数据结构,它包含所有车位的列表,以及管理车位分配、查找空闲车位等功能。这可以通过链表、数组或者哈希表等数据结构实现,具体取决于查询效率和内存使用的要求。 ...
《基于Java的数据结构实现:停车场管理系统》 在本次的课程设计中,我们构建了一个停车场管理系统,该系统采用Java编程语言实现,并且具有用户界面(UI)。这个系统的主要功能包括车辆的存取操作,同时考虑了停车场...
停车场管理系统数据结构课程设计报告 本课程设计的目的是为了解决停车场管理问题,通过使用数据结构和C语言实现一个停车场管理系统。该系统可以模拟停车场的管理过程,包括车辆的到达和离开、停车场的停放车辆信息...
在这个“停车场管理实验”中,我们主要利用了两种基础的数据结构——栈和队列,来模拟实际的停车场管理系统。 栈(Stack)是一种后进先出(LIFO)的数据结构,它遵循“先进后出”的原则。在停车场管理场景中,我们...
《严蔚敏停车场管理实习报告》是一份关于利用数据结构实现停车场管理系统的实践报告。报告主要探讨了如何运用栈和队列这两种数据结构来模拟停车场的实际运作情况。 首先,需求分析部分明确了系统的基本功能。停车场...
在这个“数据结构,停车场管理系统”的项目中,我们看到一个利用C语言实现的停车场管理系统,这涉及到对数据结构的深入理解和应用。这个系统可能包括车辆的进出场管理、车位分配、费用计算等功能。 首先,`main.cpp...
在这个数据结构课程设计中,我们关注的是一个具体的实际应用——停车场管理系统。这个系统利用了数据结构的知识来模拟真实世界的停车场景,帮助我们理解如何在实际问题中运用抽象数据类型和算法。 首先,我们可以...
数据结构试验源代码,采用严蔚敏老师所采用的基本数据操作函数,效果很好哟!
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列,若停车场内已满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则...
停车场管理系统是一种基于数据结构实现的信息管理系统,用于自动化管理停车场的车位使用、车辆进出以及费用计算等环节。在本文中,我们将深入探讨这个系统的实现细节,重点关注数据结构在其中发挥的关键作用。 首先...