


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计:停车场c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统欢y、迎JsKA;元,收费精确到元小王:按EEC退岀系统其它键开始对话顾客;沖"停车信恵、祁的的车牌号:时间:停车时长:收费:出场暂放区1|1234 5 11王车直12 11 1098?65432 1t便道停车区12345停车场管理日志时间车牌号进""岀爼)车位彷便道P停车场:收费 元停车场停满车后车会停在便道上面S3mallco*/*/#defi ne MaxSize 5#defi ne PRICE 0.05 #defi ne BASEPRICE 0.5/*
2、定义停车场栈长度 /*每车每分钟收费值/基础停车费下面附上源码,vc:(下编译#i nclude <stdio.h>#include <stdlib.h>#in clude <time.h>#in clude <coni o.h>#in clude <win dows.h>/malloc/获取系统时间所用函数getch()/设置光标信息停欢分钟收取0-鹏元收喪縉确到0元小王您的车停在便道1号车位上车牌号13停车时长出场暂放区10便道停车区进.”岀®车位細便道p停车场收散元13:111112111331114111511151
3、3:11时间1J:10车牌号1111顾客主按任意键继续停车场管理日志f mtjcx停车信息1115时间#defi ne Esc 27#defi ne Exit 3#defi ne Stop 1#defi ne Drive 2退出系统结束对话停车取车int jx=0,jy=32;/全局变量日志打印位置/*时间结点*/typedef struct int num ;Time arrtime; CarNode;typedef struct int hour;int mi nute; Time,*PTime;/*定义栈元素的类型即车辆信息结点*/*车牌号*/*到达时刻或离区时刻*/typedef st
4、ructCarNode stackMaxSize; int top;SqStackCar;/*定义栈,模拟停车场*/*定义队列结点的类型*/*车牌号*/typedef struct node int num;struct node *n ext; QueueNode;typedef struct QueueNode *fron t,*rear;Lin kQueueCar;/*定义队列,模拟便道*/*函数声明*/PTime get_time();CarNode getcarI nfo();void qingpin g(i nt a);void gotoxy(i nt x,i nt y);void
5、 prin tlog(Time t,i nt n ,i nt io,char ab,i nt po,double f);void prin tstop(i nt a,i nt nu m,i nt x0,i nt y0);void printleave(int a,int po,int num);/*初始化栈*/void In itSeqStack(SqStackCar *s) s->top=-1;/* push入站函数 */数据元素x入指针s所指的栈/如果栈满,返回0int push(SqStackCar *s,CarNode x) if(s->top=MaxSize-1) ret
6、urn(0);elses_>stack+s_>top=x;return(1);/栈不满,到达车辆入栈/如果栈空,返回空值/栈不空,返回栈顶元素/产生一个新结点,作头结点/头结点的num保存队列中数据元素的/产生一个新结点/新结点入队列/队列元素个数加1/队空返回0/*栈顶元素出栈*/CarNode pop(SqStackCar *s) CarNode x;if(s->top<0)x.num=0; x.arrtime.hour=0;x.arrtime.mi nute=0; return(x); elses->top-; retur n( s->stacks-&
7、gt;top+1);/*初始化队列*/void In itL in kQueue(L in kQueueCar *q) q->fron t=(QueueNode*)malloc(sizeof(QueueNode); if(q->fro nt!=NULL)q->rear=q->fro nt; q->front->n ext=NULL; q_>front_>num=O;个数/*数据入队列*/void EnLin kQueue(L in kQueueCar *q,i nt x)QueueNode *p;p=(QueueNode*)malloc(size
8、of(QueueNode); p_>num=x;p-> next=NULL;q->rear- >n ext=p;q->rear=p;q_>front_>nu m+;/*数据出队列*/int DeLin kQueue(L in kQueueCar *q)QueueNode *p;int n;if(q->fron t=q->rear)return(O);elsep=q->front_>n ext; q->front->n ext=p->n ext; if(p-> next=NULL) q->rear=q
9、->front;n=p_ >num;free(p);q->fr on t-> num-;return( n);/*车辆到达/参数:停车栈停车队列车辆信息/返回值:空/功能:对传入的车辆进行入栈栈满则入队列/返回出队的数据信息*/void Arrive(SqStackCar *stop,L in kQueueCar *lq,CarNode x)int f;f=push(stop,x);入栈if (f=0)/ 栈满EnLin kQueue(lq,x .nu m);/ 入队prin tstop(1,lq->fro nt-> num ,0,23);prin tlog
10、(x.arrtime,x. nu m,1,'B',lq->fro nt-> nu m,0);/更新qingping(0); printf("您的车停在便道 %d 号车位上 n",lq->front->num);对话elseprin tstop(0,stop->top+1,0,23);prin tlog(x.arrtime,x .nu m,1,'P',stop->top+1,0);/qingping(0);printf("您的车停在停车场 %d 号车位上 n",stop->top+1
11、);更新对话qingping(1);printf("按任意键继续");getch();/*/*参数:停车栈指针 s1,暂存栈指针s2,停车队列指针P,车辆信息x /返回值:空功能:查找栈中s1的x并出栈,栈中没有则查找队p中并出队,打印离开收费信息void Leave(SqStackCar *s1,SqStackCar *s2,Li nkQueueCar *p,CarNode x)double fee=0;int positi on=s1->top+1;/ 车辆所在车位int n,f=0;CarNode y;QueueNode *q;/当栈不空且未找到xwhile(s
12、1->top > -1)&&(f!=1)y=pop(s1);if(y. nu m!=x .num)n=push(s2,y); positi on-; else f=1;if(y.num=x.num)/找至U x gotoxy(33,17);prin tf("%d:%-2d",(x.arrtime.hour-y.arrtime.hour),(x.arrtime.mi nu te-y.arrtime.mi nu te);fee=(x.arrtime.hour-y.arrtime.hour)*60+(x.arrtime.mi nu te-y.arrti
13、me.mi nute)*PRICE+BASEP RICE;gotoxy(48,17);printf("%2.1f 元 n",fee);qingping(0);printf("确认您的车辆信息”);qingping(1); printf("按任意键继续”);getch();while(s2->top>-1) y=pop(s2); f=push(s1,y);n=DeL in kQueue(p);if(n !=0) y.num=n;y.arrtime=x.arrtime;f=push(s1,y);prin tleave(p->fr ont-&
14、gt;nu m+1,positi on, s1->top+1);/ 出栈动画ji队列成员入栈prin tlog(x.arrtime,x .num ,0,'P',positi on, fee);prin tlog(y.arrtime, y.nu m,1,'P',s1->top+1,0);elseprin tleave(0,positi on, s1->top+2);prin tlog(x.arrtime,x .num ,0,'P',positi on, fee);else/若栈中无x while(s2->top > -
15、1)/ 还原栈y=pop(s2); f=push(s1,y);q=p->fr ont;f=0;positi on=1;while(f=0&&q-> next!=NULL)/ 当队不空且未找到xif(q->n ext->num !=x .num)q=q_>n ext;positi on+;else/找到 xq->n ext=q->n ext->n ext;p->fr on t-> num-;if(q-> next=NULL)p->rear=p->fr ont;gotoxy(33,17);prin tf(
16、"O:O");gotoxy(48,17); printf("0 元");qingping(0);printf("您的车将离便道”);qingping(1);printf("按任意键继续”);出队动画getch();prin tleave(-1,positi on, p->fr ont->nu m+1);prin tlog(x.arrtime,x .num ,0,'B',positi on, 0); f=1;if(f=0)未找到qin gp in g(0);printf("停车场和便道上均无您的车&
17、quot;)qi ngpi ng(1);printf("按任意键继续");getch();x/*获取系统时间*/返回PTime类型 PTime get_time() -Time *t;t=new Time;time_t timer; struct tm *tblock; timer=time(NULL); tblock=localtime( &timer);t->mi nu te=tblock->tm_mi n; t->hour=tblock->tm_hour; return t;/*移动光标*/II蒋光标移动到(x,y)点void goto
18、xy(i nt x,i nt y)COORD coord;coord.X=x;coord.Y=y+3;SetCo nsoleCursorPositio n(GetStdHa ndle(STD_OUTPUT_HANDLE),coord); - -/*画图*/ /画出系统界面 void pan itPL()gotoxy(20,4);printf(”*对话框);方向/起始点int x=18,y=6;int a24=2,0,0,1,-2,0,0,-1;for(i nt i=0;i<2 ;i+)for(i nt j=0; j<20; j+)x+=ai0; y+=ai1;gotoxy(x,y)
19、;prin tf(""); x+=ai0; y+=ai1; gotoxy(x,y);if(i=0)printf("n ");elseprin tf("L");for(j=0; j<12; j+) x+=ai2;y+=ai3;gotoxy(x,y);printf("| "); x+=ai2;y+=ai3;gotoxy(x,y);if(i=0)printf("J ");elseprin tf("厂");gotoxy(22,8);printf("小王:")
20、Jgotoxy(22,11);printf("顾客:")Jgotoxy(22,14);prin tf("*停车信息gotoxy(23,15);printf("车牌号:");gotoxy(42,15);printf("时间:");gotoxy(23,17);printf("停车时长:");gotoxy(42,17);printf("收费:");*“);/*清屏函数*/更新对话框前将原对话晴空void qingpin g(i nt a)if(a=0)/清空小王的对话gotoxy(28,8)
21、;gotoxy(28,9);gotoxy(28,8);printf(” printf(”");");else if(a=1)清空顾客的对话 elsegotoxy(28,11); gotoxy(28,12); gotoxy(28,13);gotoxy(28,11);printf(” printf(” printf(”");");");/清空车辆信息gotoxy(31,15); gotoxy(48,15); gotoxy(33,17);gotoxy(48,17);gotoxy(31,15);printf(” printf(” printf(” pr
22、intf(”");");");");/用上下键移动选择int getkey()char c;int x=28,y=11; while(1) gotoxy(x,11);gotoxy(x,12);gotoxy(x,13); gotoxy(x,y); c=getch();printf(” printf(” printf(” printf(”");"); "); >>");if(c=13) return y-10; if(c!=-32)co ntinue; c=getch();if(c=72) if(y>
23、11) y-; if(c=80) if(y<13) y+; en ter键返回当前选项/不是方向键进行下次循环/上下/输入车辆信息CarNode getcarI nfo() PTime T;CarNode x;printf(”请输入您的车牌号n"); printf("在下面输入车辆信息");qin gp in g(0);qi ngpi ng(1);qin gp in g(2);scan f("%d",&(x.n um);T=get_time();x.arrtime=*T;gotoxy(48,15);prin tf("%d
24、:%d",x.arrtime.hour,x.arrtime.mi nu te);getch();return x;/打印停车场void prin tcar()gotoxy(0,20); printf(”一出场暂放区丨1printf(”I ");I ");printf(” printf(”I ");I ");printf(" printf(”1211109I ");43便道");5printf(” printf(” printf(”I ");printf(”printf(”printf(”时间车牌号停车场管
25、理日志进(1)/ 出(0)nn");车位(B便道P停车场)收费(元)");”)/打印日志记录void prin tlog(Time t,i nt n ,i nt io,char ab,i nt po,double f) /jy+;gotoxy(jx,jy); printf("时间 if(io=0) printf(" %2.1f",f);gotoxy(jx,jy); printf(" gotoxy(jx,jy); printf(" %d:%d /车牌号 进(1)/出(0)%d%d",t.hour,t.mi nu te
26、, n);车位(B便道P停车场)/%c:%d",io,ab,po);收费(元)");void prin tstop(i nt a,i nt nu m,i nt x0,i nt y0)static char *car="【"/int x0=0,y0=23;int x=0,y=28;if(a=0)x=( nu m+6)*6;for(;x0<72;x0+)gotoxy(xO,yO);prin tf("%s",car);gotoxy(xO,yO);printf(”") for(;yO<y;yO+)gotoxy(xO,yO
27、);prin tf("%s",car);gotoxy(xO,yO);printf("") for(;xO>x;xO-)gotoxy(xO,yO);prin tf("%s",car);gotoxy(xO,yO);printf("") gotoxy(x,y);prin tf("%s",car);elsex=(12-num)*6;y=y-3; for(;xO<x;xO+) gotoxy(xO,yO);prin tf("%s",car);gotoxy(xO,yO);pri
28、ntf("") gotoxy(x,y);prin tf("%s",car);Sleep(30);Sleep(100);Sleep(50);Sleep(30);void printleave(int a,int po,int num) static char *car="【"int x0=0,y0=23;int x=0,y=28;int i;if(a=-1)x=(12-po)*6;y=y-3;gotoxy(x,y); prin tf("");gotoxy(x,y-2);prin tf("%s",c
29、ar);Sleep(100);if(12> num) gotoxy(12-num)*6,y); printf("");gotoxy(x,y); prin tf("%s",car);for(;x>xO;x_)gotoxy(x,y_2); prin tf("%s",car); Sleep(30); gotoxy(x,y-2); printf(""); elsei=nu m+1;for(; num >po; num-)x=( num+6)*6;y=28;for(;x<72;x+) gotoxy(x
30、,y);prin tf("%s",car);Sleep(30);gotoxy(x,y);printf(”");for(;y>21;y-)gotoxy(x,y);prin tf("%s",car);Sleep(50);gotoxy(x,y);printf(”");for(;x>(i-nu m+6)*6;x-)gotoxy(x,y);prin tf("%s",car);Sleep(30);gotoxy(x,y);printf(”"); gotoxy(x,y); prin tf("%s&q
31、uot;,car); x=(po+6)*6;y=28;for(;x<72;x+)gotoxy(x,y); prin tf("%s",car); Sleep(30); gotoxy(x,y); printf("");for(;y>23;y-)gotoxy(x,y); prin tf("%s",car); Sleep(50); gotoxy(x,y); printf("");for(;x>0;x-)gotoxy(x,y); prin tf("%s",car); Sleep(30);
32、 gotoxy(x,y); printf("");nu m+;for(;i-num >0; nu m+)x=(i-nu m+6)*6;y=21;for(;x<72;x+)gotoxy(x,y);prin tf("%s",car);Sleep(30);gotoxy(x,y); printf("");for(;y<28;y+)prin tf("%s",car);Sleep(50);prin tf("");gotoxy(x,y);gotoxy(x,y);for(;x>( num-1+6)*6;x-)gotoxy(x,y); gotoxy(x,y);prin tf("%s",car);Sleep(30);printf(”); gotoxy(x,y);if(a>0)prin tf("%s",car);x=66;y=25; gotoxy(x,y); gotoxy(x,y-2); if(12>a) gotoxy(12-a)*6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年矿产资源勘探工程师职业资格考试试题及答案解析
- 2025年教师资格认定考试试卷及答案解析
- 2025年健身教练员执业能力水平考核试题及答案解析
- 2025年建筑装潢工程师资格考试试题及答案解析
- 2025年机器人操作员职业技术水准测验试卷及答案解析
- 课件中强调重点的声音
- 2025年化妆品品质监督员资格考试试题及答案解析
- 课件中位数众数
- 2025年广播节目策划师资格认定考试试题及答案解析
- 2025年互联网营销师面试问题集
- 2025秋人教版(2024)二年级上册数学教学计划
- 2024年福建浦开集团有限公司招聘考试真题
- 2025四川内江市法院系统招聘聘用制审判辅助人员120人笔试参考题库附答案解析
- 养老院安全培训课件
- 风电发电机组电控系统知识-安全链部分课件
- PMBOK指南第6版中文版
- 医疗质量管理工具课件
- 急性上呼吸道感染病人的护理
- 小学教师量化考核表
- 房建监理平行检查记录表格模板(参考版)
- 计算机操作系统(第四版)-汤小丹-课后习题答案
评论
0/150
提交评论