停车场管理的模拟系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广东海洋大学信息学院课程设计报告
设计题目停车场管理的模拟系统
课程名称数据结构
姓名(学号)
联系电话
专业名称计算机科学与技术
所在班级计科1112
指导教师谢仕义
教师职称教授
起止时间2011 年12月26日至2012年1月6日评定成绩
一、课程设计的主要内容
熟悉理解栈和队列的逻辑结构和存储结构,设计实现停车场管理的模拟系统,其主要内容如下:设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出,其模型如下图1所示。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆汽车停放在车场的最北端),若车场内已停满n辆车,那么后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆汽车要离开时,在它之后进入的车辆必须先退出停车场按顺序开入临时停放道为其让路,待其开出大门外后,再按原次序进入车场,每辆停放在停车场的汽车在它离开停车场时必须按其停留的时间长短缴纳费用(从进入停车场开始计费)。
二、功能和结构设计
I.主界面
为实现各项功能,首先设计一个汉多个功能的主控菜单子程序,已连接系统各项功能,方便用户使用。系统主控菜单界面如下:
II ,系统的主要要求:
1.以栈模拟停车场,以队列模拟停车场外的便道,同时用另一个栈模拟为离去车辆让路而从停车场退出来的车辆的临时停放道。
2.每一组输入数据包括三个数据项:车辆“到达”或“离去”信息、车辆牌照号码、车辆到达或离去的时刻。
3对每一组输入数据进行操作后的输出信息为:每当有车辆到达或离去时,动态输出停车场内、便道上以及临时停放道的车辆排队情况,若是车辆离去,还应输出汽车在停车场内停留的时间和应缴纳的费用(在便道上停车不收费)。
III.记录到达车辆:
长度n
大门
便道
停车场
临时停放道 (临时停放为给要离去的汽车让路而从停车场退出来的车辆)
IV.程序原定车位5个,当停车场车位已满时,到达车辆进入便道等候,当停车场有车离开时,在便道上的车自动进入停车场,并且以此时的时间来计算从便道进入停车场的车时间,离开的车要按停放的时间收取费用:
V.查询功能,可以选择查询停车场里的停放的车,或者是查询便道上等候的车辆:
三、流程图和算法设计
I.Judge_Output算法流程图
II.A_cars算法流程图
III.D_cars流程图
四、源程序代码
#include
#include
#include
#define MAX 5 //车库容量
#define price 0.01 //每分钟费用
typedef struct time
{
int hour;
int min;
}Time;//时间结点
typedef struct node
{
char num[10];
Time reach;
Time leave;
}CarNode;//车辆结点
typedef struct NODE
{
CarNode *stack[MAX+1];
int top;
}SeqStackCar;//模拟车站
typedef struct car
{
CarNode *data;
struct car *next;
}QueueNode;
typedef struct Node
{
QueueNode *head;
QueueNode *rear;
}LinkQueueCar;//模拟通道
void InitStack(SeqStackCar *);//初始化栈
int InitQueue(LinkQueueCar *);//初始化便道
int Arrival(SeqStackCar *,LinkQueueCar *);//车辆到达
void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);//车辆离开void List(SeqStackCar,LinkQueueCar);//显示存车信息
void main()
{
system("color 00f");
SeqStackCar Enter,Temp;
LinkQueueCar Wait;
int ch;
InitStack(&Enter);//初始化车站
InitStack(&Temp);//初始化让路的临时栈
InitQueue(&Wait);//初始化便道
while(1)
{
cout<<"欢迎光临"< cout<<"*************************"< cout<<"1.车辆到达"< cout<<"2.车辆离开"< cout<<"3.列表显示"< cout<<"4.退出系统"< cout<<"*************************"< cout<<"请选择所需要的服务!"< cout<<"请注意正确输入时间,不要为非数字!"< while(1) { cin>>ch; if(ch>=1&&ch<=4)break; else cout<<"请选择:1 | 2 | 3 | 4."< } switch(ch) { case 1: Arrival(&Enter,&Wait);break;//车辆到达 case 2: Leave(&Enter,&Temp,&Wait);break;//车辆离开case 3: List(Enter,Wait);break;//列表打印信息 case 4: exit(0);//退出主程序 default: break; } } } void InitStack(SeqStackCar *s)//初始化栈 { int i;