- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
停车场数据机构设计
1 问题描述
1.1题目描述
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开车场时必须按它停留的时间长短交纳费用。试用停车场编制按上述要求进行管理的模拟程序。
1.2任务要求
1.2.1使用顺序栈模拟停车场,链队列模拟车场外的便道,实现车辆入栈、出栈、入队列、出队列、信息输出等功能。
1.2.2车辆信息有:车牌号、到达信息、到达时刻、离去信息、离去时刻等;
1.2.3输出的信息有:如果是到达的车辆,输出其在停车场中或便道上的位置;
1.2.4如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用
2 设计思想及其目的
2.1设计思想
此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出,并且要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场的功能,就可以设计两个堆栈,其中一个堆栈用来模拟停车场,另一个堆栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道可以用一个链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改变通道上车辆结点的连接方式就可以了,使通道上第一辆车进入停车场这个堆栈,并且使通道上原来的第二辆车成为通道上的第一辆车,此时只需将模拟通道的链队列的头结点连到原来的第二辆车上就可以了。
2.2设计目的
1 通过课程设计,加深对《数据结构》这一课程所学内容的进一步理解与巩固。
2 通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
3 通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。
4 通过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调通过。
5 通过课程设计,开发一个中小型系统,掌握系统研发全过程。
6 通话课程设计,培养分析问题、解决实际问题的能力。
3 系统具备的功能
3.1 简体中文控制台界面
程序用来实现对停车场内车辆的管理,整个操作界面为中文,更加符合人性化的标准,
3.2 到达信息
当车辆到达时,能够记录到达车辆的号码,记录到达时间。安排停车位置。如果车道满了,就停留在便道上。
3.3 离开信息
当车辆离开时,统计其停留时间,记录其停车费用。
3.4 查询信息
进入查询界面,可以查询目前车长信息,和变到信息。
4系统流程图
5 主函数、子程序调用关系
6 主要算法实现及其基本操作
6.1此停车场管理系统,主要分为以下若干模块:
首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用option()函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内停放车辆的信息以及退出程序这四个函数模块。其中,在车辆的离开那个模块函数中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。最后,从调鼐的这四个函数中回到主函数结束整个程序的运行。
6.2在以上各个模块中,各模块的伪码算法:
6.2.1栈的初始化:
void InitStack(SeqStackCar *s) /*初始化栈*/
{ int i;
s-top=0;
for(i=0;i=MAX;i++)
s-stack[s-top]=NULL;
}
6.2.2链队列的初始化:
int InitQueue(LinkQueueCar *Q) /*初始化队列*/
{
Q-head=(QueueNode *)malloc(sizeof(QueueNode));
if(Q-head!=NULL)
{ Q-head-next=NULL;
Q-rear=Q-head;
return(1);
}
else
retur
您可能关注的文档
最近下载
- 三年级语文上册习作八:那次玩得真高兴课件(共26张PPT).pptx VIP
- 六年级人教版小学英语-阅读理解专题练习(及答案).doc VIP
- 污水厂年度工作计划(模板).doc
- ECOVACS 科沃斯 净化机器人沁宝 AIRBOT Z1产品使用说明书.pdf
- 24秋人教PEP英语三年级上册 Unit 1 Making friends 单元教学课件.pptx
- 2022年防雷检测职业技能竞赛综合知识试题库大全-下(判断题部分).pdf
- 装修公司工程部品控管理:材料堆放保护规范.docx
- 2023年长沙市事业单位公开招聘考试真题.docx
- 万孚生物-市场前景及投资研究报告:POCT龙头,技术平台全覆盖,国内外双核驱动.pdf VIP
- 全数字交流伺服驱动系统KT270-H系列(V1.0)使用手册.PDF
文档评论(0)