欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:12973751       资源大小:153KB        全文页数:17页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    - .课程设计:停车场c语言版本的数据构造课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统停车场停满车后车会停在便道上面下面附上源码,vc:(下编译#include <stdio.h> /#include <stdlib.h> /malloc#include <time.h> /获取系统时间所用函数 #include <conio.h> /getch()#include <windows.h> /设置光标信息 mallco#define MaxSize 5 /*定义停车场栈长度*/#define PRICE 0.05 /*每车每分钟收费值*/#define BASEPRICE 0.5 /根底停车费#define Esc 27 /退出系统#define 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 /*定义队列结点的类型*/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,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=MaxSize-1)return(0);/如果栈满,返回0elses->stack+s->top=x;/栈不满,到达车辆入栈return(1); /*栈顶元素出栈*/CarNode pop(SqStackCar *s) CarNode x;if(s->top<0)x.num=0; x.arrtime.hour=0;x.arrtime.minute=0;return(x); /如果栈空,返回空值elses->top-;return(s->stacks->top+1); /栈不空,返回栈顶元素 /*初始化队列*/void InitLinkQueue(LinkQueueCar *q) q->front=(QueueNode*)malloc(sizeof(QueueNode); /产生一个新结点,作头结点if(q->front!=NULL)q->rear=q->front;q->front->next=NULL;q->front->num=0; /头结点的num保存队列中数据元素的个数 /*数据入队列*/void EnLinkQueue(LinkQueueCar *q,int x) QueueNode *p;p=(QueueNode*)malloc(sizeof(QueueNode); /产生一个新结点 p->num=x; p->next=NULL;q->rear->next=p; /新结点入队列 q->rear=p;q->front->num+; /队列元素个数加1 /*数据出队列*/ int DeLinkQueue(LinkQueueCar *q) QueueNode *p;int n;if(q->front=q->rear) /队空返回0return(0);elsep=q->front->next;q->front->next=p->next;if(p->next=NULL)q->rear=q->front;n=p->num;free(p);q->front->num-;return(n); /返回出队的数据信息/* 车辆到达 */参数:停车栈 停车队列 车辆信息/返回值:空/功能:对传入的车辆进展入栈 栈满那么入队列void Arrive(SqStackCar *stop,LinkQueueCar *lq,CarNode x)int f;f=push(stop,x); /入栈if (f=0) /栈满EnLinkQueue(lq,x.num); /入队 printstop(1,lq->front->num,0,23);printlog(x.arrtime,x.num,1,'B',lq->front->num,0); qingping(0);printf("您的车停在便道%d号车位上n",lq->front->num);/更新对话elseprintstop(0,stop->top+1,0,23);printlog(x.arrtime,x.num,1,'P',stop->top+1,0);qingping(0); printf("您的车停在停车场%d号车位上n",stop->top+1);/更新对话qingping(1);printf("按任意键继续");getch();/* 车辆离开 */参数:停车栈指针s1,暂存栈指针s2,停车队列指针p,车辆信息x/返回值:空/功能:查找栈中s1的x并出栈,栈中没有那么查找队p中并出队,打印离开收费信息void Leave(SqStackCar *s1,SqStackCar *s2,LinkQueueCar *p,CarNode x)double fee=0;int position=s1->top+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.minute-y.arrtime.minute) );fee=(x.arrtime.hour-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(s2->top>-1) 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->front->num+1,position,s1->top+1); /出栈动画ji队列成员入栈printlog(x.arrtime,x.num,0,'P',position,fee);printlog(y.arrtime,y.num,1,'P',s1->top+1,0);elseprintleave(0,position,s1->top+2);printlog(x.arrtime,x.num,0,'P',position,fee);else /假设栈中无x while(s2->top > -1) /复原栈 y=pop(s2); f=push(s1,y);q=p->front;f=0;position=1;while(f=0&&q->next!=NULL) /当队不空且未找到xif(q->next->num!=x.num)q=q->next;position+;else /找到xq->next=q->next->next;p->front->num-;if(q->next=NULL)p->rear=p->front;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.num,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=tblock->tm_min;t->hour=tblock->tm_hour;return t;/*移动光标*/蒋光标移动到x,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;i<2 ;i+)for(int j=0; j<20; j+)x+=ai0;y+=ai1;gotoxy(x,y);printf("");x+=ai0;y+=ai1;gotoxy(x,y);if(i=0) printf("");elseprintf("");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("");elseprintf("");gotoxy(22,8);printf("小王:");gotoxy(22,11);printf("顾客:");gotoxy(22,14);printf("* 停车信息 *");gotoxy(23,15);printf("车牌号:");gotoxy(42,15);printf("时间:");gotoxy(23,17);printf("停车时长:");gotoxy(42,17);printf("收费:");/*清屏函数*/更新对话框前将原对话晴空void qingping(int a)if(a=0) /清空小王的对话gotoxy(28,8);printf(" ");gotoxy(28,9);printf(" ");gotoxy(28,8);else if(a=1) /清空顾客的对话gotoxy(28,11);printf(" ");gotoxy(28,12);printf(" ");gotoxy(28,13);printf(" ");gotoxy(28,11);else /清空车辆信息gotoxy(31,15);printf(" ");gotoxy(48,15);printf(" ");gotoxy(33,17);printf(" ");gotoxy(48,17);printf(" ");gotoxy(31,15);/用上下键移动选择int getkey()char c;int x=28,y=11;while(1)gotoxy(x,11);printf(" ");gotoxy(x,12);printf(" ");gotoxy(x,13);printf(" ");gotoxy(x,y);printf(">>"); c=getch();if(c=13) return y-10;/enter键返回当前选项if(c!=-32)continue;/不是方向键进展下次循环c=getch(); if(c=72) if(y>11) y-; /上if(c=80) if(y<13) y+; /下/输入车辆信息CarNode getcarInfo()PTime T;CarNode x;qingping(0);printf("请输入您的车牌号n");qingping(1);printf("在下面输入车辆信息");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(" ");printf(" ");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:%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(;x0<72;x0+)gotoxy(x0,y0);printf("%s",car);Sleep(30);gotoxy(x0,y0);printf(" ");for(;y0<y;y0+)gotoxy(x0,y0);printf("%s",car);Sleep(100);gotoxy(x0,y0);printf(" ");for(;x0>x;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(;x0<x;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)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);printf(" ");gotoxy(x,y-2); printf("%s",car);Sleep(100);if(12>num)gotoxy(12-num)*6,y);printf(" ");gotoxy(x,y);printf("%s",car);for(;x>x0;x-)gotoxy(x,y-2); printf("%s",car);Sleep(30);gotoxy(x,y-2);printf(" ");elsei=num+1;for(;num>po;num-)x=(num+6)*6;y=28;for(;x<72;x+)gotoxy(x,y);printf("%s",car);Sleep(30);gotoxy(x,y);printf(" ");for(;y>21;y-)gotoxy(x,y);printf("%s",car);Sleep(50);gotoxy(x,y);printf(" ");for(;x>(i-num+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=28; for(;x<72;x+)gotoxy(x,y);printf("%s",car);Sleep(30);gotoxy(x,y);printf(" ");for(;y>23;y-)gotoxy(x,y);printf("%s",car);Sleep(50);gotoxy(x,y);printf(" ");for(;x>0;x-)gotoxy(x,y);printf("%s",car);Sleep(30);gotoxy(x,y);printf(" ");num+;for(;i-num>0;num+)x=(i-num+6)*6;y=21;for(;x<72;x+)gotoxy(x,y);printf("%s",car);Sleep(30);gotoxy(x,y);printf(" ");for(;y<28;y+)gotoxy(x,y);printf("%s",car);Sleep(50);gotoxy(x,y);printf(" ");for(;x>(num-1+6)*6;x-)gotoxy(x,y);printf("%s",car);Sleep(30);gotoxy(x,y);printf(" ");gotoxy(x,y);printf("%s",car);if(a>0)x=66;y=25;gotoxy(x,y);printf(" ");gotoxy(x,y-2); printf("%s",car);Sleep(100);if(12>a)gotoxy(12-a)*6,y);printf(" ");if(a>1) gotoxy(x,y);printf("%s",car);printstop(0,i-1,x,y-2);/* main */ int main(void)SqStackCar s1,s2; /停车栈和暂存栈LinkQueueCar 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;i>-1 ;i-) /初始化对话框qingping(i);printf("按ESC退出系统,其它键开场对话");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语言版课程设计报告停车场管理系统.doc)为本站会员(知****量)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档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  

    收起
    展开