最终项目 停车场管理系统
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