




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计-停车场管理系统一、 实验目的设计一个停车场管理系统,模拟停车场的运作。要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理;要求处理的数据元素包括如下数据项:汽车“到达”或“离去”信息、汽车牌照及“到达”或“离去”的时刻;若是车辆到达,就输出汽车在停车场内或便道上的停车位置;若是车离车场就输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。完成该停车场的一些信息统计功能(如每天到达/离开的车次,停车总时数、每天的停车费用等)。二、 主要思想为计算方便,首先设定便道和车场的最多停车数均为5。当有车主想要在车场内停车,则首先选择进入停车管理系统进行查询,进入用户区后,若车主选择进入车场则选择1,若车场内尚未满,则可以进车,若车场已满而便道未满,则系统自动询问车主是否选择把车停在便道,若选择则车进入便道,否则不进车。若车主想要取车,则同样进入管理系统按着指定的步骤输入适当的数字和字母。在取车时会出现这种状况:系统会询问进入车场是车停在便道还是车场若在车场则到车场中取车,否则到便道取车。若先前车停在便道里,但由于在车主取车前可能有车主从车场中取走车,在车常有空位的情况下,体统会自动将便道里的车开到车场中,这样的话,车主可能在便道里找不到自己的车,需要重新到车场中寻找。需要注意的是:在便道里停车不需交纳费用,在车场中需要,若车开始停在便道里,后来因为车场中有车离开,便道里的车得以进入车场,那么车场中离开的车的离开时间就是便道里进入车场的车的金车长时间。在取走车的同时系统会自动输出车主应缴纳的费用。若是工作人员同样按着体统提供的步骤可进行多想查询,如:车场中共有多少车,便道中共有多少车,选择查看每天到达车次, 选择查看每天离开车次, 选择查看的总停车时数 选择查看总收费等等 特点:1本题采用两个栈,第一个栈即表示车场,根据栈的特点,若从车场中取车,则此车之后的车均要出去,此车才能出去,所以第二个栈为存放从车场中出来的此车之后的所有车。2 车主所取出的车完全可以在便道里,但此时不采用两个队列,因为栈只可以在一头操作,而对则可以在两头操作,所以从队列中出来的车可以直接从队尾直接进队即可。三、功能模块及数据结构描述:1按照题意,主要采用栈和队列的思想,用栈来模拟便道,用队列后来模拟车场;同时设一个结构体,定义车进出车场涉及的各种变量 #define ROADNUM 5#define NUMTWO 5int i=0; /i为车场内车数int t=0;typedef struct car int number;/ 车牌号 int time1;/ 进入车场时间 int time2;/ 出车场时间 int total;/ 在车场内时间 car;car *cc;typedef int datatype ;typedef struct node /*队datatype dataROADNUM;int front,rear;linkqueue;typedef struct nodel /*栈datatype dataNUMTWO;int top;linkstack;2本程序主要有两大模块 ,一个是用户区,另一个是管理员区。选择不同的区会出现不同的功能,每一个功能对应一个函数,可用memu(),menu1(),menu()2函数构造,进入不同的区,在用switch语句调用不同的函数即可 while(1)int t=menu();if(t=1)int tt=menu1();switch (tt)case 1:c.Park();system(pause); break;case 2:c.Parkroad();system(pause); break;case 3: c.Intotal(); system(pause); break;case 4:c.Outtotal();system(pause); break;case 5:c.TotalTime( ); system(pause); break;case 6:c.TotalFee();system(pause); break;case 7:leave();exit(1);system(cls);else if(t=2)int ttt=menu2();switch (ttt)case 1:c.Input( );system(pause); break;case 2:c.Output( );system(pause); break;case 3: c.Intime( );system(pause); break; case 4:c.Totaltime() ;system(pause); break;case 5:c.Totalfee( ) ;system(pause); break;case 6:leave();exit(1);system(cls);else exit(1); return 0;四、主要算法:整个大作业中最重要的两个函数也就是支撑整个程序的函数是进车场函数Input()以及出车场函数Output() void CCar:Input() int y,i1,time; /y为进车场车数 i1表示进入车场的第几辆车 time为进车场时间char n;cout进入车场几辆车y; for(i1=i;i1y+i;i1+) /i为车场中已存车数cout 请输入车的信息:车牌号 进入车场时间cci1.number;cout time;if(PUSH(&s,cci1.number)=0) /当车场中已满时cout很抱歉车场已满,您可以选择把车停在便道内,且不受任何费用endl;cout如果选择便道请输入 Y 若不选择请输入 N n;if(n=Y) ENQUEUE(&sq,cci1.number); /若选择进入便道则执行入队函数cci1.time1=cci1.time2=0; /此时不受任何费用elsecci1.time1=time;i=i+y; / 记录此时到达车场总车数void CCar:Output()char n,t;linkstack s0; /新建一个备用栈,若车场中有车要出来,则必须将此辆车之后的车都挪出去再将此车开出,则其他车需进入备用栈中s0.top=-1; /备用栈为空int time,number; /time 为出车场时间,number为车牌号cout请输入车牌号 离开车场时间number;for(t=0;ttime;cout如果车存在车场请选择 X 若 选择 便道请输入Yn;if (n=X) /如果车在车场中int tag,tt; /tag为所取出的车 cct.time2=time; /输入的时间为出车场时间tag = POP(&s); /从栈s中取栈顶while(tag!=number) /直到所取车为符合车牌号的车PUSH(&s0,tag); /将从s中取到的车送到备用栈中tag=POP(&s);while(s0.top-1)tag=POP(&s0); /在将备用栈中的车全部开回车场中PUSH(&s,tag);while(s.topNUMTWO-1&sq.front!=sq.rear)/在车场中的车开出车场后必然会有空位此时系统自动将便道里的车开进车场中 tag= DEQUEUE(&sq); /出队列PUSH(&s,tag); /进入车场for(tt=0;tti;tt+)if(cctt.number=tag) break; cctt.time1=time; /离开便道进入车场的车进入车场的时间为 刚才离开车场那辆车出车场时间 else /如果车在便道里int temp,tig=DEQUEUE(&sq); temp=tig; /因为要采用将队列出来的车在队列尾重新进入,则要记录第一个从队列中出来的车while(tig!=number) /当出队列的车不是所要取出的车的时候就选择重新进入队列ENQUEUE(&sq,tig);tig=DEQUEUE(&sq);if(temp=tig) /若此时已经遍历完队列仍无所要找的车cout便道中找不到您的车,有可能您的车已经被我们移至车场,请退出,重新从停车场中查找您的车辆endl;return;cct.total=cct.time2-cct.time1; /总时间为出,进车场时间差totalTime+=cct.total; /系统直接输出费用cout在车场中共停留totalTime小时,共花费totalTime*5endl;五、使用说明:1 进入停车信息管理系统后,系统会自动弹出一个漂亮的页面(如图1),有三个选项供选 图1 -主页面*-=-*=-=*-=-*=-*=-*=-*=-*=-=*-=-=*-=-=*-=-=-*-=-* *-=-=-=-=-=-=-=-=-=-=-=-=* * 欢迎使用停车场管理系统 * * = * * = 工作人员请选择1 = * * = 用户请选择2 = * * = 安全退出系统请按3 = * * = * *-=-=-=-=-=-=-=-=-=-=-=-=* *-=-*=-=*-=-*=-*=-*=-*=-*=-=*-=-=*-=-=*-=-=-*-=-* 请输入选择1-3: 2 若选择2则进入(如图2) 图2-用户区*-=-*=-=*-=-*=-*=-*=-*=-*=-=*-=-=-=-*=-=*-=-*=-*=*-=-=-=-=-=-=-=-=-=-=-=-=* * 欢迎使用查询停车信息系统 * = * * = 选择存车请按1 = * * = 选择取车请按2 = * * = 选择查看进入车场时间请按3 = * * = 选择查看停车时数请按4 = * * = 选择查看停车费用请按5 = * = 安全退出系统请按6 = * * = 返回上一级菜单请按7 = * = * *-=-=-=-=-=-=-=-=-=-=-=-=* *-=-*=-=*-=-*=-*=-*=-*=-*=-=*-=-=-=-*=-=*-=-*=-*=* 请输入选择1-7: 3 若输入1则 进入图3 图3 进入车场几辆车- 若输入6则进入图4 图4进入车场几辆车6请输入车的信息:车牌号 进入车场时间 依次输入车牌号和进入车场时间 则 进入图5 图5 进入车场几辆车6请输入车的信息:车牌号 进入车场时间1 1 请输入车的信息:车牌号 进入车场时间2 2请输入车的信息:车牌号 进入车场时间3 3请输入车的信息:车牌号 进入车场时间4 4请输入车的信息:车牌号 进入车场时间5 5 请输入车的信息:车牌号 进入车场时间6 6很抱歉车场已满,您可以选择把车停在便道内,且不受任何费用如果选择便道输入 Y 若不选择请输入 N-若输入Y 则 会出现: 请按任意键继续4 若选择1则进入另一个页面(如图6) 图6-管理员区 *-=-*=-=*-=-*=-*=-*=-*=-*=-=*-=-=*-=-=*-=-=-=* *-=-=-=-=-=-=-=-=-=-=-=* * 欢迎使用查询停车信息系统 * * = * * = 车场中共有多少车请按1 = * * = 便道中共有多少车请按2 = * * = 选择查看每天到达车次请按3 = * * = 选择查看每天离开车次请按4 = * * = 选择查看的总停车时数请按5 = * * = 选择查看总收费请按6 = * * = 清空所有数据请按7 = * * = 安全退出系统请按8 = * * = 返回上一级菜单请按9 = * * = * *-=-=-=-=-=-=-=-=-=-=-=* *-=-*=-=*-=-*=-*=-*=-*=-*=-=*-=-=*-=-=*-=-=-=* 请输入选择1-9: 由于以上已经进行操作 所以这是可以进入管理员区进行查询车场中现有5辆车请按任意键继续若输入1 则进入图7 图7 6请按任意键继续 若输入3 则进入图8 图8六、实验及总结: 1 无法纪录进入车场的所有车数,重新进入车场车时,原来进入车场的车就被覆盖了。所以在进车场的函数Input()中,设了一个变量i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年烈士纪念单位招聘考试热点难点解析与模拟试题集
- 2025年高级烘焙师面试指南及常见问题解答
- 小班体育教案《小乌龟过草地》含反思
- 甲状腺癌超声诊断
- 《春》教学课件熊芳芳
- 新解读《GB-T 36789 - 2018动物狂犬病病毒核酸检测方法》
- 江苏南通2021-2024年中考满分作文57篇
- 用电安全知识培训课件讲座
- 新解读《GB-T 36356-2018功率半导体发光二极管芯片技术规范》
- 2024酒店管理人员聘用合同
- 直销管理条例课件介绍
- 养老护理员职业道德培训
- 氧气安全培训课件
- 常见意外伤害的救治与护理
- 餐饮店食品经营操作流程4篇
- 肺保护通气策略
- 库房卫生打扫管理制度
- 塑胶料品质协议书
- 智能制造虚拟仿真实训基地建设目标
- 2025届江苏省苏州市高三9月期初阳光调研-语文试卷(含答案)
- 《慢性乙肝治疗策略》课件
评论
0/150
提交评论