首页 > 编程语言 >软件工程——实验二-结对编程

软件工程——实验二-结对编程

时间:2022-11-13 09:55:11浏览次数:32  
标签:golc 结对 编程 CSTKLC 电梯 软件工程 && printf lccz

现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示,其使用规定如下:

① 楼层号为0~20,其中0号为地下一层

② 有楼层限制的电梯不在相应楼层停靠,如单双层

③ 所有电梯采用统一按钮控制

④ 请根据上述要求设计并实现一个电梯控制程序,使得用户平均等待时间尽可能小,如果有图形显示就更好了。

电梯编号

可服务楼层

最大乘客数量

最大载重量

1

全部楼层

10

800 kg

2

单层

10

800 kg

3

双层

10

800 kg

4

全部楼层

20

2000 kg

程序源码:

#include<stdio.h>
struct DTZT
{
    int ZT;
    int DSQTYPE;
    int CSTKLC;
    int BDY;
    int flag;
}a[4];
int flag, slxl, szlc, golc, lccz[3], dth[3], i, flag1 = 0;
int js(int x, int y, int z, int g) //计算楼层差值函数
{
    int c, b, sum;
    if (a[x].ZT == 0)//此时a[x]电梯处于静止状态
    {
        if (y == z)
            return 0;
        else if (y < z)
        {
            c = z - y;
            if (y > g)
            {
                b = y - g;
            }
            else
            {
                b = g - y;
            }
            sum = c + b;
        }
        else if (y > z)
        {
            c = y - z;
            if (y > g)
            {
                b = y - g;
            }
            else
            {
                b = g - y;
            }
            sum = c + b;
        }
        return sum;
    }
}

void SL_XL_formOtoJ_AND_fromJtoO()
{
    lccz[0] = js(0, szlc, a[0].CSTKLC, golc);
    lccz[1] = js(1, szlc, a[3].CSTKLC, golc);
    if (lccz[0] < lccz[1])
    {
        printf("离用户最近并且符合条件的电梯为:1号\n");
        a[0].CSTKLC = golc;
    }
    else
    {
        printf("离用户最近并且符合条件的电梯为:4号\n");
        a[3].CSTKLC = golc;
    }

}
void XL_SL_fromOtoO()
{
    lccz[0] = js(0, szlc, a[0].CSTKLC, golc);
    lccz[1] = js(1, szlc, a[2].CSTKLC, golc);
    lccz[2] = js(2, szlc, a[3].CSTKLC, golc);
    if (lccz[0] < lccz[1])
    {
        if (lccz[0] < lccz[2])
        {
            printf("离用户最近并且符合条件的电梯为:1号\n");
            a[0].CSTKLC = golc;
        }
        else
        {
            printf("离用户最近并且符合条件的电梯为:4号\n");
            a[3].CSTKLC = golc;
        }
    }
    else
    {
        if (lccz[1] < lccz[2])
        {
            printf("离用户最近并且符合条件的电梯为:3号\n");
            a[2].CSTKLC = golc;
        }
        else
        {
            printf("离用户最近并且符合条件的电梯为:4号\n");
            a[3].CSTKLC = golc;
        }
    }

}

void SL_XL_fromJtoJ()
{
    lccz[0] = js(0, szlc, a[0].CSTKLC, golc);
    lccz[1] = js(1, szlc, a[1].CSTKLC, golc);
    lccz[2] = js(2, szlc, a[3].CSTKLC, golc);
    if (lccz[0] < lccz[1])
    {
        if (lccz[0] < lccz[2])
        {
            printf("离用户最近并且符合条件的电梯为:1号\n");
            a[0].CSTKLC = golc;

        }
        else
        {
            printf("离用户最近并且符合条件的电梯为:4号\n");
            a[3].CSTKLC = golc;

        }
    }
    else
    {
        if (lccz[1] < lccz[2])
        {
            printf("离用户最近并且符合条件的电梯为:2号\n");
            a[1].CSTKLC = golc;

        }
        else
        {
            printf("离用户最近并且符合条件的电梯为:4号\n");
            a[3].CSTKLC = golc;

        }
    }
}

int  main() //接人操作
{
    printf("*   全部楼层    单层       双层      全部楼层\n");
    printf("*   ******     ******     ******     ******   *\n");
    printf("*    1号          2号        3号        4号    *\n");
    printf("***********************************************\n");
    printf("*   ******     ******     ******     ******   *\n");
    printf("*   |    |     |    |     |    |     |    |   *\n");
    printf("*     2          11         8          19    *\n");
    printf("*   |    |     |    |     |    |     |    |   *\n");
    printf("*   ******     ******     ******     ******   *\n");
    printf("***********************************************\n");
    a[0].ZT = 0;//三种状态:静止,上行,下行
    a[1].ZT = 0;
    a[2].ZT = 0;
    a[3].ZT = 0;
    a[0].CSTKLC = 2;//表示此时电梯停在的楼层数为1楼
    a[1].CSTKLC = 11;//表示此时电梯停在的楼层数为7楼
    a[2].CSTKLC = 8;//表示此时电梯停在的楼层数为14楼
    a[3].CSTKLC = 19;//表示此时电梯停在的楼层数为20楼
    a[0].DSQTYPE = 2;//一号电梯所有楼层都停靠
    a[1].DSQTYPE = 1;//二号电梯单号楼层都停靠
    a[2].DSQTYPE = 0;//三号电梯双号楼层都停靠
    a[3].DSQTYPE = 2;//四号电梯所有楼层都停靠
    int i;
    int flag1 = 0;
    int j = 0;
    printf("--------------------------------------------------\n");
    printf("使用电梯请按按钮 1 \n");
    scanf_s("%d", &flag);//此时是否有人按电梯 1
    if (flag == 1)
    {
        printf("*****此时有用户按电梯!*****\n");
    }
    printf("您所在楼层为: ");
    scanf_s("%d", &szlc);//此时按电梯的人所在的楼层数 5
    printf("上楼请按 1 ,下楼请按 0: ");
    scanf_s("%d", &slxl);//用户请求是上楼还是下楼标记 1
    printf("请选择要去的楼层: ");
    scanf_s("%d", &golc);//用户要去的楼层 15
    if (flag == 1 && slxl == 1 && szlc % 2 == 0 && golc % 2 == 1)//用户需要电梯上楼在偶数层要去奇数层
        SL_XL_formOtoJ_AND_fromJtoO();//计算上楼下楼奇数层去偶数层和偶数层去奇数层
    if (flag == 1 && slxl == 1 && szlc % 2 == 0 && golc % 2 == 0)//用户需要电梯上楼在偶数层要去偶数层
        XL_SL_fromOtoO();//计算上楼下楼偶数层去偶数层
    if (flag == 1 && slxl == 1 && szlc % 2 == 1 && golc % 2 == 0)//用户需要电梯上楼在奇数层要去偶数层
        SL_XL_formOtoJ_AND_fromJtoO();
    if (flag == 1 && slxl == 1 && szlc % 2 == 1 && golc % 2 == 1)//用户需要电梯上楼在奇数层要去奇数层
        SL_XL_fromJtoJ();//计算上楼下楼奇数层去奇数层
    if (flag == 1 && slxl == 0 && szlc % 2 == 0 && golc % 2 == 1)//用户需要电梯下楼在偶数层要去奇数层
        SL_XL_formOtoJ_AND_fromJtoO();
    if (flag == 1 && slxl == 0 && szlc % 2 == 0 && golc % 2 == 0)//用户需要电梯下楼在偶数层要去偶数层
        XL_SL_fromOtoO();
    if (flag == 1 && slxl == 0 && szlc % 2 == 1 && golc % 2 == 0)//用户需要电梯下楼在奇数层要去偶数层
        SL_XL_formOtoJ_AND_fromJtoO();
    if (flag == 1 && slxl == 0 && szlc % 2 == 1 && golc % 2 == 1)//用户需要电梯下楼在奇数层要去奇数层
        SL_XL_fromJtoJ();
    printf("***********************************************\n");
    printf("*   ******     ******     ******     ******   *\n");
    printf("*   |    |     |    |     |    |     |    |   *\n");
    printf("*   *  %2d     * %2d      *  %2d        *%2d     *\n", a[0].CSTKLC, a[1].CSTKLC, a[2].CSTKLC, a[3].CSTKLC);
    printf("*   |    |     |    |     |    |     |    |   *\n");
    printf("*   ******     ******     ******     ******   *\n");
    printf("***********************************************\n");
    return 0;
}

 

标签:golc,结对,编程,CSTKLC,电梯,软件工程,&&,printf,lccz
From: https://www.cnblogs.com/AceSpilker/p/16885443.html

相关文章

  • 实验二 结对编程
    一、题目要求1、能够自动生成四则运算练习题2、可以定制题目数量3、用户可以选择运算符4、用户设置最大数(如十以内、百以内等)5、用户选择是否有括号、是否有小数6、用户选......
  • C++PrimerPlus中文第六版第5章编程练习答案
    1、#include<iostream>usingnamespacestd;intmain(){inti,j;cout<<"Entertwonumbers:";cin>>i>>j;//cout<<"Sumbetween"<<......
  • 从软件工程角度看测试
    转载:https://www.cnblogs.com/imyalost/p/16866157.html这是软件工程系列的第六篇文章,我想从软件工程的角度来谈谈关于软件测试的一些话题。 软件工程的核心软件工程......
  • 《Unix/Linux系统编程》第十三章学习笔记
    第13章TCP/IP和网络编程摘要本章论述了TCP/IP和网络编程,分为两个部分。第一部分论述了TCP/IP协议及其应用,具体包括TCP/IP栈、IP地址、主机名、DNS、IP数据包和路由器......
  • 结对实验二
    (1)本人角色本人在在这次实验结对项目中所担任领航员我的结对伙伴是梁添翔,学号:223201062132(2)本次的程序任务和要求如上图所示,需要有4部电梯同时运行,每部电梯都有自己的限制且......
  • Java 函数式编程 stream流(二)
     Java函数式编程stream流(一)1. Stream和parallelStreamstream是顺序流,由主线程按顺序对流执行操作,而parallelStream是并行流,内部以多线程并行执行的方式对流进......
  • Linux系统中输入设备的应用编程实现
       大家好,今天主要来聊一聊,如何使用Linux系统下的输入设备进行应用编程。目录​​第一:什么是输入设备​​​​第二:读取数据的流程​​​​第三:应用程序该如何解析​​​......
  • 编写C程序,实现链队列的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据
    编写C程序,实现链队列的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据)2、采用模块化编程思想,编写main函数和若干子函数(实现功能)3、队列的基本功能有:......
  • 极客编程python入门-不可变对象
    不可变对象str是不变对象,而list是可变对象对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如l=[1,2,34,56,34,78,23,12,12,34,45,657,45]l.sort()print(l)......
  • 实验二结对编程
    1实验内容及要求 1.1 教学内容及要求完成结对项目,实现代码复审。1.2 实验要求首先在同学中找一个同伴,范围不限,可以在1~3班中随意组合,不要找同组的成员,女同学尽量......