Исследование программного средства для управления базой данных с информацией о фильмах. Составление алгоритма удаления и добавления элемента в указанное место двунаправленного списка. Характеристика поиска, вывода на экран и сортировки элементов списка.
Дана база данных с информацией о фильмах. Разработать программное средство для управления этой базой. Для работы с базой данных использовать динамические списки. В программе должны присутствовать следующие процедуры: 1.Формирование динамического списка; Запись имеет поля: “Название фильма” тип String[25] , “Жанр фильма” тип String[10], “Актеры” тип String[50], “Краткое описание фильма ”тип String[255].При построении алгоритма программы, для хранения информации о фильме используется запись с четырьмя полями (Subject: string[25]; Genre: string[10]; Actor: string[50]; Subject2: string[255] ) , а так же имеется две записи (UPPOINTER, DOWNPOINTER : POINTERSUBJS ) содержащее ссылку на предыдущее и следующее звено списка. В ходе выполнения программы создается двунаправленный динамический список записей.В ходе процедуры вставки происходит перебор элементов списка до тех пор пока значение поля Subject (название фильма) элемента списка меньше значения поля Subject нового элемента. При этом в поле DOWNPOINTER порожденного звена заносится ссылка на следующий элемент из звена, предшествующего вставляемому. В поле UPPOINTER порожденного звена заносится ссылка на предыдущий элемент из звена, следующего за вставляемым. В поле UPPOINTER следующего за вставляемым звена заносится ссылка на вставляемое звено. Добавление элемента в список. procedure Add(SUBJLIST: POINTERSUBJS); {процедура добавления элемента в список} var PSUBJ, marker: POINTERSUBJS;В поле DOWNPOINTER следующего за удаляемым звена заносится ссылка на предшествующее удаляемому звено. В поле UPPOINTER предшествующего удаляемому звена заносится ссылка на следующее за удаляемым звено. Если удаляемый элемент находится в начале списка, тогда в поле DOWNPOINTER следующего за удаляемым звена заносится Null и уничтожается удаляемое звено. Если удаляемый элемент находится в конце списка, тогда в поле UPPOINTER предшествующего удаляемому звена заносится Null и так же уничтожается удаляемое звено. {если элемент единственный} if (marker^.UPPOINTER = nil) and (marker^.DOWNPOINTER = nil) then beginДля сравнения элементов поиска в программе имеется функция MYFILTER(marker:POINTERSUBJS):boolean. В качестве аргумента функции используется ссылка на элемент списка. Данная функция обеспечивает сравнение элемента списка и искомого элемента. Если данный элемент удовлетворяет условию поиска, то функция возвращает значение true, иначе false. Элемент выводится на экран в том случае если все значения полей элемента соответствуют значениям полей переменной MYFILTERINFO.Системные требования программы минимальные.Блок-схема процедуры удаления фильма: Общая блок-схема программы Блок I. Установка начальных значений.Исходные данные: Для введения исходных данных используется процедура поиска и заполняется пять форм с информацией о фильмах. The film name : Platina The film description : Film ... The film description : Film ... The film description : Film ...Для добавления фильма в базу необходимо нажать клавишу 1 “Add film” (добавить фильм). При этом на экране появится форма для введения информации о фильме Рисунок 1. Для вывода списка фильмов на экран используется клавиша 4 “All films” (Все фильмы). На экран компьютера выводится список упорядоченный в алфавитном порядке рисунок 2.Для просмотра информации о фильме используется клавиша Enter рисунок 3.Для выбора фильма из списка используются клавиши Вверх, Вниз на клавиатуре. Клавиша 2 “Remove film” (удалить фильм) необходима для удаления фильма.При этом ненужно выбрать фильм из списка Рисунок 2 и нажать клавишу Enter.end else with marker^ do begin {пока не конец списка или пока не выведено нужное количество элементов} begin if (filtering) then {если нужно выбирать особенный элемент} begin if filter(marker) then {если элемент соответствует условию} begin SIMPLELIST(marker, i, count, SETFILTER); {выводим элементы списка} done := false; {параметр для определения окончания процедуры} spec := false; {параметр для определения нажатия специальной клавиши} repeat key := READKEY; {считываем символ нажатой клавиши} case key of chr(0): spec := true; {определяем специальную клавишу} chr(27): {определяем нажатие Esc и завершаем цикл} begin if (spec = false) then done := true; end else if (marker^.DOWNPOINTER = NIL) then {удаление, если текущее звено последнее} begin tmp := marker; begin marker:=SUBJLIST; {делаем текущим первый элемент списка} if markernil then begin while(marker^.DOWNPOINTERNIL) do {пока не достигнем конца списка} begin marker:=marker^.
План
Содержание
1. Постановка задачи
2. Входные данные
3. Способ решения
3.1 Процедура добавления
3.2 Процедура удаления
3.3 Процедура поиска
4. Системные требования
5. Структура программы
6. Тестирование программы
7. Методика работы с программой
8. Листинг программы
Литература
1. Постановка задачи
Список литературы
1. Бородич Ю.С. Разработка программных систем на языке Паскаль: Справ. пособие. - Мн.: Вышэйшая школа, 1992.Кнут Д. Искусство программирования для ЭВМ, - Том 3 , «Сортировка и поиск».
2. Т.А.Павловская, «Паскаль. Программирование на языке высокого уровня».
3. Т.А.Павловская, «Паскаль. Программирование на языке высокого уровня. Практикум».