
- •Введение
- •Постановка задачи Вариант 6
- •Выбор и обоснование структур данных
- •2.1 Статические массивы.
- •2.2 Динамические связанные списки.
- •2.3 Базы данных.
- •2.4 Вывод.
- •Разработка алгоритма
- •Технические приемы программирования
- •Тестирование
- •6. Руководство пользователя
- •6.1 Добавить диск
- •6.2 Изменить диск
- •6.3 Удалить диск
- •6.4 Поиск диска
- •6.5 Сортировка дисков
- •7. Заключение
- •8. Листинг программы
Разработка алгоритма
Согласно поставленной задаче алгоритм предусматривает основные возможности работы с данными CD/DVD дисков магазина.
Алгоритм предусматривает следующие возможности:
добавление в базу данных о CD/DVD дисках (тип, наименование, автор, цена, примечание);
изменение в базе данных о CD/DVD дисках;
удаление из базы данных о CD/DVD диске;
поиск CD/DVD дисков по наименованию либо по автору;
сортировка списка CD/DVD дисков по наименованию либо по автору;
автоматическая сортировка списка CD/DVD дисков по их типу при добавлении либо изменение дисков;
автоматическое сохранение списка CD/DVD дисков в текстовый файл при закрытии программы;
автоматическая загрузка списка CD/DVD дисков из текстового файла при открытии программы.
Использованные в программе алгоритмы основаны на основных приемах работы с динамическими списками, рассмотренных в соответствующем разделе.
Рисунок 3.1 – Схема программы
Рисунок 3.2 – Схема процедуры добавления диска
Рисунок 3.3 – Схема процедуры изменения диска
Рисунок 3.4 – Схема процедуры удаления диска
Рисунок 3.5 – Схема процедуры поиска диска
Рисунок 3.6 – Схема процедуры сортировки дисков
Рисунок 3.7 – Схема процедуры обновления списка дисков
Технические приемы программирования
1) При разработке интерфейса программы были использованы следующие компоненты Delphi: TLabel, TEdit, TCombobox, TButton, TBitBtn, TRadioGroup, TStringGrid, TPanel.
2) В программе используется один динамический список, используемый для хранения данных.
3) Для хранения указателя на начало списка типа PDisk используется глобальная переменная, т.к. доступ к списку должен быть обеспечен в любой точке программы.
4 В программе предусмотрен ряд естественных ограничений (добавление существующего диска, изменение диска на существующий, использование пробелов в поле ''Наименование'' и ''Автор''), реализованных с помощью предварительной проверки состояния списка при клике на соответствующих элементах управления.
5) С целью экономии памяти определена процедура для физического удаления списков.
Пример:
procedure TFrmMain.BtnDeleteClick(Sender: TObject);
var
H, Temp: PDisk;
begin
H := Head;
if Sg.Row <> 0 then
begin
if (H^.Data = Sg.Cells[0, Sg.Row]) and
(H^.Name = Sg.Cells[1, Sg.Row]) and
(H^.Author = Sg.Cells[2, Sg.Row]) and
(inttostr(H^.Price) = Sg.Cells[3, Sg.Row]) and
(H^.Note = Sg.Cells[4, Sg.Row]) then
begin
Temp := Head;
Head := Head^.Next;
Dispose(Temp);
end
else
begin
while (H^.Next^.Data <> Sg.Cells[0, Sg.Row]) or
(H^.Next^.Name <> Sg.Cells[1, Sg.Row]) or
(H^.Next^.Author <> Sg.Cells[2, Sg.Row]) or
(inttostr(H^.Next^.Price) <> Sg.Cells[3, Sg.Row]) or
(H^.Next^.Note <> Sg.Cells[4, Sg.Row]) do
H := H^.Next;
Temp := H^.Next;
H^.Next := H^.Next^.Next;
Dispose(Temp);
end;
GridDeleteRow(Sg.Row);
end;
end;