一、專案
現有一新建辦公大廈,共有21層,共有四部電梯,所有電梯基本引數如下表所示:
電梯編號 |
可服務樓層 |
最大乘客數量 |
最大載重量 |
1 |
全部樓層 |
10 |
800 kg |
2 |
單層 |
10 |
800 kg |
3 |
雙層 |
20 |
1600 kg |
4 |
全部樓層 |
20 |
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;
}
else
{
printf("\n");
Tema = Tema->pNext;
}
}
}
void printfT(struct elevator*head)//二號電梯的輸出函式,判斷輸入是否為單層
{
struct elevator *two;
two = head;
printf("\t\t電梯開始執行\n");
while (two->floor%2!=0)
{
Sleep(N);
printf("\a");
printf("\t\t到達您所輸入的樓層%30d樓\n", two->floor);
printf("是否有請求*有請求請按1否則請按0");
int a = 0;
scanf_s("%d", &a);
if (a == 1)
{
break;
}
else
{
printf("\n");
two = two->pNext;
}
}
printf("\t\t您輸入有誤二號電梯只提供單層服務\n");
}
void printfF(struct elevator*head)//三號電梯的輸出函式,判斷輸入是否為雙層
{
struct elevator *three;
three = head;
printf("\t\t電梯開始執行\n");
while (three->floor%2==0)
{
Sleep(N);
printf("\a");
printf("\t\t到達您所輸入的樓層%30d樓\n", three->floor);
printf("是否有請求*有請求請按1否則請按0");
int a = 0;
scanf_s("%d", &a);
if (a == 1)
{
break;
}
else
{
printf("\n");
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)
{
scanf_s("%d", &a);
if (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");
}
}
else
break;
}
printf("\t\t感謝使用一號電梯系統");
printf("\t\t如果繼續請按1否則請按0");
return 0;
}
int elevatorTWO()//二號電梯函式
{
int b = 0;
struct elevator elevator1;
printf("\t\t\t歡迎使用二號電梯系統\n");
printf("\t請輸入一使用二號電梯系統*若想退出二號電梯系統請按2*");
while (b = 1)
{
scanf_s("%d", &b);
if (b == 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提示**二號電梯只提供單層的服務**\n");
struct elevator *head;
head = NULL;
head = Create(head);
printfT(head);
printf("\t\t如果繼續請按1否則請按0");
}
}
else
break;
}
printf("\t\t感謝使用二號電梯系統");
printf("\t\t如果繼續請按1否則請按0");
return 0;
}
int elevatorTHREE()//三號電梯函式
{
int c= 0;
struct elevator elevator1;
printf("\t\t\t歡迎使用三號電梯系統\n");
printf("\t請輸入一使用三號電梯系統*若想退出三號電梯系統請按2*");
while (c=1)
{
scanf_s("%d",&c);
if (c==1)
{
printf("\t\t\t請輸入人數;");
scanf_s("%d", &elevator1.outnumber);
if (elevator1.outnumber > 20 || elevator1.outnumber < 1)
{
printf("\t\t三號電梯最多承載人數為20人,請您諒解\n");
}
else
{
printf("\t\t提示**三號電梯只提供雙層的服務**\n");
struct elevator *head;
head = NULL;
head = Create(head);
printfF(head);
printf("\t\t如果繼續請按1否則請按0");
}
}
else
break;
}
printf("\t\t感謝使用三號電梯系統");
printf("\t\t如果繼續請按1否則請按0");
return 0;
}
int elevatorFOYR()//四號電梯函式
{
int d = 0;
struct elevator elevator1;
printf("\t\t\t歡迎使用三號電梯系統\n");
printf("\t請輸入一使用三號電梯系統*若想退出三號電梯系統請按2*");
while (d = 1)
{
scanf_s("%d", &d);
if (d == 1)
{
printf("\t\t\t請輸入人數;");
scanf_s("%d", &elevator1.outnumber);
if (elevator1.outnumber > 20 || elevator1.outnumber < 1)
{
printf("\t\t四號號電梯最多承載人數為20人,請您諒解\n");
}
else
{
printf("\t\t提示**四號電梯只提供雙層的服務**\n");
struct elevator *head;
head = NULL;
head = Create(head);
printf(head);
printf("\t\t如果繼續請按1否則請按0");
}
}
else
break;
}
printf("\t\t感謝使用四號號電梯系統");
printf("\t\t如果繼續請按1否則請按0");
return 0;
}
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();
break;
case 3:elevatorTHREE();
break;
case 4:elevatorFOYR();
break;
default:
printf("\t\t*您輸入有誤電梯不能啟動*\n");
break;
}
}
else
break;
}
printf("感謝使用電梯系統");
}
執行結果圖