首页 > 编程语言 >软件工程实验二—电梯编程

软件工程实验二—电梯编程

时间:2022-11-15 18:26:44浏览次数:52  
标签:编程 beixuyao floor gofloor 电梯 软件工程 printf staus

#include<stdio.h>
#include<windows.h>
typedef struct elevator{
int staus;//三种状态:静止,上行,下行
int type;//三种类型:双,单,全
int floor;//此时停在的楼层数
int beixuyao;//此楼层是否被调用
int flag;//是否有人用电梯
}B;
B a[4];
int flag, dir, floor, gofloor;
int c[3], k[3], m[3];
int Lookfor(int x, int y, int z){//计算楼层差值函数
int c;
if (a[x].staus == 0){//此时a[x]电梯处于静止状态
if (y < z){
c = z - y;
}else{
c = y - z;
}
}
if (a[x].staus == 1){//此时a[x]电梯处于上升状态
if (y > z && dir == 1){
c = y - z;
}else{
printf("此电梯不能响应用户的请求");
}
}
if (a[x].staus == 2){//此时a[x]电梯处于下降状态
if (y < z && dir == 0){
c = z - y;
}else{
printf("此电梯不能响应用户的请求");
}
}
return c;
}
void main(){
//接人操作
printf("***********************************************\n");
printf("* ****** ****** ****** ****** *\n");
printf("* | | | | | | | | *\n");
printf("* -1 7 14 20 *\n");
printf("* | | | | | | | | *\n");
printf("* ****** ****** ****** ****** *\n");
printf("***********************************************\n");
a[0].staus = 0;
a[1].staus = 0;
a[2].staus = 0;
a[3].staus = 0;
a[0].floor = -1;
a[1].floor = 7;//表示此时电梯停在的楼层数为7楼
a[2].floor = 14;
a[3].floor = 20;
while (1){
a[0].type = 2;//一号电梯所有楼层都停靠
a[1].type = 1;//二号电梯单号楼层都停靠
a[2].type = 0;//三号电梯双号楼层都停靠
a[3].type = 2;//四号电梯所有楼层都停靠
int i;
int flag1 = 0, j = 0;
printf("===============================================\n");
printf("若要用电梯请按按钮 1 !\n");
scanf("%d", &flag);//此时是否有人按电梯
if (flag == 1){
printf("*****此时有用户按电梯!*****\n");
}
printf("用户所在楼层为: ");
scanf("%d", &floor);//此时按电梯的人所在的楼层数
printf("上楼请按 1 ,下楼请按 0: ");
scanf("%d", &dir);//用户请求是上楼还是下楼标记
printf("请选择要去的楼层: ");
scanf("%d", &gofloor);//用户要去的楼层
if (flag == 1){//用户按电梯
if (dir == 1){//用户要上楼
if (floor % 2 == 0){//用户所在为偶数楼层
if (gofloor % 2 == 1){//用户要去奇数楼层
for (i = 0; i < 4; i++){
if (a[i].type == 2){
a[i].beixuyao = 1;
}else{
a[i].beixuyao = 0;
}
while (a[i].beixuyao == 1){
k[flag1] = Lookfor(i, floor, a[i].floor);
m[flag1] = i;
flag1++;
a[i].beixuyao = 0;
}
}
if (k[0] < k[1]){
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].floor = gofloor;
a[0].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}
if (gofloor % 2 == 0){//用户要去偶数楼层
for (i = 0; i < 4; i++){
if (a[i].type == 2 || a[i].type == 0){
a[i].beixuyao = 1;
}else{
a[i].beixuyao = 0;
}
while (a[i].beixuyao == 1){
k[flag1] = Lookfor(i, floor, a[i].floor);
m[flag1] = i;
flag1++;
a[i].beixuyao = 0;
}
}
if (k[0] < k[1]){
if (k[0] < k[2]){
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].floor = gofloor;
a[0].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}else{
if (k[1] < k[2]){
printf("离用户最近并且符合条件的电梯为:2\n");
a[2].floor = gofloor;
a[2].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}
}
}
if (floor % 2 == 1){//用户所在为奇数楼层
if (gofloor % 2 == 0){//用户要去偶数楼层
for (i = 0; i < 4; i++){
if (a[i].type == 2){
a[i].beixuyao = 1;
}else{
a[i].beixuyao = 0;
}
while (a[i].beixuyao == 1){
k[flag1] = Lookfor(i, floor, a[i].floor);
m[flag1] = i;
flag1++;
a[i].beixuyao = 0;
}
}
if (k[0] < k[1]){
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].floor = gofloor;
a[0].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}
if (gofloor % 2 == 1){//用户要去奇数楼层
for (i = 0; i < 4; i++){
if (a[i].type == 2 || a[i].type == 1){
a[i].beixuyao = 1;
}else{
a[i].beixuyao = 0;
}
while (a[i].beixuyao == 1){
k[flag1] = Lookfor(i, floor, a[i].floor);
m[flag1] = i;
flag1++;
a[i].beixuyao = 0;
}
}
if (k[0] < k[1]){
if (k[0] < k[2]){
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].floor = gofloor;
a[0].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}else{
if (k[1] < k[2]){
printf("离用户最近并且符合条件的电梯为:2\n");
a[1].floor = gofloor;
a[1].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}
}
}
}
if (dir == 0){//用户要下楼
if (floor % 2 == 0){//用户所在为偶数楼层
if (gofloor % 2 == 1){//用户要去奇数楼层
for (i = 0; i < 4; i++){
if (a[i].type == 2){
a[i].beixuyao = 1;
}else{
a[i].beixuyao = 0;
}
while (a[i].beixuyao == 1){
k[flag1] = Lookfor(i, floor, a[i].floor);
m[flag1] = i;
flag1++;
a[i].beixuyao = 0;
}
}
if (k[0] < k[1]){
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].floor = gofloor;
a[0].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}
if (gofloor % 2 == 0){//用户要去偶数楼层
for (i = 0; i < 4; i++){
if (a[i].type == 2 || a[i].type == 0){
a[i].beixuyao = 1;
}else{
a[i].beixuyao = 0;
}
while (a[i].beixuyao == 1){
k[flag1] = Lookfor(i, floor, a[i].floor);
m[flag1] = i;
flag1++;
a[i].beixuyao = 0;
}
}
if (k[0] < k[1]){
if (k[0] < k[2]){
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].floor = gofloor;
a[0].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}else{
if (k[1] < k[2]){
printf("离用户最近并且符合条件的电梯为:2\n");
a[2].floor = gofloor;
a[2].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}
}
}
if (floor % 2 == 1){//用户所在为奇数楼层
if (gofloor % 2 == 0){//用户要去偶数楼层
for (i = 0; i < 4; i++){
if (a[i].type == 2){
a[i].beixuyao = 1;
}else{
a[i].beixuyao = 0;
}
while (a[i].beixuyao == 1){
k[flag1] = Lookfor(i, floor, a[i].floor);
m[flag1] = i;
flag1++;
a[i].beixuyao = 0;
}
}
if (k[0] < k[1]){
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].floor = gofloor;
a[0].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}
if (gofloor % 2 == 1){//用户要去奇数楼层
for (i = 0; i < 4; i++){
if (a[i].type == 2 || a[i].type == 1){
a[i].beixuyao = 1;
}else{
a[i].beixuyao = 0;
}
while (a[i].beixuyao == 1){
k[flag1] = Lookfor(i, floor, a[i].floor);
m[flag1] = i;
flag1++;
a[i].beixuyao = 0;
}
}
if (k[0] < k[1]){
if (k[0] < k[2]){
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].floor = gofloor;
a[0].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}else{
if (k[1] < k[2]){
printf("离用户最近并且符合条件的电梯为:2\n");
a[1].floor = gofloor;
a[1].staus = 0;
}else{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].floor = gofloor;
a[3].staus = 0;
}
}
}
}
}
}else if (flag == 0){
printf("此时无人用电梯");
}
printf("***********************************************\n");
printf("* ****** ****** ****** ****** *\n");
printf("* | | | | | | | | *\n");
printf("* %2d %2d %2d %2d *\n", a[0].floor, a[1].floor, a[2].floor, a[3].floor);
printf("* | | | | | | | | *\n");
printf("* ****** ****** ****** ****** *\n");
printf("***********************************************\n");
}
}

标签:编程,beixuyao,floor,gofloor,电梯,软件工程,printf,staus
From: https://www.cnblogs.com/kkcs/p/16893422.html

相关文章

  • AI 编程实践
    自治的可移动游戏智能体SteeringBehaviors(操纵行为)这些方法都返回执行该行为需要的力(实际是返回单位质量物体1s内修正速度需要的加速度,根据F=m(v1-v0)/t,这个返回值也......
  • 网络编程
    软件开发架构1.c/s架构 client:客户端server:服务端"""就是我们使用计算机下载下来的一个个app本质互联网公司的客户端软件通过这些客户端软件我们就......
  • 网络编程
    目录一.软件开发架构1.C/S架构2.B/S架构二.架构总结三.网络编程前戏1.什么是网络编程2.学习网络编程的目的3.网络编程的起源4.网络编程必备条件四.OSI七层协议1.引入:2.七......
  • 焦点科技编程挑战赛2022题解
    比赛说明:比赛在四个学校开展,南理南航南农和矿大。题目查找文本差异要求origin和dest中分别包含1000w+条数据dest对数据进行了打乱操作,即origin和dest中相同数据行的......
  • Python基础之网络编程:1、C/S架构和B/S架构
    目录软件开发架构一、C/S架构二、B/S架构三、本质和区别软件开发架构规定了程序的请求逻辑、功能分块一、C/S架构c/s架构的组成:Client(客户端),Server(服务端)Client(客......
  • Python基础之网络编程:2、OSI协议之七层协议
    目录Python基础之网络编程一、网络编程前戏二、OSI七层协议简介:1、物理连接层2、数据链路层网络相关专业名词3、网络层4、传输层Python基础之网络编程一、网络编程前戏1......
  • 计算机网路编程理论
    计算机网路编程理论针对软件开发,目前所有市面上的主流软件,都基本上会使用网络进行通信,传输各种数据,作为软件开发人员,掌握网络编程理论和了解网络编程开发架构是必须的。......
  • 网络编程基础
    网络编程基础软件开发架构软件开发结构:程序员在编写软件时候应该遵循的架构设计规定了程序的请求逻辑,功能划分模块等等1.C/S架构client:客户端Server:服务端'''......
  • 网络编程前戏
    今日内容概要软件开发架构架构发展趋势网络编程前戏OSI七层协议各种重点协议今日内容详细软件开发架构规定了程序的请求逻辑、功能分块1.C/S架构 Client:......
  • 网络编程与OSI模型
    目录一、网络编程简介1.什么是网络编程2.学习网络编程的目的3.网络编程的发展史4.网络编程必备条件二、OSI七层协议模型简介0.操作系统基础1.osi七层协议模型2.osi七层协议......