收藏 分销(赏)

C语言停车场管理系统源代码.doc

上传人:xrp****65 文档编号:6766933 上传时间:2024-12-21 格式:DOC 页数:8 大小:53.50KB 下载积分:10 金币
下载 相关 举报
C语言停车场管理系统源代码.doc_第1页
第1页 / 共8页
C语言停车场管理系统源代码.doc_第2页
第2页 / 共8页


点击查看更多>>
资源描述
#include<stdio.h> #include<stdlib.h> #define stacksize 2 //车站//容量 /////////////////////////////////////////////////////// typedef struct Snode{ int number; float int_time[2]; float bian_time[2]; }record; typedef struct { record *base; record *top; int size; }Stack; ///////////////////////////////////////////////////// typedef struct Qnode{ int number; float int_time[2]; struct Qnode *next; }Qnode,*Queue; typedef struct { Queue front; Queue rear; }Linkqueue; void xunhuan(Stack L,Linkqueue Q); void jixu(Stack L,Linkqueue Q); ///////////////////////////////////////////////////// ///////////////////////////////////////////////////// void InitStack(Stack &L) //堆栈操作 { L.base=(record*)malloc(sizeof(Snode)*stacksize); if(!L.base) exit(0); L.top=L.base; L.size=stacksize; } ///////////////////////////////////////////////////// void input(Stack &L,record h) { *L.top++=h; } /////////////////////////////////////////////////// Snode output(Stack &L,record &e) { e=*--L.top; return e; } int Stackman(Stack L) { if(L.top-L.base==L.size) return 0; else return 1; } int StackEmpty(Stack L) { if(L.base==L.top) return 0; else return 1; } ////////////////////////////////////////////////// ////////////////////////////////////////////////// void Initque(Linkqueue &Q) //队列操作 { Q.front=Q.rear=(Queue)malloc(sizeof(Qnode)); if(!Q.front) exit(0); Q.front->next=NULL; } ////////////////////////////////////////////////// void enqueue(Linkqueue &Q,int number,float time[]) { Queue q; printf("停车场已满,请将车辆停入便道!\n"); q=(Queue)malloc(sizeof(Qnode)); q->int_time[0]=time[0]; q->int_time[1]=time[1]; q->number=number; q->next=NULL; Q.rear->next=q; Q.rear=q; } /////////////////////////////////////////////////// void outqueue(Linkqueue &Q,Queue &e) //此处有点问题?????????????? { // Qnode *q; // q=(Queue)malloc(sizeof(Qnode)); e=Q.front->next; // Q.front->next=q->next; //delete q; Q.front->next=Q.front->next->next; if(Q.rear==e){ Q.front=Q.rear; // Q.front=NULL; } } int QEmpty(Linkqueue Q) { if(Q.rear==Q.front) return 0; else return 1; } //////////////////////////////////////////////////// //停车场管理操作 //////////////////////////////////////////////////// void jixu(Stack L,Linkqueue Q) { int n; fflush(stdin); scanf("%d",&n); switch(n) { case 1: printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); xunhuan(L,Q); break; case 2: printf("****************************退出管理系统*****************************\n"); break; default: printf("\n输入错误,请重新输入: "); jixu(L,Q); break; } } void jiaofei(float time[],float time1[],float time2[]) //缴费操作 { float data1,data2; double money; if(time2[0]!=0&&time2[1]!=0) data2=(time1[0]-time2[0]-1)*60+60-time2[1]+time1[1]; else data2=0; data1=(time[0]-time1[0]-1)*60+60-time1[1]+time[1]; // printf("进入车场时间%f,退出车场时间%f\n",time1[1],time[1]); printf("你的停车时间为%lf小时 ,在便道停留时间%f小时\n",data1/60,data2/60); money=data1/60*5.0+data2/60*2.0; printf("请交纳%lf元\n",money); /* if(data1<=60.0) printf("请交纳5元。"); if(data1>60.0&&data1<=120.0) printf("请交纳10元。"); if(data1>120.0) printf("请交纳20元。");*/ } void leave(Stack &L,Linkqueue &Q,int number,float time[]) //汽车离开操作 { Stack S; InitStack(S); float time1[2],time2[2]; record e,e1; Queue q; e1=output(L,e); while(e.number!=number) { input(S,e1); e1=output(L,e); } time1[0]=e.int_time[0]; //入车站时间 time1[1]=e.int_time[1]; time2[0]=e.bian_time[0]; //入便道时间 time2[1]=e.bian_time[1]; jiaofei(time,time1,time2); ////////////////////////// while(StackEmpty(S)) input(L,output(S,e1)); while(QEmpty(Q)&&Stackman(L)) { outqueue(Q,q); //printf("\n\n请输入汽车从便道进入停车场的时间,输入格式为(时 空格 分):"); e.bian_time[0]=q->int_time[0]; e.bian_time[1]=q->int_time[1]; //scanf("%f %f",&time2[0],&time2[1]); e.int_time[0]=time[0]; e.int_time[1]=time[1]; e.number=q->number; printf("\n汽车从便道退出进入停车场……"); printf("\n请将%d号车停在%d号位置!\n",e.number,L.top-L.base+1); input(L,e); } } ///////////////////////////////////////////////////// void xunhuan(Stack L,Linkqueue Q) //选择操作及循环 { // Queue q; char ch; int number; float time[2],time2[2]; fflush(stdin); printf("\nA:进入停车场 D:退出停车场 E:退出管理系统\n"); printf("\n请输入:"); scanf("%c",&ch); fflush(stdin); switch(ch) { case 'A': printf("\n请输入车牌号: "); scanf("%d",&number); printf("请输入入场时间,输入格式为(时 空格 分):"); scanf("%f %f",&time[0],&time[1]); if(Stackman(L)) { record e; e.int_time[0]=time[0]; e.int_time[1]=time[1]; e.bian_time[0]=0.0; e.bian_time[1]=0.0; e.number=number; printf("请将车停在%d号位置!",L.top-L.base+1); input(L,e); } else { enqueue(Q,number,time); } printf("\n"); printf("\n1、继续操作 2、退出操作 : "); jixu(L,Q); break; case 'D': if(StackEmpty(L)) { printf("请输入离开汽车的车牌号:"); scanf("%d",&number); printf("输入汽车离开时间:"); scanf("%f %f",&time2[0],&time2[1]); leave(L,Q,number,time2); } else printf("停车场为空\n"); printf("\n1、继续操作 2、退出操作 : "); jixu(L,Q); break; case 'E': { printf("***************************退出管理系统*****************************\n"); break; } default: { printf("输入错误,请重新输入!\n"); printf("############################################################\n"); xunhuan(L,Q); break; } } } //////////////////////////////////////////////////// //////////////////////////////////////////////////// void main() //主函数操作 { Linkqueue Q; Stack L; InitStack(L); Initque(Q); printf("****************************欢迎进入停车场管理系统******************************\n"); printf(" 收费标准\n"); printf(" ------------------------------------\n"); printf(" | 车场内5.0元/h,便道内2.0元/h | \n"); printf(" ------------------------------------\n"); printf(" \n---------------------------------请选择操作-------------------------------------\n"); xunhuan(L,Q); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服