数据结构专业课程设计停车场标准管理专业系统设计方案报告.doc
《数据结构专业课程设计停车场标准管理专业系统设计方案报告.doc》由会员分享,可在线阅读,更多相关《数据结构专业课程设计停车场标准管理专业系统设计方案报告.doc(22页珍藏版)》请在咨信网上搜索。
《数据构造》课程设计 停 车 场 管 理 系 统 班级:********* 指引教师:*** 学号:*********** 姓名:*** 小构成员:***** ****** ****** 完毕日期: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。
关于本文