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

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

type

TPSpisXD=^TSpisXD;

TSpisXD = record

numb:string[20]; // номер

datzak:string[20]; // дата заключения

datzav:string[20]; // дата завершения

temadog:string[40]; // тема

namorg:string[20]; // наименование организации

priznak:string[15]; // признак

stoimost:string[10]; // стоимость в тыс руб.

next: TPSpisXD; // следующий элемент списка

end;

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

В линейном односвязном списке можно передвигаться только в сторону конца списка. Узнать адрес предыдущего элемента из данного не возможно. Точно такая же схема базовой структуры и у 2-х других списков, а именно списка временных трудовых коллективов и списка банков. (Из-за их абсолютной похожести, различается только их количество и название элементов) те две схемы не приводятся.

4. Логические схемы операций в базовой структуре данных

Процедура сортировки списка на примере списка ХД.

procedure TKp. MoySort1 (AStringGrid:TStringGrid);

 // Сортировка по первой колонке

var

node: TPSpisXD; // новый узел списка

curr: TPSpisXD; // текущий узел списка

pre: TPSpisXD; // предыдущий, относительно curr, узел

i:integer; // counter

begin

Kp.null;

i:=1;

 //repeat

while (i<11) do

begin

new(node);

node^.numb:=AStringGrid. Cells [1, i];

node^.datzak:=AStringGrid. Cells [2, i];

node^.datzav:=AStringGrid. Cells [3, i];

node^.temadog:=AStringGrid. Cells [4, i];

node^.namorg:=AStringGrid. Cells [5, i];

node^.priznak:=AStringGrid. Cells [6, i];

node^.stoimost:=AStringGrid. Cells [7, i];

 // подходящее место для узла

curr:=head1;

pre:=NIL;

while (curr <> NIL) and (node.numb > curr^.numb) do

begin

 // введенное значение больше текущего

pre:= curr;

curr:=curr^.next; // к следующему узлу

end;

if pre = NIL

then

begin

 // новый узел в начало списка

node^.next:=head1;

head1:=node;

end

else

begin

 // новый узел после pre, перед curr

node^.next:=pre^.next;

pre^.next:=node;

end;

i:=i+1;

end;

Kp.XDShow;

end;

procedure TKp.XDShow;

var

curr: TPSpisXD; // текущий элемент списка

 //n:integer; // длина (кол-во элементов) списка

 // st:string; // строковое представление списка

begin

n:=0;

st:='';

curr:=head1;

while curr <> NIL do

begin

n:=n+1;

st:=st+curr^.numb+' '+curr^.datzak+' '+curr^.datzav+' '+curr^.temadog+' '+curr^.namorg+' '+curr^.priznak+' '+curr^.stoimost+#13;

curr:=curr^.next;

end;

if n <> 0

then ShowMessage ('Список:'+#13+#13+st)

else ShowMessage ('В списке нет элементов.');

end;

procedure TKp.XD (AStringGrid:TStringGrid);

var

node: TPSpisXD; // новый узел списка

curr: TPSpisXD; // текущий узел списка

pre: TPSpisXD; // предыдущий, относительно curr, узел

i:integer; // counter

 // n:integer; // длина (кол-во элементов) списка

 // st:string; // строковое представление списка

begin

i:=1;

 //repeat

while (i<11) do

begin

new(node);

node^.numb:={Edit1. Text;} AStringGrid. Cells [1, i];

node^.datzak:= {Edit2. Text;} AStringGrid. Cells [2, i];

node^.datzav:= {Edit3. Text;} AStringGrid. Cells [3, i];

node^.temadog:= {Edit4. Text;} AStringGrid. Cells [4, i];

node^.namorg:= {Edit5. Text;} AStringGrid. Cells [5, i];

node^.priznak:= {Edit6. Text;} AStringGrid. Cells [6, i];

node^.stoimost:= {Edit7. Text;} AStringGrid. Cells [7, i];

 // подходящее место для узла

curr:=head1;

pre:=NIL;

while (curr <> NIL) and (node.numb > curr^.numb) do

begin

 // введенное значение больше текущего

pre:= curr;

curr:=curr^.next; // к следующему узлу

end;

if pre = NIL

then

begin

 // новый узел в начало списка

node^.next:=head1;

head1:=node;

end

else

begin

 // новый узел после pre, перед curr

node^.next:=pre^.next;

pre^.next:=node;

end;

i:=i+1;

 //until (i<11);

end;

ShowMessage (' ГОТОВО – СПИСОК ХД!');

end;

procedure TKp. FindXD (AEdit1:TEdit; AStringGrid:TStringGrid);

var

curr:TPSpisXD; // текущий, проверяемый узел

pre: TPSpisXD; // предыдущий узел

found:boolean; // TRUE – узел, который надо удалить

 // st:string;

 // a:integer;

begin

if head1 = NIL then

begin

MessageDlg ('Список пустой!', mtError, [mbOk], 0);

Exit;

end;

curr:=head1; // текущий узел – первый узел

pre:=NIL; // предыдущего узла нет

found:=FALSE;

 // найти узел

=======

while (curr <> NIL) and (not found) do

begin

if (curr^.numb = {'13'} AEdit1. Text) xor (curr^.datzak = AEdit1. Text)

xor (curr^.datzav = AEdit1. Text) xor (curr^.temadog = AEdit1. Text)

xor (curr^.namorg = AEdit1. Text) xor (curr^.priznak = AEdit1. Text)

xor (curr^.stoimost = AEdit1. Text)

then found:=TRUE // нужный узел найден

else // к следующему узлу

begin

pre:=curr;

curr:=curr^.next;

end;

=======

end;

if found then

begin

Kp. Clear(AStringGrid);

Kp.XDGr(AStringGrid);

Kp. RowC(AStringGrid);

ShowMessage ('Элемент найден');

AStringGrid. Cells [1,1]:=''+curr^.numb;

AStringGrid. Cells [2,1]:=''+curr^.datzak;

AStringGrid. Cells [3,1]:=''+curr^.datzav;

AStringGrid. Cells [4,1]:=''+curr^.temadog;

AStringGrid. Cells [5,1]:=''+curr^.namorg;

AStringGrid. Cells [6,1]:=''+curr^.priznak;

AStringGrid. Cells [7,1]:=''+curr^.stoimost;

end

else // если искомого в списке нет

MessageDlg ('Элемент не найден', mtError, [mbOk], 0);

end;



Информация о работе «Информационная система расчетов по договорам»
Раздел: Информатика, программирование
Количество знаков с пробелами: 27889
Количество таблиц: 0
Количество изображений: 5

Похожие работы

Скачать
210741
6
16

... -корреспондентом, адрес которого указан в поле 053 сообщения МТ 100. Таким образом, сообщество S.W.I.F.T. поддерживает классификацию ти­повых сообщений и их стандартизацию при передаче по сво­ей сети. Информационные системы рынка ценных бумаг. Рыночная экономика в классическом понимании базируется на пяти основных рынках: рынке средств производства, рынке предметов потреб­ления, рынке ...

Скачать
134795
0
0

... животные на выращивании и откорме. ПРОИЗВОДСТВО – процесс создания разных видов экономического продукта. ПРОТОКОЛ – стандартизованное соглашение по порядку обмена информацией и данными в информационных системах. ПРОЦЕСС – загруженная в память выполняемая прикладная программа, ее адресное пространство и ресурсы. ПРОЦЕССОР – специализированная электронная схема, которая выполняет все вычисления ...

Скачать
74935
32
9

... 6. Справка. Представление графа сценария задачи представлено на рисунке 1. Рис.1 Граф сценария задачи «Библиотека вуза» 3.2 Разработка контекстной диаграммы Контекстной диаграмма позволяет наглядно представить бизнес-процессы, протекающие в данной информационной системе, документооборот и информационные массивы При построении данной диаграммы используется принцип ...

Скачать
128912
10
20

... обоснование проекта   5.1 Разработка математической модели проекта   5.1.1 Определение источника доходов проекта Целью данного дипломного проекта является разработка автоматизированной информационной системы для лизинговой компании. Разработка настоящего программного продукта осуществляется с целью его внедрения и эксплуатации на предприятие ООО "Тольяттинская Лизинговая Компания". Прибылью ...

0 комментариев


Наверх