Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка2.doc
Скачиваний:
3
Добавлен:
19.09.2019
Размер:
1.11 Mб
Скачать

26

СОДЕРЖАНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 22

ПРИЛОЖЕНИЕ А 23

1.Способ декомпозиции задачи.

1.1 Список модулей входящих в программных комплексов.

unit MainUnit;

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

unit Perem;

Модуль содержит описания всех новых введенных типов данных в приложения.

unit Struct;

Этот модуль содержит в себе все процедуры для обработки линейного односвязного списка(формирование, просмотр, удаление, добавление, редактирование, поиск, задание Ф11).

1.2 Основные процедуры, входящие в состав программных комплексов.

unit MainUnit;

procedure NewXDClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Создать(Файл хоздоговоров)). Выполняет организацию ввода данных для файла хоздоговора.

procedure NewWTKClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Создать(Файл исполнителей)). Выполняет организацию ввода данных для файла исполнителей.

procedure NewBANKClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Создать(Файл отделения сбербанка)). Выполняет организацию ввода данных для файла отделения сбербанка.

procedure AddColumnClick(Sender: TObject);

Процедура вызывается при выборе пункта всплывающего меню Добавить столбец. Выполняет добавление одного пустого столбца в таблицу для ввода данных.

procedure DeleteColumnClick(Sender: TObject);

Процедура вызывается при выборе пункта всплывающего меню Удалить столбец. Выполняет удаление выбранного столбца из таблицы для ввода данных.

procedure OpenXDClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Открыть(Файл хоздоговоров)). Выполняет открытие файла хоздоговоров с последующим выводом всех записей файла на экран.

procedure OpenWTKClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Открыть(Файл исполнителей)). Выполняет открытие файла исполнителей с последующим выводом всех записей файла на экран.

procedure OpenBankClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Открыть(Файл отделения сбербанка)). Выполняет открытие файла отделения сбербанка с последующим выводом всех записей файла на экран.

procedure SaveXDClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Сохранить(Файл хоздоговоров)). Выполняет сохранение данных из таблицы в файл хоздоговоров.

procedure SaveWTKClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Сохранить(Файл исполнителей)). Выполняет сохранение данных из таблицы в файл исполнителей.

procedure SaveBANKClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Сохранить(Файл отделение сбербанка)). Выполняет сохранение данных из таблицы в файл отделение сбербанка.

procedure ExitClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Файл(Выход). Обеспечивает завершения работы приложения.

procedure ShapingClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Формирование. Выполняет последовательность действий для формирования линейного односвязного списка.

procedure ViewingClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Операции(Просмотр). Отвечает за вывод записей линейного односвязного списка на экран.

procedure DelZapClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Операции(Корректировка(Удаление записи)). Отвечает за последовательность действий для удаления записи из линейного односвязного списка.

procedure InsertZapClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Операции(Корректировка(Добавление записи)). Отвечает за последовательность действий для добавления записи в линейно односвязный список.

procedure EditZapClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Операции(Корректировка(Редактирование записи)). Отвечает за последовательность действий для редактирования записи в линейном односвязном списке.

procedure GrowthClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Операции(Сортировка(По возрастанию)). Отвечает за вызов сортировки над линейным односвязным списком по возрастанию.

procedure DecreaseClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Операции(Сортировка(По убыванию)). Отвечает за вызов сортировки над линейным односвязным списком по убыванию.

procedure SearchingClick(Sender: TObject);

Процедура вызывается при выборе пункта меню Операции(Поиск). Отвечает за последовательность действий для поиска записей.

procedure BitBtn1Click(Sender: TObject);

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

procedure BitBtn3Click(Sender: TObject);

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

procedure N1Click(Sender: TObject);

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

procedure N121Click(Sender: TObject);

Процедура вызывается при выборе пункта меню Задание Ф11. Отвечает за последовательность действий для выполнения задания Ф11.

procedure Button1Click(Sender: TObject);

Процедура вызывается при нажатии кнопки Вывести. Отвечает за вывод результата выполнения задания Ф11.

unit Struct;

procedure ShapingLos;

Процедура выполняет формирование линейного односвязного списка.

procedure ViewingLos;

Процедура осуществляет просмотр линейного односвязного списка.

procedure Delete;

Процедура выполняет удаление одной записи в списке.

procedure Add;

Процедура осуществляет добавление записи в конец списка.

procedure Insert;

Процедура позволяет редактировать записи линейного односвязного списка.

procedure Sort(TypeSort : Boolean);

Процедура осуществляет сортировку записей линейного односвязного списка прямым выбором . Если TypeSort =True, то сортировка осуществляет по возрастанию иначе, если TypeSort =False, то по убыванию.

procedure Find;

Процедура производит поиск записей в линейном односвязном списке.

procedure F11;

Процедура выполняети задание ф11.

1.3 Иерархическая структура состава программных компонентов.

Ниже указано в каком файле размещается каждый модуль программного комплекса, а так же указано место расположение форм приложения. Выше был приведен список процедур каждого модуля программного продукта.

program Project1;

uses

Forms,

MainUnit in 'MainUnit.pas' {Main},

Perem in 'Perem.pas',

Struct in 'Struct.pas';

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TMain, Main);

Application.Run;

end.

2. Логическая структура данных

Наиболее простой способ объединить или связать некоторое множество элементов — это "вытянуть их в линию", то есть организовать линейный связный список (linear linked list).

В линейном односвязном списке (ЛОС) каждый элемент состоит из двух различных по назначению видов полей: содержательные (информационные) поля и поле структурного (или логического) указателя. В содержательных полях хранятся данные, ради которых и создавался список. Некоторые содержательные поля могут содержать указатели на данные, не вместившиеся в содержательные поля — такие указатели называются дополнительными или вторичными (secondary pointer). Поле логического указателя (logical pointer) хранит адрес в памяти следующего элемента списка. Пользуясь указателем (адресом), можно получить доступ к элементу списка, а от него к следующему и т. д., пока не будет достигнут последний элемент . Поле указателя последнего элемента списка должно содержать признак "пустого" указателя (Nil), свидетельствующий о конце списка.

Свойство линейности односвязного списка определяется линейностью логической упорядоченности его элементов: для каждого элемента (кроме первого и последнего) имеется единственный предыдущий и единственный последующий элементы. Организованный таким образом список называют еще однонаправленным (one-way list).

Дескриптор ЛОС может быть реализован в виде отдельной записи и может содержать такую информацию о списке, как

1) код структуры,

2) имя списка,

3) указатель (адрес) начала списка (First) — этот указатель называется указателем списка (list pointer),

4) указатель на текущий элемент (Current),

5) текущее количество элементов в списке,

6) описатель (дескриптор) элемента.

В одном из содержательных полей каждого элемента иногда размещают так называемый указатель возврата (backward pointer), ссылающийся на дескриптор.

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

«Рисунок 2.1 - Логическая структура линейного односвязного списка»

3. Статические данные и структуры.

«Рисунок 3.1 - Глобальные переменные»

Имя переменной

Адрес в памяти

Тип переменной

Объем

Памяти в байтах

Назначение переменной

CountAdjustment

$BC2130

Byte

1

Выбор

zXD. Number

$BC1F94

Byte

1

Поля записи

Хоздого-воров

zXD. Date_of_conclusions

$BC1F95

TString

30

zXD. Date_of_terminations

$BC1FB4

TString

30

zXD. Subject_of_agreement

$BC1FD3

TString

30

zXD. Name_of_organization

$BC1FF2

TString

30

zXD. Sing_of_termination

$BC2011

Byte

1

zXD. Cost

$BC2012

Word

2

zWTK. Surname

$BC2014

TString

30

Поля записи

Исполни-телей

zWTK. Name

$BC2033

TString

30

zWTK. Patronymic_name

$BC2052

TString

30

zWTK. Of_birth

$BC2072

Word

2

zWTK. Code

$BC2074

TString

30

zWTK. Sign

$BC2093

Byte

2

zWTK. Remuneration_Amount

$BC2094

Word

2

zWTK. Home_Address

$BC2096

TString

30

zWTK. Branch_Number

$BC20B5

String[4]

4

zWTK. Accouting_count

$BC20BA

String[7]

7

zBANK. Branch_Name

$BC20C2

String[4]

4

Поля записи Отделе-ния сбер-банка

zBANK. City

$BC20C7

TString

30

zBANK. Address

$BC20E6

TString

30

zBANK. Name_of_branch

$BC2105

TString

30

zBANK. Bank_Code

$BC2124

TString[3]

3

«Рисунок 3.2 – Текущие переменные»

Имя переменной

Адрес в памяти

Тип переменной

Объем

Памяти в байтах

Назначение переменной

Cur

$BC2128

Tlos

4

Указатель на

Элемент первого уровня иер-й стр-ры

Cur^.Surname

$BC23A4

TString

30

Информацион-ные поля линейного односвязного списка

Cur^.Name

$BC23A5

TString

30

Cur^. Patronymic_name

$BC23C4

TString

30

Cur^. Of_birth

$BC23E3

Word

2

Cur^.Code

$BC2402

TString

30

Cur^. Branch_Number

$BC2421

String[4]

4

Cur^.Next

$BC2424

Tlos

4

Указатель на следующий эл.

«Рисунок 3.3 - Локальные переменные»

Имя переменной

Адрес в памяти

Тип переменной

Объем

Памяти в байтах

Назначение переменной

I

$44579C

Byte

1

Для счёта

J

$44579D

Byte

1

Для счёта

Count

$68FBE4

Byte

1

Счётчик

FXD

$68FBC0

TString

30

Имя ф. ХD

FWTK

$68FBA1

TString

30

Имя ф. WTK

Code

$68FB82

Byte

1

Код

Len

$68FBE0

Byte

1

Длина строки

CheckLos

$68FBDF

Boolean

1

Проверка

Cur

$68F8A8

TLos

4

Вспом. Указат.

i

$68FAD5

Byte

Вспомогатель-ные переменные

j

$68FAD6

q

$68FAD7

K

$68FAD8

N

$68FAD9

X

$68FADA

ZapLos

122

Вспомогател.

записи

Y

$68FAB58

ZapLos

122

4. Алгоритм обработки структуры.

Алгоритм сортировки прямым выбором.

Этот метод основан на следующем алгоритме:

  • выбираем (выделяем) элемент с наименьшим (среди всех N элементов) ключом, допустим это элемент a[k]:

a[k].Key = min(a[0].Key, a[1].Key, …, a[HighIndex].Key)

  • элемент a[k] меняется местами с первым элементом, т. е. с элементом a[0].

Затем выбираем элемент с наименьшим ключом среди всех элементов, кроме элемента a[0]; меняем его местами с элементом a[1] и т. д.