




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
停车场管理系统专 业: 班 级:姓 名:学 号:指导教师: 完成日期:2008年6月25日 数据结构课程设计任务书一、开设数据结构课程设计的目的 数据结构是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能,特开设此课程设计。二、数据结构课程设计的具体内容停车场管理系统问题描述 车辆的信息包括:车牌号、汽车到达/离去标志、到达/离去时刻等。利用栈结构模拟停车场,用队列结构模拟等待的便道。基本要求l 收费:根据车辆到达和离开停车场的时间计时收费。l 查询:通过车牌号能查到该车辆在停车场或便道中的位置l 调度:当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。三、课程设计要求1、独立思考,按要求认真完成本次课程设计。 2、按照课程设计的具体要求完成几个内容。 a) 需求分析:叙述课题的功能要求;b ) 概要设计:详细说明每个部分的算法设计及过程,可以辅助流程图;, c)详细设计:算法实现的源程序(设计的具体语言不限制);d)调试分析:测试数据,时间复杂度分析,和每个模块设计和调试时存在问题的思考。3、报告书提交(报告书的书写格式参照以下条目)l 认真完成报告书,使用B5纸张,正文用小四字体, 打印。首页为封面,要求写清楚标题、班级、姓名、指导教师、完成日期。第二页为本任务书。第三页为教师评语。第四页为目录。从第五页开始,为报告书正文。l 报告书正文具体内容包括:算法的简介、说明及分析;整个程序的功能设计与分析;程序测试与分析,附程序清单。四、完成期限二八年六月二十三日 二七年六月二十七日 指导教师:黎娅 机电信息工程系 二八年六月二十日教师评语:目 录任务书 2教师评语 3目录 4一、 数据结构内容简介 5二、 需求分析 5三、 算法设计 61.概要设计 72.详细设计 9四、 程序功能分析 13 .源程序代码 15五、 总结 20 六、 参考文献 21 一、 数据结构内容简介数据结构指的是数据的逻辑结构和存储结构,算法就是对数据运算的描述。程序设计的实质就是对实际问题选取一种优秀的数据结构,加之设计一个优秀的算法,而且优秀的算法很大程度上取决于描述实际问题的数据结构。二、需求分析本次数据结构课程设计的具体内容是停车场管理系统,该系统用栈结构模拟停车场,限定停车场的容量为n,用队列结构模拟等待的便道,空间不限制。车辆的信息包括:车牌号、汽车到达/离去标志、到达/离去时刻等。按照从终端读入的数据序列进行模拟管理。每辆车需要三个数据,其中车辆数据为:A表示到达,D表示离去,E表示程序结束。车辆牌照为整型数据。进场或离场时间同样为整型数据。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用停车场管理系统主要实现以下几个功能: (1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。 (2)该程序设计能够通过车牌号能查到该车辆在停车场或便道中的位置。(3)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的调度功能。该程序设计可以完整的模拟停车场的管理过程。三、算法设计停车场管理系统是充分利用数据结构中栈和队列的思想实现的,栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。栈的主要特点是”后进先出”,即后进栈的元素先处理。停车场的容量即为栈的存储空间,停车场的车辆的停靠是无秩序的,因此采用链式存储的方式更适合,也方便车辆的调度。图1 停车场管理系统流程图1、概要设计2.详细设计三、程序功能分析1、算法分析与探讨 该停车场管理系统首先初始化栈模拟停车场的容量,车辆到达时实现入栈操作,在栈中加入一个新元素,然后为新元素设置变量保存车辆的信息。车辆的信息包括:车牌号、汽车到达/离去标志、到达/离去时刻等。用队列模拟便道,实现能够通过车牌号等信息就可以查到车辆在便道中的位置。按照从终端读入的数据序列进行模拟管理。每辆车需要三个数据,其中车辆数据为:A表示到达,D表示离去,E表示程序结束。车辆牌照为整型数据。进场或离场时间同样为整型数据。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。如果停车场满了即栈满了就调用队列函数,等其他车辆离开后新的车辆在进入便道。2、调试分析(1)一开始在调试程序时遇到了内存错误,经过DEBUG,找到了引起内存错误的原因:即在建立队头指针与队尾指针时没有对指针进行初始化(没有为指针动态分配空间)。问题得到解决。 (2)在Wait函数中的If语句处,一开始的算法有些问题,导致实现的功能与设想的有出入,无法得到正确的结果。原条件为: S.top-S.base=S.stacksize后改为: (S.top-S.base)=(S.stacksize-1)&count!=0 该函数的功能得以正确实现。(3)在EnQueue函数中,一开始用的是建立实体结点,用队头队尾指针指向该实体的方法来创建队列。在调试过程中发现,忽略了生存期,导致队列并没有被创建。改为创建指针,并为指针分配空间,再给头指针和尾指针赋值的方式解决问题。虽然指针也有生存期,但为它分配的空间却并没有被收回,于是队列创建成功,问题解决。 (4)本程序中:车辆到达,离去时的时间复杂度均为:O(n)。本程序空间复杂度为:O(n)。 (5)经验体会:借助DEBUG和Watch,可以更快的找到程序中的非语法错误。在声明一个指针后,要对指针进行初始化,并且0可以作为地址使用。注意生存期对程序的影响。3、程序测试(1)输入车辆数据:A为到达,D为离去,E为结束程序。(2)按提示继续输入。(3)若为到达的车辆,输入进场信息,若为离去的车辆,输入离场信息。(4)若车辆到达,可得到车辆的停放位置信息,若车辆离去,可得到车辆的停放时间(在便道上的停放时间除外),以及应该交纳的费用。(5)本程序不断循环要求输入车辆信息,直到输入的车辆数据为E时,程序结束。4、测试结果A表示到达,D表示离去,E表示程序结束5、源程序代码#include #include #include #define ERROR 0#define OK 1#define NULL 0typedef struct nodeint passport;int time;node;typedef struct stacknode *base;node *top;int stacksize;stack;typedef struct Qnodenode Qdata;struct Qnode *next;Qnode;typedef struct Qnode *front;Qnode *rear;LinkQueue;int count=0;int times;stack s,temp;LinkQueue Q;void initstack(stack &S,int n)S.base=(node *)malloc(n*sizeof(node);S.top=S.base;S.stacksize=n;void EnQueue(LinkQueue &Q,node e);void DeQueue(LinkQueue &Q,node &e);void push(stack &S,node e)if(S.top-S.base)=S.stacksize)EnQueue(Q,e);else S.top-passport=e.passport;S.top-time=e.time;S.top+;int pop(stack &S,node &e)if(S.top=S.base)return ERROR;-S.top;e.passport=S.top-passport;e.time=S.top-time;return OK;void wait(stack &S)if(S.top-S.base)=(S.stacksize-1)&count!=0)node temp;DeQueue(Q,temp);temp.time=times;push(S,temp);void EnQueue(LinkQueue &Q,node e)Qnode *q;q=(Qnode *)malloc(sizeof(Qnode);q-Qdata.passport=e.passport;q-Qdata.time=e.time;q-next=NULL;if(count=0)Q.front=q;count+;Q.rear-next=q;Q.rear=q;void DeQueue(LinkQueue &Q,node &e)if(Q.rear=NULL)else e.passport=Q.front-Qdata.passport;e.time=Q.front-Qdata.time;Q.front=Q.front-next;if(Q.front=NULL)Q.rear=Q.front;count=0;void main()int n,exit;float money;char info;int pass;Q.front=NULL;Q.rear=(Qnode *)malloc(sizeof(Qnode);Q.rear-next=Q.rear;printf(停车场容量:);cinn;initstack(s,n);initstack(temp,n);printf(停车场费率:);cinmoney;while(exit!=OK)printf(n请输入车辆数据nA到达 D离去 E结束:);cininfo;printf(请输入车辆牌照:);cinpass;if(info=A|info=E)printf(请输入进场时间:);if(info=D)printf(请输入离场时间:);cintimes;if(info=E)exit=OK;else if(info=A)int i,j;node a;a.passport=pass;a.time=times;push(s,a);for(i=1;inext;j+;printf(停车位置(便道):%dn,j);else if(info=D)node d;int tp,counter=0;docounter+;tp=pop(s,d);while(tp!=ERROR)if(d.passport=pass)float m;m=(times-d.time)*money;printf(停留时间:%d 需交费:%fn,times-d.time,m);while(temp.base!=temp.top)pop(temp,d);push(s,d);wait(s);d.passport=9999;tp=ERROR;elsepush(temp,d);d.passport=0;tp=ERROR;while(d.passport=0|countern);else if(info!=A&info!=D&info!=E)总 结本次课程设计主要是运用本学期学的数据结构的知识设计一个停车场管理系统,使本学期所学的数据结构的课程内容得到了具体的运用,更加深了对这门课程的理解。在本次课程设计中不仅加深了对栈和队列等数据结构的理解和掌握,同时一定程度上提高了自己程序设计和阅读程序的能力。本次课程设计提高了我们的专业知识,使自己所学的内容运用到实际中来,也增强了实际操作能力,为以后的工作学习提供了一个良好的铺垫。通过本次课程设计的实践学习,我认识到了学好计算机要重视实践操作,所以在以后的学习过程中,我会更
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚协议解除后赡养费支付及财产分配执行协议
- 离婚协议签订前夫妻共同债务确认谈话笔录
- 创业孵化器租赁合同含中介及创业辅导服务范本
- 绿色金融公私转账借款及环境保护责任合同
- 离婚协议书:财产分割、债务承担及子女抚养权协议
- 养殖场土地租赁与农业科技园区建设合同
- 生物医药研发特殊劳动关系科研人员合作协议
- 矿山生态修复治理手册
- 职业教育专业实训教学标准制定
- 养殖业合作社运作制度
- 铝合金门窗 工程监理实施细则
- 北京京剧院劳动合同制职工招考聘用模拟卷含答案
- 风电工程电气监理细则资料
- 苏教版二下《折彩粽》教学设计
- 铁路工程量清单指南
- 化妆品进货验收台帐
- 工程经济学ppt全套教学课件
- 附件4:医院血透室医疗质量检查表
- 精选艾森克人格问卷测试成人版和少年版计分方式
- 《作用于肾上腺素受体的药物》精品PPT
- WS T 310.2-2016医院消毒供应中心第2部分:清洗消毒及灭菌技术操作规范1
评论
0/150
提交评论