Курсовая "Базы данных" на pascal

Автор работы: Пользователь скрыл имя, 29 Мая 2010 в 18:53, Не определен

Описание работы

база данных на pascal с функциями писка, добавления и т.д.

Файлы: 1 файл

содержание.DOC

— 289.00 Кб (Скачать файл)

      Подводя итог можно сказать, что фактически перемещение происходит в стеке, а на экран выводится лишь товар  с кодом товара из вершины стека.

     5.3 Процедуры, используемые при работе со списком

      Полностью описывать весь алгоритм данных процедур в данном разделе не будем, затронем только те их части, которые взаимодействуют непосредственно со списком.

      При работе со списком используются следующие  функции:

    • Чтение элемента из списка;
    • Добавление элемента в список;
    • Поиск элемента в списке;
    • Удаление элемент из списка.

 

      6 Описание  программы формирования  списковой структуры

     6.1 Динамические структуры данных

     Объект  данных обладает динамической структурой, если его размер изменяется в процессе выполнения программы или он потенциально бесконечен.

     Статические и динамические переменные в Паскале

     В Паскале одной из задач описания типов является то, чтобы зафиксировать на время выполнения программы размер значений, а, следовательно, и размер выделяемой области памяти для них. Описанные таким образом переменные называются статическими.

     Все переменные, объявленные в программе, размещаются в одной непрерывной области оперативной памяти – сегмент данных. Длина сегмента данных определяется архитектурой микропроцессора и составляет обычно 65536 байт.

     Однако  порой заранее не известны не только размеры значений, но и сам факт существования значения той или иной переменной. Для результата переменной приходится отводить память в расчете на самое большое значение, что приводит к нерациональному использованию памяти. Особенно это затруднительно при обработке больших массивов данных.

     Выходом из положения может служить использование так называемой динамической памяти.

     Динамическая  память (ДП) – это оперативная  память ПК, предоставляемая программе при ее работе, за вычетом сегмента данных (64 Кб), стека (16 Кб) и собственно тела программы. Размер динамической памяти можно варьировать. По умолчанию ДП – вся доступная память ПК.

     ДП  – это фактически единственная возможность  обработки массивов данных большой  размерности. Многие практические задачи трудно или невозможно решить без использования ДП. Например, при разработке САПР статическое распределение памяти невозможно, т.к. размерность математических моделей в разных проектах может значительно различаться.

     И статические и динамические переменные вызываются по их адресам. Без адреса не получить доступа к нужной ячейке памяти, но при использовании статических переменных, адрес непосредственно не указывается. Обращение осуществляется по имени. Компилятор размещает переменные в памяти и подставляет нужные адреса в коды команд.

     Адресация динамических переменных осуществляется через указатели. Их значения определяют адрес объекта.

     Для работы с динамическими переменными  в программе должны быть выполнены  следующие действия:

  • Выделение памяти под динамическую переменную;
  • Инициализация указателя;
  • Освобождение памяти после использования динамической переменной.

     Программист должен сам резервировать место, определять значение указателей, освобождать ДП.

     Вместо  любой статической переменной можно  использовать динамическую, но без реальной необходимости этого делать не стоит.

     6.2 Чтение элемента из списка

      В данном разделе указатель перемещается на последний элемент и считывается хранящийся там код элемента. Далее, с этим кодом элемента происходит либо, какое то сравнение, условие, либо присваивается некоторой переменной, либо удаляется код из списка.

     6.3 Добавление элемента в список

      Добавление  кода элемента в список происходит по следующему алгоритму:

    • Создается новый элемент;
    • Записывается код товара из файла в список;
    • Устанавливается указатель для поддержания целостности списка;

 

      6.4 Поиск элемента в списке

      Поиск осуществляется по следующему алгоритму:

    • Переход на последний элемент списка – вершину стека;
    • До тех пор пока не конец стека делать;
    • Если текущий код товара из файла БД равен коду элемента из списка, то условие выполнено, если нет, то считывается следующий элемент из списка и т.д.

     6.5 Удаление элемента из списка

      Удаления  кода элемента из списка выполняется по следующему алгоритму:

    • Переход на последний элемент списка – вершина стека;
    • Создание связи, со следующим элементом;
    • Удаление элемента;
    • Присваивание нового последнего элемента.

 

      

     7 Технология обработки данных

 

      Последовательность  операций с данными заключается в следующем (приложение 5 схема 1):

    • Вывод меню;
    • Создания и управление разделами и подразделами меню;
    • Выбор режима работы;
    • Вывод на экран элементов соответствующих разделу и подразделу;
    • Операции над элементами БД.

     Для реализации выше перечисленных функций  использовались следующие процедуры.

     Программа отвечает на то, какую клавишу нажал пользователь и передает управление процедуре main. Процедура readkey используется в основном блоке программы. Для работы с управляющими клавишами используются их коды в таблице ISCII. Тут:

     80 – курсор вверх

     72 – курсор вниз

     27 – ESC

     13 – Enter

     При нажатии на клавишу «Ввод» управление передается продцедуре main. При этом используются глобальные переменные.

     В процедуре main управление переходит к подпрограмме, согласно текущему меню, но порой надо знать откуда был осуществлен вход. Как я уже говорил, зайти в меню выбора таблиц можно по разному. Все меню имеют разные заголовки, которые и используются для их идентификации. При нажатии на кнопку «Выход», текущем становится первоначальное меню.

     Интерфейсная  часть программы состоит из трех процедур:

     procedure menus(m:pered;max:byte);  {Вывод меню}

     begin

     clrscr;

       For i:=1 to max do begin

         if i=1 then begin

          textcolor(1); gotoxy(9,2); write(m.st[i]);

         end

         else begin

           if i=2 then textcolor(9)

           else textcolor(3);

           gotoxy(8,i+3);write(m.st[i]);

         end;

       end;

     end;

     С помощью этой процедуры на экране меняются меню. Нужно учесть, что  мы первоначально знаем, из сколки строк  состоит каждое меню, что упрощает задачу. Заголовок и содержание меню пишутся разными цветами. Изменение цвета выводимых символов идет с помощью команды textcolor, параметром котором является предопределенная константа.

     Следующая процедура:

     procedure krutis;  {Звездочка  рядом с активным  элементом}

     begin

       textcolor(14);

       if kr='/' then kr:='-'

         else if kr='-' then kr:='\'

           else if kr='\' then kr:='|'

             else kr:='/';

       gotoxy(6,tek+3);write(kr);

       textcolor(3);

     end;

     Эта процедура работает таким образом  – обращение к ней идет из основного блока программы, в котором стоит бесконечный цикл. На экране отображается что то похожее на бенгальский огонь. Это достигается путем последовательного вывода на одном и том же месте символов: \, |, /, —. В переменной tek у нас содержится номер активной строки, а относительно нее мы и должны поставить звездочку.

     Следующая процедура:

     procedure ramka(ch:char); {перемещение  указателя}

     begin

       gotoxy(6,tek+3);Writeln(' ');

       textcolor(3);gotoxy(8,tek+3);write(nast.st[tek]);

       if ch='+' then tek:=tek+1

       else tek:=tek-1;

       if tek=1 then tek:=nast.m

       else if tek=nast.m+1 then tek:=2;

       key:=#0;

       textcolor(9);gotoxy(8,tek+3);write(nast.st[tek]);

       krutis;

     end;

     Данная  процедура имеет параметр символьного  типа. По содержанию ch определяется – вверх или вниз сдвинулась активная строка. Обращение к этой процедуре идет из основного блока программы. Больше процедур такого рода нет (ко всем другим процедурам обращение идет из процедуры main).

     Эта процедура затирает элемент, который  был активен перед этим цветом по умолчанию (голубым) и стирает предыдущее положение звездочки. После этого исходя из значения ch изменяется значение tek и выделяется элемент, на который был осуществлен переход. В подпрограмме вставлены два условия:

       if tek=1 then tek:=nast.m

       else if tek=nast.m+1 then tek:=2;

     Они срабатывают когда активным является верхний элемент меню и пользователь нажал кнопку вверх, тогда текущей  становится последняя строка, и наоборот – текущая строка является последней, а пользователь нажал кнопку вниз, тогда активной станет первая строка активного меню.

     Следующая процедура - obrabotka(iz,t:integer; var rab:cc). Эта  процедура вызывается при корректировке  записей. Через параметр iz процедура выбирает путь дальнейшего хода. То есть надо ли добавить запись, изменить или удалить. Параметр rab – это таблица, которая передается в процедуру, и параметр var показывает, что данную таблицу можно изменять непосредственно из процедуры.

     В ней используются локальные переменные – 

     dlud:string;

       bis:boolean;

       tems,temr,tem:cc;

     Здесь все переменные типа cc – временные, dlud служит для ввода данных, а bis показывает, выполнимо ли выбранное действие или нет.

     Продцедура sort(iz,t:integer; var rab:cc) осуществляет сортировку записей в выбранной таблице по выбранному полю. Ее работа и параметры с переменными аналогичны предыдущей процедуре.

     При запросах выполняется процедура zapros(num:integer), где через параметр num передается, какой именно запрос должен выполняться. Потом через условие case идет обработка запросов. Связь между таблицами осуществляется по уникальным полям.  
 
 

Информация о работе Курсовая "Базы данных" на pascal