结对编程项目--电梯调度(合作伙伴叶思维)
我们所完成的项目是电梯调度,具体要求如下:
一.项目以及合作伙伴
项目:现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示:
电梯编号 | 客服务楼层 | 最大乘客数量 | 最大载重量 |
1 | 全部楼层 | 10 | 800kg |
2 | 单层 | 10 | 800kg |
3 | 双层 | 20 | 1600kg |
4 | 全部楼层 | 20 | 2000kg |
其使用规定如下:
1.楼层号为0到20,其中0为地下一层。
2.有楼层限制的电梯不在响应楼层停靠,如单双层。
3.所有电梯采用统一按钮标志。
合作伙伴:叶思维博客网址http://www.cnblogs.com/ysw6
二.项目的需求和程序的设计
接到这个项目后,我就跟叶思维交流怎么去写,用什么语言去写和怎么去实现电梯的功能,经过一番交流,我们决定每个电梯写一个函数,每个函数去实现每个电梯的具体功能,写代码的过程是我们两个一起完成的,主函数与子函数分配合作,很快就写出了初始代码,之后经过修改和完善,最终写了800多行,由于对图形界面的相关知识了解比较少所以没有用到图形界面来显示电梯的运行过程。
三.对方性格评价
叶思维的责任心比较强,做事很认真,做起事来也很有耐心,在写程序过程的争执也是和谐的解决了,我们两个合作的很愉快,下面是我们合作编程时的照片
四.合作伙伴编程的习惯
叶思维在编程过程中有时候会出现一些小小的失误,但是在我们的一起合作下,小bug都被及时的解决了,我也是如此,在我们的互补之下,很顺利的完成了这个项目。
五.此次编程过程的体会和总结
此次编程是我第一次和别人一起合作完成,之前都是我自己去编程,遇到不会的问题就去百度,虽然这培养了自己的独立完成项目的能力,但是合作编程也是我们需要去培养的,让我们学会合作与交流,并且知道自己与他人的差别,促进自己以及伙伴超越对方,我们一起互帮互助的共同进步。
六.程序运行截图及源代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include <time.h> 4 int elevator1() 5 { 6 int floor[20]; 7 int i=0; 8 int j=0; 9 int t=0; 10 int p=0; 11 int c=0; 12 int weight[10]; 13 int s=0; 14 int h; 15 int l; 16 int p1; 17 int m; 18 int x; 19 srand(time(NULL)); 20 x=rand()%20; 21 while(1) 22 { 23 printf("1.上楼\n"); 24 printf("2.下楼\n"); 25 printf("3.退出\n"); 26 printf("请选择(1-3):"); 27 28 scanf("%d",&c); 29 switch(c) 30 { 31 case 1: 32 printf("此电梯可服务全部楼层\n"); 33 printf("此电梯最大乘客数量10人,最大载重量800KG\n"); 34 printf("此时电梯正在%d层,稍作等待\n",x); 35 printf("请输入进入电梯的人数:\n"); 36 scanf("%d",&p); 37 printf("他们的体重依次是:\n"); 38 for(i=0;i<p;i++) 39 { 40 printf("第%d个人: ",i+1); 41 scanf("%d",&weight[i]); 42 s=s+weight[i]; 43 if(s>800) 44 { 45 printf("超重,请下去一个人\n"); 46 s=s-weight[i]; 47 p=p-1; 48 } 49 } 50 printf("载重量为%dkg,未超重\n",s); 51 52 printf("请输入你想去的楼层:\n"); 53 for(i=0;i<p;i++) 54 { 55 printf("第%d个人: ",i+1); 56 scanf("%d",&floor[i]); 57 } 58 for(j=0;j<p-1;j++) 59 for(i=0;i<p-1-j;i++) 60 { 61 if(floor[i]>floor[i+1]) 62 { 63 t=floor[i]; 64 floor[i]=floor[i+1]; 65 floor[i+1]=t; 66 } 67 } 68 printf("将依次到达下列楼层:\n"); 69 70 for(j=0;j<p;j++) 71 { 72 printf("%d\n",floor[j]); 73 printf("已到达%d层,走好\n",floor[j]); 74 printf("此层有没有人进电梯?请选择:1-2\n"); 75 printf("1.有人\n"); 76 printf("2.无人\n"); 77 scanf("%d",&h); 78 79 switch(h) 80 { 81 case 1: 82 printf("请进电梯\n"); 83 printf("进入电梯人数:\n"); 84 scanf("%d",&p1); 85 printf("依次的体重:\n"); 86 for(l=0;l<p1;l++) 87 { 88 scanf("%d",&weight[l]); 89 s=s+weight[l]; 90 if(s>800) 91 { 92 printf("超重,请下去一个人\n"); 93 s=s-weight[l]; 94 p1=p1-1; 95 } 96 97 } 98 printf("载重量为%dkg,未超重\n",s); 99 printf("请输入想去的楼层:\n"); 100 for(m=0;m<p1;m++) 101 { 102 scanf("%d",&floor[m]); 103 printf("已到达%d层,走好\n",floor[m]); 104 continue; 105 106 } 107 break; 108 109 110 case 2: 111 printf("关闭电梯门\n"); 112 break; 113 } 114 115 116 117 } 118 119 break; 120 121 122 123 case 2: 124 printf("此电梯可服务全部楼层\n"); 125 printf("此电梯最大乘客数量10人,最大载重量800KG\n"); 126 printf("此时电梯正在%d层,稍作等待\n",x); 127 printf("请输入进入电梯的人数:\n"); 128 scanf("%d",&p); 129 printf("他们的体重依次是:\n"); 130 for(i=0;i<p;i++) 131 { 132 printf("第%d个人: ",i+1); 133 scanf("%d",&weight[i]); 134 s=s+weight[i]; 135 if(s>800) 136 { 137 printf("超重,请下去一个人\n"); 138 s=s-weight[i]; 139 p=p-1; 140 } 141 } 142 printf("载重量为%dkg,未超重\n",s); 143 144 printf("请输入你想去的楼层:\n"); 145 for(i=0;i<p;i++) 146 { 147 printf("第%d个人: ",i+1); 148 scanf("%d",&floor[i]); 149 } 150 for(j=0;j<p-1;j++) 151 for(i=0;i<p-1-j;i++) 152 { 153 if(floor[i]<floor[i+1]) 154 { 155 t=floor[i]; 156 floor[i]=floor[i+1]; 157 floor[i+1]=t; 158 } 159 } 160 printf("将依次到达下列楼层:\n"); 161 for(j=0;j<p;j++) 162 { 163 printf("%d\n",floor[j]); 164 printf("已到达%d层,走好\n",floor[j]); 165 printf("此层有没有人进电梯?请选择:1-2\n"); 166 printf("1.有人\n"); 167 printf("2.无人\n"); 168 scanf("%d",&h); 169 170 switch(h) 171 { 172 case 1: 173 printf("请进电梯\n"); 174 printf("进入电梯人数:\n"); 175 scanf("%d",&p1); 176 printf("依次的体重:\n"); 177 for(l=0;l<p1;l++) 178 { 179 scanf("%d",&weight[l]); 180 s=s+weight[l]; 181 if(s>800) 182 { 183 printf("超重,请下去一个人\n"); 184 s=s-weight[l]; 185 p1=p1-1; 186 } 187 188 } 189 printf("载重量为%dkg,未超重\n",s); 190 printf("请输入想去的楼层:\n"); 191 for(m=0;m<p1;m++) 192 { 193 scanf("%d",&floor[m]); 194 printf("已到达%d层,走好\n",floor[m]); 195 continue; 196 197 } 198 break; 199 case 2: 200 printf("关闭电梯门\n"); 201 break; 202 } 203 } 204 break; 205 case 3: 206 return 0; 207 break; 208 } 209 } 210 } 211 212 213 int elevator2() 214 { 215 216 int floor[20]; 217 int i=0; 218 int j=0; 219 int t; 220 int p; 221 int c; 222 int h; 223 int weight[10]; 224 int s=0; 225 int l; 226 int p1; 227 int m; 228 229 230 while(1) 231 { 232 printf("1.上楼\n"); 233 printf("2.下楼\n"); 234 printf("3.退出\n"); 235 printf("请选择(1-3):"); 236 237 scanf("%d",&c); 238 switch(c) 239 { 240 case 1: 241 printf("此电梯只服务单号楼层\n"); 242 printf("此电梯最大乘客数量10人,最大载重量800KG\n"); 243 printf("请输入进入电梯的人数:\n"); 244 scanf("%d",&p); 245 printf("他们的体重依次是:\n"); 246 for(i=0;i<p;i++) 247 { 248 printf("第%d个人: ",i+1); 249 scanf("%d",&weight[i]); 250 s=s+weight[i]; 251 if(s>800) 252 { 253 printf("超重,请下去一个人"); 254 s=s-weight[i]; 255 p=p-1; 256 } 257 } 258 printf("载重量为%dkg,未超重\n",s); 259 260 printf("请输入你想去的单号楼层:\n"); 261 for(i=0;i<p;i++) 262 { 263 printf("第%d个人: ",i+1); 264 scanf("%d",&floor[i]); 265 } 266 for(j=0;j<p-1;j++) 267 for(i=0;i<p-1-j;i++) 268 { 269 if(floor[i]>floor[i+1]) 270 { 271 t=floor[i]; 272 floor[i]=floor[i+1]; 273 floor[i+1]=t; 274 } 275 } 276 printf("将依次到达下列楼层:\n"); 277 for(j=0;j<p;j++) 278 { 279 printf("%d\n",floor[j]); 280 printf("已到达%d层,走好\n",floor[j]); 281 printf("此层有没有人进电梯?请选择:1-2\n"); 282 printf("1.有人\n"); 283 printf("2.无人\n"); 284 scanf("%d",&h); 285 286 switch(h) 287 { 288 case 1: 289 printf("请进电梯\n"); 290 printf("进入电梯人数:\n"); 291 scanf("%d",&p1); 292 printf("依次的体重:\n"); 293 for(l=0;l<p1;l++) 294 { 295 scanf("%d",&weight[l]); 296 s=s+weight[l]; 297 if(s>800) 298 { 299 printf("超重,请下去一个人\n"); 300 s=s-weight[l]; 301 p1=p1-1; 302 } 303 304 } 305 printf("载重量为%dkg,未超重\n",s); 306 printf("请输入想去的楼层:\n"); 307 for(m=0;m<p1;m++) 308 { 309 scanf("%d",&floor[m]); 310 printf("已到达%d层,走好\n",floor[m]); 311 continue; 312 313 } 314 break; 315 case 2: 316 printf("关闭电梯门\n"); 317 break; 318 } 319 } 320 break; 321 322 case 2: 323 324 printf("此电梯只服务单号楼层\n"); 325 printf("此电梯最大乘客数量10人,最大载重量800KG\n"); 326 printf("请输入进入电梯的人数:\n"); 327 scanf("%d",&p); 328 printf("他们的体重依次是:\n"); 329 for(i=0;i<p;i++) 330 { 331 printf("第%d个人: ",i+1); 332 scanf("%d",&weight[i]); 333 s=s+weight[i]; 334 if(s>800) 335 { 336 printf("超重,请下去一个人"); 337 s=s-weight[i]; 338 p=p-1; 339 } 340 } 341 printf("载重量为%dkg,未超重\n",s); 342 343 printf("请输入你想去的单号楼层:\n"); 344 for(i=0;i<p;i++) 345 { 346 printf("第%d个人: ",i+1); 347 scanf("%d",&floor[i]); 348 } 349 for(j=0;j<p-1;j++) 350 for(i=0;i<p-1-j;i++) 351 { 352 if(floor[i]<floor[i+1]) 353 { 354 t=floor[i]; 355 floor[i]=floor[i+1]; 356 floor[i+1]=t; 357 } 358 } 359 printf("将依次到达下列楼层:\n"); 360 for(j=0;j<p;j++) 361 { 362 printf("%d\n",floor[j]); 363 printf("已到达%d层,走好\n",floor[j]); 364 printf("此层有没有人进电梯?请选择:1-2\n"); 365 printf("1.有人\n"); 366 printf("2.无人\n"); 367 scanf("%d",&h); 368 369 switch(h) 370 { 371 case 1: 372 printf("请进电梯\n"); 373 printf("进入电梯人数:\n"); 374 scanf("%d",&p1); 375 printf("依次的体重:\n"); 376 for(l=0;l<p1;l++) 377 { 378 scanf("%d",&weight[l]); 379 s=s+weight[l]; 380 if(s>800) 381 { 382 printf("超重,请下去一个人\n"); 383 s=s-weight[l]; 384 p1=p1-1; 385 } 386 387 } 388 printf("载重量为%dkg,未超重\n",s); 389 printf("请输入想去的楼层:\n"); 390 for(m=0;m<p1;m++) 391 { 392 scanf("%d",&floor[m]); 393 printf("已到达%d层,走好\n",floor[m]); 394 continue; 395 396 } 397 break; 398 case 2: 399 printf("关闭电梯门\n"); 400 break; 401 } 402 } 403 break; 404 case 3: 405 return 0; 406 break; 407 408 } 409 } 410 } 411 412 413 414 int elevator3() 415 { 416 int floor[20]; 417 int i=0; 418 int j=0; 419 int t; 420 int p; 421 int c; 422 int weight[20]; 423 int s=0; 424 int h; 425 int l; 426 int p1; 427 int m; 428 while(1) 429 { 430 printf("1.上楼\n"); 431 printf("2.下楼\n"); 432 printf("3.退出\n"); 433 printf("请选择(1-3):"); 434 435 scanf("%d",&c); 436 switch(c) 437 { 438 case 1: 439 printf("此电梯只服务双号楼层\n"); 440 printf("此电梯最大乘客数量20人,最大载重量1600KG\n"); 441 printf("请输入进入电梯的人数:\n"); 442 scanf("%d",&p); 443 printf("他们的体重依次是:\n"); 444 for(i=0;i<p;i++) 445 { 446 printf("第%d个人: ",i+1); 447 scanf("%d",&weight[i]); 448 s=s+weight[i]; 449 if(s>1600) 450 { 451 printf("超重,请下去一个人"); 452 s=s-weight[i]; 453 p=p-1; 454 } 455 } 456 printf("载重量为%dkg,未超重\n",s); 457 458 printf("请输入你想去的双号楼层:\n"); 459 for(i=0;i<p;i++) 460 { 461 printf("第%d个人: ",i+1); 462 scanf("%d",&floor[i]); 463 } 464 for(j=0;j<p-1;j++) 465 for(i=0;i<p-1-j;i++) 466 { 467 if(floor[i]>floor[i+1]) 468 { 469 t=floor[i]; 470 floor[i]=floor[i+1]; 471 floor[i+1]=t; 472 } 473 } 474 printf("将依次到达下列楼层:\n"); 475 for(j=0;j<p;j++) 476 { 477 printf("%d\n",floor[j]); 478 printf("已到达%d层,走好\n",floor[j]); 479 printf("此层有没有人进电梯?请选择:1-2\n"); 480 printf("1.有人\n"); 481 printf("2.无人\n"); 482 scanf("%d",&h); 483 484 switch(h) 485 { 486 case 1: 487 printf("请进电梯\n"); 488 printf("进入电梯人数:\n"); 489 scanf("%d",&p1); 490 printf("依次的体重:\n"); 491 for(l=0;l<p1;l++) 492 { 493 scanf("%d",&weight[l]); 494 s=s+weight[l]; 495 if(s>800) 496 { 497 printf("超重,请下去一个人\n"); 498 s=s-weight[l]; 499 p1=p1-1; 500 } 501 502 } 503 printf("载重量为%dkg,未超重\n",s); 504 printf("请输入想去的楼层:\n"); 505 for(m=0;m<p1;m++) 506 { 507 scanf("%d",&floor[m]); 508 printf("已到达%d层,走好\n",floor[m]); 509 continue; 510 511 } 512 break; 513 case 2: 514 printf("关闭电梯门\n"); 515 break; 516 } 517 } 518 break; 519 520 521 case 2: 522 printf("此电梯只服务双号楼层\n"); 523 printf("此电梯最大乘客数量20人,最大载重量1600KG\n"); 524 printf("请输入进入电梯的人数:\n"); 525 scanf("%d",&p); 526 printf("他们的体重依次是:\n"); 527 for(i=0;i<p;i++) 528 { 529 printf("第%d个人: ",i+1); 530 scanf("%d",&weight[i]); 531 s=s+weight[i]; 532 if(s>1600) 533 { 534 printf("超重,请下去一个人"); 535 s=s-weight[i]; 536 p=p-1; 537 } 538 } 539 printf("载重量为%dkg,未超重\n",s); 540 541 printf("请输入你想去的双号楼层:\n"); 542 for(i=0;i<p;i++) 543 { 544 printf("第%d个人: ",i+1); 545 scanf("%d",&floor[i]); 546 } 547 for(j=0;j<p-1;j++) 548 for(i=0;i<p-1-j;i++) 549 { 550 if(floor[i]<floor[i+1]) 551 { 552 t=floor[i]; 553 floor[i]=floor[i+1]; 554 floor[i+1]=t; 555 } 556 } 557 printf("将依次到达下列楼层:\n"); 558 for(j=0;j<p;j++) 559 { 560 printf("%d\n",floor[j]); 561 printf("已到达%d层,走好\n",floor[j]); 562 printf("此层有没有人进电梯?请选择:1-2\n"); 563 printf("1.有人\n"); 564 printf("2.无人\n"); 565 scanf("%d",&h); 566 567 switch(h) 568 { 569 case 1: 570 printf("请进电梯\n"); 571 printf("进入电梯人数:\n"); 572 scanf("%d",&p1); 573 printf("依次的体重:\n"); 574 for(l=0;l<p1;l++) 575 { 576 scanf("%d",&weight[l]); 577 s=s+weight[l]; 578 if(s>800) 579 { 580 printf("超重,请下去一个人\n"); 581 s=s-weight[l]; 582 p1=p1-1; 583 } 584 585 } 586 printf("载重量为%dkg,未超重\n",s); 587 printf("请输入想去的楼层:\n"); 588 for(m=0;m<p1;m++) 589 { 590 scanf("%d",&floor[m]); 591 printf("已到达%d层,走好\n",floor[m]); 592 continue; 593 594 } 595 break; 596 case 2: 597 printf("关闭电梯门\n"); 598 break; 599 } 600 } 601 break; 602 case 3: 603 return 0; 604 break; 605 606 } 607 } 608 } 609 610 611 int elevator4() 612 { 613 int floor[20]; 614 int i=0; 615 int j=0; 616 int t; 617 int p; 618 int c; 619 int weight[20]; 620 int s=0; 621 int h; 622 int x; 623 int l; 624 int p1; 625 int m; 626 srand(time(NULL)); 627 x=rand()%20; 628 while(1) 629 { 630 printf("1.上楼\n"); 631 printf("2.下楼\n"); 632 printf("3.退出\n"); 633 printf("请选择(1-3):"); 634 635 scanf("%d",&c); 636 switch(c) 637 { 638 case 1: 639 printf("此电梯可服务全部楼层\n"); 640 printf("此电梯最大乘客数量20人,最大载重量2000KG\n"); 641 printf("此时电梯正在%d层,稍作等待\n",x); 642 printf("请输入进入电梯的人数:\n"); 643 scanf("%d",&p); 644 printf("他们的体重依次是:\n"); 645 for(i=0;i<p;i++) 646 { 647 printf("第%d个人: ",i+1); 648 scanf("%d",&weight[i]); 649 s=s+weight[i]; 650 if(s>2000) 651 { 652 printf("超重,请下去一个人"); 653 s=s-weight[p]; 654 p=p-1; 655 } 656 } 657 printf("载重量为%dkg,未超重\n",s); 658 659 660 printf("请输入你想去的楼层:\n"); 661 for(i=0;i<p;i++) 662 { 663 printf("第%d个人: ",i+1); 664 scanf("%d",&floor[i]); 665 } 666 for(j=0;j<p-1;j++) 667 for(i=0;i<p-1-j;i++) 668 { 669 if(floor[i]>floor[i+1]) 670 { 671 t=floor[i]; 672 floor[i]=floor[i+1]; 673 floor[i+1]=t; 674 } 675 } 676 printf("将依次到达下列楼层:\n"); 677 for(j=0;j<p;j++) 678 { 679 printf("%d\n",floor[j]); 680 printf("已到达%d层,走好\n",floor[j]); 681 printf("此层有没有人进电梯?请选择:1-2\n"); 682 printf("1.有人\n"); 683 printf("2.无人\n"); 684 scanf("%d",&h); 685 686 switch(h) 687 { 688 case 1: 689 printf("请进电梯\n"); 690 printf("进入电梯人数:\n"); 691 scanf("%d",&p1); 692 printf("依次的体重:\n"); 693 for(l=0;l<p1;l++) 694 { 695 scanf("%d",&weight[l]); 696 s=s+weight[l]; 697 if(s>800) 698 { 699 printf("超重,请下去一个人\n"); 700 s=s-weight[l]; 701 p1=p1-1; 702 } 703 704 } 705 printf("载重量为%dkg,未超重\n",s); 706 printf("请输入想去的楼层:\n"); 707 for(m=0;m<p1;m++) 708 { 709 scanf("%d",&floor[m]); 710 printf("已到达%d层,走好\n",floor[m]); 711 continue; 712 713 } 714 break; 715 case 2: 716 printf("关闭电梯门\n"); 717 break; 718 } 719 } 720 break; 721 722 723 case 2: 724 725 726 printf("此电梯服务全部楼层\n"); 727 printf("此电梯最大乘客数量20人,最大载重量2000KG\n"); 728 printf("此时电梯正在%d层,稍作等待\n",x); 729 printf("请输入进入电梯的人数:\n"); 730 scanf("%d",&p); 731 printf("他们的体重依次是:\n"); 732 for(i=0;i<p;i++) 733 { 734 printf("第%d个人: ",i+1); 735 scanf("%d",&weight[i]); 736 s=s+weight[i]; 737 if(s>2000) 738 { 739 printf("超重,请下去一个人"); 740 s=s-weight[i]; 741 p=p-1; 742 } 743 744 } 745 printf("载重量为%dkg,未超重\n",s); 746 747 printf("请输入你想去的楼层:\n"); 748 for(i=0;i<p;i++) 749 { 750 printf("第%d个人: ",i+1); 751 scanf("%d",&floor[i]); 752 } 753 for(j=0;j<p-1;j++) 754 for(i=0;i<p-1-j;i++) 755 { 756 if(floor[i]<floor[i+1]) 757 { 758 t=floor[i]; 759 floor[i]=floor[i+1]; 760 floor[i+1]=t; 761 } 762 } 763 printf("将依次到达下列楼层:\n"); 764 for(j=0;j<p;j++) 765 { 766 printf("%d\n",floor[j]); 767 printf("已到达%d层,走好\n",floor[j]); 768 printf("此层有没有人进电梯?请选择:1-2\n"); 769 printf("1.有人\n"); 770 printf("2.无人\n"); 771 scanf("%d",&h); 772 773 switch(h) 774 { 775 case 1: 776 printf("请进电梯\n"); 777 printf("进入电梯人数:\n"); 778 scanf("%d",&p1); 779 printf("依次的体重:\n"); 780 for(l=0;l<p1;l++) 781 { 782 scanf("%d",&weight[l]); 783 s=s+weight[l]; 784 if(s>800) 785 { 786 printf("超重,请下去一个人\n"); 787 s=s-weight[l]; 788 p1=p1-1; 789 } 790 791 } 792 printf("载重量为%dkg,未超重\n",s); 793 printf("请输入想去的楼层:\n"); 794 for(m=0;m<p1;m++) 795 { 796 scanf("%d",&floor[m]); 797 printf("已到达%d层,走好\n",floor[m]); 798 continue; 799 800 } 801 break; 802 case 2: 803 printf("关闭电梯门\n"); 804 break; 805 } 806 } 807 break; 808 case 3: 809 return 0; 810 break; 811 } 812 } 813 } 814 815 void main() 816 { 817 int a; 818 while(1) 819 { 820 821 printf("欢迎使用电梯\n"); 822 printf("1.乘坐1号电梯\n"); 823 printf("2.乘坐2号电梯\n"); 824 printf("3.乘坐3号电梯\n"); 825 printf("4.乘坐4号电梯\n"); 826 printf("5.退出\n"); 827 printf("请选择(1-5):"); 828 829 scanf("%d",&a); 830 831 getchar(); 832 833 switch(a) 834 835 { 836 case 1: 837 elevator1(); 838 break; 839 case 2: 840 elevator2(); 841 break; 842 843 case 3: 844 elevator3(); 845 break; 846 case 4: 847 elevator4(); 848 break; 849 case 5: 850 exit(0); 851 break; 852 } 853 } 854 }