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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验报告 停车场管理.docx

1、实验报告 停车场管理实验 停车场管理姓名:曹国君 梁辰 唐琪皓 黄悦 班级:信息1班 学号:* * * * 实验时间:第5周1.问题描述 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入得车辆必须先退出车场为它让路,待该车辆开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按照它停留的时间长

2、短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。2.数据结构设计 由于停车场的停车位有限,只有一个入口,且通道狭长,当停车场内某辆车要离开时,在它之后开入得车辆必须先退出车场为它让路,顺序栈的结构符合停车场的需求。若车场内已停满,车辆再外排队等候,队伍不限长度,可以使用链式队列进行模拟。输入:停车位数,停车费单价,进入或离去,车牌号,进入或离去时间输出:进入:输出停在停车场或者便道上的位置 离去:输出停留在停车场上的时间(离开时间-进入停车场的时间)及费用为了满足以上的要求,至少需要记录进入时间以及车牌号templateclass SqStack protected:/ 顺序栈的数据成

3、员: int top; / 栈顶指针 int maxSize; struct Set /定义一个结构体,可以存放两个数据 ElemType num; ElemType time; ; / 栈最大容量 Set *elems; template struct Node / 数据成员: ElemType data1,data2; / 两个数据域 Node *next; / 指针域/ 构造函数:Node(); / 无参数的构造函数Node(ElemType item1,ElemType item2 ,Node *link = NULL); /已知数数据元素值和指针建立结构;3.程序设计(1)头文件由于

4、数据域的改变,创建,插入,删除等函数都需要增加一个数据域的处理。顺序栈:public:/ 抽象数据类型方法声明及重载编译系统默认方法声明: SqStack(int size = DEFAULT_SIZE); / 构造函数 virtual SqStack(); / 析构函数 int Length() const; / 求栈长度 bool Empty() const; / 判断栈是否为空 void Clear(); / 将栈清空 void Traverse(void (*Visit)(const ElemType &) const; / 遍历栈 Status Push(const ElemType

5、 &e,const ElemType &t); / 入栈 Status Top(ElemType &e,ElemType &t) const; / 取顶元素 Status Pop(ElemType &e,ElemType &e); / 出栈 SqStack(const SqStack ©); / 复制构造函数 SqStack &operator =(const SqStack ©); / 赋值语句重载链式队列:public: LinkQueue(); / 无参数的构造函数 virtual LinkQueue(); / 析构函数 int Length() const; / 求队列

6、长度 bool Empty() const; / 判断队列是否为空 void Clear(); / 将队列清空 void Traverse(void (*Visit)(const ElemType &) const ; / 遍历队列 Status DelQueue(ElemType &e,ElemType &t); / 出队操作 Status GetHead(ElemType &e,ElemType &t) const; / 取队头操作 Status EnQueue(const ElemType &e,const ElemType &t); / 入队操作 LinkQueue(const Lin

7、kQueue ©); / 复制构造函数 LinkQueue &operator =(const LinkQueue ©);/ 赋值语句重载(2)辅助函数 当车辆离开时,输入车牌号与离开时间,如果该车辆在停车场中,则在其之后的车辆需要暂时离开停车场为其让路,返回其进入停车场的时间,并判别为真;如果该车辆不存在停车场中,则判别为假。int depart(const int &a,const int &n,SqStack &p,bool &dans) /返回进入时间 SqStack park1(n); /建立一个临时栈int tmpn,tmpt,count=0,atime,i; do

8、p.Pop(tmpn,tmpt); park1.Push(tmpn,tmpt); count+; /计数器用来记录让开的车数 while(tmpn!=a&!p.Empty(); /如果栈顶车牌不符合条件,而且栈不为空,把栈顶元素弹出后放入临时栈中 if(tmpn=a) /如果找到了该车 dans=1; /判别为真 park1.Pop(tmpn,tmpt); /该车辆离开 count-; else dans=0; /如果遍历仍找不到车,则判别为假 atime=tmpt; for(int i=0;icount;i+) /让路的车重新返回停车场 park1.Pop(tmpn,tmpt); p.Pus

9、h(tmpn,tmpt); return atime; /返回进入时间 为了避免输入重复的车牌号,输入的离开时间小于进入时间,设计了遍历功能供使用者参考template void SqStack:Traverse(void (*Visit)(const ElemType &) const/ 操作结果:从栈顶到栈底依次对栈的每个元素调用函数(*visit) for (int Pos = top-1; Pos =0 ; Pos-) / 从栈底到栈顶对栈的每个元素调用函数(*visit) cout车牌:; (*Visit)(elemsPos.num); cout到达时间:; (*Visit)(ele

10、msPos.time); coutendl; (3)主程序#includeassistance.h#includesq_stack.h#includelk_queue.hint depart(const int &a,const int &n,SqStack &p,bool &dans) SqStack park1(n);int tmpn,tmpt,count=0,atime,i; dop.Pop(tmpn,tmpt); park1.Push(tmpn,tmpt); count+; while(tmpn!=a&!p.Empty(); if(tmpn=a) dans=1; park1.Pop(t

11、mpn,tmpt); count-; else dans=0; atime=tmpt; for(int i=0;icount;i+) park1.Pop(tmpn,tmpt); p.Push(tmpn,tmpt); return atime; int main() int n=0,time,num,tmp,oldtime; double prix; /停车单价 bool si; /判别车辆是否存在 char jug=P; cout欢 迎 使 用 停 车 场 管 理 系 统endl; while(n1) cout请输入停车场的车位数:n; LinkQueue hallway; SqStack p

12、ark(n); cout请输入每分钟停车费:prix; while(jug!=E) /选择界面 coutA.车辆到达endl; coutD.车辆离开endl; coutL.查看停车场情况endl; /遍历停车场情况 coutE.退出程序jug; switch(jug) case A: /进入 cout请输入车牌号与达到时间: numtime; if(park.Length()!=n) /停车场没满 park.Push(num,time); cout车牌号为 num 的车辆进入停车场时间:time分钟,位置:park.Length()endl; /进入停车场Else /停车场满 hallway.

13、EnQueue(num,time);cout停车场已满,车牌号为 num 的车辆进入停车场外便道时间:time分钟,位置:hallway.Length()endl; /进入便道排队continue; case D: /离开 if(!park.Empty() /停车场有车辆 cout请输入车牌号与离开时间: numtime; oldtime=depart(num,n,park,si); /记录进入时间,判定其存在 if(si) /存在则输出 cout车牌号为 num 的车辆进入停车场时间:oldtime,离开时间为:time停留时间:time-oldtime分钟,费用:(time-oldtime

14、)*prixendl; if(!hallway.Empty() /如果有车辆在便道内等候 hallway.DelQueue(num,tmp); park.Push(num,time); cout车牌号为 num 的车辆进入停车场时间:time分钟,位置:park.Length()endl; /队列的队首进入栈,并输出相关信息 else cout停车场内没有该车辆endl; /输入的车牌号不存在于栈内 else cout停车场内没有任何车辆end /栈为空时,不用输入离开车辆的信息 continue; case L: cout停车场出入口(南)endl; park.Traverse(Write)

15、; /遍历停车场占用的车位 coutendl; continue; cout再 见endl; /程序结束 system(pause); return 0;停车场管理数据测试次数输入输出车位数单价到达离去信息时刻车牌号位置停留时间费用125 A 51车位1 A 102车位2 D 1511050 A 203车位2 A 254便道位1 A 305便道位2 D 35225125 D 404525 E 00220.5 A 51车位1 A 102车位2 A 153便道位1 A 204便道位2 A 255便道位3 D 3022010 A 356便道位3 D 403105 D 4514020 E 00315

16、A 51车位1 A 102便道位1 D 152 A 153便道位2 D 25120100 D 25200 D 3531050 E 00451 A 43车位1 A 72车位2 A 155车位3 D 8344 A 91车位3 A 184车位4 D 2521818 A 306车位4 E 00532.785 A 51车位1 A 52车位2 A 53车位3 A 54便道位1 D 102513.925 D 10400 A 155车位3 D 1511027.85 E 006210 D A 101车位1 A 112车位2A112便道位1 D 22211110 D 33211110 D 44134340 E 0

17、0730.01 A 61车位1 A 802车位2 A 1203车位3 D 1803600.6 A 2504车位3 A 3005便道位1 D 35041001 E 00828 A 361车位1 D 482 D 451972 A 483车位1 A 554车位2 A 555便道位1 D 6031296 E 009102 A 21车位1 A 22车位2 A 43车位3 A 84车位4 D 101816 A 165车位4 D 2021836 E 0010005.测试记录及收获由于时间紧迫,对于车牌重复,到达时间小于离开时间的情况未做进一步的限制,假定输入的车牌不重复,时间的输入依次递增。为了避免以上错误,设计了遍历停车场情况的函数,以此弥补程序的不足。通过本次实验,我们小组进一步熟悉了栈和队列的区别。无论是链式还是顺序,各有优点,灵活地运用这些结构,可以模拟许多常见的情况。

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

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