ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:182.35KB ,
资源ID:9613325      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9613325.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(停车场管理课程设计报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

停车场管理课程设计报告.docx

1、停车场管理课程设计报告停车场管理一、课程设计题目内容(1)问题描述:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。基本要求:以栈模拟停

2、车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。测试数据:设n=2,输入数据为:(A,1,5),(A,2,10),(D,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到达(Arri

3、val);D表示(Departure);E表示输入结束(End)。实现提示:需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。二、本人完成的工作(1)定义车辆信息结构体,包括汽车的车牌号码、到达停车场时间、离开停车场时间;(2)定义顺序堆栈的结构体,用于模拟停车场;(3)定义链式队列的结构体,用于模拟车场外的停车场;(4)定义堆栈和队列的初始化函数;(5)设计汽车进入停车场、离开停车场、离开收费信息和汽车停靠情况查询等主要函数;(6)主函数:设计停车

4、场管理菜单,通过菜单选项,调用相关的函数来实现停车场汽车到达登记、汽车离开停车场、汽车停靠查询和退出程序的操作,完成模拟汽车停车场的整个过程。三、所采用的数据结构数据结构的定义:typedef struct car /定义车辆信息的结构体 long CarNo; /车牌号 int Atime; /车到达时间 int Dtime; /车离开时间CarNode;typedef struct node /定义模拟停车场的顺序堆栈 CarNode stackMaxsize+1; /栈底不存放元素,即停车场共有Masize个位置 int top; /栈顶指针StackCar;typedef struct

5、 qnode /用队列结点定义,构造停车场外的单个等候车辆 CarNode data; /数据域 struct qnode *next; /指针域QNode;typedef struct Node /用队列定义,构造停车场外的等候便道 QNode *front; /队头指针 QNode *rear; /队尾指针LinkQueue;四、所设计的函数1)void StackInitiate(StackCar *s) /堆栈初始化 s-top=0; /栈顶置0初始方法:初始化顺序栈,只需令栈顶的下标值置为0即可。程序框图:2)LinkQueue *Init_LinkQueue(void)/链队列的初

6、始化 LinkQueue *Q;QNode *p; p=(QNode *)malloc(sizeof(QNode) ; /* 开辟头结点 */ p-next=NULL; Q=(LinkQueue *)malloc(sizeof(LinkQueue);/* 开辟链队的指针结点 */ Q-front=Q-rear=p; return(Q) ;初始方法:开辟一个队列的头结点p,其next指针为空,再开辟链队的指针结点Q,用p来初始化链队结点的队头指针和队尾指针。初始化成功后,返回Q程序框图:3)void Arrival(StackCar *car1,LinkQueue *car2) /车辆进入停车场

7、操作 CarNode p; QNode *q; printf(n+车辆到达登记表+); printf(n请输入车牌号(整型,例如:1234):); scanf(%d,&p.CarNo);/输入车牌号 if(car1-toptop+; /栈顶指针+1 printf(n【汽车顺利停放在车场的第%d位置】n,car1-top); while(1) printf(n车辆几点钟到达(%d23点):,n); scanf(%d,&p.Atime); if(p.Atime23 | p.Atimestackcar1-top=p; /将车停入停车场,停放在top位置 else /停车场已停满车,即栈已满,则停靠在

8、便道 printf(n停车场已满,请先在便道等候!有车位时进入车场!n); q=(QNode *)malloc(sizeof(QNode); q-data=p; q-next=NULL; /形成新的结点,保存车辆信息 car2-rear-next=q; car2-rear=q; /新结点入队尾,即车辆进入便道等候 printf(+n); 算法思想:当车进入车场时,登记车的车牌号,如果停车场有空位,将车停放在相应的空位,输出此时车停放的位置,记录到达时间;如果停车场没有空位,便将车开到便道等候。其过程相当于,当顺序栈未满时,进栈;当顺序栈已满时,无法入栈,便进入队列。程序框图:4)void ou

9、tput(CarNode p) /输出车离开停车场离开时间、收费等信息 int a,b; while(1) printf(n车辆离开的时间(%d点24点之间的时间):,n); scanf(%d,&(p.Dtime); /输入车辆离开的小时、分钟 if(p.Dtime24 | p.Dtimetop0) /停车场内有车辆停放 while(j) printf(n请输入离开停车场车辆的车牌号:); scanf(%d,&NO); for(i=1;itop;i+) /查找停车场内是否存在该车牌号 if(car1-stacki.CarNo=NO) k=1; /存在,k=1 if(k) while(car1-

10、stackcar1-top.CarNo!=NO) /当停车场top位置停放的车牌号不为NO时,将该位置的车开入临时停车场 Temp-top+; Temp-stackTemp-top=car1-stackcar1-top; /入栈。临时车场栈顶指针+1,把车停放在临时车场 car1-top-; /出栈。原车场的栈顶置空,栈顶指针-1 p=car1-stackcar1-top; /将要离开停车场的车辆信息赋给p car1-top-; /栈顶-1 j=0; /结束while else printf(无此车牌号码,请重新输入!); output(p); /调用汽车离开停车场的信息函数 while(Te

11、mp-top=1) /将临时车场里的车停回到停车场 car1-top+; car1-stackcar1-top=Temp-stackTemp-top; Temp-top-; if(n=24) printf(n*已过24点,停车场管理系统关闭!*n); m=0; else if(car2-front!=car2-rear)&car1-topfront-next; /取队首结点q t=q-data; /拷贝队首结点的车辆信息 car1-top+; printf(n便道的%d号车进入车场第%d位置!,t.CarNo,car1-top); while(1) printf(n请输入%d号车进入车场的时间

12、(%d23点):,t.CarNo,n); scanf(%d,&(t.Atime); /输入车到达停车场的时间 if(t.Atime23 | t.Atimefront-next=q-next; /修改队首指针 if(q=car2-rear) car2-rear=car2-front; /* 当队列只有一个结点时应防止丢失队尾指针 */ car1-stackcar1-top=t; /车进入停车场 free(q); else printf(n便道里没有车n); /便道没有车,end if else printf(n车场里没有车n); /停车场内没有车,end if 算法思想:当顺序栈不为空时,进行汽

13、车要离开停车场操作,输入要离开的车牌号,匹配顺序栈的数组中是否存在该车牌号的元素(如果未找到,则提示车牌号输入错误,重新输入),如果其他的汽车需要为从停车场离开的车让路的话,则把这些车暂时存放在另一个顺序栈,待该车离开后,再按原次序返回停车场。如果便道里有车在等候,则将该车开入停车场停放。当停车场内没车停放时,则提示停车场没有车,不能进行离开停车场操作。程序框图:5)void List1(StackCar *car1) /打印停车场的车辆 int i; if(car1-top0) printf(n车场:); printf(n车牌号t到达时间n); for(i=1;itop;i+) printf

14、(%d,car1-stacki.CarNo); printf(t%d点n,car1-stacki.Atime); else printf(n车场里没有车!n);算法思想:打印栈中的元素,通过一个单循环,打印栈1-top中的元素(车牌号)。程序框图:6)void List2(LinkQueue *car2) /打印便道中等候的车辆 QNode *p; p=car2-front-next; if(car2-front!=car2-rear) printf(n便道:n车牌号 ); while(p!=NULL) printf(%dt,p-data.CarNo); p=p-next; else prin

15、tf(n便道里没有车!n);算法思想:通过队列的队首指针,一一打印队列中的元素。程序框图:7)/*主函数*/void main() StackCar car1,temp; /定义两个堆栈,停车场car1,临时停车场car2 LinkQueue *car2; /定义一个队列,用于便道停放等候停车的车辆 char choose; /选项 StackInitiate(&car1); StackInitiate(&temp); car2=Init_LinkQueue(); printf(=欢迎光临Wings停车场=n ); printf(*入场须知:本停车场内设 %d个停车位,停车收费为每小时 %d元

16、, *n,Maxsize,price); printf(* 停车超过半小时按一小时计算,不超过不收费. *n); printf(* 营业时间:24小时 *n); printf(* 投诉监督电话:123-456789 *n); printf(*停车系统提示:只供模拟一天的汽车停放情况 *n); printf(=欢迎光临Wings停车场=n ); while(m) printf(n 停车场管理程序 n); printf(=n); printf(* A 汽车到达停车场 *n); printf(* *n); printf(* D 汽车离开停车场 *n); printf(* *n); printf(*

17、F 汽车停靠信息 *n); printf(* *n); printf(* E 退出程序 *n); printf(=n); printf(请选择(A,D,F,E): ); scanf(%c,&choose); switch(choose) case A: case a: Arrival(&car1,car2);/车进入停车场 break; case D: case d: Departure(&car1,&temp,car2); break; /车离开停车场 case F: case f: printf(n-汽车停靠信息一览表-); List1(&car1); List2(car2); printf(n-); break; case E: case e: m=0; break; default: printf(无此选项,请重新输入!n); break; while (choose!= n) scanf(%c,&choose); 算法思想:设计菜单,进行停车场的各项操作。程序框图:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1