Задание
Исходными данными являются данные, вводимы пользователем. Данные описывают некоторую сущность, например, персону (фамилия, возраст, пол), книгу (название, автор, количество страницы, понравилась или нет) и т.п. Придумайте сами, какие сущности вы будете описывать. Приведенные выше в примерах использовать запрещается. Требования к данным – элемент, содержащий данные, обязательно должен включать в себя данные типа int, string и bool. Какое из них считается ключевым полем (ключом) - на выбор студента.
Разработать класс MyList, реализующий организацию данных в виде связного списка и обеспечивающего следующую функциональность:
- включение нового элемента в начало списка;
- включение нового элемента в конец списка;
- поиск элемента с заданным значением ключа;
- включение нового элемента в упорядоченный список без нарушения его упорядоченности;
- удаление элемента из упорядоченного списка;
- визуализацию текущего состояния списка.
Разработать главную программу обеспечивающую:
- ввод с программного интерфейса конкретных значений данных;
- создание элемента, хранящего введенные пользователем значения данных;
- выполнения с этими данными перечисленных выше операций.
Пользовательский интерфейс
Примерный пользовательский интерфейс содержит следующие компоненты (в контексте выше приведенного примера содержимого элемента):
- Текстбоксы (и соответствующие подписи их) для ввода фамилии, возраста и пола.
- Кнопка "Создать объект", по нажатию которой создается объект с данными, введенными в выше указанные текстбоксы.
- Кнопка "В начало", по нажатию которой созданный объект с данными помещается в начало списка.
- Листбокс для вывода содержимого списка.
- Кнопка "Визуализировать", по нажатию которой содержимое списка выводится в листбокс.
- Кнопка "В конец", по нажатию которой созданный объект с данными помещается в конец списка.
- Кнопка "Упорядоченно", по нажатию которой созданный объект с данными помещается в упорядоченный список, не нарушая его упорядоченности.
- Текстбокс для ввода значения ключа для операций поиска и удаления.
- Кнопка "Найти" для выполнения поиска элемента по заданному ключу и вывода его содержимого.
- Кнопка "Удалить" по нажатию которой элемент с заданным значение ключа удаляется из списка .
Содержание отчета к программе
Итого отчет к программе и постановка задачи на 7 страницах
Фрагмент программного кода
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; namespace MyList { // елемент списка class MyList { // Указатель на начало списка MyListLink first = null; // Ссылка на последний элемент MyListLink last = null; // добавление в конец public void Prepend(MyData guitar) { MyListLink newMyListLink = new MyListLink(guitar); // если начальный пуст - заполним его if (this.first == null) { newMyListLink.prev = null; this.first = newMyListLink; return; } // добавим в конец MyListLink lastMyListLink = GetLastLink(this); lastMyListLink.next = newMyListLink; newMyListLink.prev = lastMyListLink; } // Вывод списка public void Visual(ListBox textbox, MyList Links) { // берем первый из списка MyListLink current = Links.first; do { // заполняем коллекцию textbox.Items.Add(current.data.Brand + ", "+ current.data.Model + ", "+ current.data.Amount + ", "+ current.data.Avail); current = current.next; // пока не кончаться жлементы } while (current != null); } // добавляем в начало public void Append(MyData guitar) { MyListLink newMyListLink = new MyListLink(guitar); newMyListLink.next = this.first; newMyListLink.prev = null; if (this.first != null) { this.first.prev = newMyListLink; } this.first = newMyListLink; } // Получение последнего элемента списка private MyListLink GetLastLink(MyList List) { MyListLink temp = List.first; while (temp.next != null) { temp = temp.next; } return temp; } // Добавляет элемент на указанную позицию public void InsertAfter(int position, MyData guitar) {
Скриншот архива с проектом
Пояснения по запуску программы
.NET Core 3.1 WinForms
Kap