数据结构课程设计停车场管理系统设计报告样本.doc
《数据结构课程设计停车场管理系统设计报告样本.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计停车场管理系统设计报告样本.doc(24页珍藏版)》请在咨信网上搜索。
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。 《数据结构》课程设计 停 车 场 管 理 系 统 班级: ********* 指导教师: *** 学号: *********** 姓名: *** 小组成员: ***** ****** ****** 完成日期: 3月6日 成绩:________________ 目 录 (一) 设计目的………………………………… 3 (二) 设计内容………………………………… 3 (三) 概要设计…………………………………4-5 (四) 调试分析…………………………………6-8 (五) 用户手册………………………………… 9 (六) 附 录…………………………………9-17 《数据结构》课程设计 停车场管理系统 一、 课程设计目的 1、 经过课程设计, 加深对《数据结构》这一课程所学内容的进一步理解与巩固。 2、 经过课程设计, 加深对结构化设计思想的理解, 能对系统功能进行分析, 并设计合理的模块化结构。 3、 经过课程设计, 提高程序开发功能, 能运用合理的控制流程编写清晰高效的程序。 4、 经过课程设计, 训练C程序调试能力, 能将一个中小型各级组织系统联调经过。 5、 经过课程设计, 开发一个中小型系统, 掌握系统研发全过程。 6、 通话课程设计, 培养分析问题、 解决实际问题的能力。 二、 课程设计内容 ① 问题描述: 设有一个能够停放n辆汽车的狭长停车场, 它只有一个大门能够供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放( 最先到达的第一辆车放在停车场的最里面) 。如果停车场已放满n辆车, 则后来的车辆只能在停车场大门外的便道上等待, 一旦停车场内有车开走, 则排以便道上的第一辆车就进入停车场。停车场内如有某辆车要开走, 在它之后进入停车场的车都必须先退出停车场为它让路, 待其开出停车场后, 这些辆再依原来的次序进场。每辆车在离开停车场时, 都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场时, 允许其离去, 不收停车费, 而且依然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 ② 基本要求: 要求程序输出每辆车到达后的停车位置( 停车场或便道上) , 以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间。 ③ 实现提示: 汽车的模拟输入信息格式能够是: ( 到达/离去, 汽车牌照号码, 到达/离去的时刻) 。例如, ( ‘A’, 1, 5) 表示1号牌照车在5这个时刻到达, 而( ‘D’, 5, 20) 表示5号牌照车在20这个时刻离去。整个程序能够在输入信息为( ‘E’, 0, 0) 时结束。本题可用栈和队列来实现。 三、 概要设计 1、 设计思想 此停车场管理系统是在一个狭长的通道上的, 而且只有一个大门能够供车辆进出, 而且要实现停车场内某辆车要离开时, 在它之后进入停车场的车都必须先退出停车场为它让路, 待其开出停车场后, 这些辆再依原来的次序进场的功能, 就能够设计两个堆栈, 其中一个堆栈用来模拟停车场, 另一个堆栈用来模拟临时停车场, 该临时停车场用来存放当有车辆离开时, 原来停车场内为其让路的车辆。至于当停车场已满时, 需要停放车辆的通道能够用一个链队列来实现。当停车场内开走一辆车时, 通道上便有一辆车进入停车场, 此时只需要改变通道上车辆结点的连接方式就能够了, 使通道上第一辆车进入停车场这个堆栈, 而且使通道上原来的第二辆车成为通道上的第一辆车, 此时只需将模拟通道的链队列的头结点连到原来的第二辆车上就能够了。 2、 实现方法 对于此停车场管理系统的实现, 就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点。至于通道上车辆的停放则用一个链队列来实现, 此时, 通道上车辆的离开或者进入停车场只需改变此链队列上的结点而已。对于要对停车场内的车辆根据其停放时间收取相应的停车费用, 能够记录下车辆进入以及离开停车场的时间, 再用时间差乘以相应的单价而且打印出最后的费用就能够实现了。 3、 主要模块 ①此停车场管理系统, 主要分为以下若干模块: 首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量, 然后编写主函数, 在此主函数中实现对其它各个模块的调用。在主函数中首先调用option()函数, 出现欢迎用户使用的主界面, 然后提示用户进入此停车场管理系统后, 再出现一个供用户选择的界面, 在用户的选择过程中, 程序又分别调用车辆的到达、 车辆的离开、 停车场内停放车辆的信息以及退出程序这四个函数模块。其中, 在车辆的离开那个模块函数中又调用了打印离开车辆信息的函数, 在停车场内停放车辆信息的那个模块函数中, 又分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。最后, 从调鼐的这四个函数中回到主函数结束整个程序的运行。 ②在以上各个模块中, 出现的调用的函数为: void InitStack(SeqStackCar *s); int InitQueue(LinkQueueCar *Q); option(); int Arrival(SeqStackCar *Enter,LinkQueueCar *W); void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W); void PRINT(CarNode *p); void List(SeqStackCar S,LinkQueueCar W); void List1(SeqStackCar *S); void List2(LinkQueueCar *W); 4、 模块间关系 四、 调试分析 ( 1) 调试过程中的主要问题 由于此停车场管理系统是分模块设计的, 而且在程序的实现过程中又使用了清屏函数, 因此, 运行时用户选择任务而且执行完任务后, 又会回到供用户选择功能的主界面, 因此整个程序从整体上来讲结构清晰, 使用方便。本程序的调试运行, 总体上情况良好, 但中间也出现了一些小问题。其中比较有代表性的主要问题有: 当停车场已经达到最大容量, 但仍有车辆进入停车场的时候, 运行界面上没有出现或者说出现了但又跳掉了”停车场已满, 该车辆需在便道上等待! ”的提示信息。我们小组成员经过重复商量讨论, 而且在查阅了多种资料后, 在那一个printf语句后加了一个getch(), 此时, 程序运行结果就符合要求了。 对于在WIN—TC下不能显示中文的问题, 我们经过在第一个printf语句前加了一句 system("graftabl 936"); 就很好地解决了这个问题, 使得整个程序的运行都出现了中文提示, 而且是在中文的环境下操作, 设计更加合理, 更加人性化, 更加方面用户使用, 同时也提高了用户的操作效率。 ( 2) 测试结果的分析与讨论 ①欢迎界面 ②车辆到达 ③车辆离开 ④车辆信息( 车场) ⑤车辆信息( 便道) 五、 用户手册 这个程序用来实现对停车场内车辆的管理, 整个操作界面为中文, 更加符合人性化的标准, 使得用户使用方便, 而且每一个操作都有提示, 使得初次接触该程序的用户也能很快适应程序的操作。 这个程序操作简单, 对于车牌号, 只需输入车牌号上的数字就行, 而且对于进出停车场的时间, 也简化了操作, 只需输入当时的时刻就行, 没有具体到小时和分钟, 但可能这也是该程序不足之处所在。而且该程序也给用户提供了选择的机会, 当点击运行该程序后, 如果想退出程序, 能够输入n或N退出该运行程序。 至于使用过程中的更具体的问题, 能够参照该报告书中调试分析那一项的屏幕截图, 整个程序的运行界面大致就如上述屏幕截图的内容。 六、 附录 1、 源程序代码 #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" int MAX; /*定义一个全局变量用来存储车库最大容量*/ float price;/*每车每小时的费用*/ typedef struct time { int hour; int min; }Time; /*时间结点*/ typedef struct node { char num[10]; Time reach; Time leave; }Car; /*车辆信息结点*/ typedef struct NODE { Car *stack[100]; int top; }SqStack; /*停车站*/ typedef struct car { Car *data; struct car *next; }QNode; typedef struct Node { QNode *head; QNode *rear; }LinkQueue; /*通道*/ void InitStack(SqStack *); /*初始化栈*/ int InitQueue(LinkQueue *); /*初始化便道*/ int arrive(SqStack *,LinkQueue *); /*车辆到达*/ void leave(SqStack *,SqStack *,LinkQueue *); /*车辆离开*/ void info(SqStack,LinkQueue); /*显示停车场信息*/ void PRINT(Car *p,int room); void InitStack(SqStack *s) /*初始化栈*/ { int i; s->top=0; for(i=0;i<=MAX;i++) s->stack[s->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 main() { SqStack In,Out; LinkQueue Wait; int ch; InitStack(&In); /*初始化停车站*/ InitStack(&Out); /*初始化让路的临时栈*/ InitQueue(&Wait); /*初始化通道*/ while(1) { printf("--------------------欢迎使用停车场管理系统--------------------\n"); printf("\t本系统由5011工作室开发, 作者:邓春国、 段庆龙、 梁伟明、 丁磊。\n\n"); printf("请输入停车场的容量:"); scanf("%d",&MAX); printf("请输入停车场的收费标准(元/小时):"); scanf("%f",&price); printf("您输入的停车场容量为%d位, 费用为%2.1f元/小时。\n",MAX,price); printf("\n(1)车辆到达\n(2)车辆离开\n(3)停车场信息\n(4)退出系统\n请选择\n"); while(1) { ch=getch(); switch(ch) { case 49:arrive(&In,&Wait);break; /*车辆到达*/ case 50:leave(&In,&Out,&Wait);break; /*车辆离开*/ case 51:info(In,Wait);break; /*输出车站信息*/ case 52:{printf("谢谢使用! ");exit(0);} /*退出主程序*/ default:printf("\n按键无效, 请重新按键选择! "); }/*49-52分别表示”1”-”4”这四个按键的键值*/ system("CLS"); printf("--------------------欢迎使用停车场管理系统--------------------\n"); printf("\t本系统由CG工作室开发, 作者:邓春国、 段庆龙、 梁伟明、 丁磊。\n\n\n"); printf("您输入的停车场容量为%d位, 费用为%2.1f元/小时。\n",MAX,price); printf("\n(1)车辆到达\n(2)车辆离开\n(3)停车场信息\n(4)退出系统\n请选择\n"); } } } int arrive(SqStack *In,LinkQueue *W) /*车辆到达*/ { Car *p; QNode *t; p=(Car *)malloc(sizeof(Car)); flushall(); printf("\n停车场还有%d停车位(若停车位为0, 车可先进入便道等待)",MAX-In->top); printf("\n请输入车牌号码(例:湘D0734):"); gets(p->num); if(In->top<MAX) /*停车场未满, 车进车场*/ { In->top++; printf("\n停车的位置:%d号停车位。",In->top); printf("\n请输入车到达的时间(格式”**:**”):"); scanf("%d:%d",&(p->reach.hour),&(p->reach.min)); In->stack[In->top]=p; printf("请按任意键返回"); getch(); return(1); } else /*停车场已满, 车进便道*/ { printf("\n停车位已满, 该车须在便道等待! "); t=(QNode *)malloc(sizeof(QNode)); t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; printf("请按任意键返回"); getch(); return(1); } } void leave(SqStack *In,SqStack *Out,LinkQueue *W) { /*车辆离开*/ int room; Car *p,*t; QNode *q; /*判断车场内是否有车*/ if(In->top>0) /*有车*/ { while(1) /*输入离开车辆的信息*/ { printf("\n请输入车在停车场的位置(1-%d): ",In->top); scanf("%d",&room); if(room>=1&&room<=In->top) break; } while(In->top>room) /*车辆离开*/ { Out->top++; Out->stack[Out->top]=In->stack[In->top]; In->stack[In->top]=NULL; In->top--; } p=In->stack[In->top]; In->stack[In->top]=NULL; In->top--; while(Out->top>=1) { In->top++; In->stack[In->top]=Out->stack[Out->top]; Out->stack[Out->top]=NULL; Out->top--; } PRINT(p,room); /*判断通道上是否有车及车站是否已满*/ if((W->head!=W->rear)&&In->top<MAX) /*便道的车辆进入停车场*/ { q=W->head->next; t=q->data; In->top++; printf("\n便道的%s号车进入车场第%d号停车位。",t->num,In->top); printf("\n请输入现在的时间(格式”**:**”):"); scanf("%d:%d",&(t->reach.hour),&(t->reach.min)); W->head->next=q->next; if(q==W->rear) W->rear=W->head; In->stack[In->top]=t; free(q); } } else printf("\n停车场里没有车\n"); /*没车*/ printf("请按任意键返回"); getch(); } void info1(SqStack *S) /*列表输出车场信息*/ { int i; if(S->top>0) /*判断停车场内是否有车*/ { printf("\n车场:"); printf("\n 位置 到达时间 车牌号\n"); for(i=1;i<=S->top;i++) { printf(" %d\t",i); printf("%d:%d ",S->stack[i]->reach.hour,S->stack[i]->reach.min); puts(S->stack[i]->num); } } else printf("\n停车场里没有车"); } void info2(LinkQueue *W) /*显示便道信息*/ { QNode *p; p=W->head->next; if(W->head!=W->rear) /*判断通道上是否有车*/ { printf("\n便道中车辆的号码为:\n"); while(p!=NULL) { puts(p->data->num); p=p->next; } } else printf("\n便道里没有车\n"); printf("请按任意键返回"); getch(); } void info(SqStack S,LinkQueue W) { info1(&S); /*显示停车场信息*/ info2(&W); /*显示停便道信息*/ } void PRINT(Car *p,int room) /*输出停车站车的信息*/ { int A1,A2,B1,B2; printf("\n请输入车离开的时间(格式”**:**”):"); scanf("%d:%d",&(p->leave.hour),&(p->leave.min)); printf("\n车牌号码:"); puts(p->num); printf("\n车到达的时间是: %d:%d",p->reach.hour,p->reach.min); printf("车离开的时间是: %d:%d",p->leave.hour,p->leave.min); A1=p->reach.hour; A2=p->reach.min; B1=p->leave.hour; B2=p->leave.min; printf("\n费用为: %2.1f元",((B1-A1)+(B2-A2)/60.0)*price); free(p); } 2、 设计体会 经过这一周的课程设计, 加深了我对《数据结构》这门课程所学内容的进一步的理解与掌握; 同时, 经过对停车场管理系统的开发, 使得我将计算机课程所学知识与实际问题很好地相联接在了一起。在这次课程设计中, 不但培养了我开发一个中小型程序的能力, 而且也培养了我的团队合作能力。在这次对停车场管理系统的开发过程中, 我们小组成员互相合作, 互相帮助, 其中有程序功能成功实现时的欣喜, 也有遇到问题、 解决问题时的执着以及迷茫。在这次课程设计中, 使得我很好地了解了在开发程序过程中合作的重要性。 在这周课程设计中, 我们小组所开发的停车场管理系统, 基本上能够完成每一项功能。汽车进入停车场的信息、 离开停车场的信息以及通道上的信息都能够在程序上一一实现。可是, 该程序也有不足的地方。主要表现在车辆的车牌号上, 现实中的车牌号是一串字符, 可是, 在这个程序中, 为了简便起见, 我们就车牌号定义为了整型, 这个与现实是有些不符的。还有一个能够改进的地方就是记录车辆进入停车场以及离开停车场的时间, 应该精确到小时以及分钟的, 可是在程序中, 为了简便起见, 我们只是设置成了一个时刻, 因此, 在这方面还是有待改进的。改进的程序中, 还应该增加时间的判断功能, 即停车场内有可能有车辆停放的时间超过一天。 还有一个很重要的问题, 对于停车场内能够停放的最多车辆数, 为了测试数据的方便, 我在程序中, 定为了2, 在实际使用中, 能够改变程度开头的宏定义以增加停车场的容量。 总之, 在这周的课程设计中, 我以及我们这组的收获还是挺大的, 不但对于专业课有了更好的认识, 而且在合作的过程中更加了解了团队精神的重要性。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 停车场 管理 系统 设计 报告 样本
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文