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;
... -корреспондентом, адрес которого указан в поле 053 сообщения МТ 100. Таким образом, сообщество S.W.I.F.T. поддерживает классификацию типовых сообщений и их стандартизацию при передаче по своей сети. Информационные системы рынка ценных бумаг. Рыночная экономика в классическом понимании базируется на пяти основных рынках: рынке средств производства, рынке предметов потребления, рынке ...
... животные на выращивании и откорме. ПРОИЗВОДСТВО – процесс создания разных видов экономического продукта. ПРОТОКОЛ – стандартизованное соглашение по порядку обмена информацией и данными в информационных системах. ПРОЦЕСС – загруженная в память выполняемая прикладная программа, ее адресное пространство и ресурсы. ПРОЦЕССОР – специализированная электронная схема, которая выполняет все вычисления ...
... 6. Справка. Представление графа сценария задачи представлено на рисунке 1. Рис.1 Граф сценария задачи «Библиотека вуза» 3.2 Разработка контекстной диаграммы Контекстной диаграмма позволяет наглядно представить бизнес-процессы, протекающие в данной информационной системе, документооборот и информационные массивы При построении данной диаграммы используется принцип ...
... обоснование проекта 5.1 Разработка математической модели проекта 5.1.1 Определение источника доходов проекта Целью данного дипломного проекта является разработка автоматизированной информационной системы для лизинговой компании. Разработка настоящего программного продукта осуществляется с целью его внедрения и эксплуатации на предприятие ООО "Тольяттинская Лизинговая Компания". Прибылью ...
0 комментариев