数据结构课程设计--停车场管理系统.doc_第1页
数据结构课程设计--停车场管理系统.doc_第2页
数据结构课程设计--停车场管理系统.doc_第3页
数据结构课程设计--停车场管理系统.doc_第4页
数据结构课程设计--停车场管理系统.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

数据结构 课程设计数据结构 课程设计设计题目: 停车场管理系统 学 院: 信息工程学院 专 业: 医学信息系统 班 级: 11级08班 姓 名:李嘉伟、黄庭华、杨茂铨、李俊鹏 学 号:11209080279、11209080266、 11209080267、112090802指导老师: 成 绩: 2013年9月7日目 录1项目研究背景与意义 12需求分析 33概要设计 34详细设计(算法设计的思想) 45源代码及调试 66问题及难点所在157使用说明及测试结果168总结与体会199参考文献20 1 项目研究背景与意义 1.1 课题简介课程设计题目名称: 停车场管理系统课程设计目的:通过数据结构课程的学习,将数据结构应用在具体的编程方面,更加了解课程所学习的内容及思维逻辑,提高程序开发能力,能运用合理的控制流程编写清晰高效的程序。开发一个中小型系统,掌握系统研发全过程,培养分析问题、解决实际问题的能力。课程设计意义:利用数据结构课程设计,了解学生对数据结构的理解和加强学生对数据结构方面的应用知识。帮助学生好好利用数据结构的知识和思想,解决各方面的编程难题。课程设计内容: (1)问题描述: 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 (2)基本要求:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去; 第1页,共20 页则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。(3)测试数据:汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如,(A,1,5)表示1号牌照车在5这个时刻到达,而(D,5,20)表示5号牌照车在20这个时刻离去。整个程序可以在输入信息为(E,0,0)时结束。本题可用栈和队列来实现。 (4)实现提示 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 课程设计预期实现效果: 开发可完成每一项基本功能的小型停车场管理系统 1.2 方案及其论证 语言:C+ 运行环境:Microsoft Visual C+ 6.0设计进度安排:李俊鹏杨茂铨黄庭华李嘉伟设计界面,查找资料完成初步的程序设计查资料解决调试中的问题改进程序,验收并完成报告 第2页,共20 页2需求分析IT行业的高速发展让计算机技术深入日常生活的每一个细节。随着城市化程度的加深,房地产行业日益兴盛,越来越多的小区散布在城市里,小区的车辆也与日俱增,停车场是小区里不可缺少的一部分,对停车场飞管理变得非常重要。通过开发小区停车场管理系统,使小区里的车辆能得到有序的管理,这个系统使用对象为停车场的管理人员。系统需要满足的要求:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。3概要设计(特殊功能) 1、设计思想此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出,并且要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场的功能,就可以设计两个堆栈,其中一个堆栈用来模拟停车场,另一个堆栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道可以用一个链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改变通道上车辆结点的连接方式就可以了,使通道上第一辆车进入停车场这个堆栈,并且使通道上原来的第二辆车成为通道上的第一辆车,此时只需将模拟通道的链队列的头结点连到原来的第二辆车上就可以了。2、实现方法对于此停车场管理系统的实现,就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点。至于通道上车辆的停放则用一个链队列来实现,此时,通道上车辆的离开或者进入停车场只需改变此链队 第3页,共20 页列上的结点而已。对于要对停车场内的车辆根据其停放时间收取相应的停车费用,可以记录下车辆进入以及离开停车场的时间,再用时间差乘以相应的单价并且打印出最后的费用就可以实现了。3、功能(函数)设计 本程序从总体上分为四个功能模块,分别为: (1)程序功能介绍和操作提示模块 (2)汽车进入停车位的管理模块 (3)汽车离开停车位的管理模块 (4)查看停车场状态的查询模块 在以上各个模块中,出现的调用的函数为:void InitStack(StackCar *); /初始化栈int InitQueue(LinkQueueCar *); /初始化队列int Arrival(StackCar *,LinkQueueCar *); /进站登记void Leave(StackCar *,StackCar *,LinkQueueCar *); /出站登记void List(StackCar,LinkQueueCar); /查询车位状态4详细设计流程图: 第4页,共20 页车辆到达以堆栈来模拟停车场和以堆栈里的数据元素我设计成汽车的车牌号初始化车站, 初始化让路的临时栈, 初始化通道车场未满,车进车场车场已满,车进便道判断车场是否已满车输入车子到达时间,车牌号未满车进入车场判断车场内是否有车不做任何计算无点x有输入离开车辆的离开时间,进行停车费用的计算此车后面的车辆退出并进入临时栈车子离开 第5页,共2 页5源代码及调试程序代码#include#include#include#include#define MAX 100#define price 0.05typedef struct Time /时间结构体int hour;int min;Time;typedef struct CarNode /汽车结构体char num10;Time reach;Time leave;CarNode;typedef struct StackCar /存储汽车的栈结构CarNode *stackMAX+1;int top;StackCar; 第6页,共20 页typedef struct QueueCarNode /存储汽车的队列结构CarNode *data;struct QueueCarNode *next;QueueCarNode;typedef struct LinkQueueCar /定义队列结构指针QueueCarNode *head;QueueCarNode *rear;LinkQueueCar;void InitStack(StackCar *); int InitQueue(LinkQueueCar *);int Arrival(StackCar *,LinkQueueCar *); void Leave(StackCar *,StackCar *,LinkQueueCar *);void List(StackCar,LinkQueueCar); void main() printf(tt=欢迎你进入停车场管理系统=n); printf(tt 小组成员:李嘉伟 黄庭华 杨茂铨 李俊鹏n); printf(tt 班级:11级08班 n); StackCar Enter,Temp; LinkQueueCar Wait; int a; int b=1; InitStack(&Enter); InitStack(&Temp); /汽车出站时,暂时按次序存放汽车的栈结构 InitQueue(&Wait); 第7页,共20 页 while(b) coutn1. 汽车进站登记;cout 2. 汽车出站登记;cout 3. 车位状态显示;couta;while(b) if(a=1|a=2|a=3|a=4) break; else couttop=0; for(i=0;istacks-top=NULL;int InitQueue(LinkQueueCar *Q) /初始化队列 Q-head=(QueueCarNode *)malloc(sizeof(QueueCarNode); if(Q-head!=NULL) Q-head-next=NULL; Q-rear=Q-head; return(1); else return(-1);int Arrival(StackCar *Enter,LinkQueueCar *W) /进站登记 CarNode *p; QueueCarNode *t; p=(CarNode *)malloc(sizeof(CarNode); coutp-num ; if(Enter-toptop+; 第9页,共20 页 coutn车辆在车场第 top 号车位; coutp-reach.hour; coutp-reach.min; Enter-stackEnter-top=p; return(1); else /没有空车位 coutdata=p; t-next=NULL; W-rear-next=t; W-rear=t; return(1); void PRINT(CarNode *p,int room) /汽车离站时缴费显示 coutp-leave.hour; coutp-leave.min; printf(n离开车辆的车牌号为:); coutnum; coutn其到达时间为: reach.hour 时 reach.min 分; coutn离开时间为: leave.hour 时 leave.min 分; 第10页,共20 页 coutn应交费用为: leave.hour - p-reach.hour)*60+(p-leave.min - p-reach.min)*pricetop0) /车站有车时 while(1) coutroom; if(room=1&roomtop) break;while(Enter-toproom) /位置不在栈顶的汽车出站 Temp-top+; Temp-stackTemp-top=Enter-stackEnter-top; Enter-stackEnter-top=NULL; Enter-top-; p=Enter-stackEnter-top;Enter-stackEnter-top=NULL;Enter-top-;while(Temp-top=1) /当暂时存储汽车的栈结构中有汽车时汽车重 第11页,共20 页新进站 Enter-top+;Enter-stackEnter-top=Temp-stackTemp-top;Temp-stackTemp-top=NULL;Temp-top-;PRINT(p,room);if(W-head!=W-rear)&Enter-tophead-next;t=q-data;Enter-top+;coutn便道的num号车进入车场第top号车位.;coutn请输入numt-reach.hour;coutn请输入numt-reach.min;W-head-next=q-next;if(q=W-rear) W-rear=W-head;Enter-stackEnter-top=t;free(q);else coutn便道里没有车.n;else couttop0) coutn车场车位状态:; coutn车位号t 到达时间 t车牌号n;for(i=1;itop;i+) cout it ;coutstacki-reach.hour时stacki-reach.min分;coutt stacki-numn;else couthead-next; if(W-head!=W-rear) coutn便道内车队依次为:; coutnn; while(p!=NULL) 第14页,共20 页coutdata-numnext; coutn; else coutn便道里没有车.;void List(StackCar S,LinkQueueCar W) /查询车位状态 int flag,choice; flag=1; while(flag) coutn请选择 :; coutchoice; if(choice=1|choice=3) break; else cout选择错误,请重新选择!n; switch(choice) case 1: List1(&S); break; case 2: 第15页,共20 页 List2(&W); break; case 3: flag=0; break; default: break; 调试过程中曾遇到的错误:最初调试中车牌号编写为int型,输入的只能是数字,但现实生活中车牌号都为汉字+英文字母+数字,在改进过程中,改成字符型;6特殊问题解决方法 由于此停车场管理系统是分模块设计的,所以,运行时用户选择任务并且执行完任务后,又会回到供用户选择功能的主界面,因此整个程序从整体上来讲结构清晰,使用方便。当停车场已经达到最大容量,但仍有车辆进入停车场的时候,运行界面上没有出现或者说出现了但又跳掉了“停车场已满,该车辆需在便道上等待!”的提示信息。我们小组成员经过反复商量讨论,并且在查阅了多种资料后,在那一个printf语句后加了一个getch(),此时,程序运行结果就符合要求了。 第16页,共20 页7使用说明及测试结果 这个程序用来实现对停车场内车辆的管理,整个操作界面

温馨提示

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

评论

0/150

提交评论