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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

停车场系统课程设计.docx

1、停车场系统课程设计课 程 设 计课程设计名称: 数据结构课程设计 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 2010.6.21-2010.6.25 计算机科学与技术 专业课程设计任务书学生姓名专业班级学号题 目停车场管理系统课题性质A工程设计课题来源D自拟课题指导教师同组姓名无主要内容综合应用所学知识,设计完成一个停车场管理系统。本系统拟实现以下功能:1.处理车辆到达模块2.处理车辆离开模块系统要求采用Vc工具进行开发实现。任务要求 综合运用和融化所学理论知识,提高分析和解决实际问题的能力,达到培养良好程序设计能力和习惯的目的,为开发满足问题要求的

2、小型应用软件奠定基础,达到软件工程的综合性基础训练的目的。完成需求分析报告,报告中对关键部分给出图表说明。要求格式规范,工作量饱满。参考文献数据结构(C语言版)严蔚敏 清华大学出版社C语言程序设计(第三版)谭浩强 清华大学出版社审查意见指导教师签字:教研室主任签字: 2009 年 6 月 19 日 1 需求分析11 问题描述设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场的时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已经放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上

3、的第一辆车就进入停车场。停车场内某车要开走,在它之后进入停车场的车都必须退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。12 实现要求 要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某车辆离开车场时应缴纳的费用。13 实现提示 汽车的模拟输入信息格式可以为:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如:(A,1,5)表示1号牌照车在第5这个时刻到达,而(D,5,20)

4、表示5号牌照车在第20这个时刻离去。整个程序可以输入(E,0,0)时结束。本题可用栈和队列来实现。2 程序实现2.1 设计思想根据题目要求,停车场只有一个大门,因此可以用栈来模拟;当栈满后,继续来的车辆只能停在便道上,根据便道停车的特点,可知这可以用一个队列来模拟,先排队的车辆先离开便道,进入停车场。由于排在停车场中间的车辆可以提出离开停车场,并且要求在离开车辆到停车场大门之间的车辆都必须先离开停车场,让此车辆离去,然后再让这些车辆依原来的次序进入停车场,因此在一个栈和一个队列的基础上,还需要一个地方(车辆规避所)保存为了让路离开停车场的车辆,很显然这应该用一个栈来模拟。因此本题用到两个栈和一

5、个队列。对于停车场和车辆规避所,有车辆进入和车辆离去两个动作,这就是栈的进栈和出栈操作,只是还允许排在中间的车辆先离开停车场,因此在栈中需要进行查找。而对于便道,也有入队列和出队列的操作,同样允许排在中间的车辆先离开队列。这样基本动作只需要利用栈和队列的基本操作即可实现。整个操作过程是:当输入数据表示有车辆到达,则判断栈是否满,若未满就将新数据进栈(表示新到达的车辆进入停车场的里面),数据应包括车牌号和到达时间;若已满,就将数据放在队尾,表示车辆在便道上等待进入停车场。当输入数据表示有车辆要离去,就在栈中寻找是否有此车牌号的车辆,如有就让此车辆离开停车场,并根据停车时间计费;如没有找到,就到队

6、列中(便道上)去寻找此车牌号的车辆,如有就允许此车辆离开队列,但不收费;如没就显示出错信息。当离开停车场的车辆位于栈的中间时,必须先将此位置到栈顶的所有数据倒到另一个栈中去(车辆规避所),然后安排车辆出栈,然后将另一个栈中的数据倒回到停车场栈中来。如果此时队列(便道上)不为空,则将第一个元素出队列(离开便道),进入栈(停车场)中。在模拟停车场管理时,如果停车栈中已没有车辆停放时,输入数据仍要求车辆退出,则显示出错信息。2.2 程序实现 2.2.1定义头文件: #include#include2.2.2元素类型、节点类型 #define N 2 /栈的最大容量#define M 5 /单位时间收

7、费#define TRUE 1#define FALSE 0typedef struct int num; /车牌号 int arrtime; /到达时间SElemType; /栈的元素类型typedef struct SElemType aN; int top;SqStack; / 栈的类型typedef struct int num; struct QNode *next;QNode,*QueuePtr; /队列的结点类型typedef struct QueuePtr front; /指向头结点 QueuePtr rear; /指向尾结点LinkQueue; /队列的类型2.2.3 函数模

8、块(1)初始化栈模块void initStack(SqStack *s) /初始化栈 s-top=-1;(2)入栈模块 int push(SqStack *s,SElemType x) /数据元素x入指针s所指的栈 if(s-top=N-1) /栈满 return FALSE; else s-as-top=x; s-top+; return TRUE; (3)出栈模块SElemType pop(SqStack *s) /栈顶元素出栈 SElemType x; if(s-top=-1) /栈为空 x.num=-1; x.arrtime=-1; return x; else s-top-; ret

9、urn s-as-top; (4)初始化队列模块void initQueue(LinkQueue *Q) /初始化队列 QueuePtr head; head=(QueuePtr)malloc(sizeof(QNode); /为头结点分配存储空间 head-next=NULL; /为头结点赋初值 head-num=0; Q-front=head; Q-rear=head;(5)入队列模块void EnQueue(LinkQueue *Q,int num) /数据入队列 QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode); /为新结点分配存储空间 p-num

10、=num; p-next=NULL; Q-rear-next=p; Q-rear=p; Q-front-num+;(6)出队列模块int DeQueue(LinkQueue *Q) /数据出队列 int m; QueuePtr p; if(Q-front=Q-rear) /队列为空 m=-1; return m; p=Q-front-next; Q-front-next=p-next; m=p-num; Q-front-num-; if(p=Q-rear) /如果删除的是队尾结点,则重新给队尾指针赋值 Q-rear=Q-front; return m;(7)处理车辆到达模块void arriv

11、e(SqStack *s1,LinkQueue *Q,SElemType x) /处理车辆到达 int f; f=push(s1,x); /新到达的车辆进入停车场栈 if(f=FALSE) / 如果停车场栈满,则进入便道队列 EnQueue(Q,x.num); printf(第%d号车停在便道第%d车位上n,x.num,Q-front-num); else /新到车辆停入停车场栈 printf(第%d号车停在停车场第%d号车位上n,x.num,s1-top+1); (8)处理车辆离开模块void delive(SqStack *s1,SqStack *s2,LinkQueue *Q,SElem

12、Type x) /处理车辆离去的情况 int n,f=FALSE; SElemType y; QueuePtr p,q; while(s1-top-1)&f!=TRUE) /在停车场中寻找要离开的车辆 y=pop(s1); if(y.num!=x.num) /如果栈顶元素不是要离开的车辆,就将其放入车辆规避所栈 n=push(s2,y); else f=TRUE; if(y.num=x.num) /在停车场中找到要离开的车辆 if(x.arrtimetop-1) /车辆规避所栈不为空,将其全部放回停车场栈 y=pop(s2); f=push(s1,y); n=DeQueue(Q); /如果便道

13、上有车,将第一辆车放入停车场 if(n!=-1) y.num=n; y.arrtime=x.arrtime; /计费为刚离去的车的离去时间 f=push(s1,y); printf(第%d号车停在停车场第%d号车位上n,y.num,s1-top+1); else /在停车场中没有找到要离去的车辆 while(s2-top-1) /将规避所中的所有车辆放回停车场 y=pop(s2); f=push(s1,y); q=Q-front-next; f=FALSE; while(f=FALSE&q!=NULL)/在便道上寻找要离去的车 if(q-num!=x.num) p=q; q=q-next; e

14、lse /在便道上找到该辆车 Q-front-num-; Q-rear=p; if(p-next=NULL) Q-rear=Q-front; printf(第%d号车离开便道n,x.num); /让该辆车离开便道,但不收费 f=TRUE; if(f=FALSE) /在便道上也没有找到该车,输入数据错误 printf(输入错误,停车场和便道上均无第%d号车n,x.num); (9)主函数模块void main() /停车场模拟管理程序 char ch1,ch2; SqStack *s1,*s2; LinkQueue *Q; SElemType x; s1=(SqStack *)malloc(si

15、zeof(SqStack); s2=(SqStack *)malloc(sizeof(SqStack); Q=(LinkQueue *)malloc(sizeof(LinkQueue); initStack(s1); /初始化停车场栈 initStack(s2); /初始化规避所栈 initQueue(Q); /初始化便道队列 printf(* 欢迎使用停车场管理系统!*n); printf(n); printf(* 功能导航: *n); printf(n); printf(* A:车辆到达 *n); printf(* D:车辆离去 *n); printf(* E:退出程序 *n); prin

16、tf(n); do printf(请输入数据:A/D,车牌号,到达/离开时间n); scanf(%c%d%d,&ch1,&x.num,&x.arrtime); ch2=getchar(); /接收ENTER switch(ch1) case A: case a: arrive(s1,Q,x); break; case D: case d: delive(s1,s2,Q,x); break; case E: case e: printf(谢谢您的使用!n); break; default: printf(您输入的数据有误,请重新输入:n); while(ch1!=e&ch1!=E);3 调试分析

17、 1.在主函数中,少了getChar()函数,导致程序将ENTER作为字符,从而导致每次输入都会输出一句“输入错误,请重新输入”。 2在if语句中将等号写成赋值号,导致程序出错。 3没有给指针分配存储空间,导致不能读错误,在使用指针时一定要注意给某些分配存储空间。 4在出队列时,没有考虑到当删除的正好是尾结点时,需要对尾结点重新赋值,导致在处理车辆离开时会出现错误信息。4 运行结果5.实验环境(1)Windows XP系统下(2)编程环境:VC6.0+ ,TC2.0 6试验体会 算法与框架写起来比较简单,但是具体操作时有很多细节需要考虑在内,否则会出现一系列逻辑错误,编程时要养成思虑周全的好习

18、惯,这是一个编程者所必须具备的品质。 在输入变量时要注意变量的大小写,否则会出现一系列错误。对于变量一定要先声明再使用。作为一个学习编程者,调试程序能力也是必备的。参 考 文 献1 数据结构(C语言版) 严蔚敏 吴伟民著 清华大学出版社2 C语言程序设计(第三版)谭浩强 清华大学出版社信息科学与工程 学院课程设计成绩评价表课程名称:数据结构课程设计设计题目:停车场管理系统 专业: 班级: 姓名: 学号:序号评审项目分 数满分标准说明1内 容思路清晰;语言表达准确,概念清楚,论点正确;实验方法科学,分析归纳合理;结论严谨,设计有应用价值。任务饱满,做了大量的工作。2创 新内容新颖,题目能反映新技术,对前人工作有改进或突破,或有独特见解3完整性、实用性整体构思合理,理论依据充分,设计完整,实用性强4数据准确、可靠数据准确,公式推导正确5规 范 性设计格式、绘图、图纸、实验数据、标准的运用等符合有关标准和规定6纪 律 性能很好的遵守各项纪律,设计过程认真;7答 辩准备工作充分,回答问题有理论依据,基本概念清楚。主要问题回答简明准确。在规定的时间内作完报告。总 分综合意见 指导教师 年 月 日

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

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