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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构课程设计c++版停车场管理系统.docx

1、数据结构课程设计c+版停车场管理系统 数据结构课程设计班 级 网络营销 指导老师 吕向阳 学 号 1040412123 姓 名 魏华 二012 年 1 月 7 日一课程设计题目 某停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆汽车停放在最北端),若停车场内已经停满n辆车,则后来的汽车只能在门外的便道即候车场上等候,一旦有车开走,则排在便道上的第一辆车即可开入。 当停车场内某辆车要离开时.在它之后进入的车辆必须先退出车场为它让路,该车辆开出大门外,其它车辆再按原次序进入停车场, 每辆停

2、放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为该停车场编制按上述要求进行管理的模拟程序. 二流程及图示 停车 显示信息 离开 收费系统 查询 显示信息 退出a 1a 2 a 3 a n 停车场(栈1) 栈2 通道(队列)三、程序运行及截图 1。开始界面 首先是登陆界面,只要用户名跟密码一样就可以登陆,输入正确后,有一个延迟程序,让使用者感觉更真实 如果输入错误了,就是直接退出了2.主界面 登录成功后,则是如下的功能界面:3 。 停车场管理系统 你可以选择停车,离开,或者查看,当操作完了,可以直接选择退出. 当你输入 1 后,会提示你输入停车的车号: 在这里输入你想要停车的车号

3、,然后会提示你停车的时间: 输入停车时间后,则会显示你刚停车的详细的信息: 4.离开 输入 2,则会提示你要离开的车号: 然后输入离开的车号后,会提示你输入该车离开的时间,输入离开的时间,则 会出现如下界面: 5 停车场管理系统 系统则会把你刚离开的车俩的详细信息给你打印出来:拉开的车号,所用时间 以及应收的费用。这个时间管理员,可以对照表收费了。 6。查看 当你要查看停车场所停车的信息时,你可以选择 3。同样,选择 3 确定后会提 示你要查看的车号,然后则会把信息打印在界面上: 系统会告诉你这俩停在停车场里面的那个位置上。7.退出 当你一切操作完了后,就可以选择退出了,输入 4 停车场管理系

4、统 随便按个键就退出该系统了.四、程序代码includeiostream includeconio.h includeincludefstream#include #include stdlib。h #include windows.h using namespace std; define Max_Size 2/停车的最大容量 define HourFare 2 /每小时的停车费用 int CountForStack=0; /栈里现有的车数 int CountForQueue=0; /排队等候的车数 typedef struct char Condition;/到达或者离开的状态 int A

5、rrivetime;/到达时间,默认为1,表示没有到达 int Leavetime;/离开时间,默认为1,表示没有离开 int License;/车牌号 CarNode;/保存每辆车的信息 typedef struct/栈的定义 CarNode base;/栈底指针 CarNode *top;/栈顶指针 int Stacksize;/栈的最大容量 CarStack; typedef struct QNode char Condition;/到达或者离开的状态 int Arrivetime;/到达时间,默认为1,表示没有到达 int Leavetime;/离开时间,默认为-1,表示没有离开 in

6、t License;/车牌号 QNode next; QNode; typedef struct/队列的定义 QNode *front;/对头指针 QNode * rear;/队尾指针 Queue; bool InitStack(CarStack S1)/初始化栈 S1 S1.base=(CarNode*)malloc(Max_Size*sizeof(CarNode); if(!S1.base) cout”栈 S1 内存分配失败endl; return false; S1。top=S1.base; S1.Stacksize=Max_Size; return true; bool InitQue

7、ue(Queue Q) Q.front=(QNode*)malloc(sizeof(QNode)); if(!Q.front) coutnext=NULL; return true; bool EnQueue(Queue Q,QNode &e)/插入元素 e 为 Q 的新的队尾元素 QNode *p=(QNode )malloc(sizeof(QNode)); if(!p) cout”p 内存分配失败Arrivetime=e。Arrivetime; pLeavetime=e。Leavetime; pCondition=e。Condition; p-License=e。License;/将 e

8、赋给 P pnext=NULL; Q.rearnext=p; Q。rear=p; return true; bool DeQueue(Queue Q,QNode t)/出队列函数 if(Q。front=Q。rear) cout”队列为空!”next; t。Arrivetime=pArrivetime; t。Condition=p-Condition; t。Leavetime=pLeavetime; t。License=p-License; Q。frontnext=p-next; if(Q。rear=p) Q.rear=Q。front; free(p); return true; void In

9、itCarNode(CarNode C,char condition,int arrivetime,int leavetime,int license) C.Arrivetime=arrivetime; C.Condition=condition; C。Leavetime=leavetime; C.License=license; bool Push(CarStack &S1,CarNode car)/插入新的元素 car 为的栈顶元素 if(S1.topS1.base=S1。Stacksize) cout此栈已满,不能压入新的信息endl; return false; (*S1。top)。A

10、rrivetime=car.Arrivetime; (S1.top)。Condition=car.Condition; (S1.top).Leavetime=car。Leavetime; (S1。top)。License=car。License; +S1.top;/栈顶指针上移 return true; bool Pop(CarStack S1,CarNode t)/出栈操作 if(S1。top=S1。base) cout=S1.Stacksize) return true; else return false; bool IsStackEmpty(CarStack S1)/判断 S1 栈是否

11、已空 if(S1。top=S1.base) return true; else return false; bool IsQueueEmpty(Queue &Q)/判断队列是否为空 if(Q。front=Q。rear) return true; else return false; bool SearchInStack(CarStack &S1,int a)/a 表示要查找的车牌号,如果在停车场里 面,就返回 true bool tag=false; if(!IsStackEmpty(S1))/如果栈 S1 非空 CarNode *p=S1.top1; while(p!=S1。base) if

12、((p)。License=a) tag=true; -p; if((*p).License=a) tag=true; return tag; bool SearchInQueue(Queue Q,int a)/a 表示要查找的车牌号,如果在通道里面,就 返回 true bool tag=false; if(!IsQueueEmpty(Q))/如果队列非空 QNode p=Q。frontnext; while(p!=Q。rear) if((p)。License =a) tag=true; p=pnext; /退出此 while 循环时 p 指向最后一个元素 if((p).License =a)

13、tag=true; return tag; void InCar(CarStack S1,Queue Q,int a1,int a2)/表示进入车辆,a1 表示到达时 间,a2 表示车牌号码 if(SearchInStack(S1,a2)) cout车号a2”已经存在于停车场内,输入有误”endl; return; if(SearchInQueue(Q,a2) cout”车号”a2”已经存在于通道内,输入有误endl; return; if(IsStackFull(S1)/如果堆栈已满,说明停车场已满,需要停车在通道里面 QNode qnode; qnode。Arrivetime=1;/在通道

14、里面不收费,所以不计时 qnode。Condition=A; qnode.Leavetime=-1;/定义为1,说明还没有开始离开 qnode.License=a2; EnQueue(Q,qnode);/停在通道上 +CountForQueue; cout”车号:qnode.License”停在通道的第”CountForQueue”号 位置”endl; else CarNode carnode; carnode.Arrivetime=a1; carnode.Condition=A; carnode。Leavetime=1; carnode.License=a2; Push(S1,carnode

15、); +CountForStack; cout”车号: ”carnode。License”, 到达时间:carnode。Arrivetime” 点,停在停车场的第”CountForStack”号位置endl; void Sreach(CarStack S1,Queue Q,int a) if(SearchInStack(S1,a) cout”车号:”a”已存在停车场里面的第”CountForStack”号位 置endl; return; if(SearchInQueue(Q,a)) cout”停车场已满,车号”a”存在于通道里面的第 ”CountForQueue”号位置,在次等候”endl;

16、return; else cout对不起!你查找的车号不在停车场里面endl; return; void OutCar(CarStack &S1,Queue &Q,int a1,int a2)/出车函数,a1 表示离开时间, a2 表示车牌号码 if(SearchInQueue(Q,a2) cout车号”a2”存在于通道里面,还没有进入停车场,不能离开 ”endl; return; if(!SearchInStack(S1,a2)) cout车号”a2”该车不在停车场内”endl; return; CarStack tempstack; InitStack(tempstack);/新建一个栈,

17、存放让路的汽车 bool tag1=false;/标志这个停车场出车以前是否已满,默认为没有满 tag1=IsStackFull(S1); bool tag2=true;/标志通道是否有汽车在等待,默认为通道为空 tag2=IsQueueEmpty(Q); CarNode temp;/用来保存暂时取出的汽车 bool tag3=false; while(1) Pop(S1,temp); if(temp。License=a2) if(a1temp.Arrivetime) cout”离开失败!”endl; tag3=true; Push(tempstack,temp); else cout”车号:

18、a2”现在离开停车场,所用时间为: a1-temp。Arrivetime”小时,应收 RMB 为: (a1temp.Arrivetime)HourFare元endl; break; else Push(tempstack,temp);/进入暂存栈 则把前面倒出的车再次放 while(!IsStackEmpty(tempstack)/如果临时栈不空, 入停车场 Pop(tempstack,temp); Push(S1,temp); QNode tempqnode;/用来暂时保存从通道出来的汽车 if(tag1=truetag2=false&tag3=false)/如果出车前停车场已满,并且通 道

19、不为空,并且离开没有失败 DeQueue(Q,tempqnode); CountForQueue; temp。Arrivetime=a1; temp。Condition=tempqnode.Condition; temp。Leavetime=tempqnode。Leavetime; temp。License=tempqnode.License; Push(S1,temp); if(tag3=false)/如果停车通道是空的,停车场没有满,并且离开成功 -CountForStack; void showmenu(CarStack &S1,Queue &Q) cout”*选择菜单 *”endl;

20、cout” 1: 停车”endl; cout” 2: 离开停车场”endl; cout 3: 查看车辆信息”endl; cout 4: 退出系统endl; cout*请按键选择*”tag; while(tag!=1tag!=2tag!=3&tag!=4) cintag; int a1; unsigned int a2; switch(tag) case 1: cout请输入到达的车号:”a1; cout请输入到达的时间:endl; cina2; InCar(S1,Q,a2,a1); Sreach(S1,Q,a1); break; case 2: cout请输入离开的车号:”endl; cina

21、1; cout”请输入离开的时间:”a2; OutCar(S1,Q,a2,a1); break; case 3: couta1; Sreach(S1,Q,a1); break; case 4: return; break; showmenu(S1,Q); void loging(CarStack &S1,Queue &Q) char Administrator15,password15; int a; printf(t*n); printf(t*n”); printf(t* *n); printf(t* 欢迎使用停车场管理系统 n”); printf(t* *n); printf(t* n);

22、 printf(”t*n”); printf(t*n”); printf(”nt(提示:账号跟密码一样就行)”); printf(nnnnt 请输入管理员帐号:”); fflush(stdin); gets(Administrator); printf(”ttttttttttt 请输入密码:”); fflush(stdin); gets(password); /比较用户名和密码 if(strcmp(Administrator,Administrator) = 0 & strcmp(password,Administrator) = 0) printf(”nnttt 您已成功登陆,请稍侯!nnt

23、tt”); / 延迟 for(a = 0;a); Sleep(150); /进入页面时清屏 system(cls”); showmenu(S1,Q); else printf(”nnttt 您输入的帐号或者密码错误!nnttt”); return; void main() CarStack carstack; InitStack(carstack);/建立并且初始化用于停车场的堆栈 Queue carQueue; InitQueue(carQueue);/建立并且初始化用于通道的队列 loging(carstack,carQueue);五、心的体会 在生活与工作中许多领域都用到数据结构,但关键是如何将问题模型转换,变换成我们熟知的知识应用,即抽象具体化。首先是要把所学的知识重新好 好巩固下,其次,每次课程设计总会有些东西不懂的,这时我们就要上网去查资 料,这样会让我们养成一个好的自主学习的习惯。这次的课程设计,我开始是分 析了这个系统需要做些什么,然后分析要用到哪些代码,哪些结构,哪些算法开 实现这些功能。它让我明白了栈和队列实 际会用在哪些方面,同时我有些不懂的,我会看书,或是在网上找,慢慢的也增 加了自己的知识量。 这次的停车场系统做的很简单,和真正的停车场系统来比,根本就不算什么 了。真正的停车场是不会那么退出停车场的,每次离开都要人家

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

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