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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

停车场管理系统数据结构课程设计论文.docx

1、停车场管理系统数据结构课程设计论文数据结构课程设计题目: 停车场管理系统一 课题分析a)该程序主要利用栈和队列来实现车的到达与其离开功能,其中主要有对各种情况的处理,要求如下:1、要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的数据序列进行模拟管理2、要求处理的数据元素包括三个数据项:汽车“到达”或“离去”信息,汽车牌照与到达或离去的时间 3、该系统完成以下功能:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是离去,则输出汽车在停车场停留的时间和应缴纳的费用(在便道上停留的时间不收费)4、要求栈以顺序结构实现;b)程序的输入,程序功能选择,字符型,A为到达,D离开,E退出系

2、统;车的编号是整型,输入数字即可;时间是float类型,可精确到分钟c)程序的输出,当车到达,程序输出车的编号与到达时间,若栈满则提示停到便道上;车离开时,输出车的编号与其所需费用。d)测试数据,(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以与a)中的要求。其中A表示到达,D表示离开,E表示结束。二 逻辑分析2.1 数据结构的描述和每个基本操作的功能说明ADT stack数据对象:D=ai | aiCharSet,i=1,2,n,n0数据关系:R1=| ai-1, aiD,i=2,n基本操作:i

3、nitstack()操作结果:构造一个空栈,并返回地址。gettop(&S)初使条件:栈S已存在。操作结果:栈S不为空,输出顶元素。stop(&S,e)初始条件:栈S已存在。操作结果:要栈S中栈顶插入新的栈顶元素e。ADT queue数据对象:D=ai | aiElemSet,i=1,2,n,n0数据关系:R1=| ai-1, aiD,i=2,n约定其中ai端为队列的头,an端为队列的尾initqueue(&Q)操作结果:构造一个空栈,并返回地址。gethead(&S)初使条件:栈S已存在。操作结果:栈S不为空,输出顶元素。enqueue(&S,e)初始条件:栈S已存在。操作结果:要栈S中栈顶

4、插入新的栈顶元素e2.1 给出本程序包含的模块与模块之间的调用关系图本程序包含三个模块:1)主程序模块:Void main()初始化;do 接受命令; 处理命令; while(命令!=“退出”)2)栈模块实现栈抽象数据类型3)队列模块实现队列抽象数据类型2.3 写出重要部分的伪码算法 车辆到达或者离开的伪码算法:do 输出菜单选项; 如果选择A,即车辆到达, 则若栈不满,车辆进栈,停到停车场; 否则,车入队,车停在便道上; 如果选择D,即车辆离开, 则 如果队不空并且栈不满,被选的车辆离开,队列上的车出队入栈;被选的车辆离开;计算时间与其所需费用; 如果选择E,退出程序;while(输入的菜单

5、选项不正确)三 详细设计3.1 数据结构的定义,与其基本操作的实现typedef struct timeint hour;int min;Time;typedef struct/车信息char label10;float time;Car,Car2;typedef struct/车库信息Car *top;Car *base;int stacksize;SqStack;typedef struct/临时车道Car2 *top2;Car2 *base2;int stacksize2;SqStack2;typedef struct QNode/车道信息Car data;struct QNode *n

6、ext;QNode,*QueuePtr;typedef structQueuePtr front;QueuePtr rear;LinkQueue;3.2主函数和其他函数的实现或伪码算法void main()SqStack S;SqStack2 S2;InitStack(&S);InitStack2(&S2);InitQueue(&Q);/初始化while(ch=1) do printf(nttttA-车辆到达 nttttD-车辆离开 nttttE-退出nttttA/D/E ?b); scanf(%c,&status); getchar(); while(status!=A&status!=a&

7、status!=D&status!=d&status!=E&status!=e); if(status=A|status=a)/当车到达 输入车号; 输入车到达时间; if(!StackFull(S)/栈不满 车入栈; printf(ntttt继续请输入1ntttt放弃请输入 0 ?b); scanf(%d,&ch); getchar(); /if else 车入队; printf(ntttt继续请输入1ntttt放弃请输入 0 ?b); scanf(%d,&ch); getchar(); /else /if当车到达 else if(status=D|status=d)/*当车离开*/ do

8、输入车号; 输入车离开时间; do Pop(&S,&car_M); if(car_D.label!=car_M.label) Push2(&S2,car_M); else car_I.time=car_M.time; while(car_D.label!=car_M.label); position_s-; while(!StackEmpty2(S2)/栈2不空 Pop2(&S2,&car_M); Push(&S,car_M); /while while(!QueueEmpty(Q)&!StackFull(S) if(!StackFull(S) 栈不满的话,临时车道上的车进栈 /if /whi

9、le time=car_D.time-car_I.time; if(timebase=(Car *)malloc(STACK_INIT_SIZE*sizeof(Car);if(!(S-base) return ERROR;S-top=S-base;S-stacksize=STACK_INIT_SIZE;return OK;int StackEmpty(SqStack S)/栈空if(S.top=S.base)return OK;elsereturn ERROR;int StackFull(SqStack S)/栈满if(S.top-S.base=STACK_INIT_SIZE)return O

10、K;elsereturn ERROR;int Push(SqStack *S,Car e)/入栈 if(S-top-S-base=STACK_INIT_SIZE) return OVERFLOW; else *(S-top+)=e; return OK; /elseint Pop(SqStack *S,Car *e)/出栈if(S-top=S-base)return ERROR;else *e=*(-(S-top);return OK;int GetTop(SqStack *S,Car *e)/返回栈顶元素if(S-top=S-base) return ERROR;else *e=*(S-to

11、p-1);return OK;typedef struct/临时车道Car2 *top2;Car2 *base2;int stacksize2;SqStack2;int InitStack2(SqStack2 *S2)S2-base2=(Car2 *)malloc(STACK_INIT_SIZE*sizeof(Car2);if(!(S2-top2) return ERROR;S2-top2=S2-base2;S2-stacksize2=STACK_INIT_SIZE;return OK;int Push2(SqStack2 *S2,Car2 e2)if(S2-top2-S2-base2=STA

12、CK_INIT_SIZE)return OVERFLOW;*(S2-top2+)=e2;return OK;int Pop2(SqStack2 *S2,Car2 *e2)if(S2-top2=S2-base2)exit(OVERFLOW);*e2=*(-(S2-top2);return OK;int StackEmpty2(SqStack2 S2)if(S2.top2=S2.base2)return OK;elsereturn ERROR;typedef struct QNode/车道信息Car data;struct QNode *next;QNode,*QueuePtr;typedef s

13、tructQueuePtr front;QueuePtr rear;LinkQueue;int InitQueue(LinkQueue *Q)/初始化队列Q-front=Q-rear=(QueuePtr)malloc(sizeof(QNode);if(!(Q-front) return ERROR;Q-front-next=NULL;return OK;int EnQueue(LinkQueue *Q,Car e)/插入元素QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode);if(!p) return ERROR;p-data=e;p-next=NULL;Q

14、-rear-next=p;Q-rear=p;return OK;int QueueEmpty(LinkQueue Q)/队空if(Q.front=Q.rear)return OK;elsereturn ERROR;int DeQueue(LinkQueue *Q,Car *e)QueuePtr p;if(Q-front=Q-rear) return ERROR;p=Q-front-next;*e=p-data;Q-front-next=p-next;if(Q-rear=p)Q-rear=Q-front;free(p);return OK;void main()int i,position_s=

15、1,position_q=1,mistime=1;int ch=1;char status;float time,money;LinkQueue Q;Car car_I,car_D,car_M,car_S;SqStack S;SqStack2 S2;InitStack(&S);InitStack2(&S2);InitQueue(&Q);printf(ntttt停车场管理系统);printf(nnnttt11信息与计算科学 邓全飞 5n);printf(ntttt停车场tt);printf(n);printf(tttt相关信息:n);printf(tttt请输入字符(A D E)进行相关操作);

16、printf(n);while(ch=1) do printf(nttttA.车辆到达 nttttB.车辆离开 nttttC.退出 nttttA/B/C ?b);scanf(%c,&status);getchar(); while(status!=A&status!=a&status!=D&status!=d&status!=E&status!=e);if(status=A|status=a) printf(ntttt请输入车牌号 :); gets(car_I.label);/scanf(%d,&(car_I.label); printf(ntttt请输入车辆到达时间: ?b); scanf(

17、%f,&(car_I.time); if(!StackFull(S)/栈不满 Push(&S,car_I); printf(nn); for(i=0;i80;i+) printf(-); printf(n); printf(tttt输出车牌号:); printf( %sn,car_I.label); printf(ntttt请输出车辆到达时间:); printf( %5.2f,car_I.time); printf(nn); for(i=0;i80;i+) printf(-); printf(nn); printf(ntttt欢迎您来我们车站!nntttt您的车位号是: %d,position

18、_s); position_s+; printf(n); printf(tttt继续请输入1ntttt放弃请输入0 ?b); scanf(%d,&ch); getchar(); /if else EnQueue(&Q,car_I); printf(ttttWelcome to our CAR POSITION ,We are sorry thatnnttttOur position is full,but you are free to place nnttttyour car on our road.The position of your carnttttis %d,position_q)

19、; position_q+; printf(ntttt进站请输入1ntttt放弃请输入0 ?b); scanf(%d,&ch); getchar();/else /if当车到达 else if(status=D|status=d)/*当车离开*/dofor(i=0;i80;i+)printf(*);printf(n);printf(ttttCAR POSITION);printf(ntttt);printf(Information);printf(nn);printf(ttttYour are going to drive your car away ,nttttPleasefill of t

20、he form !n);printf(ttttYour car Number :);scanf(%d,&car_D.label);printf(nttttTime : ?b);scanf(%f,&(car_D.time); do Pop(&S,&car_M);if(car_D.label!=car_M.label)Push2(&S2,car_M);elsecar_I.time=car_M.time; while(car_D.label!=car_M.label);position_s-; while(!StackEmpty2(S2)/栈2不空 Pop2(&S2,&car_M); Push(&S

21、,car_M); /whilewhile(!QueueEmpty(Q)&!StackFull(S) if(!StackFull(S) /栈不满的话,临时车道上的车进栈 DeQueue(&Q,&car_S); position_q-; car_S.time=car_D.time; Push(&S,car_S); printf(nttttThe car %d just drived away ,nnttttthe car %d has entered the CAR POSITION .n,car_D.label,car_S.label); /if /while time=car_D.time-c

22、ar_I.time; if(time0.00) printf(nttttSorry!You input a wrong time !Please check and type again.n); ;/if else mistime=1; money=time*2; printf(nn); for(i=0;i80;i+) printf(-); printf(nt); printf(tttYour car number %d :nttttThe fee is :%5.2f,car_D.label,money); printf(nn); for(i=0;i80;i+) printf(-); prin

23、tf(nn); /else printf(ttttWelcome to back ! Do you want to continuentttt 1-contine/0-quit ?b); scanf(%d,&ch); getchar(); while(!mistime); /else if else exit(0);/退出程序/第一个while/main五 程序调试与测试5.1 主界面5.2 具体操作5.2.1进站时间与车牌号5.2.2 车站已满,请进入临时车道5.2.3 出站与收费5.2.4 结束5.3 相关操作1、输入(A,1,5)时,显示是CAR NUMBER :1ARRIVE TIME:5.002、入(A,2,10)时,显示CAR NUMBER :2ARRIVE TIME:10.003、入(D,1,15)时,显示Your car number:1 The fee is:20.004、入(A,3,20)时,显示CAR NUMBER :3ARRIVE TIME:20.005、输入(A,4,25)时,显示Welcome to our CAR POSITION ,We are sorry thatO

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

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