欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實(shí)現(xiàn)游戲VIP停車場管理系統(tǒng)

 更新時(shí)間:2019年12月27日 15:30:19   作者:MyFamily_IT  
這篇文章主要介紹了C語言實(shí)現(xiàn)游戲VIP停車場管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在數(shù)據(jù)結(jié)構(gòu)這部分學(xué)習(xí)結(jié)束后,寫一個(gè)小項(xiàng)目,我想是對這部分知識(shí)一個(gè)很好的運(yùn)用過程。

我在這介紹我寫的一個(gè)項(xiàng)目,游戲停車場(這個(gè)版本只是初級(jí)版,可以在這之上繼續(xù)添加很多其他功能,大家可以自己嘗試)。

功能要求如下:

程序如下:

/*************************************************************************** 
項(xiàng)目要求 
游戲VIP停車場 
問題描述:停車場是一個(gè)能放10輛車的車場(鏈表實(shí)現(xiàn)), 汽車按到達(dá)的先后次序停放
在等候區(qū)。若等候區(qū)滿了(10輛車),按汽車的VIP等級(jí)(兩種排序方法),依次停入停車場 ,在停
車期間,我們可以通過汽車牌號(hào)查找汽車相關(guān)信息,并且可以隨意刪除其中一輛汽車,汽車
離開要按等候區(qū)的順序依次離開(使用隊(duì)列實(shí)現(xiàn))汽車離開時(shí)按停放時(shí)間收費(fèi)。 
***************************************************************************/ 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
 
#define LEN sizeof(struct parking)      
#define MAXSIZE 10 //車庫大小,可自定義大小,這里默認(rèn)為10
#define MONEY 0.002 //收費(fèi)價(jià)格,這里默認(rèn)為1分鐘,收費(fèi)0.12元
 
typedef struct parking
{
 char number[10]; //車輛信息
 int vip; //車輛VIP等級(jí)
 int time1;  // 進(jìn)入停車場時(shí)間
 int time2;  // 離開停車場時(shí)間
 int count; //標(biāo)記車輛,后面入隊(duì)時(shí)使用
 struct parking*next;
}car;
static int n = 0; //全局變量,用于標(biāo)記車輛數(shù)目,計(jì)算車位
car c;
void menu()
{
 printf("\t==============歡迎來到中南國際停車場=============\n");
 printf ("\t******************目前停車場狀況*****************\n");
 printf ("\t停車場共有%d個(gè)車位,當(dāng)前停車場剩余%d車位\n", MAXSIZE,MAXSIZE - n);
 printf ("\t*************************************************\n");
 printf("\t================1,停入車輛=======================\n");
 printf("\t================2,VIP等級(jí)排序車輛================\n");
 printf("\t================3,駛出所有車輛(隊(duì)列)==============\n");
 printf("\t================4,查找車輛=======================\n");
 printf("\t================5,遍歷停車場全部車輛信息=========\n");
 printf("\t================6,駛出指定車輛===================\n");
 printf("\t================7,退出===========================\n");
}
 
struct parking *creat() //創(chuàng)建鏈表,用于存放車輛信息
{
 struct parking*p1,*p2,*head;
 head = NULL; //為方便后面排序,這里創(chuàng)建不帶頭結(jié)點(diǎn)的鏈表
 int i = 1;
 p1=p2=(struct parking*)malloc(LEN);
 printf("輸入車輛VIP等級(jí):\n");
 scanf("%d",&p1->vip);
 printf("輸入車牌號(hào):\n");
 scanf("%s",p1->number);
 p1->count = i;
 time_t t1;
  long int t = time(&t1);  // 標(biāo)記進(jìn)入停車場的時(shí)間
  c.time1 = t;
  char* t2;
  t2 = ctime(&t1);  // 獲取當(dāng)前時(shí)間         
  printf("牌照為%s的汽車停入等候區(qū)成功,當(dāng)前時(shí)間:%s\n",p1->number,t2); //顯示停車場狀況,以及停入時(shí)間
 while(p1->vip != 0 && i <= 10)
 {      //由于不帶頭結(jié)點(diǎn),這里創(chuàng)建時(shí)考慮了三種插入方法
 n = n+1;
 if(n == 1)
  head = p1;
 else
  p2->next = p1;
 p2 = p1;
 p1 = (struct parking*)malloc(LEN);
 printf("輸入車輛VIP等級(jí):\n");
 scanf("%d",&p1->vip);
 printf("輸入車牌號(hào):\n");
 scanf("%s",p1->number);
 i++;
 p1->count = i;
 time_t t1;
    long int t = time(&t1); // 標(biāo)記進(jìn)入停車場的時(shí)間
 c.time1 = t;
    char* t2;
    t2 = ctime(&t1);  // 獲取當(dāng)前時(shí)間         
    printf("牌照為%s的汽車停入等候區(qū)成功,當(dāng)前時(shí)間:%s\n",p1->number,t2); //顯示停車場狀況,以及停入時(shí)間
    
 }
 p2->next = NULL;
 printf("等候區(qū)以滿\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等級(jí)交換結(jié)點(diǎn)數(shù)據(jù)
   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標(biāo)記為最大值
  for(q = p->next;q != NULL;q = q->next)
     {
   if(p->vip < q->vip)//降序
  {
         s = q;
  }
  if(s != p)
  { 
         t = q->vip; //按VIP等級(jí)交換結(jié)點(diǎn)數(shù)據(jù)
   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 //先入先出(隊(duì)列)Vip離場
{
  int data;
  struct QueueNode *next;
}Queue,*QueuePtr;
 
typedef struct
{
  QueuePtr front,rear; //隊(duì)列指針
}LinkQueue;
 
LinkQueue* CreateQueue(LinkQueue *Q) //創(chuàng)建隊(duì)列
{
  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) //入隊(duì)操作,按鏈表中一開始車輛標(biāo)號(hào)順序
{
  struct parking *p;
 p = head;
  while(p!=NULL)
  {
    QueuePtr s = (QueuePtr)malloc(sizeof(Queue));
    s->data = p->count; //隊(duì)列只記錄車輛一開始的標(biāo)號(hào)信息
    s->next = NULL;
    Q->rear->next = s;
    Q->rear = s;
    p = p->next;     
  }
}
 
struct parking Exert1(struct parking *head,int e) //按等候區(qū)順序出隊(duì)(一輛)
{
  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);  // 標(biāo)記顯示時(shí)的時(shí)間
 printf ("車牌號(hào)\tVIP等級(jí)\t\t停放時(shí)長\t當(dāng)前所需支付金額\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) //按等候區(qū)順序出隊(duì)(全部)
{
  QueuePtr p;
  int i = 1;
  if(Q->front == Q->rear)
  {
    printf("停車場無車輛!\n");
    return 0;
  }
  else
  {
    for(i;i <= 10;i++) //按等候區(qū)順序出隊(duì)(全部)
    { 
     p = Q->front->next;
     Q->front->next = p->next; //出隊(duì)操作
     if(Q->rear == p) 
       Q->rear = Q->front;
     Exert1(head,i); //調(diào)用函數(shù),實(shí)現(xiàn)按等候區(qū)順序出一輛車
     }
  }
}
 
 
 
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) //不帶頭結(jié)點(diǎn),這里有三種刪除車輛的辨別
 {
 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; // 標(biāo)記離開停車場的時(shí)間
 char* t2;
 t2 = ctime(&t1); // 獲取當(dāng)前時(shí)間
 printf("離開時(shí)間%s\n需付%2.3f元\n",t2,MONEY * (c.time2 - c.time1)); //顯示停車場狀況以及駛出時(shí)間和收費(fèi)情況
 }
 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);       // 標(biāo)記顯示時(shí)的時(shí)間
 printf ("車牌號(hào)\tVIP等級(jí)\t\t停放時(shí)長\t當(dāng)前所需支付金額\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) //顯示車庫現(xiàn)有車輛
{
 struct parking *p;
 p = head;
 if(head != NULL)
 {
 do
  {
  time_t t1;
  long int t = time(&t1); // 標(biāo)記顯示時(shí)的時(shí)間
  printf ("車牌號(hào)\tVIP等級(jí)\t\t停放時(shí)長\t當(dāng)前所需支付金額\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;} //創(chuàng)建鏈表,并創(chuàng)建隊(duì)列
  case 2:{head = Sort(head);break;} //按vip排序
  case 3:{Pop(head,Q);break;} //按等候區(qū)順序出隊(duì)(全部)
  case 4:
  {
  printf("請輸入查找車輛的車牌號(hào):\n"); //查找指定車輛
  scanf("%s",number);
  find(head,number);break;
  }
  case 5:{show(head);break;} //顯示車庫現(xiàn)有車輛
  case 6:
  { 
  printf("請輸入要駛出車輛的車牌號(hào):\n"); //駛出指定車輛
  scanf("%s",number);
  head = Exert(head,number);break; 
  }
  default:{break;}
 }
 }
}

功能的實(shí)現(xiàn),有很多方法,如果大家有自己的想法,可以評(píng)論,大家互利共進(jìn)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論