Информационная система расчетов по договорам

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

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

kp:TKp;

i, Row, CP: Integer;

SList: TStringList;

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

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

Fil: string;

FirstStr: string;

 

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;

NIL)and(node.numb>curr^.numb)do">while (curr 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;

NIL)and(node.numb>curr^.numb)do">while (curr 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;

5. Руководство пользователя

 

Для старта программы нужно запустить файл project1.exe. Запуститься программа, после этого пользователь увидит окно представленное ниже.

 

 

Для навигации и управления проектом пользователя предоставлены многочисленные виджеты, такие как меню, кнопки управления, флажки и переключатели, а также многочисленные выпадающие окна.

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

 

?/p>