Среда, 2025-01-22

Professor VB - примеры на VB.net и C#
Меню сайта
Вход на сайт
Категории раздела
Уроки VB.net [25]
VB.net и математика [13]
Random VB [4]
VB.net - разное [7]
VB.net - Примеры программ [2]
Главная » Статьи » VB.net » Random VB

VB.net - Генератор случайных имен

VB.net - Генератор случайных имен



  Иногда нам приходиться регистрироваться на левых форумах, давая вымышленные имена,  и как по волшебству, все имена вылетают из головы.

  Есть огромные базы имён, но выбирать в ручную и долго и нудно. И для этих целей мы и создадим программу, которая будет генерировать новые личности. Из баз имен-фамилий-отчеств случайным образом выбирается ФИО, а так же создается случайная дата рождения.

   Так же мы расширим возможности программы таким образом, что бы нам выдавался список людей.

 

 

На форму мы помещаем следующие элементы:

MenuStrip1  - для быстрого доступа и настроек

в него мы запишем такие элементы:

  • Файл - выход (для выход из программы)
  • создать ФИО (копия кнопки на форме для создания нового ФИО)
  • Цикл - создать список (создаем список имен с необходимыми параметрами)
  •                - остановить (досрочная остановка цикла)
  • Настройки - Муж\Жен\Случ - работают как радиобуттон, те выбирается только 1 вариант - только М имена, только Ж или случайный пол
  •                 -Очистка результатов - работает как чекбокс - если выбираем - тогда, новое имя стирает предыдущее, иначе - добавляет новое имя в список.
  •                 -Дата рождения - еще один чекбокс- если выбираем его, тогда к ФИО добавляется дата рождения.

timer1 - для генерации большего разнообразия имен

кнопки - 3 шт - создать имя, создать список, стоп - соответственно для создания 1 имени, списка имен и для досрочной остановки цикла для создания списка имен

1 текстовое поле - для создания списка имен нужного количества.

и расширенное текстовое поле - в него будем записывать ФИО и даты

Так же нам понадобятся базы мужских и женских ФИО, их вы можете скачать по ссылке в описании. После скачивания их необходимо поместить рядом с программой (ссылка на базы ФИО)

 

откроется страница

для скачивания

 

А теперь переходим к коду

В начале проводим подготовительные работы, такие как подключение библиотек и объявление переменных:


 

Imports System.IO     'подключаем библиотеку Ввода-Вывода

Public Class Form1

    '0 Загоняем текст (Base....txt) построчно в массив - создаем массивы ФИО для М и Ж

    Dim menName() = IO.File.ReadAllLines("baseMenName.txt", System.Text.Encoding.Default)

    Dim menFam() = IO.File.ReadAllLines("baseMenFam.txt", System.Text.Encoding.Default)

    Dim menOtec() = IO.File.ReadAllLines("baseMenOtec.txt", System.Text.Encoding.Default)

 

    Dim womenName() = IO.File.ReadAllLines("baseWomenName.txt", System.Text.Encoding.Default)

    Dim womenFam() = IO.File.ReadAllLines("baseWomenFam.txt", System.Text.Encoding.Default)

    Dim womenOtec() = IO.File.ReadAllLines("baseWomenOtec.txt", System.Text.Encoding.Default)

 

    '0-1 задаем количество строк в массивах

    Dim razmMN = menName.Length       'колво Муж Имен

    Dim razmMF = menFam.Length       'колво Муж Фамилий

    Dim razmMO = menOtec.Length       'колво Муж Отчеств

 

    Dim razmWN = womenName.Length       'колво Жен Имен

    Dim razmWF = womenFam.Length       'колво Жен Фамилий

    Dim razmWO = womenOtec.Length       'колво Жен Отчеств

 

    '0-2 случайные переменные для выбора случайного имя из каждого массива

    Dim r As New Random    'переменная как новое случайное число

    Dim nMName As Integer ' случайный номер

    Dim nMFam As Integer ' случайный номер

    Dim nMOtec As Integer ' случайный номер

 

    Dim nWName As Integer ' случайный номер

    Dim nWFam As Integer ' случайный номер

    Dim nWOtec As Integer ' случайный номер

 

    '0-3 текстовая переменная для ФИО

    Dim pers As String

 

    '0-4 переенные для выбора даты рождения

    Dim day_ As String

    Dim dk As Byte

    Dim mes_ As Byte

    Dim god_ As String

    Dim data_ As String

 

    '0-5 счетчик для списка

    Dim namb_ = 0

    Dim s4et As Byte

 

    '0-6 переменная для выбора М или Ж имен

    Dim xz As Byte

 

    '---0-end

 

    '1-1 КНОПКА на форме получаем 1 имя, с выбранными параметрами

    Private Sub cmdName1_Click(sender As Object, e As EventArgs) Handles cmdName1.Click

        rndText()

    End Sub

 

    '1-2 КНОПКА в Меню - получаем 1 имя, с выбранными параметрами

    Private Sub СоздатьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СоздатьToolStripMenuItem.Click

        rndText()

    End Sub

 

    '2 подпрограмма для получения случайного имени

    Sub rndText()

        Randomize()         'функция генерации случайных чисел

        '2-1 При выборе ( в меню стрип) записывается только новое имя (иначе создается список)

        If ОчисткаРезультатовToolStripMenuItem.Checked = True Then

            namb_ = 1

            txtRez.Text = ""

        Else

            namb_ += 1

        End If

 

        '2-2 генерация даты рождения - независимо от того понадобится она нам или нет

        mes_ = r.Next(1, 13) 'месяца от 1 до 12

        'выбор макс количества дней, в зависимости от месяца

        Select Case mes_

            Case 1, 3, 5, 7, 8, 10, 12

                dk = 32

            Case 2

                dk = 29

            Case 4, 6, 9, 11

                dk = 31

        End Select

         'выбор случайного дня рождения из заданного интервала

        day_ = Str(r.Next(1, dk))

        'выбор года - от 15 до 70 вполне удовл(если это не так, то можно создать дополн выбор года)

        god_ = Str(r.Next(1945, 2000))

 

        '2-3 генерация номера случайного слова для каждого массива

        'генерация случайного числа от 1 до номера последней строки без 1

        '(колво строк начинаем с 1, а массив с 0)

        nMName = Str(r.Next(0, (razmMN - 1)))

        nMFam = Str(r.Next(0, (razmMF - 1)))

        nMOtec = Str(r.Next(0, (razmMO - 1)))

 

        nWName = Str(r.Next(0, (razmWN - 1)))

        nWFam = Str(r.Next(0, (razmWF - 1)))

        nWOtec = Str(r.Next(0, (razmWO - 1)))

 

'переменная xz - определяет пол - 0 М, 1 Ж таким образом, если мы выбираем в меню М - она равна 0

      

 '2-4 получения муж ФИО

        If МужскоеToolStripMenuItem.Checked = True Then

            xz = 0

        End If

        '2-5 получения жен ФИО

        If ЖенскоеToolStripMenuItem.Checked = True Then

            xz = 1

        End If

'случайный порядок - создает случ значение ( не всегда это 50 на 50, разброс доходит до 80 на 20)

        '2-6 получения муж или жен ФИО

        If СлучайныйПорядокToolStripMenuItem.Checked = True Then

            xz = r.Next(0, 2)

        End If

        '2-6-1 вывод имени в зависимости от выбранного пола

        If xz = 0 Then

            pers = " (М) " + vbTab + menFam(nMFam) + "  " + menName(nMName) + "  " + menOtec(nMOtec) + " "

        Else

            pers = " (Ж) " + vbTab + womenFam(nWFam) + "  " + womenName(nWName) + "  " + womenOtec(nWOtec) + " "

        End If

        '2-7 если необходима дата рождения, выбираем ДАТА РОЖДЕНИЯ

        If ДатаРожденияToolStripMenuItem.Checked = True Then

            data_ = " " + vbTab + day_ + "." + Str(mes_) + god_ + "  "

        Else

            data_ = ""

        End If

 

        '2-8 вывод результата - порядковый номер - дата - фио - перевод на нов строку

        txtRez.Text += Str(namb_) + ") " + data_ + pers + vbCrLf

    End Sub

 

   Для создания списка нам понадобится записать подпрограмму в цикл, но так как случайное число зависит от времени, а такой цикл пройдет очень быстро, мы добавим небольшую задержку, и для этого используем таймер

 

    '3 ТАЙМЕР получение нового имени через интервал (для создания списка)

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

        rndText() '1 имя будет выведено по любому

        s4et = Val(txtLoop.Text) 'количество имен берем из тект поля

 

        If s4et > 1 Then            'если число больше 1

            txtLoop.Text = s4et - 1 'уменьшаем на 1 и продолжаем цикл

        Else

            TimOff() 'иначе отключ цикла

        End If

    End Sub

 

    '4 подпрограмма для остановки таймера

    Sub TimOff()

        Timer1.Enabled = False

        cmdStop.Enabled = False

        cmdNameLoop.Enabled = True

        txtLoop.Enabled = True

    End Sub

 

    '5-1 Кнопка на форме получаем список имен

    Private Sub cmdNameLoop_Click(sender As Object, e As EventArgs) Handles cmdNameLoop.Click

        ОчисткаРезультатовToolStripMenuItem.Checked = False

 

        Timer1.Enabled = True

        cmdStop.Enabled = True

        cmdNameLoop.Enabled = False

        txtLoop.Enabled = False

 

        namb_ = 0

        txtRez.Text = ""

    End Sub

 

'кнопка в меню дублирует кнопку на форме, но для того что бы код был наглядней и содержал меньше ошибок мы не будем копировать код целиком, а програмно нажмем на кнопку ( таким образом если нам необходимо изменить код - меняем его только в 1 месте)

 

    '5-2 кнопка в Меню получаем список имен (программно нажимаем кнопку на форме)

    Private Sub СоздатьСписокToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СоздатьСписокToolStripMenuItem.Click

        cmdNameLoop_Click(sender, e) 'програмное нажатие на кнопку

    End Sub

 

'для отключения цикла необходимо использовать подпрограмму TimOff()

ее мы и записываем в обе кнопки

    '6-1 кнопка на форме отключения цикла получения списка имен

    Private Sub cmdStop_Click(sender As Object, e As EventArgs) Handles cmdStop.Click

        TimOff()

    End Sub

 

    '6-2 кнопка в Меню отключения цикла получения списка имен

    Private Sub ОстановитьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ОстановитьToolStripMenuItem.Click

        TimOff()

    End Sub

 

 

'Дополнительные настройки элементов

 

    '7 ввод в текст поле только цифр (можно использовать нумератор NumericUpDown)

    Private Sub txtLoop_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtLoop.KeyPress

        'только цифры и удаление

        If Not IsNumeric(e.KeyChar) AndAlso Asc(e.KeyChar) <> 8 Then e.Handled = True

    End Sub

 

    '8 разметка галочек в меню

    '8-1 мужские имена (вариант radioButton1)

    Private Sub МужскоеToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles МужскоеToolStripMenuItem.Click

        МужскоеToolStripMenuItem.Checked = True

        ЖенскоеToolStripMenuItem.Checked = False

        СлучайныйПорядокToolStripMenuItem.Checked = False

    End Sub

 

    '8-2 женские имена (вариант radioButton2)

    Private Sub ЖенскоеToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ЖенскоеToolStripMenuItem.Click

        МужскоеToolStripMenuItem.Checked = False

        ЖенскоеToolStripMenuItem.Checked = True

        СлучайныйПорядокToolStripMenuItem.Checked = False

    End Sub

 

    '8-3 случайное имя (вариант radioButton3)

    Private Sub СлучайныйПорядокToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СлучайныйПорядокToolStripMenuItem.Click

        МужскоеToolStripMenuItem.Checked = False

        ЖенскоеToolStripMenuItem.Checked = False

        СлучайныйПорядокToolStripMenuItem.Checked = True

    End Sub

 

    '8-4 - очистка результатов (вариант checkBox1)

    Private Sub ОчисткаРезультатовToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ОчисткаРезультатовToolStripMenuItem.Click

        If ОчисткаРезультатовToolStripMenuItem.Checked = True Then

            ОчисткаРезультатовToolStripMenuItem.Checked = False

        Else

            ОчисткаРезультатовToolStripMenuItem.Checked = True

        End If

    End Sub

 

    '8-5 дата рождения (вариант checkBox2)

    Private Sub ДатаРожденияToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ДатаРожденияToolStripMenuItem.Click

        If ДатаРожденияToolStripMenuItem.Checked = True Then

            ДатаРожденияToolStripMenuItem.Checked = False

        Else

            ДатаРожденияToolStripMenuItem.Checked = True

        End If

    End Sub

 

    '9 Меню О ПРОГЕ - открывает окно о ПРОГЕ

    Private Sub ToolStripMenuItem3_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem3.Click

        AboutBox1.Show()

    End Sub

 

    '10 Меню ВЫХОД - закрывает программу

    Private Sub ВыходToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВыходToolStripMenuItem.Click

        Close()

    End Sub

 

End Class


 

Если вам понадобится случайное имя или целый список имен, с датам рождения вам достаточно будет нажать всего 1 кнопку. 

 

Смотреть видео

END



Категория: Random VB | Добавил: ProfessorVB (2015-11-18)
Просмотров: 2485 | Теги: случайные числа, Vb.net, timer, MenuStrip, генератор имен, Цикл, програмное нажатие кнопки, рандом | Рейтинг: 5.0/1
Всего комментариев: 0
avatar
Облако тегов
Поиск
Друзья сайта
  • www.youtube.com

  • vk.com/professorvb

  • Партнерка AIR

  • Партнерка VSP Group
  • Поделись с друзьям
    Теги
    Видео Switch массивы уравнения геометрия continue forEach while Обработка событий задать цвет C# math Vb.net xml количество элементов xml поиск значений математика видеоуроки Soft системы Google pirat Proxy tor НОД нок добавление записи в xml поиск Уроки генератор hello world время деструкторы конструкторы дроби калькулятор десятичные дроби решебник сокращение дробей си шарп мнемоника тренажер random количество дней между датами professorvb дата Урок mindgames алгебра многомерные слова словарь Пароль cos SIN база timer рандом Цикл Break DO for RGB условия массив элементов xml редактирование xml создание вирус MenuStrip AntiCenz fri-gate запрещенные сайты база данных Open RichTextBox XML удалить из xml save TopMost анекдот создать XML Классы Тест OpenFileDialog английский развитие иностранные слова DateTimePicker календарь массив перемешивание массива Анаграммы Рифмоплет Сравнение дробей Меморина скорочтение Использование ребусы комплексные числа программа генератор имен
    Copyright ProfessorVB © 2025