• Предмет: Информатика
  • Автор: rubin12345
  • Вопрос задан 3 месяца назад

Срочно!!! С++ Windows Form Реалізувати відсортований по алфавіту список імен з підтримкою операції додавання і видалення елементів, перевіркою допустимості введених значень (допустимі лише літери та цифри).
Приблизний зовнішній вигляд створюваного Windows додатку зображений на малюнку

Приложения:

Ответы

Ответ дал: Alex7359
1

Ответ:

#include <iostream>

#include <string>

#include <algorithm>

#include <regex>

#include <vector>

using namespace System::Windows::Forms;

using namespace System::Collections::Generic;

// клас для зберігання та відображення списку імен

ref class NameList {

private:

   List<String^>^ names;

   ListBox^ listBox;

public:

   NameList(ListBox^ listBox) {

       this->listBox = listBox;

       names = gcnew List<String^>();

   }

   // функція для додавання імена до списку

   void AddName(String^ name) {

       if (IsValidName(name)) {

           names->Add(name);

           RefreshList();

       }

       else {

           MessageBox::Show("Недопустиме ім'я");

       }

   }

   // функція для видалення імена зі списку

   void RemoveName(String^ name) {

       names->Remove(name);

       RefreshList();

   }

   // функція для оновлення відображення списку відсортованих імен

   void RefreshList() {

       listBox->Items->Clear();

       names->Sort();

       for each(String^ name in names) {

           listBox->Items->Add(name);

       }

   }

private:

   // функція для перевірки допустимості імен

   bool IsValidName(String^ name) {

       std::regex pattern("[a-zA-Z0-9]+");

       std::string str = msclr::interop::marshal_as<std::string>(name);

       return std::regex_match(str, pattern);

   }

};

// форма додавання імена до списку

ref class AddNameForm : public Form {

private:

   TextBox^ textBox;

   NameList^ nameList;

public:

   AddNameForm(NameList^ nameList) {

       this->nameList = nameList;

       InitializeComponents();

   }

   void InitializeComponents() {

       Text = "Додати ім'я";

       Size = Drawing::Size(300, 150);

       MinimumSize = Size;

       Label^ label = gcnew Label();

       label->Text = "Введіть ім'я:";

       label->Location = Drawing::Point(10, 20);

       label->AutoSize = true;

       textBox = gcnew TextBox();

       textBox->Location = Drawing::Point(10, 40);

       textBox->Size = Drawing::Size(200, 20);

       Button^ addButton = gcnew Button();

       addButton->Text = "Додати";

       addButton->Location = Drawing::Point(10, 70);

       addButton->Size = Drawing::Size(75, 23);

       addButton->Click += gcnew EventHandler(this, &AddNameForm::AddButtonClick);

       Button^ cancelButton = gcnew Button();

       cancelButton->Text = "Скасувати";

       cancelButton->Location = Drawing::Point(100, 70);

       cancelButton->Size = Drawing::Size(75, 23);

       cancelButton->DialogResult = DialogResult::Cancel

Объяснение:

Вас заинтересует