1、数据结构课程设计报告专 业: 软件工程 班 级: T112303 学 号:姓 名:XXX 课设题目:停车场模拟管理系统指导教师: 马春江 成 绩:20130703目 录一、设计题目1二、设计目的1三、总体设计1(一)问题描述1(二)设计要求1(三)数据结构1四、详细设计2(一)分析与实现2(二)系统模块设计2(三)界面设计3五、设计结果与分析4六、总结(收获和不足)5(一)课设的不足5(二)课设的收获5附录程序源码5参考文献:16指导教师意见16一、设计题目停车场模拟管理系统.二、设计目的利用所学的知识,模拟设计一个停车场管理系统。通过程序设计,了解停车场的工作情况以及是怎么实现停车的,模拟车
2、辆的进入停车场、离开停车场的情况,和收费情况。三、总体设计(一)问题描述假设停车场可以停放n辆车的狭长通道,而且只有一个入口出口,汽车进入停车场的停放按照先进先放的顺序,依次排满车道。当停车场已经停满时(已存放了n辆汽车),想进入停车场的车就只能在便道上等待,等到停车有车离开时,便道上的第一辆车进入停车场.当停车场内的某辆车要离开时,在它后面的车必须离开让出一条道路来,待车开走后,让路的车依次进入停车场,车辆离开时,按时间缴纳费用。(二)设计要求用栈模拟停车场,用队列模拟停车场外面的等车便道,按照终端输入数据的方式进行模拟管理。输入1,表示车辆到达;输入2,表示车辆离开;输入3,表示列表显示停
3、车场内外情况;输入4,表示系统帮助;输入5,表示查询车辆;输入0,表示退出程序。车辆进入停车时,要输入车牌号码和到达时间;车辆离开时,要输入停车场车位号和离开时间,并显示应收费额;车辆查询时,要输入车牌号码;系统帮助,则是一些关于本系统的操作介绍.(三)数据结构本课程设计使用的数据结构有:顺序栈和链式队列。四、详细设计(一)分析与实现1、模拟停车场的车辆进出需要输入车辆的信息,比如车辆的车牌号码、到达时间、离开时间,因此,可以定义一个车辆信息结点类型和一个时间节点类型,在顺序栈和链式队列中定义结点类型为车辆信息结点类型。2、车辆离开时,需要打印输出车辆的车位号、到达时间、离开时间以及应缴纳的费
4、用。定义print()函数实现.3、车辆到达时要输入车辆的信息,并以此存放在停车场内;没进入一辆车,要判断停车场(顺序栈)是否已经停满,若已满,则提示该车要在便道上等待;若未满,则进行进栈操作.4、车辆的离开,要另外设计一个栈,当一辆汽车要离开时,在其后的车辆要给其让路,让路的汽车就暂时停放在这个栈中。车辆离开后,要判断便道上是否有车辆在等待,若有则进行入栈操作,即将车辆的信息结点进行入栈操作,这时要输入当前时间,今儿进行出队操作,表示车辆已经离开便道进入停车场。5、系统帮助则只需设计一个函数instruct(),将要说明的东西写进去,可以直接调用。6、车辆的查询,既可以查询停车场内的车辆,也
5、可以查询便道上等待的车辆,查询时要输入正确的车牌号码,并显示车辆的当前情况。(二)系统模块设计主函数用户操作界面车辆到达车辆离开列表显示车辆查询系统帮助退出程序(三)界面设计1、主菜单界面图 12、车辆到达界面图 23、车辆离开界面图 34、列表显示界面图 4 列表显示菜单图 5 停车场情况图 6 便道等待情况5、车辆查询界面图 7五、设计结果与分析测试结果已达到我预期的结果,可以模拟实现车辆的进入、离开停车场,可以大体上让人了解到停车场的工作情况。六、总结(收获和不足)(一)课设的不足本次课程设计完成的系统,只能简单的模拟停车场的车辆进出、收费情况和查询功能,没有将进入停车场的车辆信息进行存
6、盘保存.而且功能单一,有车离开时,还有可能要其他的车退出停车场让车(不够人性化);模拟的停车场只是一个狭长的通道,存放的车辆只能是一种类型的,即占地面积是一样的;按道理停车场可以存放各种类型的车,各种车的收费标准也应该不一样,这都应该是要完善的.(二)课设的收获历时四天,终于把数据结构课程设计做完了!本次课设,我还是挑了比较简单的题目(停车场模拟管理系统)来做,在这个题目里,只用到了两个数据结构:顺序栈和链式队列。顺序栈模拟停车场,队列模拟便道.通过这次课设,确实对自己的水平提高了很多,至少再次熟悉了本学期所学的栈和队列的使用和应用.记得在刚开始的时候,看到课设指导书上面的题目,感觉自己什么都
7、做不出来,所以迟迟不敢动手。当时间一天天逼近时,不能再拖了,就只能开工了.抱着试一试的心态,我参考着资料上面的指示,一步一步地做,居然做出了一个简单的系统;最后通过请教XX同学,对系统做了些完善(虽然还不是很完善),在此对他表示感谢!通过这次课设,我再次强烈的感受到:只要敢于尝试,很多我们自己认为做不到的事情都是可能做到的.勇于尝试,定有收获!附录 程序源码include iostream。hinclude fstream.h#include #include top=0;for(i=0;istacki=NULL;int queuehall(LINKQUEUECAR q)/if (qhead=
8、NULL)q-head=(QUEUENODE )malloc(sizeof(QUEUENODE);qhead-next=NULL;q-rear=qhead;return ok;elsereturn error;void print(CARNODE p,int room)/已选中的停车场中的车,确定其离开的时间,并显示计费int a1,a2,b1,b2;double Price;coutp-leave.hourpleave。minute;while(pleave.hour0pleave.hour24|pleave。minute0pleave。minute60)coutpleave。hourple
9、ave.minute;coutn离开车辆的车牌号码:”;coutnumber;coutn该车辆到达的时间为:”;if(preach。hour10)cout0”reach。hour”:;elsecoutp-reach.hour”:”;if(preach。minute10)cout0”reach。minuteendl;elsecoutp-reach。minuteendl;cout离开时间为:”;if(p-leave.hour10)cout”0”leave。hour:”;elsecoutpleave。hour:”;if(pleave。minute10)cout0leave.minuteendl;el
10、secoutp-leave.minutereach。hour;a2=preach。minute;b1=pleave.hour;b2=p-leave。minute;Price=(b1a1)*60+(b2-a2)*price;if(Price1)Price=1;coutn该车应交费用为:setprecision(2)setiosflags(ios::fixed)Price”元endl;free(p);int Arrive(SEQSTACKCAR enter,LINKQUEUECAR w)/车进入停车场CARNODE * p;QUEUENODE t;p=(CARNODE *)malloc(sizeo
11、f(CARNODE));coutp-number;if(enter-toptop+;cout”n车辆在停车场的第”entertop个位置。”preach。hourpreach.minute;while(p-reach。hour24preach。minute0|preach.minute60)coutstackentertop=p;cout车辆停放完毕!endl;return ok;elsecoutn该车辆需在便道等待!nrear=t;return ok;void Leave(SEQSTACKCAR enter,SEQSTACKCAR * temp,LINKQUEUECAR * w)/确定要离开
12、的车所在的车道int room;CARNODE p,* t;QUEUENODE q;if (entertop0)while (1)coutroom;if(room=1&room=entertop)break;while (entertoproom)temp-top+;temp-stacktemptop=enterstackentertop;enterstackenter-top=NULL;entertop;p=enterstackenter-top;enterstackentertop=NULL;enter-top-;while (temptop=1)enter-top+;enter-stac
13、kentertop=temp-stacktemp-top;tempstacktemptop=NULL;temptop;print(p,room);cout”n车辆已离开!headnext;t=qdata;entertop+;coutn便道的”tnumber”号车进入停车场”enter-top”号位置.endl;couttreach。minute;while(treach.hour24|treach.minute0treach。minute60)cout时间输入有错,请重新输入:”;cint-reach。hourt-reach.minute;whead-next=qnext;if(q=wrear
14、)wrear=whead;enter-stackentertop=t;free(q);elsecout”停车场里没有车!endlflush;system(pause);int searchcar(SEQSTACKCAR enter,LINKQUEUECAR * w)char num256=”;int pos=entertop,flag=0;QUEUENODE p=NULL;cout请输入要查询的车牌号:”num;while(pos0)if(!strcmp(enterstackposnumber,num)flag=1;break;pos;if(flag)cout”车位号到达时间车牌号n;if(p
15、os10)cout” ”0”postt”;elsecout posstackposreach。hour10)cout0enter-stackpos-reach.hour:”;elsecoutenterstackposreach。hourstackposreach.minute10)cout0stackposreach。minute;elsecoutreach。minute;cout ttenter-stackposnumbernext;while(p)if(!strcmp(pdatanumber,num)flag=1;break;p=p-next;if(flag)cout”n 车牌号 状态n”
16、;cout” pdata-number”tt等待中”endlendl;system(”pause);elsecout”停车场内没有此车!”endl;system(”pause);return flag;void list1(SEQSTACKCAR * s)/显示停车场中的停车情况int i;if (stop0)cout”n停车场:endl;cout”车位号到达时间车牌号n”;for (i=1;i=s-top;i+)if(i10)cout 0”i”tt ”;elsecout” ”ireach。hour10)cout”0sstackireach。hour”:;elsecoutsstackireac
17、h.hourstackireach。minute10)cout0s-stackireach。minutett;elsecouts-stacki-reach.minute”tt”;coutstackinumberendl;coutendl;elsecoutheadnext;if(whead!=wrear)cout”n等待车辆的号码有:;while(p!=NULL)coutdatanumber” ”;p=pnext;coutendl;elsecout”n便道里没有车!”endl;system(pause);void list(SEQSTACKCAR s,LINKQUEUECAR w)/列表显示in
18、t flag,tag;flag=1;while(flag)system(”cls);cout*”endl;cout 列表显示菜单 ”endl;cout”*endl;cout” ”endl;cout| 1.车场停车情况 |”endl;cout”| 2.便道车辆等待情况 ”endl;cout” 3。返回主菜单 |”endl;cout” ”endl;cout*endl;cout3)cout”你的输入有错!请重新输入:”;cintag;switch(tag)case 1:system(cls);list1(s);system(”pause”);break;case 2:system(”cls);lis
19、t2(w);system(pause”);break;case 3:system(”cls);flag=0;break;default:break;int instruct()/说明rewind(stdin);cout” =欢迎阅读系统说明=”endl;cout |endl;cout” | 请仔细阅读以下说明: |endl;cout” | |”endl;cout” | 1、本系统设置车位数固定,车位数为2(便于操作); |”endl;cout” 2、该停车场最低收费1元,小于1元均按1元收费; ”endl;cout 3、时间输入:按24进制输入,时和分用空格隔开; endl;cout” 4、车
20、牌输入:先输入一个省号简称和字母,后输入一串数字 ;|”endl;cout 5、车辆离开:当输入车位号时,再输入离开的时间; ”endl;cout | 车辆离开后,便道的第一辆车进入停车场; |”endl;cout 6、车辆停留时间最长为一天,驶离时间应大于驶入时间; |”endl;cout | |endl;cout =停车场,谢谢阅读=”endl;return 0;int main()SEQSTACKCAR enter,temp;LINKQUEUECAR wait;int choice;system(”color f0”);stackpark(enter);stackpark(&temp);
21、queuehall(&wait);while(1)system(”cls);cout ”endl;cout” 停车场模拟管理系统 | endl;cout | T112303 ”endl;cout 2013。7。1 ”endl;cout”endl;cout” = endl;cout |*功能菜单*| endl;cout ”endl;cout” |1。车辆到达 | ”endl;cout |2。车辆离开 ”endl;cout 3.列表显示 | ”endl;cout 4.系统帮助 | ”endl;cout” |5。车辆查询 | ”endl;cout 0.退出系统 endl;cout” | ”endl;
22、cout” 收费说明:0。5元/分 | ”endl;cout | 竭诚为您服务! | ”endl;cout | | ”endl;coutchoice;rewind(stdin);while (choice0|choice5)coutchoice; switch(choice)case 1:system(”cls”);Arrive(enter,wait);system(”pause”);break;case 2:system(”cls);Leave(enter,&temp,wait);break;case 3:system(”cls);list(enter,wait);break;case 4:system(”cls”);instruct();system(pause”);break;case 5:system(cls);searchcar(enter,wait);break;case 0:system(”cls”);cout”谢谢使用本系统!endl;exit(0);default:break;return 0;参考文献:1 谭浩强。C程序设计(第三版).清华大学出版社.2 马春江,付勇智,孟繁军。数据结构与程序构建。清华大学出版社。3 滕国文。数据结构课程设计。清华大学出版社. 指导教师意见第 15 页 共 17 页
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100