没有合适的资源?快使用搜索试试~ 我知道了~
数据结构-停车场管理系统.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 85 浏览量
2022-07-11
12:04:49
上传
评论
收藏 68KB DOCX 举报
温馨提示
试读
12页
数据结构-停车场管理系统 一、设计目的 1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。 二、设计内容 设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 三、设计要求 按照从终端读入的输入数据进行模拟管理,每一组输入数据包括三个数据项:汽车"进站"或"出站"信息、汽车
资源推荐
资源详情
资源评论
数据结构-停车场管理系统
一、设计目的
1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方
法和技能;
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具
备的科学的工作方法和作风。
二、设计内容
设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进
出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最
南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满 n 辆汽车,
则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆
车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场
为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车
场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按
上述要求进行管理的模拟程序。
三、设计要求
按照从终端读入的输入数据进行模拟管理,每一组输入数据包括三个数据项:
汽车“进站”或“出站”信息、汽车牌照号码以及进站或出站的时刻,对每一组
输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便
道上的停车位置;若是车辆离去,则输出汽车在停车场内逗留的时间和应交纳的
费用(在便道上停留不收费),按以顺序结构实现,队列以链表结构实现。
四、设计过程
1、算法思想分析
由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽
车停车场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到
数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又因
为每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所
以堆栈里的数据元素我设计成汽车的车牌号。当停车场内某辆车要离开时,在他
之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按
原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先
后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车
牌号。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若
停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最
数据结构-停车场管理系统
先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,
队列中的数据元素仍然设计成汽车的车牌号。另外,停车场根据汽车在停车场内
停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场
时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。
由于时间不像汽车一样需要让道,我设计了一个顺序表来存放时间。又用顺序表
用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。
2、算法描述与实现
(1)时间结点类型
typedef struct time{
int hour;
int min;
}Time; /*时间结点*/
(2)车辆进出站信息类型
typedef struct node{
char num[10];
Time reach;
Time leave;
}CarNode; /*车辆信息结点*/
(3)停车场和便道信息类型
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 n); /*声明栈*/
//初始化,创建一个新栈 S 用于停车场
int InitQueue(LinkQueueCar *); /*声明便道*/
数据结构-停车场管理系统
//初始化,创建一个队列 Q 用于便道
int Arrival(SeqStackCar *,LinkQueueCar *,int n); /*车辆进站*/
{
CarNode *p;
QueueNode *t;
p=(CarNode *)malloc(sizeof(CarNode));
flushall();
printf("\n 请输入车牌号(例如:吉 A1234):");
gets(p->num);
if(Enter->top<MAX) /*车场未满,车进车场*/
{
Enter->top++;
printf("\n 车辆在车场第%d 位置.",Enter->top);
printf("\n 请输入到达时间:/**:**/");
scanf("%d:%d",&(p->reach.hour),&(p->reach.min));
Enter->stack[Enter->top]=p;
return(1);
}
else /*车场已满,车进便道等待*/
{
printf("\n 该车须在便道等待!");
t=(QueueNode *)malloc(sizeof(QueueNode));
t->data=p;
t->next=NULL;
W->rear->next=t;
W->rear=t;
return(1);
}
}
void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *,int n); /*车辆
出站*/
(4)主函数和其它函数的伪码算法
void main()
{
剩余11页未读,继续阅读
资源评论
是空空呀
- 粉丝: 167
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功