Информационная система расчетов по договорам
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
же приведены глобальные переменные различных типов данных, которые использует весь модуль класса.
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>