1、c语言车辆管理系统课程设计#include#include#include#define MAX 3 /* 车库容量 */#define price 0.5 /* 每车每分钟费用 */typedef struct timeint hour;int min;Time; /* 时间结点 */ typedef struct nodechar num10;Time reach;Time leave;CarNode;/* 车辆信息结点 */ typedef struct NODECarNode *stackMAX + 1; int top;Moni_Cheku;typedef struct carCar
2、Node *data; struct car *next; QueueNode;typedef struct NodeQueueNode *head;QueueNode *rear;Moni_Biandao;void InitStack(Moni_Cheku *); /* 初始化车库 */int InitQueue(Moni_Biandao *);/* 初始化便道 */int Arrival(Moni_Cheku *, Moni_Biandao *); /* 车辆到达 */void Leave(Moni_Cheku *, Moni_Cheku *, Moni_Biandao *); /* 车辆
3、离开 */void List(Moni_Cheku, Moni_Biandao); /* 显示车库和便道的存车信息*/int main()Moni_Cheku Enter, Temp;Moni_Biandao Wait;int ch;InitStack(&Enter); /* 初始化车站 */printf(n);printf(” A_A 欢迎进入停车场管理系统1!A_An);printf(n);MAX);.n,printf( 提示! (1).该车库的最大容量为:d;n.printf( (2). 该车库的收费标准为: %4.2f 元/ (辆*分钟)price);while (1)system(C
4、LS);printf(主菜*n);printf(1. 车辆到达 );printf( 2. 车辆离开 );printf( 3. 列表显示 );printf( 4. 退出系统 n););printf( 请选择(1-4): bb);while (1)scanf(%d,&ch);if (ch = 1 & ch top = 0;for (i = 0; i stacks-top = NULL;int InitQueue(Moni_Biandao *Q) /* 初始化便道 */Q-head = (QueueNode *)malloc(sizeof(QueueNode); if (Q-head != NULL
5、) Q-head-next = NULL;Q-rear = Q-head; return(1);else return(-1);void PRINT(CarNode *p, int room) /* 输出出库车的信息 */int A1, A2, B1, B2;printf( 请输入离开的时间 :/*:*/);scanf(%d:%d, &(p-leave.hour), &(p-leave.min);printf( 离开车辆的车牌号为 :); puts(p-num);printf( 其 到 达 时 间 为 : %d:%dn, p-reach.hour, p-reach.min);printf( 离
6、 开 时 间 为 : %d:%dn, p-leave.hour, p-leave.min);A1 = p-reach.hour;A2 = p-reach.min;B1 = p-leave.hour;B2 = p-leave.min;printf( 应交费用为 :%4.2f 元 , (B1 - A1) * 60 + (B2 - A2)*price);free(p);int Arrival(Moni_Cheku *Enter, Moni_Biandao *W) /* 车辆到达 */CarNode *p;QueueNode *t;p = (CarNode *)malloc(sizeof(CarNod
7、e);fflush(stdin);printf( 请输入车牌号 ( 例如:中 CUG888):);scanf(%s,&(p-num);if (Enter-top top+;printf( 该车在车库位置 %d.n, Enter-top);printf( 请输入到达时间 (*:*):);scanf(%d:%d, &(p-reach.hour), &(p-reach.min);Enter-stackEnter-top = p;return(1);else /* 车库已满,车进便道 */printf( 该车须在便道等待 !n);t = (QueueNode *)malloc(sizeof(Queue
8、Node); t-data = p;t-next = NULL;W-rear-next = t;W-rear = t;return(1); void Leave(Moni_Cheku *Enter, Moni_Cheku *Temp, Moni_Biandao *W) /* 车辆离开 */int i, room;CarNode *p, *t;QueueNode *q;/* 判断车库内是否有车 */if (Enter-top 0) /* 有车 */printf( 请输入车在车库的位置 (1-%d) :, Enter-top);/* 输入车辆离开的信息 */while (1)scanf(%d, &
9、room);if (room = 1 & room top) break; else printf( 错误! 请重选:);while (Enter-top room) /* 车辆离开 */Temp-top+;Temp-stackTemp-top = Enter-stackEnter-top; Enter-stackEnter-top = NULL;Enter-top-;p = Enter-stackEnter-top;Enter-stackEnter-top = NULL;Enter-top-;while (Temp-top = 1)Enter-top+;Enter-stackEnter-to
10、p = Temp-stackTemp-top; Temp-stackTemp-top = NULL;Temp-top-;PRINT(p, room); /* 判断通道上是否有车及车库是否已满 */if (W-head != W-rear) & Enter-top head-next;t = q-data; Enter-top+;printf(n 便道的$号车进入车场第c位置.,t-num,Enter-top);printf(n 请输入现在的时间 (*:*):);scanf(%d:%d, &(t-reach.hour), &(t-reach.min);W-head-next = q-next;i
11、f (q = W-rear) W-rear = W-head;Enter-stackEnter-top = t;free(q);else printf(n 便道里没有车 .n);else printf( 车库里没有车 !n); /* 没车*/void List1(Moni_Cheku *S) /* 列表显示车库信息 */int i;if (S-top 0) /* 判断车库内是否有车 */printf(” 车库号 到达时间t 车牌号n);for (i = 1; i top; i+)printf( %d , i);printf( t%d:%d, S-stacki-reach.hour, S-sta
12、cki-reach.min);printf(tt%sn,S-stacki-num);else printf( 车库里没有车 n);void List2(Moni_Biandao *W) /* 列表显示便道信息 */QueueNode *p;p = W-head-next;if (W-head != W-rear) /* 判断便道上是否有车 */printf( 在便道里等待的车辆的号码为 :n);while (p != NULL)puts(p-data-num);p = p-next;else printf( 便道里没有车 .n);void List(Moni_Cheku S, Moni_Bia
13、ndao W)int flag, tag;flag = 1;while (flag)printf(H*查看*n);printf(1. 车库 2.便道 3.返回 n);printf( 请选择(1-3): bb);while (1)scanf(%d, &tag);if (tag = 1 & tag = 3) break;else printf( 错误!请重选(1 -3): bb);switch (tag)case 1:List1(&S);break;/* 列表显示车库信息 */case 2:List2(&W);break; /* 列表显示便到信息 */case 3:flag = 0;break;default:break;