温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言实现VIP停车场管理系统代码分享

发布时间:2021-08-11 18:58:47 来源:亿速云 阅读:156 作者:chen 栏目:编程语言

这篇文章主要介绍“C语言实现VIP停车场管理系统代码分享”,在日常操作中,相信很多人在C语言实现VIP停车场管理系统代码分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言实现VIP停车场管理系统代码分享”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

程序如下:

/*************************************************************************** 项目要求 游戏VIP停车场 问题描述:停车场是一个能放10辆车的车场(链表实现), 汽车按到达的先后次序停放在等候区。若等候区满了(10辆车),按汽车的VIP等级(两种排序方法),依次停入停车场 ,在停车期间,我们可以通过汽车牌号查找汽车相关信息,并且可以随意删除其中一辆汽车,汽车离开要按等候区的顺序依次离开(使用队列实现)汽车离开时按停放时间收费。 ***************************************************************************/ #include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h> #define LEN sizeof(struct parking)      #define MAXSIZE 10 //车库大小,可自定义大小,这里默认为10#define MONEY 0.002 //收费价格,这里默认为1分钟,收费0.12元 typedef struct parking{ char number[10]; //车辆信息 int vip; //车辆VIP等级 int time1;  // 进入停车场时间 int time2;  // 离开停车场时间 int count; //标记车辆,后面入队时使用 struct parking*next;}car;static int n = 0; //全局变量,用于标记车辆数目,计算车位car c;void menu(){ printf("\t==============欢迎来到中南国际停车场=============\n"); printf ("\t******************目前停车场状况*****************\n"); printf ("\t停车场共有%d个车位,当前停车场剩余%d车位\n", MAXSIZE,MAXSIZE - n); printf ("\t*************************************************\n"); printf("\t================1,停入车辆=======================\n"); printf("\t================2,VIP等级排序车辆================\n"); printf("\t================3,驶出所有车辆(队列)==============\n"); printf("\t================4,查找车辆=======================\n"); printf("\t================5,遍历停车场全部车辆信息=========\n"); printf("\t================6,驶出指定车辆===================\n"); printf("\t================7,退出===========================\n");} struct parking *creat() //创建链表,用于存放车辆信息{ struct parking*p1,*p2,*head; head = NULL; //为方便后面排序,这里创建不带头结点的链表 int i = 1; p1=p2=(struct parking*)malloc(LEN); printf("输入车辆VIP等级:\n"); scanf("%d",&p1->vip); printf("输入车牌号:\n"); scanf("%s",p1->number); p1->count = i; time_t t1;  long int t = time(&t1);  // 标记进入停车场的时间  c.time1 = t;  char* t2;  t2 = ctime(&t1);  // 获取当前时间           printf("牌照为%s的汽车停入等候区成功,当前时间:%s\n",p1->number,t2); //显示停车场状况,以及停入时间 while(p1->vip != 0 && i <= 10) {      //由于不带头结点,这里创建时考虑了三种插入方法 n = n+1; if(n == 1)  head = p1; else  p2->next = p1; p2 = p1; p1 = (struct parking*)malloc(LEN); printf("输入车辆VIP等级:\n"); scanf("%d",&p1->vip); printf("输入车牌号:\n"); scanf("%s",p1->number); i++; p1->count = i; time_t t1;    long int t = time(&t1); // 标记进入停车场的时间 c.time1 = t;    char* t2;    t2 = ctime(&t1);  // 获取当前时间             printf("牌照为%s的汽车停入等候区成功,当前时间:%s\n",p1->number,t2); //显示停车场状况,以及停入时间     } p2->next = NULL; printf("等候区以满\n"); return head;} struct parking *Sort(struct parking *head)//链表排序,冒泡排序{  struct parking *p,*q,*s;  int t,a,m;  char arr[10]; printf("请输入排序方式:(1:冒泡排序法 0:选择排序法)\n"); scanf("%d",&a); if(a = 1) {   for(p = head;p != NULL;p = p->next)   {     for(q = p->next;q != NULL;q = q->next)     {       if(p->vip < q->vip)//降序  {         t = q->vip; //按VIP等级交换结点数据   q->vip = p->vip;   p->vip = t;   strcpy(arr,q->number);   strcpy(q->number,p->number);   strcpy(p->number,arr);   m = q->count;      q->count = p->count;   p->count = m;  }     }   } return head;   } else //选择排序法 { for(p = head;p != NULL;p = p->next)     {  s = p; //s标记为最大值  for(q = p->next;q != NULL;q = q->next)     {   if(p->vip < q->vip)//降序  {         s = q;  }  if(s != p)  {          t = q->vip; //按VIP等级交换结点数据   q->vip = p->vip;   p->vip = t;   strcpy(arr,q->number);     strcpy(q->number,p->number);   strcpy(p->number,arr);   m = q->count;      q->count = p->count;   p->count = m;  }     }   } return head; }} typedef struct QueueNode //先入先出(队列)Vip离场{  int data;  struct QueueNode *next;}Queue,*QueuePtr; typedef struct{  QueuePtr front,rear; //队列指针}LinkQueue; LinkQueue* CreateQueue(LinkQueue *Q) //创建队列{  Q = (LinkQueue*)malloc(sizeof(LinkQueue));  Q->front = Q->rear = (QueuePtr)malloc(sizeof(Queue));  Q->front->next = NULL;  return Q;} void Push(struct parking *head,LinkQueue* Q) //入队操作,按链表中一开始车辆标号顺序{  struct parking *p; p = head;  while(p!=NULL)  {    QueuePtr s = (QueuePtr)malloc(sizeof(Queue));    s->data = p->count; //队列只记录车辆一开始的标号信息    s->next = NULL;    Q->rear->next = s;    Q->rear = s;    p = p->next;       }} struct parking Exert1(struct parking *head,int e) //按等候区顺序出队(一辆){  struct parking *p;  p = head;  while(p != NULL && p->count != e)  {    p = p->next;  }  if(p->count == e)  {    time_t t1; long int t = time(&t1);  // 标记显示时的时间 printf ("车牌号\tVIP等级\t\t停放时长\t当前所需支付金额\n"); //打印查到的车辆信息   printf ("%s\t%d\t\t%d秒\t\t%2.3f元\n",p->number,p->vip,t - c.time1, MONEY * (t - c.time1));  }}int Pop(struct parking *head,LinkQueue *Q) //按等候区顺序出队(全部){  QueuePtr p;  int i = 1;  if(Q->front == Q->rear)  {    printf("停车场无车辆!\n");    return 0;  }  else  {    for(i;i <= 10;i++) //按等候区顺序出队(全部)    {      p = Q->front->next;     Q->front->next = p->next; //出队操作     if(Q->rear == p)        Q->rear = Q->front;     Exert1(head,i); //调用函数,实现按等候区顺序出一辆车     }  }}   struct parking *Exert(struct parking *head,char number[10]) //驶出指定车辆{  struct parking *p1,*p2; p1 = head; p2 = p1; while(p1->next !=NULL && strcmp(p1->number,number) != 0) { p2=p1; p1=p1->next;  } if(strcmp(p1->number,number) == 0) //不带头结点,这里有三种删除车辆的辨别 { if(p1 == head) {  head = head->next; //头,中间,尾,三种删除方式  printf("驶出车辆成功\n");  n--; } else {  p2->next = p1->next;  printf("驶出车辆成功\n");  n--; } time_t t1;    long int t = time(&t1);         c.time2 = t; // 标记离开停车场的时间 char* t2; t2 = ctime(&t1); // 获取当前时间 printf("离开时间%s\n需付%2.3f元\n",t2,MONEY * (c.time2 - c.time1)); //显示停车场状况以及驶出时间和收费情况 } else { printf("停车场没此车辆!\n"); } free(p1); return head;} struct parking *find(struct parking *head,char number[20]) //查找指定车辆{ struct parking *p1; p1 = head; while(p1->next != NULL && strcmp(p1->number,number)!=0) { p1 = p1->next;  } if(strcmp(p1->number,number)==0) //打印查到的车辆信息 { printf("查找成功,车辆信息如下:\n"); time_t t1; long int t = time(&t1);       // 标记显示时的时间 printf ("车牌号\tVIP等级\t\t停放时长\t当前所需支付金额\n"); //打印查到的车辆信息   printf ("%s\t%d\t\t%d秒\t\t%2.3f元\n",p1->number,p1->vip,t - c.time1, MONEY * (t - c.time1)); } else printf("停车场没此车辆!\n"); } void show(struct parking *head) //显示车库现有车辆{ struct parking *p; p = head; if(head != NULL) { do  {  time_t t1;  long int t = time(&t1); // 标记显示时的时间  printf ("车牌号\tVIP等级\t\t停放时长\t当前所需支付金额\n"); //打印查到的车辆信息    printf ("%s\t%d\t\t%d秒\t\t%2.3f元\n",p->number,p->vip,t - c.time1, MONEY * (t - c.time1));  p = p->next;  }while(p != NULL); }  else printf("停车场无车辆!\n");} int main(){ int n = 1; int i; struct parking *head; //初始化链表 LinkQueue q; LinkQueue* Q = &q; Q = CreateQueue(Q); char number[10];    while(n) { system("clear"); menu(); printf("请输入你的骚操作:\n"); scanf("%d",&i); switch(i) {  case 1:{head = creat();Push(head,Q);break;} //创建链表,并创建队列  case 2:{head = Sort(head);break;} //按vip排序  case 3:{Pop(head,Q);break;} //按等候区顺序出队(全部)  case 4:  {  printf("请输入查找车辆的车牌号:\n"); //查找指定车辆  scanf("%s",number);  find(head,number);break;  }  case 5:{show(head);break;} //显示车库现有车辆  case 6:  {   printf("请输入要驶出车辆的车牌号:\n"); //驶出指定车辆  scanf("%s",number);  head = Exert(head,number);break;   }  default:{break;} } }}

到此,关于“C语言实现VIP停车场管理系统代码分享”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI