Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Описание и структура программы
Программа должна иметь модульную структуру, представленную на рисунке 3.
* – Данные процедуры должны быть для типов первой и второй записи. ** – pobl и al – указатели на предшествующие объекты, необходимы для работы с однонаправленными кольцевыми списками.
Рисунок 3 – Структура программы Выполнение программы должно начинаться с инициализации, то есть подготовки для работы с базой данных. Для этого необходимо из файла с именем Name1, хранящего общие сведения по базе данных, сформировать общий список, а из файла с именем Name2, хранящего основные данные конкретной базы, сформировать основной список.
Имя общей базы Name1 инициализируется в модуле Data, а имя основной базы Name2 определяется из записи, хранящей общие сведения (поле Name).
Если файлы не существуют, т.е. база данных пуста, то её необходимо создать.
После загрузки базы, необходимо изобразить меню, выбрать режим работы и выполнить его. Завершение работы с базой предполагает, при необходимости, сохранение изменений.
Поскольку в программе в режиме просмотра необходимо выводить исходные, текущие, отсортированные данные и результат вычислений, как для общей, так и для основной базы, то для хранения этих данных для каждой базы потребуется по 4 списка.
Для удобства имеет смысл определить матрицу характеристик списков (Sp), представленную на рисунке 4. Элемент матрицы – указатель на характеристики кольцевого списка.
Рисунок 4 – матрица характеристик списков Sp[nb, ns] – элемент матрицы, где nb – номер строки, определяет номер базы: nb=1 – общая база, nb=2 – основная база; ns – номер столбца, определяет назначение списка: ns=1 – текущий список, ns=2 – исходный список, ns=3 – список для сортировки, ns=4 – список для результатов.
В начале работы программы все списки должны быть проинициализированы.
Все подпрограммы, обслуживающие базу, будут использоваться как для общей, так и для основной базы.
С любой базой в программе связаны следующие понятия: - имя базы (Name); - файл, хранящий информацию базы (F); - характеристика кольцевого списка данных для обработки соответствующей базы (B); - количество байтов, отводимых под запись данных соответствующей базы (size); - признак изменений в базе (fl).
Эти характеристики базы должны передаваться в качестве параметров в обслуживающие подпрограммы. Чтобы уменьшить список передаваемых параметров, определим структуру записи (код базы), состоящую из полей- указателей на соответствующую характеристику базы (тип tKod). Структура записи, хранящей характеристику базы, представлена в таблице 3.1.
Таблица 3.1
В программе необходимо определить и проинициализировать матрицу кодов (МК), каждый элемент которой типа tKod (рисунок 5).
Рисунок 5 – матрица кодов
МК[nb, ns] – элемент матрицы, где nb – номер базы (nb=1, 2); ns – назначение списка (ns=1, 2, 3, 4).
Для инициализации матрицы кодов необходимо полям–указателям каждого элемента матрицы присвоить адрес соответствующей характеристики базы.
Например, для инициализации элемента МК[1, 1] необходимо выполнить следующие действия: MK[1, 1].pName: =@Name1; MK[1, 1].pF: =@F1; MK[1, 1].pB: =@Sp[1, 1]; MK[1, 1].pSize: =@Size1; MK[1, 1].pfl: =@fl1, где @ - операция взятия адреса.
В основную программу входят подпрограммы, описание которых приведено в таблице 3.2.
Таблица 3.2
Поскольку процедуры Add1 и Add2 будут передаваться в качестве фактических параметров в подпрограммы Make и Load, то описание этих процедур должны заключаться в директивы {$F+} и {$F-}.
Список глобальных переменных, используемых в программе, приведен в таблице 3.3.
Таблица 3.3
Взаимосвязь модулей приведена в таблице 3.4.
Таблица 3.4
|