停车场管理课程设计报告.doc_第1页
停车场管理课程设计报告.doc_第2页
停车场管理课程设计报告.doc_第3页
停车场管理课程设计报告.doc_第4页
停车场管理课程设计报告.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

经济管理学院本科课程设计论文 数据结构课程设计 学 号: 姓 名: 班 级: 专 业: 信息管理与信息系统 系 别: 管理系 指导教师: 2011 年 1 月 14 日 吉 林 目 录 目 录 第第 1 1 章章 需求分析需求分析1 1 1.1 停车场管理问题 1 1.1.1 问题描述 1 1.1.2 实现要求 1 1.1.3 实现提示 1 1.2 功能描述 1 1.3 模块描述 2 第第 2 2 章章 概要设计概要设计2 2 2.1 设计思想 2 2.2 实现方法 3 2.3 程序中的函数 3 第第 3 3 章章 详细设计详细设计4 4 第第 4 4 章章 调试分析调试分析1313 4.1 主窗口界面.13 4.2 停车界面.14 4.3 出车界面 .15 4.4 退出程序界面.15 第第 5 5 章章 课设总结课设总结1616 5.1 收获 .16 5.2 问题 .16 数据结构课程设计 1 第第 1 1 章章 需求分析需求分析 随着改革开放的深入,中国不断的发展,人们生活水平的不断提高,拥有汽车 的人越来越多,在什么地方停车成了一个问题,因此停车场建立起来,但是车辆众 多,需要对汽车进出停车场进行规范化的管理,才能使停车场发挥其作用。 1.11.1 停车场管理问题停车场管理问题 .1 问题描述问题描述 设有一个可以停放 n 辆汽车的狭长停车场,它只有一个 大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门 口处停放(最先到达的第一辆车放在停车场的最里面 )。如果停车场已放满 n 辆 车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走, 则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后 进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再 依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间 长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车 费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 .2 实现要求实现要求 要求程序输出每辆车到达后的停车位置 (停车场或便道上 ), 以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。 .3 实现提示实现提示 汽车的模拟输入信息格式可以是: (到达离去,汽车牌 照号码,到达离去的时刻 )。例如,(A,1,5)表示 1 号牌照车在 5 这个 时刻到达,而 (D,5,20)表示 5 号牌照车在 20 这个时刻离去。整个程序可 以在输入信息为 (E,0,0)时结束。 1.21.2 功能描述功能描述 根据需要,本系统应具有以下功能: 1. 汽车进入停车场停车 2. 汽车从停车场离开 3. 汽车在便道上等待进入停车场停车 数据结构课程设计 2 4. 根据汽车在停车场内停车时间进行计费 1.31.3 模块描述模块描述 主要分为下面的模块: 定义用来模拟停车场的栈以及用来模拟便道的链队列为全局变量,然后编写 主函数,在此主函数中实现对其它各 个模块的调用。在主函数中首先调用 print ()函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再 出现一个供用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、 车辆的离开以及退出程序这三个函数模块。 第第 2 2 章章 概要设计概要设计 2.12.1 设计思想设计思想 此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进 出,并且要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出 停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场的功能,就可以 设计两个堆栈,其中一个堆栈用来模拟停车场,另一个堆栈用来模拟临时停车场, 该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆。至于当停 车场已满时,需要停放车辆的通道可以用一个链队列来实现。当停车场内开走一辆 车时,通道上便有一辆车进入停车场,此时只需要改变通道上车辆结点的连接方式 就可以了,使通道上第一辆车进入停车场这个堆栈,并且使通道上原来的第二辆车 成为通道上的第一辆车,此时只需将模拟通道的链队列的头结点连到原来的第二辆 车上就可以了。 2.22.2 实现方法实现方法 对于此停车场管理系统的实现,就是用两个栈来分别模拟停车场以及停车场内 车辆为其它车辆让路时退出停车的临时停放地点。至于通道上车辆的停放则用一个 数据结构课程设计 3 链队列来实现,此时,通道上车辆的离开或者进入停车场只需改变此链队列上的结 点而已。 当汽车要进入停车场前,先要检查停车场内是否还有空余的车位,如果还有空 余的车位则车辆进入停车场;如果停车场已经满了,那么车辆进入停车场外的便道 的等待队列。 当汽车要离开停车场,在他之后的停的车都必须退出停车场为它让路,然后这 辆车再出栈,退出的车辆再按原来的顺序进入停车场。检查停车场外的便道上是否 有等待的车辆,如果有,则在队首的车辆进入停车场。 1.用栈模拟停车场,用队列模拟车场外的便道,按照从终端读入的输入数据序列进 行模拟管理。 2.每一组输入数据包括三个数据项:汽车到达或离去的信息,汽车牌照号码以及到 达或离去的时刻。 3.每次输入完进行输出操作:若是车辆到达,输出汽车在停车场内或便道上的停车 位置;若是车辆离去,对于要对停车场内的车辆根据其停放时间收取相应的停车费 用,可以记录下车辆进入以及离开停车场的时间,再用时间差乘以相应的单价并且 打印出最后的费用就可以实现了。 (在便道上停留的时间不收费) 。 2.32.3 程序中的函数程序中的函数 1.定义栈(停车场) struct stack 初始化栈 void initstack(stack* s) 元素进栈 int push(stack* s,cinfo x) 元素出栈 cinfo pop(stack* s) 2.定义队列(车场外的便道)struct queue 初始化队列 void initqueue(queue* q) 元素进队列 void inqueue(queue* q,int num1) 元素出队列 int outqueue(queue* q) 3.处理车辆到达的情况 void carrival(stack* s,queue* q,cinfo x) 处理车辆离开 void carleave(stack* s1,stack* s2,queue* q,cinfo x) 4.主窗口 void print() 5.主程序 void main() 数据结构课程设计 4 第第 3 3 章章 详细设计详细设计 #include #include int N; const int rate=10;/M 为单元时间的收费值 struct cinfo/定义栈中元素的类型 int cnum; int atime; ; struct stack/定义栈 cinfo cstack3000;/这里随便定义一个数字表示数组的长度,因为后 int top; /面会根据用户输入的 N 值作为停车场能够停车的 int size; /栈的大小 ; struct node/定义队列节点的类型 node* next; int nnum; ; struct queue/定义队列 node *front,*rear; ; void initstack(stack *s)/初始化栈 数据结构课程设计 5 s-top=-1; int push(stack* s,cinfo x)/元素进栈 /int 元素进栈 n; if(s-top=N-1) coutcstack+s-top=x; return 1; cinfo pop(stack* s)/元素出栈 cinfo y; if(s-toptop-; return s-cstacks-top+1; void initqueue(queue* q)/初始化队列 数据结构课程设计 6 q-front=new node; q-rear=q-front; q-front-next=NULL; q-front-nnum=0; void inqueue(queue* q,int num1)/元素进队列 node* p; p=new node; p-nnum=num1; p-next=NULL; q-rear-next=p; q-rear=p; q-front-nnum+; int outqueue(queue* q)/元素出队列 node* p; int n; if(q-front=q-rear) return 0; else p=q-front-next; q-front-next=p-next; if(p-next=NULL) q-rear=q-front; n=p-nnum; delete p; q-front-nnum-; return n; 数据结构课程设计 7 void carrival(stack* s,queue* q,cinfo x)/处理车辆到达的情况 int f; f=push(s,x); if(f=0) inqueue(q,um);/进入队列 coutfront-nnum; couttop+1; couttop-1) if(um!=um) a=push(s2,y); else n=1; 数据结构课程设计 8 if(um=um)/查找要离开的车辆 couttop-1) y=pop(s2); n=push(s1,y); a=outqueue(q); if(a!=0) um=a; y.atime=x.atime; n=push(s1,y); couttop+1; couttop-1) y=pop(s2); n=push(s1,y); p=q-front; n=0; while(p-next!=NULL else 数据结构课程设计 9 p-next=p-next-next; q-front-nnum-; if(p-next=NULL) q-rear=q-front; coutz; system(“cls“);/清屏函数 for(;) switch(z) /实现主窗口的选择 case 0:exit(0); break; case 1: umx.atime; switch(ch1) caseA: casea:carrival(s1,q,x); coutc; switch(c) caseh: caseH:system(“cls“); goto star; break; 数据结构课程设计 11 default:coutc; switch(c) caseh: caseH:system(“cls“); goto star; break; default:umx.atime; switch(ch1) caseD: cased:carleave(s1,s2,q,x); coutc; switch(c) caseh: caseH:system(“cls“); goto star; break; default:cout“输入错误!退出程序 “endl; exit(0); break; caseE: casee:exit(0); break; caseR: caser:system(“cls“); goto star; break; default:cout“输入错误!“endl; exit(0); break; default:cout“输入错误“endl; /主函数结束 数据结构课程设计 13 第第 4 4 章章 调试分析调试分析 由于此停车场管理系统是分模块设计的,而且在程序的实现过程中又使用了清 屏函数 system(“cls“),在运行子模块的时候不会出现主窗口。运行时用户选择任 务并且执行完任务后,使用 GOTO 语句又会回到供用户选择功能的主界面,因此方 便用户的使用。 4.14.1 主窗口界面主窗口界面 图 4-1 主窗口界面 数据结构课程设计 14 4.24.2 停车界面停车界面 图 4-2 停车界面 4.34.3 出车界面出车界面 图 4-3 出车界面 数据结构课程设计 15 4.44.4 退出程序界面退出程序界面 图 4-4 退出程序界面 第第 5 5 章章 课设总结课设总结 5.15.1 收获收获: 通过停车场管理的课程设计中,我更加深入的理解了栈的先进后出和队列 的先进先出的原理,并且学习了用其去解决实际问题的思想和方法。 5.25.2 问题问题: 1.在汽车离开停车场的过程中,如果要离开的车后面还有车辆,那么后面的车 辆都要先退出停车场为它让路,那些车辆以怎样的形式退出停车场,才能以原来进 入停车场的次序,再次进入停车场。 如果直接进入便道上的队列,将要使原有队列向后移动;如果从队尾进入,则会与 提出问题不符合。 如果新建一个临时栈,将在停车场内要让车的车辆,从栈顶开始进入临时栈,当要 数据结构课程设计 16 离开的车,离开后,车辆从临时栈里出来,重新进入停车场的栈内。 2.怎样从分级模块中回到主窗口? 利用循环语句,在 switch 语句中,我无法进行嵌套。 把主窗口从主函数里取出,然后顺序执行程序,后来能够出现主窗口,却不能选择 其中的功能。 利用循环,在循环体内部加上主窗口函数,循环的是输入数据,或输出数据,无法 运行到主窗口的那个函数。 利用 GOTO 语句跳出循环,回到开始的主窗口界面,实现调用后回到主菜单的功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论