Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2022, 13:00   #1
Qbinik
Пользователь
 
Регистрация: 08.10.2022
Сообщений: 25
По умолчанию Выпадающие Списки (Линия связи, вид кабеля и так далее).

Есть выпадающие списки с характеристиками и вводом метров, Линия связи, Вид кабеля, Длина кабеля.
Вывод: Возможно ли такое соединение.
Часть 2.
Добавить выпадающий список скорости 10g езернет.
Код у меня есть на что-то работает не так, например витая пара.
Код:
Код:
namespace Seti_lab_3
{
    public partial class Form1 : Form
    {
        private string[] communicationLine = {"Проводная", "Беспроводная", "Витая пара"};
        private string[] cabelType = { "wifi 2.4", "wifi 5", "cat 5", "cat 5e", "cat 6", "cat 6e", "cat 7", "om1", "om2", "om3", "om4", "os1", "os2" };
        private enum CommunicationLine
        {
            Wired,
            Wireless,
            TwistedPair
        }
        private enum CabelType 
        {
           wifi24,
           wifi5,
           cat5,
           cat5e,
           cat6,
           cat6e,
           cat7,
           om1,
           om2,
           om3,
           om4,
           os1,
           os2
        }

        private int cabelTypeFind(CabelType cabelTypeV) // возвращает тип связи в зависимости от вида кабеля
        {
            switch (cabelTypeV)
            {
                case CabelType.wifi24:
                    return 1;
                case CabelType.wifi5:
                    return 1;
                case CabelType.cat5:
                    return 0;
                case CabelType.cat6:
                    return 0;
                case CabelType.cat6e:
                    return 0;
                case CabelType.cat7:
                    return 0;
                case CabelType.om1:
                    return 2;
                case CabelType.om2:
                    return 2;
                case CabelType.om3:
                    return 2;
                case CabelType.om4:
                    return 2;
                case CabelType.os1:
                    return 2;
                case CabelType.os2:
                    return 2;
            }
            return -1;
        }
        private int cabelSpeed(CabelType cabelType)
        {
            switch (cabelType)
            {
                case CabelType.wifi24:
                    return 150;
                case CabelType.wifi5:
                    return 1000;
                case CabelType.cat5:
                    return 1;
                case CabelType.cat6:
                    return 10000;
                case CabelType.cat6e:
                    return 10000;
                case CabelType.cat7:
                    return 10000;
                case CabelType.om1:
                    return 10000;
                case CabelType.om2:
                    return 10000;
                case CabelType.om3:
                    return 10000;
                case CabelType.om4:
                    return 10000;
                case CabelType.os1:
                    return 40000;
                case CabelType.os2:
                    return 40000;
            }
            return -1;
        }


        private int cabelLenght(CabelType cabelType)
        {
            switch (cabelType)
            {
                case CabelType.wifi24:
                    return 150;
                case CabelType.wifi5:
                    return 50;
                case CabelType.cat5:
                    return 100;
                case CabelType.cat6:
                    return 55;
                case CabelType.cat6e:
                    return 55;
                case CabelType.cat7:
                    return 55;
                case CabelType.om1:
                    return 550;
                case CabelType.om2:
                    return 550;
                case CabelType.om3:
                    return 550;
                case CabelType.om4:
                    return 550;
                case CabelType.os1:
                    return 500000;
                case CabelType.os2:
                    return 500000;
            }
            return -1;
        }
        public Form1()
        {
            InitializeComponent();
            comboBoxCabelType.Items.AddRange(cabelType);
            comboBoxCommunicationLine.Items.AddRange(communicationLine);
        }

        private bool isConnectionPosible(CommunicationLine comunicationLineV, CabelType cabelTypeV, int lenght, int speed)
        {
            if (comunicationLineV == (CommunicationLine)cabelTypeFind(cabelTypeV) && lenght <= cabelLenght(cabelTypeV) && speed <= cabelSpeed(cabelTypeV))
                return true;
            else
                return false;
        }
        private void buttonSubmit_Click(object sender, EventArgs e)
        {
            CommunicationLine communicationLineV = (CommunicationLine)comboBoxCommunicationLine.SelectedIndex;
            CabelType cabelTypeV = (CabelType)comboBoxCabelType.SelectedIndex;
            int lenght = int.Parse(textBoxCabelLenght.Text);
            int speed = int.Parse(textBoxCabelSpeed.Text);
            if (isConnectionPosible(communicationLineV, cabelTypeV, lenght, speed))
            {
                labelResultValue.Text = "Да!";
                labelResultValue.BackColor = Color.Green;
            }
            else
            {
                labelResultValue.Text = "Нет!";
                labelResultValue.BackColor = Color.Red;
            }
        }
    }
}
Помогите пожалуйста решить проблему.
Изображения
Тип файла: png Снимок2.PNG (9.3 Кб, 23 просмотров)
Qbinik вне форума Ответить с цитированием
Старый 14.12.2022, 13:34   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Непонятно что значит добавить 10g ethernet, если для этого можно использовать витую пару категории 6 и 7 и они есть.
Не так в коде то, что скорость кабеля и длина обрабатываются отдельно и не влияют друг на друга.
Витая пара категории 6 может 10 ГБит/с на 55 метров пропускать, либо 1 Гбит/с на 100 метров, а в коде получается, что она и 10 МБит только на 55 метров сможет пропустить.
Ну, и метод cabelTypeFind для категорий 5-7 возвращает 0, т.е. что это проводная линия, а не витая пара, а для оптики (om1, om2 и т.д.) наоборот возвращает 2, как-будто это витая пара.
pu4koff вне форума Ответить с цитированием
Старый 15.12.2022, 10:49   #3
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 492
По умолчанию

Скажу честно ни разу не писал код на C#, но вижу неверный подход. Вы хардкорите в коде то, что можно разрулить данными (если не ошибаюсь тип данных Dictionary), из за этого появляются многокилометровые switch. Например если появится необходимость добавить "os3" вам придётся править кучу кода.
Valick вне форума Ответить с цитированием
Старый 15.12.2022, 19:53   #4
Qbinik
Пользователь
 
Регистрация: 08.10.2022
Сообщений: 25
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Непонятно что значит добавить 10g ethernet, если для этого можно использовать витую пару категории 6 и 7 и они есть.
Не так в коде то, что скорость кабеля и длина обрабатываются отдельно и не влияют друг на друга.
Витая пара категории 6 может 10 ГБит/с на 55 метров пропускать, либо 1 Гбит/с на 100 метров, а в коде получается, что она и 10 МБит только на 55 метров сможет пропустить.
Ну, и метод cabelTypeFind для категорий 5-7 возвращает 0, т.е. что это проводная линия, а не витая пара, а для оптики (om1, om2 и т.д.) наоборот возвращает 2, как-будто это витая пара.
А как в коде то тогда это исправить?
Qbinik вне форума Ответить с цитированием
Старый 16.12.2022, 05:05   #5
Qbinik
Пользователь
 
Регистрация: 08.10.2022
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Qbinik Посмотреть сообщение
Есть выпадающие списки с характеристиками и вводом метров, Линия связи, Вид кабеля, Длина кабеля.
Вывод: Возможно ли такое соединение.
Часть 2.
Добавить выпадающий список скорости 10g езернет.
Код у меня есть на что-то работает не так, например витая пара.
Код:
Код:
namespace Seti_lab_3
{
    public partial class Form1 : Form
    {
        private string[] communicationLine = {"Проводная", "Беспроводная", "Витая пара"};
        private string[] cabelType = { "wifi 2.4", "wifi 5", "cat 5", "cat 5e", "cat 6", "cat 6e", "cat 7", "om1", "om2", "om3", "om4", "os1", "os2" };
        private enum CommunicationLine
        {
            Wired,
            Wireless,
            TwistedPair
        }
        private enum CabelType 
        {
           wifi24,
           wifi5,
           cat5,
           cat5e,
           cat6,
           cat6e,
           cat7,
           om1,
           om2,
           om3,
           om4,
           os1,
           os2
        }

        private int cabelTypeFind(CabelType cabelTypeV) // возвращает тип связи в зависимости от вида кабеля
        {
            switch (cabelTypeV)
            {
                case CabelType.wifi24:
                    return 1;
                case CabelType.wifi5:
                    return 1;
                case CabelType.cat5:
                    return 0;
                case CabelType.cat6:
                    return 0;
                case CabelType.cat6e:
                    return 0;
                case CabelType.cat7:
                    return 0;
                case CabelType.om1:
                    return 2;
                case CabelType.om2:
                    return 2;
                case CabelType.om3:
                    return 2;
                case CabelType.om4:
                    return 2;
                case CabelType.os1:
                    return 2;
                case CabelType.os2:
                    return 2;
            }
            return -1;
        }
        private int cabelSpeed(CabelType cabelType)
        {
            switch (cabelType)
            {
                case CabelType.wifi24:
                    return 150;
                case CabelType.wifi5:
                    return 1000;
                case CabelType.cat5:
                    return 1;
                case CabelType.cat6:
                    return 10000;
                case CabelType.cat6e:
                    return 10000;
                case CabelType.cat7:
                    return 10000;
                case CabelType.om1:
                    return 10000;
                case CabelType.om2:
                    return 10000;
                case CabelType.om3:
                    return 10000;
                case CabelType.om4:
                    return 10000;
                case CabelType.os1:
                    return 40000;
                case CabelType.os2:
                    return 40000;
            }
            return -1;
        }


        private int cabelLenght(CabelType cabelType)
        {
            switch (cabelType)
            {
                case CabelType.wifi24:
                    return 150;
                case CabelType.wifi5:
                    return 50;
                case CabelType.cat5:
                    return 100;
                case CabelType.cat6:
                    return 55;
                case CabelType.cat6e:
                    return 55;
                case CabelType.cat7:
                    return 55;
                case CabelType.om1:
                    return 550;
                case CabelType.om2:
                    return 550;
                case CabelType.om3:
                    return 550;
                case CabelType.om4:
                    return 550;
                case CabelType.os1:
                    return 500000;
                case CabelType.os2:
                    return 500000;
            }
            return -1;
        }
        public Form1()
        {
            InitializeComponent();
            comboBoxCabelType.Items.AddRange(cabelType);
            comboBoxCommunicationLine.Items.AddRange(communicationLine);
        }

        private bool isConnectionPosible(CommunicationLine comunicationLineV, CabelType cabelTypeV, int lenght, int speed)
        {
            if (comunicationLineV == (CommunicationLine)cabelTypeFind(cabelTypeV) && lenght <= cabelLenght(cabelTypeV) && speed <= cabelSpeed(cabelTypeV))
                return true;
            else
                return false;
        }
        private void buttonSubmit_Click(object sender, EventArgs e)
        {
            CommunicationLine communicationLineV = (CommunicationLine)comboBoxCommunicationLine.SelectedIndex;
            CabelType cabelTypeV = (CabelType)comboBoxCabelType.SelectedIndex;
            int lenght = int.Parse(textBoxCabelLenght.Text);
            int speed = int.Parse(textBoxCabelSpeed.Text);
            if (isConnectionPosible(communicationLineV, cabelTypeV, lenght, speed))
            {
                labelResultValue.Text = "Да!";
                labelResultValue.BackColor = Color.Green;
            }
            else
            {
                labelResultValue.Text = "Нет!";
                labelResultValue.BackColor = Color.Red;
            }
        }
    }
}
Помогите пожалуйста решить проблему.
А как мне еще сделать чтобы я например выбирал проводную линию связи и у меня в виде покрытия отмечались толька проводная? Отфильтровать так сказать
Qbinik вне форума Ответить с цитированием
Старый 16.12.2022, 05:07   #6
Qbinik
Пользователь
 
Регистрация: 08.10.2022
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Qbinik Посмотреть сообщение
А как мне еще сделать чтобы я например выбирал проводную линию связи и у меня в виде покрытия отмечались толька проводная? Отфильтровать так сказать
это при запуске на форме самой
Qbinik вне форума Ответить с цитированием
Старый 16.12.2022, 10:38   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Qbinik Посмотреть сообщение
А как в коде то тогда это исправить?
Убрать метод cabelSpeed и в определение длины передавать на вход требуемую скорость:
Код:
private int cabelLenght(CabelType cabelType, int speed)
{
              switch (cabelType)
            {
                case CabelType.wifi24:
                    return 150;
                case CabelType.wifi5:
                    return 50;
                case CabelType.cat5:
                    return 100;
                case CabelType.cat6:
if (speed > 10000)
  return -1;
if (speed > 1000)
  return 55;
return 100;
                case CabelType.cat6e:
                    return 55;
                case CabelType.cat7:
                    return 55;
                case CabelType.om1:
                    return 550;
                case CabelType.om2:
                    return 550;
                case CabelType.om3:
                    return 550;
                case CabelType.om4:
                    return 550;
                case CabelType.os1:
                    return 500000;
                case CabelType.os2:
                    return 500000;
            }
            return -1;
}
Но в целом если нормально делать, то примерно всё переделывать нужно.
В ComboBox в Items можно не только строки передавать, но и произвольные объекты, а у контрола задать DisplayMember, чтобы названия выводил корректные.
pu4koff вне форума Ответить с цитированием
Старый 16.12.2022, 16:36   #8
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 492
По умолчанию

установил VS Code под Ubuntu
установил dotnet-sdk-6.0
создал dotnet new console работает (выводит Hello, world!)

не пойму как побаловться с формами (в списке не вижу viewforms)
Valick вне форума Ответить с цитированием
Старый 19.12.2022, 12:13   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

WinForms работает только под Windows, как и WPF. Под линуксы нужно что-то другое брать.
pu4koff вне форума Ответить с цитированием
Старый 19.12.2022, 13:59   #10
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 492
По умолчанию

pu4koff, спасибо. Пока абсолютно нет времени с этим разбираться. Если кто-то подскажет с минимальным каркасом форм для линуха (без ASP.NET, так как подозреваю, что это как из пушки по воробьям), буду благодарен.
Valick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выпадающие списки Aqil_f Microsoft Office Excel 7 19.05.2014 00:08
Выпадающие списки alexssses PHP 7 09.09.2013 22:59
Выпадающие списки Доктор Microsoft Office Excel 4 07.01.2012 00:33
Выпадающие списки. Ras2im Microsoft Office Excel 13 08.03.2011 13:00
Выпадающие списки Доктор Microsoft Office Excel 14 17.08.2010 19:41