Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт(печать с 4 стр).docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
617.2 Кб
Скачать
  1. Разработка алгоритма

Согласно поставленной задаче алгоритм предусматривает основные возможности работы с данными 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. Технические приемы программирования

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;