一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言實現游戲VIP停車場管理系統

C語言實現游戲VIP停車場管理系統

2021-08-11 15:40MyFamily_IT C/C++

這篇文章主要介紹了C語言實現游戲VIP停車場管理系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在數據結構這部分學習結束后,寫一個小項目,我想是對這部分知識一個很好的運用過程。

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

功能要求如下:

C語言實現游戲VIP停車場管理系統

程序如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
/***************************************************************************
項目要求
游戲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;}
 }
 }
}

功能的實現,有很多方法,如果大家有自己的想法,可以評論,大家互利共進。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/MyFamily_IT/article/details/79166631

延伸 · 閱讀

精彩推薦
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
主站蜘蛛池模板: 亚洲天堂激情 | 国产成人www | 国产精品久久久久久搜索 | www黄| 涩涩五月天 | 国产精品露脸国语对白99 | 欧美人成绝费网站色www吃脚 | 日本噜噜影院 | 2020韩国三级理论在线观看 | 国产自拍啪啪 | 欧美一区二区视频 | xxxxxx性受 | 狠狠色综合久久久久尤物 | 亚洲男人天堂影院 | 亚洲福利一区二区精品秒拍 | 精品国产一二三区在线影院 | 亚洲视频观看 | 亚洲精品一二三四 | 无限资源在线观看完整版免费下载 | 日本动漫打扑克动画片樱花动漫 | jzjzjz日本在线观看 | 四虎影院免费在线 | 国产在线观看人成激情视频 | 美女污视频在线观看 | 免费真实播放国产乱子伦 | 亚洲2卡三卡4卡5卡精品 | 国产色视频一区二区三区 | 亚洲精品综合网 | 精品久久看 | 色婷婷六月丁香在线观看 | 欧美亚洲国产另类 | 亚瑟天堂久久一区二区影院 | 日女人免费视频 | 国产良家| 国产大秀视频 | 91国内精品久久久久影院优播 | 国产精品久线观看视频 | 天海翼最新作品 | 特黄特a级特别特级特毛片 特黄a级三级三级野战 | 成人国产精品视频频 | 国产99视频精品免费视频免里 |