下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计I 丁车 场 管 理 系 统班级:*指导教师:*学号:*姓名:*小组成员:* * *完成日期: 2009 年 3 月 6 日 成绩 :数据结构课程计停车场管環(一)设计目的?3(二)设计容?3(三)概要设计?46-85(四)调试析?(五)用户手册(六)附录?9-17第2共18页数据结构课程设计停车场管理系统数据结构课程设计停车场管理系统一、课程设计目的1、通过课程设计,加深对数据结构这一课程所学内容的进一步理解与巩固。2、通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。3、通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的
2、程序。4、 通过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调通过。5、通过课程设计,开发一个中小型系统,掌握系统研发全过程。6、通话课程设计,培养分析问题、解决实际问题的能力。二、课程设计内容 问题描述:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。停车场内如有某辆车要开走, 在它之后进入停车场的车都必须先退出停车场为它让路,待其开出
3、停车场后,这些辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保 持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间。 实现提示:汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)例如,(A' 1,5)表示1号牌照车在 5这个时刻到达,而( D', 5,20)表示5号牌照 车在20这个时刻离去。整个程序可以在输入信息为( E
4、',0,0)时结束。本题可用栈和队列来实现。第3页共18页数据结构课程设计停车场管理系统三、概要设计1、设计思想此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出,并且要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场的功能,就可以设计两个堆栈,其中一个堆栈用来模拟停车场,另一个堆栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道可以用一个链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改变通道
5、上车辆结点的连接方式就可以了,使通道上第一辆车进入停车场这个堆栈,并且使通道上原来的第二辆车成为通道上的第一辆车,此时只需将模拟通道的链队列的头结点连到原来的第二辆车上就可以了。2、实现方法对于此停车场管理系统的实现,就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点。至于通道上车辆的停放则用一个链队列来实现,此时,通道上车辆的离开或者进入停车场只需改变此链队列上的结点而已。对于要对停车场内的车辆根据其停放时间收取相应的停车费用,可以记录下车辆进入以及离开停车场的时间,再用时间差乘以相应的单价并且打印出最后的费用就可以实现了。3、主要模块此停车场管理系统,主要
6、分为以下若干模块:首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用optio n() 函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、 停车场内停放车辆的信息以及退出程序这四个函数模块。其中,在车辆的离开那个模块函数中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数 中,又分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。最后,从调鼐的这四个函数中回到主函数结束整个程
7、序的运行。第4页共18页数据结构课程设计停车场管理系统在以上各个模块中,出现的调用的函数为:void InitStack(SeqStackCar *s);int Ini tQueue(L in kQueueCar *Q);optio n();int Arrival(SeqStackCar *En ter,Li nkQueueCar *W);void Leave(SeqStackCar *En ter,SeqStackCar *Temp,Li nkQueueCar *W);void PRINT(CarNode *p);void List(SeqStackCar S,Li nkQueueCar W
8、);void List1(SeqStackCar *S);void List2(Li nkQueueCar *W);4、模块间关系第5页共18页数据结构课程设计停车场管理系统四、调试分析(1) 调试过程中的主要问题由于此停车场管理系统是分模块设计的,而且在程序的实现过程中又使用了清屏函数,所以,运行时用户选择任务并且执行完任务后,又会回到供用户选择功能的主界面,因此整个程序从整体上来讲结构清晰,使用方便。本程序的调试运行,总体上情况良好,但中间也 出现了一些小问题。其中比较有代表性的主要问题有:当停车场已经达到最大容量,但仍有车辆进入停车场的时候,运行界面上没有出现或者说出现了但又跳掉了“停车
9、场已满,该车辆需在便道上等待!”的提示信息。我们小组成员经过反复商量讨论,并且在查阅了多种资料后,在那一个printf语句后加了一个getch(),此时,程序运行结果就符合要求了。对于在 WIN TC下不能显示中文的问题,我们通过在第一个printf语句前加了一句system("graftabl 936");就很好地解决了这个问题,使得整个程序的运行都出现了中文提示, 而且是在中文的环境下操作,设计更加合理,更加人性化,更加方面用户使用,同时也提高 了用户的操作效率。(2) 测试结果的分析与讨论欢迎界面第6页共18页数据结构课程设计停车场管理系统车辆到达车辆离开第7页共18
10、页数据结构课程设计停车场管理系统车辆信息(车场)车辆信息(便道)第8页共18页数据结构课程设计停车场管理系统五、用户手册这个程序用来实现对停车场内车辆的管理,整个操作界面为中文,更加符合人性化的标准,使得用户使用方便,而且每一个操作都有提示,使得初次接触该程序的用户也能很快适应程序的操作。这个程序操作简单,对于车牌号,只需输入车牌号上的数字就行,而且对于进出停车场的时间,也简化了操作,只需输入当时的时刻就行,没有具体到小时和分钟,但也许这也是该程序不足之处所在。而且该程序也给用户提供了选择的机会,当点击运行该程序后,如果想退出程序,可以输入n或N退出该运行程序。至于使用过程中的更具体的问题,可
11、以参照该报告书中调试分析那一项的屏幕截图,整个程序的运行界面大致就如上述屏幕截图的内容。六、附录1、源程序代码#in elude "stdio.h"#in elude "stdlib.h"#in elude "stri ng.h"#in elude "eon io.h"int MAX; /* 定义一个全局变量用来存储车库最大容量*/float price;/*每车每小时的费用 */typedef struct timeint hour;int min;Time; /*时间结点*/typedef struct nod
12、echar nu m10;Time reach;Time leave;第9页共18页数据结构课程设计停车场管理系统Car; /*车辆信息结点*/typedef struct NODECar *stack100;int top;SqStack; /* 停车站 */typedef struct carCar *data;struct car *n ext;QNode;typedef struct NodeQNode *head;QNode *rear;Lin kQueue; /* 通道 */void InitStack(SqStack *); /*初始化栈 */int InitQueue(Link
13、Queue *); /*初始化便道 */int arrive(SqStack *,LinkQueue *); /*车辆到达 */void leave(SqStack *,SqStack *,L in kQueue *); /*车辆离开 */void info(SqStack,LinkQueue); /*显示停车场信息 */void PRINT(Car *p,i nt room);void InitStack(SqStack *s) /* 初始化栈 */int i;s->top=0;for(i=O;iv=MAX;i+)第10页共18页数据结构课程设计停车场管理系统s->stacks-
14、>top=NULL;int InitQueue(LinkQueue *Q) /* 初始化便道 */Q->head=(QNode *)malloc(sizeof(QNode);if(Q->head匸NULL)Q->head-> next=NULL;Q->rear=Q->head;return(1);else return(-1);void mai n()SqStack In ,Out;Lin kQueue Wait;int ch;InitStack(&ln); /* 初始化停车站 */In itStack(&Out); /* 初始化让路的
15、临时栈 */InitQueue(&Wait); /* 初始化通道 */while(1)printf(" 欢迎使用停车场管理系统n");printf("t本系统由5011工作室开发,作者:邓春国、段庆龙、梁伟明、 丁磊。nn");printf("请输入停车场的容量:");第11页共18页数据结构课程设计停车场管理系统sea nf("%d",&M AX);printf("请输入停车场的收费标准(元/小时):");sea nf("%f",&priee);pr
16、intf("您输入的停车场容量为%d位,费用为 %2.1f元/小时。n",MAX,priee);printf("n (1)车辆到达n(2)车辆离开n(3)停车场信息n(4)退出系统n请 选择n");while(1)ch=getch();switch(ch)case 49:arrive(&ln,&Wait);break; /*车辆到达 */case 50:leave(&ln,&Out,&Wait);break; /*车辆离开 */case 51:info(ln,Wait);break; /* 输出车站信息 */cas
17、e 52:printf("谢谢使用!");exit(0); /* 退出主程序 */default:pri ntf("n按键无效,请重新按键选择!");/*49 -52分别表示“ 1 ”- 4”这四个按键的键值*/ system("CLS");printf(" 欢迎使用停车场管理系统n");printf("t本系统由CG工作室开发,作者:邓春国、段庆龙、梁伟明、丁磊。nnn");printf("您输入的停车场容量为%d位,费用为 %2.1f元/小时。n",MAX,price);
18、printf("n (1)车辆到达n(2)车辆离开n(3)停车场信息n(4)退出系统 n请选择n");第12页共18页数据结构课程设计停车场管理系统in t arrive(SqStack *ln ,Li nkQueue *W) /*车辆到达 */Car *p;QNode *t;p=(Car *)malloc(sizeof(Car);flushall();printf("n停车场还有%d停车位(若停车位为0,车可先进入便道等待)",MAX-I n->top);printf("n请输入车牌号码(例:湘D0734):");gets(p
19、->nu m);if(I n->top<MAX)/*停车场未满,车进车场*/In->top+;printf("n停车的位置:%d号停车位。",In->top);printf("n请输入车到达的时间(格式“ *:* ” ):");sca nf("%d:%d",&(p->reach.hour),&(p->reach.mi n);In->stackI n->top=p;printf("请按任意键返回");getch();return(1);else /
20、*停车场已满,车进便道 */printf("n停车位已满,该车须在便道等待!");t=(QNode *)malloc(sizeof(QNode);t->data=p;t->n ext=NULL;第13页共18页数据结构课程设计 停车场管理系统W->rear- >n ext=t;W->rear=t;printf("请按任意键返回“);getch();return(1);void leave(SqStack *ln ,SqStack *Out,Li nkQueue *W) /*车辆离开*/int room;Car *p,*t;QNode
21、*q;/*判断车场内是否有车 */if(I n->top>0)/* 有车 */while(1) /*输入离开车辆的信息*/printf("n请输入车在停车场的位置(1-%d) : ",ln->top);sca nf("%d",&room);if(room>=1 &&roomv=ln->top) break;while(I n->top>room) /* 车辆离开 */Out->top+;Out->stackOut->top=ln->stackI n->top;
22、In->stackI n->top=NULL;In->top-;第14页共18页数据结构课程设计停车场管理系统p=ln->stackl n->top;In->stackl n->top=NULL;ln->top-;while(Out->top>=1)In->top+;In->stackl n->top=Out->stackOut->top;Out->stackOut->top=NULL;Out->top-;PRINT(p,room);/*判断通道上是否有车及车站是否已满*/if(W-&g
23、t;head!=W->rear)&&ln->top<MAX) /*便道的车辆进入停车场*/q=W->head->n ext;t=q->data;In->top+;printf("n便道的%s号车进入车场第 %d号停车位。",t->num,ln->top);printf("n请输入现在的时间(格式“*:*” ):");sca nf("%d:%d",&(t->reach.hour),&(t->reach.mi n);W->head-&g
24、t;n ext=q->n ext;if(q=W->rear) W->rear=W->head;ln->stackln->top=t;free(q);else printf("n停车场里没有车n"); /*没车*/第15页共18页数据结构课程设计停车场管理系统printf("请按任意键返回");getch();void in fo1(SqStack *S) /*列表输出车场信息 */int i;if(S->top>0) /*判断停车场内是否有车*/printf("n 车场:");print
25、f("n 位置到达时间车牌号n");for(i=1;i<=S->top;i+)printf(" %dt",i);prin tf("%d:%d",S->stacki->reach.hour,S->stacki->reach.mi n); puts(S->stacki->num);else printf("n停车场里没有车");void info2(LinkQueue *W) /*显示便道信息 */QNode *p;p=W->head->n ext;if(W-
26、>head!=W->rear) /*判断通道上是否有车*/printf("n便道中车辆的号码为:n");第16页共18页数据结构课程设计停车场管理系统while(p!=NULL)puts(p->data->num);p=p->n ext;else printf("n 便道里没有车 n");printf("请按任意键返回");getch();void in fo(SqStack S,L in kQueue W)info1(&S); /*显示停车场信息*/info2(&W); /* 显示停便道
27、信息*/void PRINT(Car *p,i nt room) /*输出停车站车的信息 */int A1,A2,B1,B2;printf("n请输入车离开的时间(格式“ *:*” ):");sca nf("%d:%d",&(p->leave.hour),&(p->leave.mi n);printf("n 车牌号码:");puts(p->nu m);printf("n 车到达的时间是:%d:%d",p->reach.hour,p->reach.min); printf("车离开的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全生产事故隐患排查治理工作制度(6篇)
- 成本管理的成本控制方案
- 广东省汕头市潮南区2024-2025学年高一上学期语文1月期末考试试卷(含答案)
- 广东省江门市新会区2023-2024学年七年级上学期期末考试英语试题(含答案)
- 慢阻肺患者疫苗接种的个体化方案制定
- 严谨防水救护作业指导书
- 配送服务保密条款协议
- 设备租赁续约协议
- 从公安角度浅谈校园安全治理工作
- 慢病高危人群早期筛查与群体干预
- 形神拳动作名称与图解
- 马克思主义政治经济学试题及答案
- 国能拟录人员亲属回避承诺书
- 蚕丝被的详细资料
- 2023年生产车间各类文件汇总
- WORD版A4横版密封条打印模板(可编辑)
- 2013标致508使用说明书
- YD5121-2010 通信线路工程验收规范
- 评价实验室6S检查标准
- 工程质量不合格品判定及处置实施细则
- 外观检验作业标准规范
评论
0/150
提交评论