- •Общие требования
- •Часть 1
- •1.1 Простейшие алгоритмы
- •1.2 Выражения
- •1.3 Циклы
- •1.4 Одномерные массивы
- •1.5 Матрицы
- •1.6 Строки
- •1.7 Записи и файлы
- •1.8 Функции и процедуры
- •Часть 2
- •2.1 Стандартные алгоритмы
- •2.2 Элементы выбора
- •2.3 Простейшие классы
- •2.4 Графика
- •2.5 Диалоговые окна
- •2.6 Комплексное задание
- •2.7 Наследование
- •2.8 Древовидные структуры
- •Часть 3
- •3.1 Самостоятельная работа 1
- •3.2 Самостоятельная работа 2
2.8 Древовидные структуры
46
Задание: Разработать программу, обеспечивающую формирование заданной структуры «дерева» (добавление, изменение, удаление элементов) с использованием компонента класса (TTreeView / TreeView), расположенного на основной форме, и диалоговых окон. Предусмотреть в диалоговых окнах проверку правильности ввода данных. Разработать классы, обеспечивающие хранение указанных данных. Для хранения списков данных использовать экземпляры класса (TCollection / List). Предусмотреть запрет недопустимых действий. Реализовать для выбранного элемента дерева отображение необходимой информации в компоненте класса (TEdit / TextBox). Варианты заданий приведены в таблице 5.
Пояснение: в апострофах приведен текст, выводимый без изменения; вместо строки в угловых скобках (< >) выводить реальные данные; знак «+» не выводится.
Таблица 5 – Варианты заданий для составления программ, обрабатывающих древовидные структуры
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
вень |
|
информации |
1. |
1 |
'Список АТС' |
'Это корень дерева' |
|
2 |
<наименование АТС> |
'Сумма долга: '+ |
|
|
|
+<суммарная задолженность> |
|
3 |
'Район: '+<район расположения> |
'АТС: '+<наименование АТС> |
|
|
'Число номеров: '+<число номеров> |
|
|
|
'Список абонентов' |
|
|
4 |
<ФИО абонента> |
'Номер телефона: '+<номер телефона> |
|
5 |
'Номер телефона: '+<номер телефона> |
'Абонент: '+<ФИО абонента> |
'Адрес: '+<адрес>
'Задолженность: '+<текущая задолженность>
Продолжение таблицы 5
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
2. |
1 |
'Список городов' |
'Это корень дерева' |
|
|
2 |
<наименование города> |
'Площадь: '+ |
|
|
|
|
+<суммарная площадь районов> |
|
|
3 |
'Область: '+<область> |
'Город: '+<наименование города> |
|
|
|
'Год основания: '+<год основания> |
|
|
|
|
'Число жителей: '+<число жителей> |
|
|
|
|
'Список районов' |
|
|
|
4 |
<наименование района> |
'Главная улица: '+ |
|
|
|
|
+<наименование главной улицы> |
|
|
5 |
'Глава района: '+<ФИО главы района> |
'Район: '+<наименование района> |
|
|
|
'Площадь: '+<занимаемая площадь> |
|
47 |
|
|
'Главная улица: '+<наименование главной улицы> |
|
|
3. |
1 |
'Список ВУЗов' |
'Это корень дерева' |
|
|
2 |
<наименование ВУЗа> |
'Всего сотрудников: '+ |
|
|
|
|
+<суммарное количество |
|
|
|
|
сотрудников ВУЗа> |
|
|
3 |
'Ректор: '+<ФИО ректора> |
'Всего кафедр: '+ |
|
|
|
'Число корпусов: '+<число корпусов> |
+<суммарное количество кафедр ВУЗа> |
|
|
|
'Список факультетов' |
|
|
|
4 |
<наименование факультета> |
'ВУЗ: '+<наименование ВУЗа> |
|
|
5 |
'Декан: '+<ФИО декана> |
'Факультет: '+<наименование факультета> |
|
|
|
'Кафедр: '+<количество кафедр> |
|
|
|
|
'Сотрудников: '+<количество сотрудников> |
|
Продолжение таблицы 5
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
4. |
1 |
'Список групп' |
'Это корень дерева' |
|
|
2 |
<наименование группы> |
'Студентов в группе: '+ |
|
|
|
|
+<количество студентов> |
|
|
3 |
'Факультет: '+<факультет> |
'Наименование группы: '+ |
|
|
|
'Куратор: '+<ФИО куратора> |
+<наименование группы> |
|
|
|
'Список студентов' |
|
|
|
4 |
<ФИО студента> |
'Куратор: '+<ФИО куратора> |
|
|
5 |
'Дипломная работа: '+<наименование дипломной работы> |
'ФИО студента: '+<ФИО студента> |
|
|
|
'Оценка: '+<оценка> |
|
|
5. |
1 |
'Список классов' |
'Это корень дерева' |
48 |
|
2 |
<номер класса> |
'Классный руководитель: '+ |
|
|
|
+<ФИО классного руководителя> |
|
|
|
|
|
|
|
|
3 |
'Классный руководитель: '+<ФИО классного руководителя> |
'Номер класса: '+<номер класса> |
|
|
|
'Закрепленный класс: '+<№ закрепленного класса> |
|
|
|
|
'Список школьников' |
|
|
|
4 |
<ФИО школьника> |
'Номер класса: '+<номер класса> |
|
|
5 |
'Математика: '+<оценка по математике> |
'ФИО школьника: '+<ФИО школьника> |
|
|
|
'Физика: '+<оценка по физике> |
|
|
|
|
'Информатика: '+<оценка по информатике> |
|
|
|
Продолжение таблицы 5 |
|
|
|
|
|
|
|
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
6. |
1 |
'Список врачей' |
'Это корень дерева' |
|
|
2 |
<ФИО врача> |
'Всего пациентов: '+ |
|
|
|
|
+<количество пациентов> |
|
|
3 |
'Кабинет: '+<№ рабочего кабинета> |
'Врач: '+<ФИО врача> |
|
|
|
'Время работы: '+<время работы> |
|
|
|
|
'Список пациентов' |
|
|
|
4 |
<ФИО пациента> |
'Адрес: '+<адрес> |
|
|
5 |
'Адрес: '+<адрес> |
'Пациент: '+<ФИО пациента> |
|
|
|
'Рост: '+<рост> |
|
|
|
|
'Вес: '+<вес> |
|
49 |
7. |
1 |
'Список вольеров' |
'Это корень дерева' |
|
2 |
<наименование вольера> |
'Всего животных: '+ |
|
|
|
|||
|
|
|
|
+<количество животных> |
|
|
3 |
'Площадь: '+<площадь> |
'Вольер: '+<наименование вольера> |
|
|
|
'Высота ограды: '+<высота ограды> |
|
|
|
|
'Список животных' |
|
|
|
4 |
<наименование животного> |
'Вес животного: '+<вес животного> |
|
|
5 |
'Вес: '+<вес животного> |
'Животное: '+<наименование животного> |
|
|
|
'Тип пищи: '+<тип пищи> |
|
|
|
|
'Ест в сутки: '+<суточное потребление пищи> |
|
Продолжение таблицы 5
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
8. |
1 |
'Список команд' |
'Это корень дерева' |
|
|
2 |
<наименование команды> |
'Игроков в команде: '+ |
|
|
|
|
+<количество игроков в команде> |
|
|
3 |
'Тренер: '+<ФИО тренера> |
'Команда: '+<наименование команды> |
|
|
|
'Город: '+<город расположения> |
|
|
|
|
'Средний возраст: '+<средний возраст> |
|
|
|
|
'Список спортсменов' |
|
|
|
4 |
<ФИО спортсмена> |
'Лучший результат: '+<лучший результат> |
|
|
5 |
'Возраст: '+<возраст> |
'Спортсмен: '+<ФИО спортсмена> |
|
|
|
'Лучший результат: '+<лучший результат> |
|
50 |
9. |
1 |
'Список банков' |
'Это корень дерева' |
|
2 |
<наименование банка> |
'Город: '+<город расположения> |
|
|
|
|||
|
|
3 |
'Город: '+<город расположения> |
'Баланс клиентов: '+ |
|
|
|
'Адрес: '+<адрес банка> |
+<суммарный баланс клиентов> |
|
|
|
'Список клиентов' |
|
|
|
4 |
<ФИО клиента> |
'Банк: '+<наименование банка> |
|
|
5 |
'№ счета: '+<№ счета> |
'Клиент'+<ФИО клиента> |
|
|
|
'Адрес: '+<адрес клиента> |
|
|
|
|
'Баланс: '+<баланс> |
|
|
|
Продолжение таблицы 5 |
|
|
|
|
|
|
|
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
10. |
1 |
'Список студий' |
'Это корень дерева' |
|
|
2 |
<наименование студии> |
'Всего дисков: '+<количество дисков> |
|
|
3 |
'Город расположения: '+<город> |
'Студия: '+<наименование студии> |
|
|
|
'Директор: '+<ФИО директора> |
|
|
|
|
'Список дисков' |
|
|
|
4 |
<наименование диска> |
'Исполнитель: '+<ФИО исполнителя> |
|
|
5 |
'Исполнитель: '+<ФИО исполнителя> |
'Диск: '+<наименование диска> |
|
|
|
'Длительность: '+<длительность> |
|
|
|
|
'Год выпуска: '+<год выпуска> |
|
51 |
11. |
1 |
'Список аэровокзалов' |
'Это корень дерева' |
|
2 |
<наименование аэровокзала> |
'Город: '+<город> |
|
|
|
|||
|
|
3 |
'Город: '+<город> |
'Всего рейсов: '+<количество рейсов> |
|
|
|
'Телефон диспетчера: '+<телефон диспетчера> |
|
|
|
|
'Список рейсов' |
|
|
|
4 |
<номер рейса> |
'Аэровокзал: '+ |
|
|
|
|
+<наименование аэровокзала> |
|
|
5 |
'Тип самолета: '+<тип самолета> |
'Номер рейса: '+<номер рейса> |
|
|
|
'Длительность полета: '+<длительность полета> |
|
|
|
|
'Стоимость: '+<стоимость> |
|
|
|
Продолжение таблицы 5 |
|
|
|
|
|
|
|
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
12. |
1 |
'Список городов' |
'Это корень дерева' |
|
|
2 |
<наименование города> |
'Всего библиотек: '+ |
|
|
|
|
+<количество библиотек> |
|
|
3 |
'Область: '+<наименование области> |
'Город: '+<наименование города> |
|
|
|
'Число жителей: '+<число жителей> |
|
|
|
|
'Cписок библиотек' |
|
|
|
4 |
<наименование библиотеки> |
'Адрес: '+<адрес> |
|
|
5 |
'Адрес: '+<адрес> |
'Библиотека: '+ |
|
|
|
'Всего книг: '+<количество экземпляров книг> |
+<наименование библиотеки> |
52 |
13. |
1 |
'Список библиотек' |
'Это корень дерева' |
|
2 |
<наименование библиотеки> |
'Всего книг: '+<количество книг> |
|
|
|
|||
|
|
3 |
'Адрес: '+<адрес> |
'Книг с 2000 года: '+ |
|
|
|
'Директор: '+<ФИО директора> |
+<количество книг, изданных |
|
|
|
'Список книг' |
с начала 2000 года> |
|
|
4 |
<наименование книги> |
'Автор: '+<ФИО автора> |
|
|
5 |
'Автор: '+<ФИО автора> |
'Книга: '+<наименование книги> |
|
|
|
'Страниц'+<количество страниц> |
|
|
|
|
'Год издания: '+<год издания> |
|
|
|
Продолжение таблицы 5 |
|
||
|
|
|
|
|
|
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
|
вень |
|
информации |
|
|
14. |
1 |
'Список областей' |
'Это корень дерева' |
|
|
|
2 |
<наименование области> |
'Всего жителей: '+ |
|
|
|
|
|
+<суммарное число жителей области> |
|
|
|
3 |
'Глава: '+<ФИО главы области> |
'Всего городов: '+<количество городов> |
|
|
|
|
'Площадь: '+<площадь> |
|
|
|
|
|
'Список городов' |
|
|
|
|
4 |
<наименование города> |
'Область: '+<наименование области> |
|
|
|
5 |
'Глава: '+<ФИО главы города> |
'Город: '+<наименование города> |
|
|
|
|
'Число жителей: '+<число жителей> |
|
|
53 |
|
|
'Год основания: '+<год основания> |
|
|
15. |
1 |
'Список заводов' |
'Это корень дерева' |
||
|
|||||
|
|
2 |
<наименование завода> |
'Прибыль: '+ |
|
|
|
|
|
+<суммарная годовая прибыль завода> |
|
|
|
3 |
'Директор: '+<ФИО директора> |
'Завод: '+<наименование завода> |
|
|
|
|
'Число рабочих: '+<численность работающих> |
|
|
|
|
|
'Список цехов' |
|
|
|
|
4 |
<наименование цеха> |
'Начальник цеха: '+ |
|
|
|
|
|
+<ФИО начальника цеха> |
|
|
|
5 |
'Начальник цеха: '+<ФИО начальника цеха> |
'Цех: '+<наименование цеха> |
|
|
|
|
'Годовая прибыль: '+<годовая прибыль> |
|
Продолжение таблицы 5
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
16. |
1 |
'Список факультетов' |
'Это корень дерева' |
|
|
2 |
<наименование факультета> |
'Всего кафедр: '+ |
|
|
|
|
+<количество кафедр в ВУЗе> |
|
|
3 |
'Декан: '+<ФИО декана> |
'Факультет: '+<наименование факультета> |
|
|
|
'Сотрудников: '+<количество сотрудников> |
|
|
|
|
'Список кафедр' |
|
|
|
4 |
<наименование кафедры> |
'% отличников: '+ |
|
|
|
|
+<% выпущенных с красным дипломом> |
|
|
5 |
'Заведующий: '+<ФИО заведующего кафедрой> |
<наименование кафедры> |
54 |
|
|
'Выпущено студентов: '+ |
|
|
|
+<количество выпущенных студентов> |
|
|
|
|
|
|
|
|
|
|
'Выпущено отличников: '+ |
|
|
|
|
+<количество выпущенных студентов с красным дипломом> |
|
|
17. |
1 |
'Список кафедр' |
'Это корень дерева' |
|
|
2 |
<наименование кафедры> |
'Всего студентов: '+ |
|
|
|
|
+<суммарное количество студентов |
|
|
|
|
на кафедре> |
|
|
3 |
'Заведующий: '+<ФИО заведующего кафедрой> |
'Всего групп: '+<количество групп> |
|
|
|
'Год основания: '+<год основания> |
|
|
|
|
'Список групп' |
|
|
|
4 |
<наименование группы> |
'Кафедра: '+<наименование кафедры> |
|
|
5 |
'Староста: '+<ФИО старосты> |
'Группа: '+<наименование группы> |
|
|
|
'Год поступления: '+<год поступления> |
|
|
|
|
'Студентов в группе: '+<количество студентов> |
|
Продолжение таблицы 5
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
18. |
1 |
'Cписок дисциплин' |
'Это корень дерева' |
|
|
2 |
<наименование дисциплины> |
'Разделов: '+ |
|
|
|
|
+<количество разделов в дисциплине> |
|
|
3 |
'Лектор: '+<ФИО лектора> |
'Дисциплина: '+ |
|
|
|
'Семестр: '+<семестр обучения> |
+<наименование дисциплины> |
|
|
|
'Список разделов' |
|
|
|
4 |
<наименование раздела> |
'Занятий: '+ |
|
|
|
|
+<суммарное количество занятий> |
|
|
5 |
'Лекций: '+<количество лекций> |
'Раздел: '+<наименование раздела> |
55 |
|
|
'Практики: '+<количество практических занятий> |
|
|
|
'Лабораторных: '+<количество лабораторных работ> |
|
|
|
19. |
1 |
'Cписок автозаводов' |
'Это корень дерева' |
|
|
2 |
<наименование автозавода> |
'Годовой выпуск: '+ |
|
|
|
|
+<суммарный годовой выпуск завода> |
|
|
3 |
'Директор: '+<ФИО директора> |
'Завод: '+<наименование автозавода> |
|
|
|
'Город: '+<наименование города расположения> |
|
|
|
|
'Cписок марок автомобилей' |
|
|
|
4 |
<наименование марки автомобиля> |
'Стоимость: '+<стоимость> |
|
|
5 |
'Годовой выпуск: '+<годовой выпуск> |
'Марка: '+ |
|
|
|
'Год начала выпуска: '+<год начала выпуска> |
+<наименование марки автомобиля> |
|
|
|
'Стоимость: '+<стоимость> |
|
Продолжение таблицы 5
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
20. |
1 |
'Список стран' |
'Это корень дерева' |
|
|
2 |
<наименование страны> |
'Количество регионов: '+ |
|
|
|
|
+<количество регионов в стране> |
|
|
3 |
'Столица: '+<наименование столицы> |
'Страна: '+<наименование страны> |
|
|
|
'Президент: '+<ФИО президента> |
|
|
|
|
'Список регионов' |
|
|
|
4 |
<наименование региона> |
'<Бюджет на человека: '+ |
|
|
|
|
+<годовой бюджет на одного человека> |
|
|
5 |
'Город-центр: '+<наименование города-центра> |
'Регион: '+<наименование региона> |
56 |
|
|
'Жителей в регионе: '+<число жителей региона> |
|
|
|
'Годовой бюджет: '+<годовой бюджет> |
|
|
|
|
|
|
|
|
21. |
1 |
'Список блюд' |
'Это корень дерева' |
|
|
2 |
<наименование блюда> |
'Стоимость: '+<стоимость 1 кг блюда> |
|
|
3 |
'Страна-изобретатель: '+ |
'Блюдо: '+<наименование блюда> |
|
|
|
+<наименование страны-изобретателя> |
|
|
|
|
'Стоимость: '+<стоимость> |
|
|
|
|
'Список ингредиентов' |
|
|
|
4 |
<наименование ингредиента> |
'Количество ингредиентов: '+ |
|
|
|
|
+<количество ингредиентов> |
|
|
5 |
'Потребность на 1 кг. блюда: '+<потребность на 1 кг. блюда> |
'Ингредиент: '+ |
|
|
|
'Стоимость: '+<стоимость 1 кг> |
+<наименование ингредиента> |
Продолжение таблицы 5
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
22. |
1 |
'Список рейсов' |
'Это корень дерева' |
|
|
2 |
<наименование рейса> |
'% заполнения рейса: '+ |
|
|
|
|
+<% заполнения рейса> |
|
|
3 |
'Тип самолета: '+<тип самолета> |
'Рейс: '+<наименование рейса> |
|
|
|
'Количество мест: '+<количество мест> |
|
|
|
|
'Список пассажиров' |
|
|
|
4 |
<ФИО пассажира> |
'Количество пассажиров: '+ |
|
|
|
|
+<количество пассажиров> |
|
|
5 |
'№ паспорта: '+<№ паспорта> |
'Пассажир: '+<ФИО пассажира> |
57 |
|
|
'Вес багажа: '+<вес багажа> |
|
|
|
'Мест багажа: '+<количество мест багажа> |
|
|
|
|
|
|
|
|
23. |
1 |
'Cписок магазинов' |
'Это корень дерева' |
|
|
2 |
<наименование магазина> |
'Годовая выручка: '+ |
|
|
|
|
+<сумма годовой продажи всех |
|
|
|
|
товаров магазина> |
|
|
3 |
'Владелец: '+<ФИО владельца> |
'Магазин: '+<наименование магазина> |
|
|
|
'Адрес: '+<адрес> |
|
|
|
|
'Список продаваемых товаров' |
|
|
|
4 |
<наименование товара> |
'Производитель: '+ |
|
|
|
|
+<наименование производителя> |
|
|
5 |
'Производитель: '+<наименование производителя> |
'Товар: '+<наименование товара> |
|
|
|
'Стоимость: '+<стоимость> |
|
|
|
|
'Годовая продажа: '+<годовая продажа, шт.> |
|
Продолжение таблицы 5
|
№ |
Уро- |
Описание элементов «дерева» |
Строка отображаемой |
|
|
вень |
|
информации |
|
24. |
1 |
'Список заповедников' |
'Это корень дерева' |
|
|
2 |
<наименование заповедника> |
'Количество потомства: '+ |
|
|
|
|
+<количество потомства в год |
|
|
|
|
в зоопарке> |
|
|
3 |
'Площадь: '+<занимаемая площадь> |
'Зоопарк: '+<наименование заповедника> |
|
|
|
'Год основания: '+<год основания> |
|
|
|
|
'Список зверей' |
|
|
|
4 |
<наименование зверя> |
'Количество пар: '+ |
|
|
|
|
+<количество пар особей> |
58 |
|
5 |
'Количество пар: '+<количество пар особей> |
'Зверь: '+<наименование зверя> |
|
|
'Количество потомства в год: '+ |
|
|
|
|
|
+<количество потомства у одной пары в год> |
|
|
25. |
1 |
'Список фирм' |
'Это корень дерева' |
|
|
2 |
<наименование фирмы> |
'Сумма продаж'+ |
|
|
|
|
+<суммарный объем продажи фирмы> |
|
|
3 |
'Руководитель: '+<ФИО руководителя> |
'Фирма: '+<наименование фирмы> |
|
|
|
'Год основания: '+<год основания> |
|
|
|
|
'Список программных продуктов' |
|
|
|
4 |
<наименование программного продукта> |
'Продано экземпляров: '+ |
|
|
|
|
+<количество проданных экземпляров> |
|
|
5 |
'Продано экземпляров: '+ |
'Программный продукт: '+ |
|
|
|
+<количество проданных экземпляров> |
+<наименование программного продукта> |
|
|
|
'Стоимость экземпляра: '+<стоимость одного экземпляра> |
|