1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 #include<windows.h>
5 #include<time.h>
6 #include<math.h>
7 #define N 36
8 int place[N];
9 int x,y,price,count;//现在的会员人数;全部的会员人数;停车单价;已用车位数;
10 double sum;//盈利总额
11
12 void menu();
13 void parking();
14 void take();
15 void amoney();
16 void show();
17 void profit();
18 void regist();
19 void adjust();
20 void backup();
21 void del();
22 struct park
23 {
24 int id;
25 char name[30],tele[30],num[30];
26 int money;
27 int flag; //记录该会员是否已经注销
28 time_t start ,end;
29 } user[2000]={
30 {0,"00","00000000000","00000",0,1},
31 {1,"徐*","4565554645","k1157",100,1},
32 {2,"冯**","5462121312","k1158",100,1},
33 {3,"王**","84855123223","k1159",100,1},
34 {4,"吴**","145435523","k1160",100,1},
35 {5,"ee","475786543","k1161",100,1},
36 {6,"ff","4254213475","k1162",100,1},
37 };//初始赋值
38 int main()
39 {
40 FILE *fp;
41 int i,x,j;
42 price=1; count=0; sum=0; y=6; x=y;//初始化数值
43 memset(place,-1,sizeof(place));
44 while(1)
45 {
46 fp=fopen("D:\\data.txt","w");
47 for(i=1; i<=y; i++)
48 if(user[i].flag)
49 fprintf(fp,"%d %s %s %s %d\n",user[i].id,user[i].name,user[i].tele,user[i].num,user[i].money);
50 fclose(fp);
51 menu();
52 scanf("%d",&x);
53 fflush(stdin); //清理内存
54 switch(x)
55 {
56 case 1: parking(); break;//停车记录
57 case 2: take(); break;//取车记录
58 case 3: amoney(); break;//现金充值
59 case 4: show(); break;//显示余额
60 case 5: profit(); break;//盈利查询
61 case 6: regist(); break;//用户注册记录
62 case 7: adjust(); break;//调整停车单价
63 case 8: backup(); break;//数据备份
64 case 9:del(); break;//用户注销记录
65 case 0:
66 {
67 system("cls");
68 printf("\n\n\n\n\n\n\t\t\t 感谢您的使用!");
69 Sleep(200);
70 for(j=0; j<=1; j++)
71 {
72 printf(" \n");
73 printf(" \n");
74 printf(" \n");
75 printf(" \n");
76 printf(" \n");
77 printf("\t\t ★★★★★ ★★★★★\n");
78 printf("\t\t ☆☆ ☆☆ ☆☆ ☆☆\n");
79 printf("\t\t ★★ ★★ ★★ ★★\n");
80 printf("\t\t ☆☆ ☆ ☆☆\n");
81 printf("\t\t ★★ ★★\n");
82 printf("\t\t ☆☆ ☆☆\n");
83 printf("\t\t ★★ Thank you! ★★\n");
84 printf("\t\t ☆☆ ☆☆\n");
85 printf("\t\t ★★ ★★\n");
86 printf("\t\t ☆☆ ☆☆\n");
87 printf("\t\t ★★ ★★\n");
88 printf("\t\t ☆☆ ☆☆\n");
89 printf("\t\t ★★ ★★\n");
90 printf("\t\t ☆☆ ☆☆\n");
91 printf("\t\t ★★\n");
92 Sleep(500);
93 system("cls");
94 printf("\n\n\n\n\n");
95 printf("\t\t ★★★ ★★★\n");
96 printf("\t\t ☆☆ ☆☆ ☆☆ ☆☆\n");
97 printf("\t\t ★★ ★★ ★★ ★★\n");
98 printf("\t\t ☆☆ ☆ ☆☆\n");
99 printf("\t\t ★★ ★★\n");
100 printf("\t\t ☆☆ Thank you! ☆☆\n");
101 printf("\t\t ★★ ★★\n");
102 printf("\t\t ☆☆ ☆☆\n");
103 printf("\t\t ★★ ★★\n");
104 printf("\t\t ☆☆ ☆☆\n");
105 printf("\t\t ★★ ★★\n");
106 printf("\t\t ☆☆ ☆☆\n");
107 printf("\t\t ★★\n");
108 Sleep(400);
109 system("cls");
110
111 printf(" \n");
112 printf(" \n");
113 printf(" \n");
114 printf(" \n");
115 printf(" \n");
116 printf("\t\t\t ★★★ ★★★\n");
117 printf("\t\t\t ☆☆ ☆ ☆☆\n");
118 printf("\t\t\t ★★ ★★\n");
119 printf("\t\t\t ☆☆ ☆☆\n");
120 printf("\t\t\t ★★ ★★\n");
121 printf("\t\t\t ☆☆ ☆☆\n");
122 printf("\t\t\t ★★ ★★\n");
123 printf("\t\t\t ☆☆ ☆☆\n");
124 printf("\t\t\t ★★\n");
125 Sleep(400);
126 system("cls");
127
128 printf(" \n");
129 printf(" \n");
130 printf(" \n");
131 printf(" \n");
132 printf(" \n");
133 printf(" \n");
134 printf("\t\t ★ ☆ ☆ ★\n");
135 printf("\t\t ☆ ★ ☆\n");
136 printf("\t\t ★ ★\n");
137 printf("\t\t ☆ ☆ \n");
138 printf("\t\t ★ ★\n");
139 printf("\t\t ☆\n");
140 Sleep(400);
141 system("cls");
142
143 printf(" \n");
144 printf(" \n");
145 printf(" \n");
146 printf(" \n");
147 printf(" \n");
148 printf(" \n");
149 printf("\t\t ★★ ★★ ★★ ★★\n");
150 printf("\t\t ☆☆ ☆ ☆☆\n");
151 printf("\t\t ★★ ★★\n");
152 printf("\t\t ☆☆ Thank you! ☆☆\n");
153 printf("\t\t ★★ ★★\n");
154 printf("\t\t ☆☆ ☆☆\n");
155 printf("\t\t ★★ ★★\n");
156 printf("\t\t ☆☆ ☆☆\n");
157 printf("\t\t ★★\n");
158 Sleep(400);
159 system("cls");
160 }
161
162 printf("\n\n\n\n\n\n\n\n\n\t\t 感谢您的使用!\n\n\n");
163
164 printf("\t\t ★★ ★★ ★★ ★★\n");
165 printf("\t\t ☆☆ ☆ ☆☆\n");
166 printf("\t\t ★★ ★★\n");
167 printf("\t\t ☆☆ Thank you! ☆☆\n");
168 printf("\t\t ★★ ★★\n");
169 printf("\t\t ☆☆ ☆☆\n");
170 printf("\t\t ★★ ★★\n");
171 printf("\t\t ☆☆ ☆☆\n");
172 printf("\t\t ★★\n");
173 printf("\n\n\t\t本软件项目组成员:徐* 吴**\n\n\t\t\t\t 冯** 王**");
174 printf("\n\n\t\t");
175 exit(0);
176 }
177
178 break;//退出系统
179 default:{
180 system("cls");
181 printf("\n\n\n\n\n\t\t\t输入错误!\n\n\t\t\t");
182 system("pause");
183 }
184 }
185 }
186 return 0;
187 }
188
189 void menu()//主菜单
190 {
191 int i,j;
192 system("cls");
193 system("color 3F");
194 printf("\t\t ┌───────────────┐\n");
195 printf("\t\t │ 尊敬的管理员! │\n");
196 printf("\t\t │欢迎您使用小型停车场管理系统!│\n");
197 printf("\t\t └───────────────┘\n");
198 printf("\t\t┌──────────────────┐\n");
199 for(j=0;j<N/9;j++)
200 {
201 printf("\t\t│");
202 for(i=j*9;i<j*9+9;i++)
203 {
204 if(place[i]==-1) printf(" ◇ ");
205 else printf(" ◆ ");
206 }
207 printf("│\n");
208
209 printf("\t\t│");
210 for(i=j*9;i<j*9+9;i++)
211 {
212 printf(" %2d ",i+1);
213 }
214 printf("│\n");
215 }
216 printf("\t\t└──────────────────┘\n");
217 printf("\t\t┌──────────────────┐\n");
218 printf("\t\t│ 当前还剩余%d个车位! │\n",N-count);
219 printf("\t\t│【1】停车记录 【2】取车记录 │\n");
220 printf("\t\t│【3】现金充值 【4】显示余额 │\n");
221 printf("\t\t│【5】盈利查询 【6】用户注册记录 │\n");
222 printf("\t\t│【7】调整停车单价【8】数据备份 │\n");
223 printf("\t\t│【9】用户注销记录【0】退出 │\n");
224 printf("\t\t└──────────────────┘\n");
225 printf("\n\n\t\t按相应数字键,回车确认: ");
226 }
227
228 void parking()//停车记录
229 {
230 int id,i,f1,f2=0,a;
231 if(count==N)
232 {
233 printf("当前车位已满!\n"); return;
234 }
235 while(1)
236 {
237 f1=0;
238 while(1)
239 {
240 printf("\n\t\t请将输入器递给会员,并提醒会员输入id:");
241 scanf("%d",&id);
242 fflush(stdin);
243 if(id>=1&&id<=y&&user[id].flag)
244 {
245 break;
246 }
247 else
248 {
249 system("cls");
250 printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t没有该id。\n\n\t\t\t如果不是会员,请提醒车主先注册!\n\n\t\t\t输入'1'重新输入,输入'0'退出!\n\n");
251 printf("\t\t\t请输入:");
252 scanf("%d",&a);
253 if(a)
254 continue;
255 else
256 return;
257 }
258 }
259
260 for(i=0; i<N; i++)
261 {
262 if(place[i]==id)
263 {
264 printf("\n\t\t输入错误!请提醒会员重新输入\n");
265 f1=1;
266 break;
267 }
268 }
269 if(f1)
270 continue;
271 if(user[id].money<=0)
272 {
273 system("cls");
274 printf("\n\n\n\n\n\t\t\t余额不足,请提醒会员充值!\n\n\n\t\t\t");
275 system("pause");
276 }
277 for(i=0; i<N; i++)
278 {
279 if(place[i]==-1)
280 {
281 printf("\n\t\t请提醒该会员此车可停在%d号车位!\n\n",i+1); //系统自动为会员分配车位
282 place[i]=id;
283 count++;
284 f2=1;
285 break;
286 }
287 else
288 continue;
289 }
290 if(f2)
291 break;
292 }
293 user[id].start = time(NULL); //记录当前系统时间为停车时间
294 printf("\t\t");
295 system("pause");
296 }
297
298 void take()//取车记录
299 {
300 int id,i,t,a;
301 while(1)
302 {
303 printf("\n\t\t请将输入器递给会员,并提醒会员输入id:");
304 scanf("%d",&id);
305 fflush(stdin);
306 if(id>=1&&id<=y&&user[id].flag)
307 break;
308 else
309 {
310 printf("\n\t\t没有该id。\n\n\t\t如果不是会员,请提醒车主先注册!\n\n\t\t输入'1'重新输入,输入'0'退出!\n\n");
311 printf("\t\t请输入:");
312 scanf("%d",&a);
313 if(a)
314 continue;
315 else
316 return;
317 }
318 }
319 while(1)
320 {
321 for(i=0; i<N; i++)
322 {
323 if(place[i]==id)
324 {
325 place[i]=-1; break;
326 }
327 }
328 if(i>=N)
329 {
330 system("cls");
331 printf("\n\n\n\n\n\n\n\n\n\t\t该会员没有存车!\n");
332 break;
333 }
334 count--;
335 user[id].end = time(NULL);//记录当前系统时间为取车时间
336 user[id].money-=(difftime(user[id].end ,user[id].start)/3600)*price;//用difftime计算时间差
337 sum+=difftime(user[id].end ,user[id].start)/3600;
338 t=sum;
339 if(sum-t>0)
340 {
341 sum=t+price;
342 user[id].money-=(price-1);
343 } //不足一个小时,按一个小时计费
344 printf("\n\t\t该会员车已离开!\n\n\t\t%d车位已空!\n",i+1);
345 break;
346 }
347 printf("\n\t\t");
348 system("pause");
349 }
350
351 void amoney()//现金充值
352 {
353 int id,x;
354 printf("\n\t\t请将输入器递给会员,并提醒会员输入id: ");
355 scanf("%d",&id);
356 fflush(stdin);
357 if(user[id].flag)
358 {
359 printf("\n\t\t请提醒会员,输入充值的钱数: ");
360 scanf("%d",&x);
361 fflush(stdin);
362 user[id].money+=x;
363 printf("\n\t\t");
364 system("pause");
365 system("cls");
366 printf("\n\n\t\t ¥\n");
367 printf("\t\t ¥¥¥\n");
368 printf("\t\t ¥¥¥¥¥\n");
369 printf("\t\t ¥¥¥¥¥¥¥\n");
370 printf("\t\t ¥¥¥¥¥¥¥¥¥\n");
371 printf("\t\t ¥¥¥¥¥¥¥¥¥¥¥\n");
372 printf("\t\t ¥¥¥¥¥¥¥¥¥¥¥¥¥\n");
373 printf("\t\t ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n");
374 printf("\t\t¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n");
375 printf("\n\n\t\t充值成功!\n\n\t\t请提醒该会员的余额为:%d\n\n",user[id].money);
376 printf("\n\t\t");
377 system("pause");
378 }
379 }
380
381 void show()//显示会员信息
382 {
383 int id;
384 printf("\n\t\t请将输入器递给会员,并提醒会员输入id:");
385 scanf("%d",&id);
386 fflush(stdin);
387 if(user[id].flag)
388 {
389 system("cls");
390 printf("\n\n\t\t ¥\n");
391 printf("\t\t ¥¥¥\n");
392 printf("\t\t ¥¥¥¥¥\n");
393 printf("\t\t ¥¥¥¥¥¥¥\n");
394 printf("\t\t ¥¥¥¥¥¥¥¥¥\n");
395 printf("\t\t ¥¥¥¥¥¥¥¥¥¥¥\n");
396 printf("\t\t ¥¥¥¥¥¥¥¥¥¥¥¥¥\n");
397 printf("\t\t ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n");
398 printf("\t\t¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n");
399 printf("\n\n\t\t请提示该会员信息。\n\n");
400 printf("\t\tid 姓名 电话 车牌号 余额\n\n");
401 printf("\t\t%d %s %s %s %d\n",user[id].id,user[id].name,user[id].tele,user[id].num,user[id].money);
402 printf("\n\t\t");
403 system("pause");
404 }
405 }
406
407 void profit()//盈利查询
408 {
409 printf("\n\t\t总盈利额为:%.0lf元\n\n",sum);
410 printf("\t\t");
411 system("pause");
412 }
413
414 void regist()//新用户注册记录
415 {
416 x++;
417 y++;
418 int id=y;
419 //id--;
420 user[id].id=id;
421 user[id].money=0;
422 user[id].flag=1;
423
424 printf("\n\t\t请递给车主输入器,并提醒车主填写基本信息!\n");
425 printf("\n\t\t姓名:\t"); scanf("%s",user[id].name);
426 fflush(stdin);
427 printf("\n\t\t电话:\t"); scanf("%s",user[id].tele);
428 fflush(stdin);
429 printf("\n\t\t车牌号:\t"); scanf("%s",user[id].num);
430 fflush(stdin);
431
432 FILE *fp;
433 fp=fopen("D:\\data.txt","a");
434 fprintf(fp,"%d %s %s %s %d\n",user[id].id,user[id].name,user[id].tele,user[id].num,user[id].money);
435 fclose(fp);
436 system("cls");
437
438 printf("\n\n\t\t\n");
439 printf("\t\t\t .----------. \n");
440 printf("\t\t\t ( )\n");
441 printf("\t\t\t _(.-. _...._ .-.)\n");
442 printf("\t\t\t (_)`-' __()__ `-'(_)\n");
443 printf("\t\t\t (....__|LESTER|__....)\n");
444 printf("\t\t\t | | ~~~~~~ | |\n");
445 printf("\t\t\t `-' `-'\n");
446 printf("\n\n\n\t\t\t\t注册成功!\n\n");
447 printf("\t\t\t提醒该会员,该会员编号为:%d\n",id);
448 printf("\n\t\t\t");
449 system("pause");
450 }
451
452 void adjust()//调整停车单价
453 {
454 int p;
455 printf("\n\t\t请输入调整后的停车价格:");
456 scanf("%d",&p);
457 fflush(stdin);
458 price=p;
459 system("cls");
460 printf("\n\n\t\t ¥\n");
461 printf("\t\t ¥¥¥\n");
462 printf("\t\t ¥¥¥¥¥\n");
463 printf("\t\t ¥¥¥¥¥¥¥\n");
464 printf("\t\t ¥¥¥¥¥¥¥¥¥\n");
465 printf("\t\t ¥¥¥¥¥¥¥¥¥¥¥\n");
466 printf("\t\t ¥¥¥¥¥¥¥¥¥¥¥¥¥\n");
467 printf("\t\t ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n");
468 printf("\t\t¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n");
469 printf("\n\n\t\t\t调整成功!\n\n\t\t调整后的价格为每小时%d元!\n",p);
470 printf("\n\t\t");
471 system("pause");
472 }
473
474 void backup()//数据备份
475 {
476 int i,j;
477 system("cls");
478 printf("\n\n\t\t欢迎进入数据备份系统!\n\n");
479 char ch[2];
480 char s[25];
481 char str[] = "copy d:\\data.txt ";
482 printf("\n\t\t请输入需要备份的磁盘(如:c,d,e,f): ");
483 scanf("%s",ch);
484 fflush(stdin);
485 for(i=0; i<=10; i++)//用循环和图形模拟缓冲过程
486 {
487 system("cls");
488 printf("\n\n\n\n\n\n\n\n\n\n\t\t正在进行数据备份,请稍候 ……\n\n");
489 printf("\t\t\t 已完成%d%%\n\n\t\t",i*10);
490 for(j=0; j<i; j++)
491 printf(" ■ ");
492 for(j=i+1; j<=10; j++)
493 printf(" □ ");
494 Sleep(400);
495 }
496 printf("\n\n\n\t\t");
497
498 strcat(str,ch);
499 char str1[] = ":\\data2.txt";
500 strcat(str, str1);
501 "copy d:\\1.txt e:\\data2.txt";
502 system(str);
503 printf("\n\t\t");
504 printf("\t\t");
505 system("pause");
506 }
507
508 void del()//用户注销记录
509 {
510 int id;
511 printf("\n\t\t请将输入器递给会员,并提醒会员输入id:");
512 scanf("%d",&id);
513 fflush(stdin);
514 user[id].flag=0;
515 x--;
516 system("cls");
517 printf("\n\n\t\t\n");
518 printf("\t\t\t .----------. \n");
519 printf("\t\t\t ( )\n");
520 printf("\t\t\t _(.-. _...._ .-.)\n");
521 printf("\t\t\t (_)`-' __()__ `-'(_)\n");
522 printf("\t\t\t (....__|LESTER|__....)\n");
523 printf("\t\t\t | | ~~~~~~ | |\n");
524 printf("\t\t\t `-' `-'\n");
525 printf("\n\n\n\t\t\t请提醒,用户已注销!\n\n");
526 printf("\t\t\t");
527 system("pause");
528 }
529