数据结构c语言版课程设计停车场管理系统.doc

上传人:知****量 文档编号:72430268 上传时间:2023-02-11 格式:DOC 页数:14 大小:144.54KB
返回 下载 相关 举报
数据结构c语言版课程设计停车场管理系统.doc_第1页
第1页 / 共14页
数据结构c语言版课程设计停车场管理系统.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《数据结构c语言版课程设计停车场管理系统.doc》由会员分享,可在线阅读,更多相关《数据结构c语言版课程设计停车场管理系统.doc(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、数据结构c语言版课程设计停车场管理系统 课程设计:停车场c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统停车场停满车后车会停在便道上面下面附上源码,vc:(下编译include stdio.h /#include /获取系统时间所用函数 #include /getch()include windows.h /设置光标信息 mallcodefine MaxSize 5 /*定义停车场栈长度/define PRICE 0.05 /*每车每分钟收费值/#define BASEPRICE 0。5 /基础停车费#define Esc 27 /退出系统#defin

2、e Exit 3/结束对话define Stop 1/停车define Drive 2/取车int jx=0,jy=32; /全局变量日志打印位置typedef structint hour; int minute;Time,PTime; /时间结点/typedef struct /*定义栈元素的类型即车辆信息结点/int num ; /车牌号/ Time arrtime; /*到达时刻或离区时刻/CarNode;typedef struct /*定义栈,模拟停车场/CarNode stackMaxSize; int top;SqStackCar;typedef struct node /*定

3、义队列结点的类型*/int num; /*车牌号/ struct node next;QueueNode;typedef struct /定义队列,模拟便道/QueueNode front,*rear;LinkQueueCar;/函数声明*/PTime get_time();CarNode getcarInfo();void qingping(int a);void gotoxy(int x,int y);void printlog(Time t,int n,int io,char ab,int po,double f);void printstop(int a,int num,int x0,

4、int y0);void printleave(int a,int po,int num); /*初始化栈*/void InitSeqStack(SqStackCar *s) s-top=1;/* push入站函数 */int push(SqStackCar *s,CarNode x) /数据元素x入指针s所指的栈if(s-top=MaxSize1)return(0);/如果栈满,返回0elses-stack+stop=x;/栈不满,到达车辆入栈return(1); /*栈顶元素出栈/CarNode pop(SqStackCar *s) CarNode x;if(stoptop+1); /栈不

5、空,返回栈顶元素 /初始化队列/void InitLinkQueue(LinkQueueCar *q) qfront=(QueueNode)malloc(sizeof(QueueNode)); /产生一个新结点,作头结点if(q-front!=NULL)q-rear=qfront;qfrontnext=NULL;qfront-num=0; /头结点的num保存队列中数据元素的个数 /数据入队列/void EnLinkQueue(LinkQueueCar q,int x) QueueNode p;p=(QueueNode*)malloc(sizeof(QueueNode)); /产生一个新结点

6、pnum=x; pnext=NULL;qrearnext=p; /新结点入队列 q-rear=p;q-frontnum+; /队列元素个数加1 /*数据出队列/ int DeLinkQueue(LinkQueueCar q) QueueNode *p;int n;if(qfront=q-rear) /队空返回0return(0);elsep=q-frontnext;qfrontnext=p-next;if(p-next=NULL)qrear=qfront;n=pnum;free(p);q-frontnum-;return(n); /返回出队的数据信息/* 车辆到达 */参数:停车栈 停车队列

7、车辆信息/返回值:空/功能:对传入的车辆进行入栈 栈满则入队列void Arrive(SqStackCar *stop,LinkQueueCar *lq,CarNode x)int f;f=push(stop,x); /入栈if (f=0) /栈满EnLinkQueue(lq,x.num); /入队 printstop(1,lqfront-num,0,23);printlog(x。arrtime,x。num,1,B,lqfront-num,0); qingping(0);printf(您的车停在便道d号车位上n”,lqfront-num);/更新对话elseprintstop(0,stop-t

8、op+1,0,23);printlog(x.arrtime,x.num,1,P,stoptop+1,0);qingping(0); printf(您的车停在停车场d号车位上n”,stoptop+1);/更新对话qingping(1);printf(按任意键继续”);getch();/* 车辆离开 */参数:停车栈指针s1,暂存栈指针s2,停车队列指针p,车辆信息x/返回值:空/功能:查找栈中s1的x并出栈,栈中没有则查找队p中并出队,打印离开收费信息void Leave(SqStackCar s1,SqStackCar *s2,LinkQueueCar *p,CarNode x)double

9、fee=0;int position=s1top+1; /车辆所在车位int n,f=0;CarNode y;QueueNode *q;while(s1-top -1)&(f!=1)) /当栈不空且未找到xy=pop(s1);if(y.num!=x.num) n=push(s2,y);position-;elsef=1;if(y.num=x。num) /找到xgotoxy(33,17);printf(”%d:-2d”,(x。arrtime。hour-y.arrtime。hour),(x。arrtime。minutey。arrtime。minute) );fee=(x.arrtime。hour-

10、y.arrtime。hour)*60+(x.arrtime.minute-y.arrtime.minute)PRICE+BASEPRICE;gotoxy(48,17);printf(2.1f元n,fee);qingping(0);printf(”确认您的车辆信息);qingping(1); printf(”按任意键继续”);getch();while(s2top1) y=pop(s2);f=push(s1,y);n=DeLinkQueue(p);if(n!=0)y。num=n;y.arrtime=x.arrtime;f=push(s1,y);printleave(p-frontnum+1,po

11、sition,s1-top+1); /出栈动画ji队列成员入栈printlog(x。arrtime,x.num,0,P,position,fee);printlog(y.arrtime,y.num,1,P,s1top+1,0);elseprintleave(0,position,s1top+2);printlog(x.arrtime,x。num,0,P,position,fee);else /若栈中无x while(s2top -1) /还原栈 y=pop(s2); f=push(s1,y);q=pfront;f=0;position=1;while(f=0&q-next!=NULL) /当队

12、不空且未找到xif(qnextnum!=x.num)q=q-next;position+;else /找到xqnext=q-next-next;p-front-num-;if(q-next=NULL)p-rear=pfront;gotoxy(33,17);printf(”0:0”);gotoxy(48,17);printf(”0元);qingping(0);printf(”您的车将离便道”);qingping(1);printf(按任意键继续”);getch();printleave(1,position,p-front-num+1); /出队动画printlog(x.arrtime,x。nu

13、m,0,B,position,0);f=1;if(f=0) /未找到xqingping(0);printf(停车场和便道上均无您的车);qingping(1);printf(按任意键继续”);getch();/获取系统时间*/返回PTime类型PTime get_time()Time *t;t=new Time;time_t timer; struct tm *tblock; timer=time(NULL); tblock=localtime(timer); t-minute=tblocktm_min;t-hour=tblocktm_hour;return t;/移动光标/蒋光标移动到(x,

14、y)点void gotoxy(int x,int y)COORD coord;coord。X=x;coord.Y=y+3;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);/画图/画出系统界面void panitPL()gotoxy(20,4);printf(*对话框*”);int x=18,y=6; /起始点int a24=2,0,0,1,2,0,0,1; /方向for(int i=0;i2 ;i+)for(int j=0; j20; j+)x+=ai0;y+=ai1;gotoxy(x,y);printf();x+

15、=ai0;y+=ai1;gotoxy(x,y);if(i=0) printf();elseprintf(”);for(j=0; j); c=getch();if(c=13) return y10;/enter键返回当前选项if(c!=32)continue;/不是方向键进行下次循环c=getch(); if(c=72) if(y11) y-; /上if(c=80) if(y13) y+; /下/输入车辆信息CarNode getcarInfo()PTime T;CarNode x;qingping(0);printf(”请输入您的车牌号n);qingping(1);printf(”在下面输入车

16、辆信息);qingping(2);scanf(d”,(x。num);T=get_time();x.arrtime=*T;gotoxy(48,15);printf(d:%d”,x.arrtime.hour,x。arrtime。minute);getch();return x;/打印停车场void printcar()gotoxy(0,20);/ printf(”);printf( 出场暂放区 1 2 3 4 5 ”);printf(”- ”);printf(” 主车道 );printf(- ”);printf( 12 11 10 9 8 7 6 5 4 3 2 1 ”);printf(” );p

17、rintf( );printf( 便道 停车区 1 2 3 4 5 );printf( ”);printf( 停车场管理日志nn);printf(” 时间 车牌号 进(1)/出(0) 车位(B便道P停车场) 收费(元) ”);/打印日志记录void printlog(Time t,int n,int io,char ab,int po,double f)jy+;gotoxy(jx,jy);/printf( 时间 车牌号 进(1)/出(0) 车位(B便道P停车场) 收费(元) );if(io=0)printf( / 2。1f”,f);gotoxy(jx,jy);printf(” / d / c:

18、d,io,ab,po);gotoxy(jx,jy);printf( d:d / %d”,t.hour,t.minute,n); void printstop(int a,int num,int x0,int y0)static char *car=【】”;/int x0=0,y0=23;int x=0,y=28;if(a=0)x=(num+6)6;for(;x072;x0+)gotoxy(x0,y0);printf(”%s”,car);Sleep(30);gotoxy(x0,y0);printf(” );for(;y0y;y0+)gotoxy(x0,y0);printf(”s”,car);Sl

19、eep(100);gotoxy(x0,y0);printf(” );for(;x0x;x0)gotoxy(x0,y0);printf(%s,car);Sleep(50);gotoxy(x0,y0);printf( );gotoxy(x,y);printf(”s”,car);elsex=(12-num)*6;y=y-3;for(;x0x;x0+)gotoxy(x0,y0);printf(s”,car);Sleep(30);gotoxy(x0,y0);printf( ”);gotoxy(x,y);printf(s”,car);void printleave(int a,int po,int num

20、)static char car=”【】;int x0=0,y0=23;int x=0,y=28;int i;if(a=1) x=(12po)6;y=y-3;gotoxy(x,y);printf(” );gotoxy(x,y2); printf(s,car);Sleep(100);if(12num)gotoxy((12num)6,y);printf(” ”);gotoxy(x,y);printf(”s,car);for(;xx0;x-)gotoxy(x,y-2); printf(”%s”,car);Sleep(30);gotoxy(x,y2);printf(” ”);elsei=num+1;f

21、or(;numpo;num)x=(num+6)*6;y=28;for(;x72;x+)gotoxy(x,y);printf(”%s,car);Sleep(30);gotoxy(x,y);printf( );for(;y21;y-)gotoxy(x,y);printf(”%s”,car);Sleep(50);gotoxy(x,y);printf(” ”);for(;x(inum+6)*6;x-)gotoxy(x,y);printf(”%s,car);Sleep(30);gotoxy(x,y);printf( ”);gotoxy(x,y);printf(”s,car);x=(po+6)*6;y=2

22、8; for(;x23;y-)gotoxy(x,y);printf(”s”,car);Sleep(50);gotoxy(x,y);printf( ”);for(;x0;x-)gotoxy(x,y);printf(%s”,car);Sleep(30);gotoxy(x,y);printf(” ”);num+;for(;i-num0;num+)x=(inum+6)6;y=21;for(;x72;x+)gotoxy(x,y);printf(%s,car);Sleep(30);gotoxy(x,y);printf(” ”);for(;y(num1+6)*6;x-)gotoxy(x,y);printf(

23、”%s”,car);Sleep(30);gotoxy(x,y);printf( );gotoxy(x,y);printf(s”,car);if(a0)x=66;y=25;gotoxy(x,y);printf(” );gotoxy(x,y2); printf(%s”,car);Sleep(100);if(12a)gotoxy((12-a)6,y);printf( ”);if(a1) gotoxy(x,y);printf(”%s,car);printstop(0,i1,x,y2);/* main */ int main(void)SqStackCar s1,s2; /停车栈和暂存栈LinkQueu

24、eCar p; /队列InitSeqStack(&s1);InitSeqStack(&s2);InitLinkQueue(p);printf(” 停车场管理系统nn);printf(* 欢(=_=)迎 *n”);printf( 收费标准:基础费0.5元,每分钟收取0。05元,收费精确到0.1元n”);printf( PS:车牌号由阿拉伯数字组成”);panitPL();printcar();gotoxy(0,3);char c=0; /接受按键 while(1) /按ESC退出系统 for(int i=2;i1 ;i-) /初始化对话框qingping(i);printf(”按ESC退出系统,

25、其它键开始对话”);c=getch();if(c=Esc)qingping(0);break;while(1)qingping(2);gotoxy(28,8);printf(”欢迎来到停车场!我是管理员小王。”);gotoxy(28,9);printf(”请您按选择需要的服务 ”);gotoxy(28,11);printf(” 1。我要停车”);gotoxy(28,12);printf( 2。我要取车);gotoxy(28,13);printf( 3。结束对话); /打印对话框完成int a=getkey();if(a=Exit)printf(”结束服务。”);break;switch(a)case Stop: /停车Arrive(s1,p,getcarInfo() );break;case Drive:/取车Leave(s1,s2,&p,getcarInfo() );break;return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com