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

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

课程设计:停车场c 语言版本的数据结构课程设计,要求用栈模拟停车场 ,用队列模拟便道,实现停车场的收费管理系统停车场停满车后车会停在便道上面下面附上源码,vc:(下编译#include //#include //malloc#include //获取系统时间所用函数 #include //getch()#include //设置光标信息 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 struct{int hour;int minute;}Time,*PTime; /*时间结点*/typedef struct /*定义栈元素的类型即车辆信息结点 */{int num ; /*车牌号*/Time arrtime; /*到达时刻或离区时刻*/}CarNode;typedef struct /*定义栈,模拟停车场*/{CarNode stack[MaxSize];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); //如果栈满 ,返回 0else{s-stack[++s-top]=x; //栈不满 ,到达车辆入栈return(1);}} /*栈顶元素出栈*/CarNode pop(SqStackCar *s) {CarNode x;if(s-toptop--;return(s-stack[s-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);else{p=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); //更新对话}else{printstop(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,S

问题描述: 汽车在停车场内按车到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车放在车场的最北端),若车场内已停满车辆,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在他离开时必须按他停留时间长短缴纳费用。以栈模拟停车场,以队列模拟车场外的便道,按照从中端读入的输入数据序列进行模拟管理。每一组输入数据进行包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号以及到达或离去的时刻。车离开时,输出汽车应缴纳的停车费。 狭长停车场只有一个门可容纳n辆车,当在有车进来时须停在外面的便道上,当停车场里的车开走时,它后面的车须首先退出为它让道,之后再按原来的次序进入停车场,此时停在便道上的第一两车可以进入停车场,从终端输入数据包括车是离去还是到达,车牌号码,到达或者离去的时间,输出相关信息并输出相关停车费用,停在便道上车在未进停车场就离去不收费。 实现提示:用栈和队列,停车场要以栈实现,还须另外设一栈用来为让道停放退出来的车,便道上的车以队列实现,栈以顺序存储,而队列以链式存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值