一、項目
現有一建立辦公大廈,共有21層,共有四部電梯,所有電梯基本參數如下表所示:
電梯編号 | 可服務樓層 | 最大乘客數量 | 最大載重量 |
1 | 全部樓層 | 10 | 800 kg |
2 | 單層 | ||
3 | 雙層 | 20 | 1600 kg |
4 | 2000 kg |
其使用規定如下:
1、樓層号為0~20,其中0号為地下一層;
2、有樓層限制的電梯不在響應樓層停靠,如單雙層;
3、所有電梯采用統一按鈕控制
搭檔:崔松傑
崔松傑部落格位址:http://www.cnblogs.com/HCongjie
coding位址:https://coding.net/u/HCsongjie
二、項目要求
這個項目由我和崔松傑完成,由于我們别的語言學習不紮實,我和他決定由C語言來編寫。該程式由六個子程式構成,分别是一号電梯函數、二号電梯函數、三号電梯函數、四号電梯函數、二号電梯和三号電梯的輸出函數。前四個函數分别實作了電梯的調用,後兩個函數分别判斷是否是單雙層,函數剛開始設定了最大的承載人數和可以到達的樓層,進入之後先确定到達的樓層,到達後确定是否有人進入電梯,有人進入電梯,則判斷電梯是否可以到達該樓層。我們編寫的程式非常簡單,由于學的不是很精通,是以有很多的功能都沒有實作,我們以後會更加的努力學習和奮鬥。
三、對方性格評價
崔松傑對我的感覺工作認真,上進心強,刻苦鑽研,在困難面前不屈不撓,在我們程式設計遇到困難時,他總是到處翻閱資料,總是要找到解決的辦法。
四、過程總結和感想
通過這次的合作,讓我感到的自身的缺陷和不足,我本是一個不善于言談的人,通過了這次程式設計,加強了我和他人溝通的能力。其次忙碌了一個多星期,在我和他的共同努力下,我們總算将此程式設計出來。盡管不是自己獨立完成,但仍然很高興,因為在設計的過程中,讓我了解到要設計一個程式,查找資料是至關重要的,在他人的基礎上,再根據自己所學進行修改與調試,最後設計出自己想要的程式,這過程艱辛,但隻要你持之以恒,成功指日可待。
五、程式代碼
#include<stdio.h>
#include<time.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#define N 2000//定義延時輸出時間
struct elevator
{
int no;//電梯編号
int floor;//定義樓層
int outnumber;//定義人數
struct elevator*pNext;
};
struct elevator*Create(struct elevator*head)//建立連結清單
struct elevator*p1, *p2;
p1=p2=(struct elevator*)malloc(sizeof(struct elevator));
printf("\t\t請輸入樓層*回車繼續輸入*按-1表示結束");
scanf("%d",&p1->floor);
p1->pNext = NULL;
while (p1->floor > -1)
{
if (head== NULL)
head = p1;
else
p2->pNext = p1;
p2 = p1;
p1 = (struct elevator*)malloc(sizeof(struct elevator));
printf("\t\t請輸入樓層,按-1表示結束");
scanf("%d", &p1->floor);
}
free(p1); //申請到的沒錄入,是以釋放掉
p1 = NULL; //使指向空
p2->pNext = NULL; //到表尾了,指向空
printf("\t\t樓層輸入結束(END)\n");
return head;
}
void printf(struct elevator*head)//輸對外連結表
struct elevator *Tema;
Tema = head;
printf("\t\t電梯開始運作\n");
while (Tema != NULL)
Sleep(N);
printf("\a");
printf("\t\t到達您所輸入的樓層%30d樓\n",Tema->floor);
int a = 0;
printf("是否有請求*有請求請按1否則請按0");
scanf_s("%d",&a);
if (a == 1)
{
break;
}
printf("\n");
Tema = Tema->pNext;
void printfT(struct elevator*head)//二号電梯的輸出函數,判斷輸入是否為單層
struct elevator *two;
two = head;
while (two->floor%2!=0)
printf("\t\t到達您所輸入的樓層%30d樓\n", two->floor);
scanf_s("%d", &a);
two = two->pNext;
printf("\t\t您輸入有誤二号電梯隻提供單層服務\n");
void printfF(struct elevator*head)//三号電梯的輸出函數,判斷輸入是否為雙層
struct elevator *three;
three = head;
while (three->floor%2==0)
printf("\t\t到達您所輸入的樓層%30d樓\n", three->floor);
three = three->pNext;
printf("\t\t您輸入有誤三号電梯隻提供雙層服務\n");
int elevatorONE()//一号電梯函數
int a = 0;
struct elevator elevator1;
printf("\t\t\t歡迎使用一号電梯系統\n");
printf("\t請輸入一使用一号電梯系統*若想退出一号電梯系統請按2*");
while (a=1)
printf("\t\t\t請輸入人數;");
scanf_s("%d", &elevator1.outnumber);
if (elevator1.outnumber > 10 || elevator1.outnumber < 1)
{
printf("\t\t一号電梯最多承載人數為10人,請您諒解\n");
}
else
printf("\t\t提示**一号電梯提供1—20層的服務**\n");
struct elevator *head;
head = NULL;
head = Create(head);
printf(head);
printf("\t\t如果繼續請按1否則請按0");
printf("\t\t感謝使用一号電梯系統");
printf("\t\t如果繼續請按1否則請按0");
return 0;
int elevatorTWO()//二号電梯函數
int b = 0;
printf("\t\t\t歡迎使用二号電梯系統\n");
printf("\t請輸入一使用二号電梯系統*若想退出二号電梯系統請按2*");
while (b = 1)
scanf_s("%d", &b);
if (b == 1)
printf("\t\t二号電梯最多承載人數為10人,請您諒解\n");
printf("\t\t提示**二号電梯隻提供單層的服務**\n");
printfT(head);
printf("\t\t感謝使用二号電梯系統");
printf("\t\t如果繼續請按1否則請按0");
int elevatorTHREE()//三号電梯函數
int c= 0;
printf("\t\t\t歡迎使用三号電梯系統\n");
printf("\t請輸入一使用三号電梯系統*若想退出三号電梯系統請按2*");
while (c=1)
scanf_s("%d",&c);
if (c==1)
if (elevator1.outnumber > 20 || elevator1.outnumber < 1)
printf("\t\t三号電梯最多承載人數為20人,請您諒解\n");
printf("\t\t提示**三号電梯隻提供雙層的服務**\n");
printfF(head);
printf("\t\t感謝使用三号電梯系統");
int elevatorFOYR()//四号電梯函數
int d = 0;
while (d = 1)
scanf_s("%d", &d);
if (d == 1)
printf("\t\t四号号電梯最多承載人數為20人,請您諒解\n");
printf("\t\t提示**四号電梯隻提供雙層的服務**\n");
printf("\t\t感謝使用四号号電梯系統");
void main()
printf("\t\t*歡迎使用坑爹電梯系統*\n");
printf("\t\t*按1表示運作0表示結束*");
int h;
int x = 0;
while (x=1)
scanf_s("%d",&h);
if (h == 1)
printf("*請輸入電梯号碼(*一号和四号電梯為全樓層電梯*二号為單層*三樓為雙層電梯*)");
scanf_s("%d",&x);
switch (x)
case 1:elevatorONE();
break;
case 2:elevatorTWO();
case 3:elevatorTHREE();
case 4:elevatorFOYR();
default:
printf("\t\t*您輸入有誤電梯不能啟動*\n");
printf("感謝使用電梯系統");
運作結果圖