Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование задач с применением структурированных данных. Лабораторный практикум.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
return true; } else return false; }
//Реализация метода печати элементов списка в виде таблицы void List::print() {
//Печать шапки таблицы cout << "\n Список поездов \n"; hline(); cout << "| Номер | Пункт назначения | Время отправления |" << endl; hline(); //Печать элементов списка Train* pv = pbeg; while (pv) { cout << "| " << setw(5) << pv->get_train_num(); cout << " | " << setw(18) << pv->get_p_nazn(); cout << " | " << setw(19) << pv->get_v_otpr() << " |" << endl; pv = pv->get_next(); } hline(); }
//Реализация метода вывода горизонтальной линии в таблице void List::hline() {
const int m = 52; for (int i = 0; i < m; i++) cout << "-"; cout << endl; }
//Реализация деструктора List::~List() {
if (pbeg != 0) { Train* pv = pbeg; while (pv) { pv = pv->get_next(); delete pbeg; pbeg = pv; } } }
//Функция прорисовки меню void menu()
{ cout << "\n МЕНЮ \n";
101
cout << "1. Ввод данных" << endl; cout << "2. Вывод данных" << endl; cout << "3. Поиск данных" << endl; cout << "4. Удаление" << endl; cout << "5. Выход" << endl; cout << "Введите номер пункта меню для дальнейшей работы" << endl; }
//Функция реализации пользовательского ввода данных //в список void vvod(List* L)
{ int n; int t_num; string p_nazn; string v_otpr; cout << "Введите количество добавляемых элементов в список = "; cin >> n; for (int i = 0; i < n; i++) { cout << "Введите номер поезда" << endl; cin >> t_num; cout << "Введите имя пункта назначения" << endl; while (cin.get() != '\n'); getline(cin, p_nazn); cout << "Введите время отправления" << endl; getline(cin, v_otpr); L->add_sort(t_num, p_nazn, v_otpr); } }
//Функция реализации вывода данных из списка void vivod(List* L) {
if (!L->is_empty()) L->print(); else cout << endl << "Список пуст!" << endl; }
//Функция реализации поиска данных в списке void search(List* L) {
if (!L->is_empty()) {
int k_poisk; //Прорисовка меню поиска cout << "Выберите критерий поиска" << endl; cout << "1. Поиск по номеру поезда" << endl;
102
cout << "2. Поиск по имени пункта назначения" << endl; cout << "3. Поиск по времени отправления" << endl; cout << "Введите номер критерия" << endl; cin >> k_poisk; //Обработка выбора критерия пользователем switch (k_poisk) { case 1: //Поиск по номеру поезда { int t_num; cout << endl << "Введите номер поезда" << endl; cin >> t_num; if (List::Train* pv = L->find(t_num)) { cout << endl << "Результат поиска" << endl; cout << setw(5) << pv->get_train_num() << setw(20) << pv->get_p_nazn() << setw(10) << pv->get_v_otpr() << endl; } else cout << "Поезд с таким номером не найден" << endl; } break; case 2: //Поиск по имени пункта назначения { string p_nazn; cout << endl << "Введите имя пункта назначения" << endl; while (cin.get() != '\n'); getline(cin, p_nazn); cout << endl << "Результат поиска" << endl; if (!L->find_data("p_nazn", p_nazn)) cout << "Поезда с таким пунктом назначения не найдены" << endl; }
break; case 3: //Поиск по времени отправления { string v_otpr; cout << endl << "Введите время отправления" << endl; while (cin.get() != '\n'); getline(cin, v_otpr); cout << endl << "Результат поиска" << endl; if (!L->find_data("v_otpr", v_otpr)) cout << "Поезда с таким временем отправления не найдены" << endl; } break;
103
default: cout << "Неверный вариант выбора" << endl; } } else cout << endl << "Список пуст!" << endl; }
//Функция удаления элемента из списка void del(List* L) {
if (!L->is_empty()) { int t_num; cout << "Введите номер поезда для удаления" << endl; cin >> t_num; if (L->remove(t_num)) cout << endl << "Элемент удален" << endl; else cout << endl << "Элемент с таким номером поезда не найден" << endl; } else cout << endl << "Список пуст!" << endl; }
//Функция реализации выхода из программы void vihod(List* L) {
L->~List(); }
int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); List L; int num = 0; //Переменная для хранения номера выбранного пункта меню while (num != 5) { menu(); cin >> num; if (num < 1 || num > 5) cout << "Неверный вариант выбора" << endl; else menu_list[num - 1](&L); } return 0; }
104

7.3. Задания к лабораторной работе № 7

Задание
Создать программу, формирующую данные определенной структуры в
виде двунаправленного линейного списка. Список должен являться объектом класса. Структура данных зависит от варианта.
Программа должна реализовывать следующие операции:
– формирование меню для выбора действия пользователем; – ввод данных в список, отсортированный по ключу; – вывод данных из списка в виде таблицы; – поиск элемента в списке по различным критериям (номеру поезда, име-
ни пункта назначения, времени отправления);
– удаление элемента из списка по заданному ключу.
Отчет
Отчет должен содержать титульный лист, вариант задания, текст про-
граммы с комментариями, скриншоты результатов работы программы.
Варианты заданий
1. Составить программу, которая обрабатывает информацию о таксопарке. Сведения о такси содержат:
– номер машины (ключ); – ФИО водителя; – марка машины; – стаж водителя.
2. Составить программу, которая обрабатывает информацию о пользова-
телях компьютерной сети.
Сведения о пользователе содержат:
– логин пользователя(ключ); – дата регистрации; – тип пользователя.
3. Составить программу, которая обрабатывает информацию о продаже
билетов на концерт.
– дата концерта (ключ); – название исполнителя; – количество проданных билетов.
4. Составить программу, которая обрабатывает информацию о лаборато-
риях института.
Сведения о лаборатории содержат:
– номер лаборатории (ключ); – количество компьютеров; – ФИО ответственного лаборанта.
105
5. Составить программу, которая обрабатывает информацию о мебельных
гарнитурах, продаваемых в магазине.
Сведения о гарнитуре содержат:
– название гарнитура (ключ); – количество предметов; – цена; – наличие на складе.
6. Составить программу, которая обрабатывает информацию о заказах на
ремонт вычислительной техники.
Сведения о заказе содержат:
– номер заказа (ключ); – ФИО заказчика; – описание неисправности; – стоимость ремонта.
7. Составить программу, которая обрабатывает информацию для учета
автомобильных грузоперевозок.
Сведения о грузовике содержат:
– номер грузовика (ключ); – ФИО водителя; – грузоподъемность.
8. Составить программу, которая обрабатывает информацию об авиаполке. Сведения об авиаполке содержат:
– номер полка (ключ); – ФИО командира; – количество самолетов; – количество боеготовых самолетов.
9. Составить программу, которая обрабатывает информацию о гостинич-
ных номерах.
Сведения о номере содержат:
– номер комнаты (ключ); – этаж; – вид номера; – количество мест.
10. Составить программу, которая обрабатывает информацию о наличии
автобусов в автобусном парке.
Сведения о каждом автобусе содержат:
– номер автобуса (ключ); – ФИО водителя; – номер маршрута.
106
11. Составить программу, которая обрабатывает информацию о книгах в
библиотеке.
Сведения о книгах содержат:
– номер УДК (ключ); – ФИО автора; – название; – год издания.
12. Составить программу, которая обрабатывает информацию о гражда-
нах, лежащих в больнице.
Сведения о больном содержат:
– номер больного (ключ) – ФИО больного; – диагноз; – номер палаты.
13. Составить программу, которая обрабатывает информацию о наличии
бензина на автозаправочной станции.
Сведения о бензине содержат:
– марка бензина (ключ); – цена за литр; – количество литров наличии.
14. Составить программу, которая обрабатывает информацию о продажах
компьютерных игр.
Сведения о туре содержат:
– название игры (ключ); – издатель; – количество проданных физических копий; – количество проданных цифровых копий.
15. Составить программу, которая обрабатывает информацию о заявках
на авиабилеты.
Каждая заявка содержит:
– номер рейса (ключ); – пункт назначения; – ФИО пассажира; – желаемую дату вылета.
16. Составить программу, формирующую телефонный справочник. Сведения об абоненте содержат:
– номер телефона (ключ); – ФИО абонента; – адрес абонента.
107
17. Составить программу, которая обрабатывает информацию об учебной
дисциплине.
Сведения об учебной дисциплине содержат:
– шифр дисциплины (ключ); – название дисциплины; – количество лекционных часов; – количество часов на лабораторные работы.
18. Составить программу, которая обрабатывает информацию о продаже
автомобилей в автосалоне.
Сведения об автомобиле содержат:
– номер автомобиля (ключ); – марка автомобиля; – дата продажи;
19. Составить программу, которая обрабатывает информацию о заказе на
пошив одежды в ателье.
Сведения о заказе содержат:
– номер заказа (ключ); – предмет одежды; – ФИО закройщика; – стоимость материала.
20. Составить программу, которая обрабатывает информацию о врачах,
работающих в поликлинике.
Сведения о враче содержат:
– табельный номер врача (ключ); – ФИО врача; – специализация; – номер кабинета.
21. Составить программу, которая обрабатывает информацию о наличии
приборов на складе.
Сведения о приборе содержат:
– название прибора (ключ); – тип прибора; – цена; – количество на складе.
22. Составить программу, которая обрабатывает информацию о продаже
путевок в туристическом агентстве.
Сведения о туре содержат:
– название тура (ключ); – продолжительность тура; – стоимость путевки; – количество проданных путевок.
108
23. Составить программу, которая обрабатывает информацию об обору-
довании.
Сведения об оборудовании содержат:
– серийный номер (ключ); – название оборудования; – тип оборудования; – стоимость оборудования.
24. Составить программу, которая обрабатывает информацию о файлах. Сведения о файле содержат:
– название файла (ключ); – тип файла; – размер файла.
25. Составить программу, которая обрабатывает информацию о студентах. Сведения о студенте содержат:
– номер зачетки (ключ); – ФИО студента; – группа.
26. Составить программу, которая обрабатывает информацию о сотруд-
никах.
Сведения о сотруднике содержат:
– табельный номер (ключ); – ФИО сотрудника; – должность.
27. Составить программу, которая обрабатывает информацию о счетах. Сведения о счете содержат:
– номер счета (ключ); – ФИО клиента; – годовой процент.
28. Составить программу, которая обрабатывает информацию о товарах. Сведения о товарах содержат:
– индекс товара (ключ); – название товара; – цена товара.
29. Составить программу, которая обрабатывает информацию о характе-
ристиках смартфонов.
Сведения о характеристиках смартфонов содержат:
– серийный номер (ключ); – разрешение экрана, возможные значения – от 480х800 пикселей до
1920х1080 пикселей;
– диагональ экрана, возможные значения – 3,5, 5, 6 дюймов;
- цена.
109
30. Составить программу, которая обрабатывает информацию о характе-
ристиках сканеров.
Сведения о характеристиках сканеров содержат:
– серийный номер (ключ); – оптическое разрешение, возможные значения - от 600 dpi до 1200 dpi; – скорость сканирования (количество страниц в минуту);
- цена.
31. Составить программу, которая обрабатывает информацию о характе-
ристиках клавиатуры.
Сведения о характеристиках клавиатуры содержат:
– серийный номер (ключ); – количество кнопок (стандартное – 105, нестандартное); – тип клавиатуры (мембранная, механическая, слим);
- цена.
32. Составить программу, которая обрабатывает информацию о характе-
ристиках компьютерной мыши.
Сведения о характеристиках мыши содержат:
– серийный номер (ключ); – тип (механическая, оптическая, дистанционная); – разъем для подключения (к порту РС/2, USB-порту);
- цена.
33. Составить программу, которая обрабатывает информацию о характе-
ристиках компьютера.
Сведения о характеристиках компьютера содержат:
– серийный номер (ключ); – тип процессора (Pentium MMX, Pentium II, Pentium III и Pentium IV); – объем оперативной памяти;
- цена.
34. Составить программу, которая обрабатывает информацию об опера-
тивной памяти компьютера.
Сведения об оперативной памяти содержат:
– серийный номер (ключ); – тип памяти (например, DDR3 SDRAM, DDR4 SDRAM, DDR5 SDRAM); – тактовая частота шины (возможные значения находятся в интервале от
800 до 8400 МГц;
- цена.
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]