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

2016-07-30СтудИзба

Описание файла

Документ из архива "Информационная система расчетов по договорам", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47155"

Текст из документа "47155"


КУРСОВОЙ ПРОЕКТ


Тема:

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





Минск 2010

Введение

Для разработки программы была выбрана среда визуального проектирования Borland Delphi 7.0. Она позволяет за короткий промежуток времени и с наименьшими затратами физических и умственных сил создавать прикладные программы различной направленности, обеспечивая при этом наличие дружественного оконного интерфейса. Указанные (а также ряд других) преимущества среды Delphi 7.0. обуславливают широкое её использование при создании программного обеспечения разнообразного назначения.

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

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

Данная программа напоминает базу данных, но написанную вручную, данное ПО может успешно применяться в качестве учебного пособия, но не может применяться в качестве коммерческого проекта.

1. Состав проекта Delphi

Проект содержит главную форму, форму осуществления поиска, форму осуществления сортировки, форму очистки строк, главная форма содержит такие элементы как кнопки, StringGrid, CheckBox, RadioButton, меню и манифест Windows.

Проект содержит модули Unit1, Unit2, Unit3, Uni4, UnitCl.

Unit1 – головной файл программы

Unit2 – файл формы очистки строк

Unit3 – файл формы поиска

Unit4 – файл формы сортировки

Все методы инкапсулированы в класс. Класс (UnitCl) имеет следующие методы:

procedure RowC (AStringGrid:TStringGrid); – процедура разметки строк

procedure XDGr (AStringGrid:TStringGrid); – процедура создания заголовка для ХД

procedure WTKGr (AStringGrid:TStringGrid); – процедура создания заголовка для ВТК

procedure BANGr (AStringGrid:TStringGrid); – процедура создания заголовка для БАНК

procedure Clear (AStringGrid:TStringGrid); – процедура очистки формы

procedure WriteXD (AStringGrid:TStringGrid); – процедура записи в файл ХД

procedure WriteWTK (AStringGrid:TStringGrid); – процедура записи в файл ВТК

procedure WriteBAN (AStringGrid:TStringGrid); – процедура записи в файл БАНК

procedure ReadXD (AStringGrid:TStringGrid); – процедура чтения из файла ХД

procedure ReadWTK (AStringGrid:TStringGrid); – процедура чтения из файла ВТК

procedure ReadBAN (AStringGrid:TStringGrid); – процедура чтения из файла БАНК

procedure BANK (AStringGrid:TStringGrid); – процедура внесения данных в структуру

procedure WTK (AStringGrid:TStringGrid); – процедура внесения данных в структуру

procedure XD (AStringGrid:TStringGrid); – процедура внесения данных в структуру

procedure XDShow; – процедура просмотра структуры ХД

procedure WTKShow; – процедура просмотра структуры ВТК

procedure BANKShow; – процедура просмотра структуры БАНК

procedure null; – процедура сброса начала списка

procedure FindXD (AEdit1:TEdit; AStringGrid:TStringGrid); – процедура поиска в ХД

procedure FindWTK (AEdit1:TEdit; AStringGrid:TStringGrid); – процедура поиска в ВТК

procedure FindBANK (AEdit1:TEdit; AStringGrid:TStringGrid); – процедура поиска в БАНК

procedure MoySort1 (AStringGrid:TStringGrid); – процедура сортировки списка ХД по атр. 1

procedure MoySort2 (AStringGrid:TStringGrid); – процедура сортировки списка ХД по атр. 2

procedure MoySort5 (AStringGrid:TStringGrid); – процедура сортировки списка ХД по атр. 5

procedure MoySort7 (AStringGrid:TStringGrid); – процедура сортировки списка ХД по атр. 7

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

Запись линейного односвязного списка для данных хозяйственных договоров. В данной записи все поля являются строковыми, строковое поле имеет размер памяти 8 байт, следовательно, запись ХД будет иметь размер 56 байт. Поле Next во всех трех структурах означает адрес следующего элемента в списке. Поскольку в задании предлагался линейный односвязный список то переход от одного элемента к другому возможен только вперед, в отличие от двухсвязного списка, где можно перемещаться как вперед так и назад. В квадратных скобках указано количество символов, которое может входить в строку данного поля.

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;

Запись линейного односвязного списка для данных о временных трудовых коллективах. В данной записи все поля являются строковыми, строковое поле имеет размер памяти 8 байт, следовательно, запись ВТК будет иметь размер 80 байт.

type

TPSpisWTK=^TSpisWTK;

TSpisWTK=record

fam:string[20]; // фамилия

name:string[20]; // имя

otc:string[20]; // отчество

god:string[40]; // дата рождения

kod:string[20]; // код договора

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

zarplat:string[20]; // зарплата

adres:string[20]; // адрес

banknum:string[20]; // номер банка

rasschet:string[40]; // Р/С

next: TPSpisWTK;

end;

Запись линейного односвязного списка для данных с атрибутами банка. В данной записи все поля являются строковыми, строковое поле имеет размер памяти 8 байт, следовательно, запись БАНК будет иметь размер 40 байт.

type

TPSpisBAN=^TSpisBAN;

TSpisBAN=record

numotd:string[20]; // фамилия

gorod:string[20]; // имя

adress:string[20]; // отчество

naim:string[40]; // дата рождения

kod:string[20]; // код отделения

next: TPSpisBAN;

end;

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

var

head1: TPSpisXD; // начало (голова) списка XD

head2: TPSpisWTK; // голова списка WTK

head3: TPSpisBAN; // голова списка BAN

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

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;

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;

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее