数据结构课程设计-模拟停车场管理问题

上传人:大米 文档编号:489494301 上传时间:2023-06-22 格式:DOC 页数:20 大小:206.01KB
返回 下载 相关 举报
数据结构课程设计-模拟停车场管理问题_第1页
第1页 / 共20页
数据结构课程设计-模拟停车场管理问题_第2页
第2页 / 共20页
数据结构课程设计-模拟停车场管理问题_第3页
第3页 / 共20页
数据结构课程设计-模拟停车场管理问题_第4页
第4页 / 共20页
数据结构课程设计-模拟停车场管理问题_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《数据结构课程设计-模拟停车场管理问题》由会员分享,可在线阅读,更多相关《数据结构课程设计-模拟停车场管理问题(20页珍藏版)》请在金锄头文库上搜索。

1、目 录一、 设计目的2二、 设计内容21. 题目 22. 问题描述23. 基本要求24. 实现提示2三、 算法思想分析3四、 算法描述与实现41.数据结构类型定义 42.主要算法的流程图及系统模块划分63.功能描述 74.程序代码 8五、 测试结果 17六、 总结体会 20一、 设计目的数据结构是计算机专业的核心课程,是一门实践性很强的课程。为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。课程设计是加强学生实践能力的一个强有力手段,要求学生掌握数据结构的应用、算法的编写、将算法转换成程序并上机调试的基本方法,还要求学生在完成程序设计的同时能够写出比较规范的设计报告。本课程设计的目的就

2、是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养学生的基本程序设计素养和软件工作者工作作风。二、 设计内容1.题目:模拟停车场管理问题2.问题描述:设停车场只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场按车辆到来的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门后,为它让路的车辆在按原次序进入

3、车场。每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。3.基本要求:试为停车场编制按上述要求进行管理的模拟程序。在这里假设汽车不能从便道上开走。试设计一个停车场管理程序。4.实现提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,例如:(A,1,5)表示一号牌照车在5这个时刻到达,而(D,5,20)表示5号牌照车在20这个时刻离去,整个程序可以在输入信息为(E,0,0)时结束。对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或

4、便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车。三、 算法思想分析1. 输入 根据提示输入停车场容量n。2. 创建 根据读入的停车场容量n,创建长度为n的栈(停车场)。3. 主要操作1)插入(车辆停入) 根据提示往栈中插入元素(车辆信息),即使车辆停在停车场中。首先检查停车场是否已满,若不满,则车辆停放在停车场中,记录车辆到达时间,并把此时间作为开始计费时间。若插入的元素个数超过停车场的容量,则此后的车辆停在便道上用队列表示,即元素储存在队

5、列中。2)删除(车辆离开) 根据提示删除栈中的元素(车辆信息),即使车辆离开停车场,同时停在便道上的车辆停入停车场中。当车辆离开时,首先要寻找到要离开车辆的车牌号,若车是从停车场离开,则在它之后进入的车辆必须先退出(进入临时栈)为它让路,待该辆车开出大门外,其它车辆再按原次序进入停车场,并将停放在便道上第一位置的车开进停车场,离开的车辆按其在停车场内停留的时间交费,并把离开车辆的离开时间作为便道上第一位置的车进入停车场的进入时间和开始计费时间。3) 显示 根据提示操作,显示当前停车场和便道使用情况。4) 退出 释放停车场和便道(栈和队列)上的车辆信息等,退出当前运行程序。四、 算法描述与实现1

6、.数据结构类型定义/停车场车辆信息(存储结构)typedef struct carinfor / 车辆信息 char szRegMark64; / 车牌号 char szArrTime16; / 到达时间 char szEntTime16; / 进入停车场(开始计费)时间 char szDepTime16; / 离开时间 TCARINFOR, *LPTCARINFOR;szRegMark64/车牌号szArrTime16/到达时间szEntTime16/计费时间szDepTime16/离开时间carinfor停车场车辆信息存储结构/栈carstack存储结构typedef struct car

7、stack LPTCARINFOR lpCarInfor; / 车辆信息 int nTop; / 栈顶元素下标 int nStackSize; / 栈容量 TCARSTACK, *LPTCARSTACK;栈顶元素下标 nTop停车场carstack(栈)存储结构lpcarinfornStackSize=nTop+1/便道车辆信息(存储结构)typedef struct carnode / 链队结点信息 TCARINFOR carinfo; / 车辆信息 struct carnode *lpNext; / 指向下一个元素的指针 TCARNODE, *LPTCARNODE;szRegMark64/

8、车牌号szArrTime16/到达时间szEntTime16/计费时间szDepTime16/离开时间carinfor便道车辆信息存储结构/ 链队carqueue存储结构typedef struct carqueue LPTCARNODE lpHead; / 头结点 LPTCARNODE lpRear; / 指向当前队尾的指针 int nEffSize; / 当前队中元素个数(有效车位) TCARQUEUE, *LPTCARQUEUE;LPTCARNODE lpRear便道carsqueue(队列)存储结构LPTCARNODE lpHeadlpcarinfornext 程序运行界面 输入停车场

9、容量,创建栈开 始根据当前提示操作取得key值向栈或队列加入元素信息向栈或队列删除元素信息显示栈和队列的停车情况退出程序E、释放空间ADO2. 主要算法的流程图及功能描述(1)流程图:(2)系统模块划分:车进入停车场判断停车场是否已满车进入停车场记录时间开始计费车辆离开记录离开时间计算持续时间和费用否是进入便道记录进入时间但不计费判断停车场是否有空位否继续等待是(3)算法描述:(1) void InitStack( LPTCARSTACK &lpCarStack, int nSize ) 初始化栈 lpCarStack,,为栈和车辆信息分配储存空间,将其容量设置为 nSize。 int Ini

10、tQueue( LPTCARQUEUE &lpCarQueue ) 初始化链队 lpCarQueue,分配队列存储空间和头结点空间,有效车位初始化。(2) void Push( LPTCARSTACK &lpCarStack, TCARINFOR carinfo ) 向栈中加入元素信息:车辆信息 carinfo 入栈 lpCarStack,栈顶元素下标+1。 int EnQueue( LPTCARQUEUE &lpCarQueue, TCARINFOR carinfo ) 向队列中加入元素信息:分配结点空间,车辆信息 carinfo 入队 lpCarQueue,顺序存储到队列中,有效车位加1。

11、(3) void Pop( LPTCARSTACK &lpCarStack, TCARINFOR &carinfo ) 从栈中删除元素时:车辆信息从栈 lpCarStack 中弹出并存入 carinfo中,栈顶元素下标-1。 int DeQueue( LPTCARQUEUE &lpCarQueue, TCARINFOR &carinfo ) 从队列中删除元素时:队头元素从链队 lpCarQueue 中出队并存入 carinfo,当队列中无元素时,返回ERROR;否则carinfo中信息存入临时队列中,再释放临时队列,队列长度减1。(4) int main( void ) 主函数:主要设计一个分

12、支语句,让用户根据提示选择要执行的操作,实现所需要的功能。3. 程序代码#include /getch(void)#include /内存分配 #include #include #include #define OK 1#define ERROR 0#define OVERFLOW -1#define ClearScreen() system( cls ) / 清空当前屏幕/ 显示字符串 szPrompt 并等待用户按下任意键#define Pause(szPrompt) printf( %s,szPrompt),getch()/停车场车辆信息(存储结构)typedef struct car

13、infor / 车辆信息 char szRegMark64; / 车牌号 char szArrTime16; / 到达时间 char szEntTime16; / 进入停车场(开始计费)时间 char szDepTime16; / 离开时间 TCARINFOR, *LPTCARINFOR;/栈carstack存储结构typedef struct carstack LPTCARINFOR lpCarInfor; / 车辆信息 int nTop; / 栈顶元素下标 int nStackSize; / 栈容量 TCARSTACK, *LPTCARSTACK;/ 初始化栈 lpCarStack, 将其容量设置为 nSizevoid InitStack( LPTCARSTACK &lpCarStack, int nSize ) lpCarStack = ( LPTCARSTACK ) malloc( sizeof (

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号