标签:
一、项目
现有一新建办公大厦,共有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("感谢使用电梯系统");
}
运行结果图
标签:
原文地址:http://www.cnblogs.com/xiejy/p/5372028.html