Разработка программы "Гражданско-правовые сделки"
Описание методики разработки программного комплекса "Гражданско-правовые сделки", предназначенного для автоматизации труда работников казначейства. Анализ структурных компонентов программы, характеристика программных и аппаратных средств поддержки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.07.2015 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
На форме главного модуля расположены следующие визуальные объекты см. рисунок 3.4.
Кнопки - Button1…Button6, которые отвечают за вызов соответствующих процедур, а также две кнопки для завершения работы программы и для вызова справочной информации по работе программы.
При этом каждой кнопке назначен вызов соответствующей формы.
Вызов формы определенной процедуры происходит после того, как обработается событие, которое вызывается нажатием соответствующей кнопки. До регистрации пользователя все кнопки неактивны.
Заголовок программы организован в виде бегущей строки, кроме этого на главной форме расположены два компонента Image c гербом Республики Казахстан и гербом ЮКГУ и Label2 определяющая год. Рамки Bevel1,Вevel2, которые оформляют внешний вид рисунков.
Также на форме расположены не визуальные объекты Timer, который организовывает бегущую строку заголовка программы.
Исходный текст, описывающий объекты данной формы расположен в приложении.
Рассмотрим вызов процедур, назначение которых описано в главной форме программы.
Интуитивно понятно, что все процедуры вызываются простым нажатием выбранной кнопки.
Процедура «Регистрация пользователя»
Вызов данной процедуры осуществляется выбором и нажатием кнопки с надписью «Регистрация пользователя».
При этом открывается окно на главной форме, в котором необходимо ввести логин и пароль пользователя. Введенные данные сравниваются с данными, которые находятся в таблице TblUser.DB.
При вводе неверного логина или пароля выдается соответствующее сообщение о несовпадении логина или пароля.
В случае правильного введения логина и пароля кнопки на главной форме становятся активными.
Листинг данной процедуры расположен внутри главной программы ProgStart.PAS.
Работа процедуры «Нормативно - справочная информация»
После нажатия кнопки «Нормативно - справочная информация» главное окно закрывается и появляется окно для работы с информацией по реквизитам предприятий, банков и районов см. рисунок 3.5.
Вкладка «Предприятия» предназначена для управления информацией по бюджетным предприятиям.
Здесь включены следующие процедуры:
Новое предприятие, в данной процедуре заполняются все необходимые поля, предназначенные для заполнения реквизитов предприятия;
Исправить данные, в процедуре реализован поиск нужного предприятия по нескольким реквизитам см. рисунок 3.6. В случае, если введенные реквизиты предприятия не найдены в таблице с реквизитами предприятия TblPredpr.DB, выдается сообщение об отсутствии предприятия с такими реквизитами. Если поиск завершен успешно, на экран выводятся все реквизиты найденного предприятия для их исправления;
Сохранить данные, в этой процедуре записываются все введенные данные по предприятию в таблицу TblPredpr.DB;
Печать данных, выводится на печать вся информация по выбранному предприятию см. рисунок 3.7.
Вкладка банки предназначена для управления информацией по банкам.
На данной вкладке включены следующие процедуры для работы:
Новый банк, в данной процедуре заполняются все необходимые поля, предназначенные для заполнения реквизитов банка см. рисунок 3.8.;
Исправить данные, в процедуре реализован поиск нужного банка по реквизитам для исправления необходимых полей см. рисунок 3.9.;
Сохранить данные, в этой процедуре записываются все введенные данные по банку в таблицу TblBank.DB.
В случае успешного завершения поиска в поля выводится вся информация по найденному банку, в противном случае выдается сообщение об отсутствии банка с введенными реквизитами см. рисунок 3.9.
Вкладка районы предназначена для управления информацией по районам, в которых расположены бюджетные предприятия. На этой вкладке представлены следующие процедуры:
Добавить район, в данной процедуре заполняются все необходимые поля, предназначенные для заполнения формы региона см. риунок 4.;
Исправить данные, в процедуре реализован поиск нужного предприятия по нескольким реквизитам. Поиск осуществляется выбором необходимого региона из выпадающего списка «Список районов»;
Сохранить данные, в этой процедуре записываются все введенные данные по региону в таблицу TblRegion.DB.
Выход из процедуры, описывающей форму «Ввод нормативно - справочной информации» осуществляется нажатием кнопки, расположенной в правом верхнем углу формы.
Работа процедуры «Смета расходов предприятий»
Данный раздел программы открывается после нажатия кнопки «Смета расходов предприятий». В данном разделе заполняются поля, необходимые для финансовых данных по смете расходов предприятия.
При этом после ввода кода предприятия, автоматически заполняется значение поля «название предприятия» из таблицы TblPredpr.DB и проверяется существование записи с таким кодом предприятия в таблице TblSmeta.DB см. рисунок 3.12.
В нем реализованы следующие процедуры:
Утвердить, в данной процедуре после заполнения всех необходимых
полей присваивается признак утверждения сметы, при этом если этот
признак не равен нулю, то исправление сметы невозможно;
Вся введенная информация по смете предприятия записывается в таблицу TblSmeta.DB.
Изменить, в процедуре реализован поиск нужного предприятия по вводу кода предприятия из таблицы TblSmeta.DB, в которой присутствует поле поиска KodPr, общее для всех таблиц для связи между таблицами TblPredpr.DB, TblSmeta.DB, TblZayav.DB;
В случае успешного завершения поиска в поля формы выводятся все данные по смете выбранного предприятия, в противном случае выдается сообщение об отсутствии сметы у данного предприятия;
Печать, в этой процедуре печатается информация по смете предприятия;
Выход, данная процедура закрывает окно сметы и открывает главное окно программы. Вызывается нажатием кнопки, расположенной в правом верхнем углу формы.
Работа процедуры «Заявки от предприятий»
Вызов данной процедуры осуществляется выбором и нажатием кнопки с надписью «Заявки от предприятий» из главного окна см. рисунок 3.14 .
В данном разделе заполняются поля, необходимые для оформления заявки на финансирование предприятия на основании данных по смете расходов предприятия. При этом после ввода кода предприятия название предприятия автоматически заполняется значением поля «название предприятия» из таблицы TblPredpr.DB и проверяется существование записи с таким кодом предприятия в таблице TblZayav.DB.
В нем реализованы следующие процедуры:
Новая заявка, в данной процедуре заполняются все необходимые поля для управления информацией по заявке от предприятий;
Сохранить, сохраняет все введенные данные в таблице TblZayav.DB, при этом проверяется наличие уже существующей заявки с ввведенным номером.
Если такая заявка уже есть, то выдается соответствующее сообщение,
если нет, то происходит запись данных;
Изменить, в процедуре реализован поиск нужного предприятия по вводу кода предприятия из таблицы TblZayav.DB, в которой присутствует поле поиска KodPr, общее для всех таблиц для связи между таблицами TblPredpr.DB, TblSmeta.DB, TblZayav.DB.
После этого появляется форма для поиска нужной заявки см. рисунок 3.15.;
В случае успешного завершения поиска в поля формы выводятся все данные по заявке выбранного предприятия, в противном случае выдается сообщение об отсутствии заявки у данного предприятия.
Удалить заявку из таблицы. Производится удаление одной записи с введенным кодом предприятия. При удалении производится подтверждение удаления записи см. рисунок 3.16.;
Печать, в этой процедуре печатается информация по заявке предприятия см. рисунок 3.17;
Зарегистрировать, в данной процедуре производится регистрация заявки от предприятия на финансирование, при этом полю регистрации присваивается признак регистрации. Заносится значение единицы;
Отменить - заявку предприятия на финансирование. Поле регистрации заявки обнуляется;
Выход, данная процедура закрывает окно сметы и открывает главное окно программы, которая вызывается нажатием кнопки, расположенной в правом верхнем углу формы.
Работа процедуры «Оплата по смете»
Вызов данной процедуры осуществляется выбором и нажатием кнопки с надписью «Оплата по смете» из главного окна см. рисунок 3.18.
Ниже приводится описание процедур, которые реализованы в данном разделе программы.
В данном разделе заполняются поля, необходимые для создания платежного поручения и финансирования «Утвержденной заявки» предприятия на основании данных по смете расходов предприятия.
При этом после ввода кода предприятия название предприятия автоматически заполняется значением поля «название предприятия» из таблицы TblPredpr.DB и проверяется существование записи с таким кодом предприятия в таблице TblZayav.DB.
В нем реализованы следующие процедуры:
Добавить, в данной процедуре заполняются все необходимые поля для генерации нового платежного поручения;
Сохранить - сохраняет все введенные данные в таблице TblZayav.DB, при этом проверяется наличие уже существующего платежного поручения с введенным номером;
Если такой номер платежного поручения уже есть, то выдается соответствующее сообщение, если нет, то происходит запись данных в таблицу TblZayav.DB;
Сохранить - сохраняет все введенные данные в таблице TblZayav.DB, при этом проверяется наличие уже существующего платежного поручения с введенным номером.
Если такой номер платежного поручения уже есть, то выдается соответствующее сообщение, если нет, то происходит запись данных в таблицу TblZayav.DB;
Печать, в этой процедуре печатается информация по оплате заявки предприятия;
Выход, данная процедура закрывает окно оплата по смете и открывает главное окно программы. Вызывается нажатием кнопки, расположенной в правом верхнем углу формы.
Работа процедуры «Статистические данные»
Вызов данного раздела программы осуществляется выбором и нажатием кнопки с надписью «Статистические данные» см. рисунок 3.19.
В данном разделе производится построение и выполнение запросов из таблиц TblPredpr.DB и TblZayav.DB для получения необходимой информации. В нем реализованы следующие процедуры:
Утвержденные заявки, в данной процедуре генерируется и выполняется запрос по всем предприятиям, у которых имеются утвержденные заявки по финансированию на финансовый год см. рисунок 3.20.;
Вся информация по предприятиям с утвержденными заявками представлена в виде таблицы.
Финансирование, в данной процедуре создается и выполняется запрос из таблицы TblZayav.DB по всем предприятиям, которые были профинансированы в текущем финансовом году см. рисунок 3.21;
Информация выдается в виде таблицы с полями. При этом существует условие «Только для чтения» для просмотра таблицы;
Выход, данная процедура закрывает окно статистической информации.
Работа процедуры «Справка»
Вызов данной процедуры осуществляется выбором и нажатием кнопки с рисунком знака вопроса, расположенного рядом с кнопкой закрытия главного окна программы см. рисунок 3.22.
Данная процедура представляет собой простую справочную информацию, которая в доступной форме описывает все инструкции пользователю для работы с данной программой. Для создания справки использовался стандартный редактор Word из OFFICE, в котором был создан файл справки в формате RTF.
В справочном файле подробно описывается действия всех процедур главного окна, при этом даны подробные инструкции пользователю как использовать те или иные кнопки и списки в различных окнах, а также описываются причины блокировки программы, и действия, предусмотренные в этом случае.
После создания справочного файла, его необходимо откомпилировать, т.е. преобразовать из формата RTF в формат HLP.
Для компиляции использовалась стандартная программа MicroSoft Help WorkShop (Компилятор справочных файлов).
Работа процедуры «Выход»
Вызов данной процедуры осуществляется выбором и нажатием кнопки с расположенной в верхнем правом углу с рисунком крестика (стандарт Windows).
Данная процедура собственно заканчивает работы всей программы в целом. В данной процедуре по окончанию работы программы главное окно программы закрывается и закрывает все окна, которые были вызваны из главного окна программы.
Данные процедуры обеспечивают работу по автоматизации проведения Гражданско-правовых сделок РГП ЦИФС.
Поскольку, любое приложение, создаваемое в среде Delphi, состоит из нескольких элементов, объединенных в проект, то мы будем считать, что все программные модули имеют одинаковую, архитектуру и будем подробно рассматривать только файлы описания «ФОРМ», и файлы с исходным кодом см. рисунок 3.23.
Рисунок 3.23 - Связь между файлами проекта
3.1.2 Логическая и физическая структура файловой системы и назначение
На рисунке 3.24 показана схема структуры файловой системы в виде иерархической структуры дерева (как проводник в Windows) с указанием пути их размещения.
1. ProgStart.PAS - организующая программа, откуда производится управление всеми процедурами, реализующими работу программы.
- ProgStart.DFM - программа, описывающая состав формы главного окна программы;
2. ProgNSI.PAS - программа, из которой производится управление всей информацией по нормативно - справочной информации, содержащей реквизиты предприятий, банков, и названия районов.
- ProgNSI.DFM - программа, описывающая состав формы с нормативно - справочной информацией;
3. ProgSmeta.PAS - программа, которая описывает управление данными по сметам бюджетных предприятий.
- ProgSmeta.DFM - описание формы для сметы предприятий;
4. ProgZayav.PAS - программа, которая реализует управление данными по заявкам предприятий на финансирование.
– ProgZayav.DFM - форма программы, которая реализует управление данными по заявкам;
5. ProgOpl.PAS - программа, которая проводит оплату (финансирование) заявок по предприятиям.
- ProgOpl.DFM - описание формы для этой программы;
6. ProgStat.PAS - программа, которая выводит статистические данные по утвержденным заявкам и финансированию предприятий.
- ProgStat.DFM - описание формы для статистических данных по утвержденным заявкам и финансированию предприятий;
7. ProgPrintPr.PAS - программа, которая выводит на печать сведения о предприятии.
– ProgPrintPr.DFM - форма отчета для печати сведений о
предприятии;
8. ProgPrintSm.PAS - программа, которая позволяет печатать данные о смете предприятия.
– ProgPrintSm.DFM - описание формы отчета для печати сметы
предприятия;
9. ProgPrintZ.PAS - программа, которая описывает вывод на печать данных о заявке предприятия.
- ProgPrintZ.DFM - описание формы для печати заявки предприятия;
10. ProgPrintPlPor.PAS - программа, которая печатает оплату заявки предприятия.
– ProgPrintPlPor.DFM - форма для отчета по оплате заявки
предприятия;
11. DMTable.PAS - Файл для хранения таблиц с данными для всего программного комплекса в целом.
12. RGPS.EXE - откомпилированный исполняемый файл всего программного комплекса.
Создание таблиц, необходимых для работы данного программного продукта производится при помощи Database Desktop, инструмента, поставляющегося вместе с Delphi и предназначенного специально для создания таблиц см. рисунок 3.25.
При этом могут создаваться таблицы различных форматов, таких как Paradox, Dbase, Oracle, Sql таблицы и т.д. В нашей программе реализованы таблицы типа Paradox.
Данный выбор обоснован тем, что для работы программы необходимо создание индексов, а Paradox позволяет это сделать легко и в доступной простой форме.
Создание таблицы начинается с выбора формата таблицы, в нашем случае выбирается формат Paradox7 [10]. После выбора формата таблицы появляется окно определения структуры таблицы, в котором выполняются следующие действия:
Описание полей;
Задание ключа;
Задание индексов;
Определение ограничений на значение полей;
Определение условий (ограничений) ссылочной целостности;
Задание паролей;
Задание языкового драйвера;
Задание таблицы для выбора значений.
В нашем случае выполняются только три первых пункта для создания
наших таблиц.
А именно определяется структура таблиц путем описания полей, в каждой таблице задается ключ (главный индекс) таблицы, для поиска необходимых записей создаются динамические индексы, а также для фильтрации наших таблиц в набор данных. Будет рассмотрен процесс создания одной таблицы, понятно, что остальные таблицы создаются по тем же правилам, что и данная таблица. Различия будут только в количестве и названии полей, а также в задании различных индексов см. рисунок 3.26 .
Создание таблицы TblUser.DB
Создание любой таблицы начинается с описания полей. В нашем случае задаются и описываются следующие поля см. таблицу 3.1:
Идентификатор (главный ключ таблицы) с типом автоприращения;
Логин пользователя с символьным типом размером в 15 символов;
Пароль пользователя с символьным типом размером в 15 символов;
Таблица 3.1 - Структура таблицы TblUser.DB
Имя поля |
Тип поля |
Размер поля |
Ключ |
|
Id |
+ |
15 |
* |
|
User |
A |
15 |
||
Password |
А |
15 |
Создание таблицы TblPredpr.DB
Создание любой таблицы начинается с описания полей. В нашем случае задаются и описываются следующие поля см. таблицу 3.2:
Идентификатор (главный ключ таблицы) с типом автоприращения;
Код предприятия с символьным типом размером в 15 символов;
Код головного предприятия с символьным типом размером в 15 символов (для филиалов);
Код области с символьным типом размером в 15 символов;
Код области для филиалов с символьным типом размером в 15 символов;
Код района с символьным типом размером в 15 символов;
Краткое наименование бюджетного предприятия с символьным типом размером в 25 символов;
Полное наименование бюджетного предприятия с символьным типом размером в 75 символов;
РНН бюджетного предприятия с символьным типом размером в 15 символов;
Адрес бюджетного предприятия с символьным типом размером в 50 символов;
Наименование банка казначейства с символьным типом размером в 50 символов;
Расчетный счет банка казначейства с символьным типом размером в 20 символов;
Дата регистрации бюджетного предприятия с символьным типом размером в 10 символов.
ФИО руководителя предприятия с символьным типом размером в 50 символов;
ФИО главного бухгалтера предприятия с символьным типом размером в 50 символов;
Таблица 3.2 - Структура таблицы TblPredpr.DB
Имя поля |
Тип поля |
Размер поля |
Ключ |
|
Id |
+ |
15 |
* |
|
KodPr |
A |
15 |
||
KodGPr |
A |
15 |
||
KodOblast |
A |
15 |
||
KodOblastF |
A |
15 |
||
KodRaon |
A |
15 |
||
KNPr |
A |
25 |
||
PNPr |
A |
75 |
||
RNNPr |
A |
15 |
||
AdrPr |
A |
50 |
||
RSPr |
A |
50 |
||
KodBank |
A |
20 |
||
FIORukPr |
A |
25 |
||
FIOGBux |
A |
25 |
||
DataR |
A |
12 |
После описания полей и задания главного ключа для данной таблицы переходим к созданию всех других необходимых таблиц.
Естественно, что все операции по созданию других таблиц аналогичны.
Поэтому мы будем описывать только поля для остальных таблиц.
Создание таблицы TblBank.DB
Для этой таблицы описываются поля см. таблицу 3.3 :
Идентификатор (главный ключ таблицы) с типом автоприращения;
Код банка с символьным типом размером в 15 символов;
Почтовый индекс банка с символьным типом размером в 10 символов;
Наименование банка с символьным типом размером в 25 символов;
Адрес банка с символьным типом размером в 50 символов;
Фамилия Имя Отчество руководителя банка с символьным типом размером в 50 символов;
Фамилия Имя Отчество главного бухгалтера предприятия символьным типом размером в 50 символов;
Создание таблицы TblRegion.DB
Для этой таблицы описываются следующие поля см. таблицу 3.4:
Идентификатор (главный ключ таблицы) с типом автоприращения;
Код области с символьным типом размером в 15 символов;
Код района с символьным типом размером в 15 символов;
Название района с символьным типом размером в 25 символов;
Год ввода района с типом дата;
Таблица 3.3 - Структура таблицы TblBank.DB
Имя поля |
Тип поля |
Размер поля |
Ключ |
|
Id |
+ |
15 |
* |
|
KodB |
A |
15 |
||
PIndB |
A |
25 |
||
NameB |
A |
50 |
||
AdresB |
A |
50 |
||
FIORukB |
A |
50 |
Таблица 3.4 - Структура таблицы TblRegion.DB
Имя поля |
Тип поля |
Размер поля |
Ключ |
|
Id |
+ |
15 |
* |
|
KodObl |
A |
15 |
||
KodRaon |
A |
25 |
||
NameRaon |
A |
50 |
||
God |
Д |
Создание таблицы TblSmeta.DB
При создании таблицы TblSmeta .DB задаются и описываются следующие поля см. таблицу 3.5:
Идентификатор (главный ключ таблицы) с типом автоприращения;
Поле Гос заказ с символьным типом размером в 15 символов;
Поле Гос заказ «уже введено» с символьным типом размером в 15 символов;
Поле Всего по строкам с символьным типом размером в 15 символов;
Поле Всего по строкам «уже введено» с символьным типом размером в 15 символов;
Поле В том числе Гос заказ ГР 5 с символьным типом размером в 15 символов;
Поле В том числе Гос заказ ГР 5 «уже введено»с символьным типом размером в 15 символов;
Поле Примечание с символьным типом размером в 50 символов;
Поле Администратор с символьным типом размером в 50 символов;
Поле Программа с символьным типом размером в 50 символов;
Поле Подпрограмма с символьным типом размером в 50 символов;
Поле Всего Гос Заказ по КБК с символьным типом размером в 15 символов;
Поле Гос заказ по строкам 140-260 по КБК с символьным типом размером в 15 символов;
Поле «уже введено» по КБК с символьным типом размером в 15 символов;
Поле Номер строки с символьным типом размером в 50 символов;
Поле Утверждение сметы с числовым типом;
Код предприятия с символьным типом размером в 15 символов;
Таблица 3.5 - Структура таблицы TblSmeta.DB
Имя поля |
Тип поля |
Размер поля |
Ключ |
|
Id |
+ |
15 |
* |
|
KodPr |
A |
15 |
||
VGZ1 |
A |
15 |
||
VGZ1V |
A |
15 |
||
V140_260 |
A |
15 |
||
V140_260V |
A |
15 |
||
GZGR5 |
A |
15 |
||
GZGR5V |
A |
15 |
||
Prim |
A |
50 |
||
Admin |
A |
50 |
||
Prog |
A |
50 |
||
PProg |
A |
50 |
||
Spec |
A |
50 |
||
VGZKBK |
A |
15 |
||
VGZKBK140_260 |
A |
15 |
||
VGZKBKV |
A |
15 |
||
NumStr |
A |
50 |
||
US |
I |
Создание таблицы TblZayav.DB
Для создании данной таблицы задаются и описываются следующие поля см. таблицу 3.6:
Идентификатор (главный ключ таблицы) с типом автоприращения;
Код предприятия с символьным типом размером в 15 символов;
Поле наименование бюджетного предприятия с символьным типом размером в 50 символов;
Поле номер завки с символьным типом размером в 25 символов;
Поле номер договора с символьным типом размером в 25 символов;
Поле сумма договора с символьным типом размером в 25 символов;
Поле сумма договора «в том числе гос заказ»с символьным типом размером в 25 символов;
Поле Дата заявки с типом дата;
Поле Дата договора с типом дата;
Поле Дата дополнительного соглашения с типом дата;
Поле Дата утверждения заявки с типом дата;
Поле Регистрации договора с числовым дата;
Поле наименование с символьным типом размером 50 символов;
Поле Отмены заявки с числовым типом;
Поле финансовый год с символьным типом размером в 5 символов;
Поле оплачено по договору с символьным типом размером в 15 символов;
Поле оплачено по договору «в том числе гос заказ» с символьным типом размером в 15 символов;
Поле номер платежного поручения с символьным типом размером в 15 символов;
Поле Дата регистрации платежного поручения с типом дата;
Поле оплаченная сумма с символьным типом размером в 15 символов;
Поле оплаченная сумма «в том числе гос заказ» с символьным типом размером в 15 символов;
Таблица 3.6 - Структура таблицы TblZayav.DB
Имя поля |
Тип поля |
Размер поля |
Ключ |
|
Id |
+ |
15 |
* |
|
KodPr |
A |
15 |
||
BudgPrepr |
A |
50 |
||
NumZayav |
A |
25 |
||
NumDog |
A |
25 |
||
SumDog |
A |
25 |
||
DataZayav |
D |
|||
DataDog |
D |
|||
GosZakaz |
A |
25 |
||
DataDopSogl |
D |
|||
DataUtver |
A |
12 |
||
RegDog |
I |
|||
Naimen |
A |
50 |
Связи между таблицами представлены на рисунке 3.27
3.1.3 Описание интерфейса классов
В данном проекте используются визуальные и не визуальные компоненты, предназначенные обеспечить пользовательский интерфейс.
В стандартную поставку Delphi входят основные объекты, которые образуют удачно подобранную иерархию из 270 базовых классов [11].
На Delphi можно одинаково хорошо писать как приложения к корпоративным базам данных, так и, к примеру, игровые программы.
Во многом это объясняется тем, что традиционно в среде Windows было достаточно сложно реализовывать пользовательский интерфейс.
Событийная модель в Windows всегда была сложна для понимания и отладки. Но именно разработка интерфейса в Delphi является самой простой задачей для программиста.
Благодаря такой возможности приложения, изготовленные при помощи Delphi, работают надежно и устойчиво. Delphi поддерживает использование уже существующих объектов, включая DLL, написанные на С и С++, OLE сервера, VBX, объекты, созданные при помощи Delphi. Из готовых компонент работающие приложения собираются очень быстро. Кроме того, поскольку Delphi имеет полностью объектную ориентацию, разработчики могут создавать свои повторно используемые объекты для того, чтобы уменьшить затараты на разработку.
Компоненты, используемые при разработке в Delphi, встроены в среду разработки приложений и представляют из себя набор типов объектов, используемых в качестве фундамента при строительстве приложения.
Здесь следует отметить, что обычных ограничений, присущих средам визуальной разработки, в Delphi нет. Сам Delphi написан при помощи Delphi, что говорит об отсутствии таких ограничений.
Ключевой особенностью Delphi является возможность не только использовать визуальные компоненты для строительства приложений, но и создание новых компонент. Такая возможность позволяет разработчикам не переходить в другую среду разработки, а наоборот, встраивать новые инструменты в существующую среду. Кроме того, можно улучшить или полностью заменить существующие по умолчанию в Delphi компоненты.
Классы объектов построены в виде иерархии, состоящей из абстрактных, промежуточных, и готовых компонент. Разработчик может пользоваться готовыми компонентами, создавать собственные на основе абстрактных или промежуточных, а также создавать собственные объекты.
Для управления проектом и выбора соответствующего раздела используется компоненты LBButton.
LBButton - кнопка, имеющая расширенный набор свойств и методов, позволяющих задать цвет кнопки и прозрачность.
Для ввода информации используются компоненты однострочного редактора текста Edit.
Edit - однострочное редактируемое поле ввода. Предназначено для ввода, отображения или редактирования одной текстовой строки. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы. Для выбора различных режимов используется компонент TabControl. Данный компонент обеспечивает создание вкладок, на которых размещаются отдельные панели с необходимыми компонентами для работы программы.
Label - (метка) - предназначен для размещения различного рода надписей. Служит для отображения текста на экране. Можно изменить шрифт и цвет метки, если дважды щелкнуть на свойство Font в Инспекторе Объектов. Это легко сделать и во время выполнения программы, написав одну строчку кода;
dxDataEdit - компонент для выбора и отображения даты. Отличается от стандартного тем, что позволяет отображать пустую дату.
NormalReport - компонент для составления отчетов в бумажном виде.
ComboBox - выпадающий список для отображения и выбора одного из элементов (строки) списка.
CheckBox - (флажок) компонент для выбора или отмены состояния необходимого поля или другого элемента формы.
DBGrid - таблица БД. Ячейки этого компонента могут содержать произвольную информацию из БД;
MainForm - компонент предназначен для размещения других необходимых компонент;
3.2 Тестирование на контрольном примере
Для контрольного примера возьмём работу программы при работе оформления заявки от предприятия на финансирование. Для этого необходимо выбрать в главном окне программы раздел «Заявки от предприятий». Открывается окно для работы с «Заявками».
Предположим, что необходимо изменить данные «Заявки» некоторого предприятия. Для этого в данном разделе выбираем пункт «Изменить».
В появившейся форме для поиска необходимого предприятия выбираем из выпадающего списка код предприятия и номер заявки. Кнопка «Найти» реализует поиск предприятия с номером заявки. В случае успешного поиска получим данные о заявке. В противном случае будет выдано сообщение см. рисунок 3.28.
Проводится проверка на «Исправление» зарегистрированной заявки.
В случае если «Заявка» зарегистрирована, то её исправление невозможно см. рисунок 3.29.
Для этого случая также выдается сообщение.
Для получения распечатки выбирается пункт «Печать». В появившемся окне можно распечатать или отменить печать заявки.
3.4 Документирование
3.4.1 Инструкция пользователю
Для пользователя программы «Гражданско - правовые сделки. РГП. ЦИФС» определены следующие действия: Запустить исполняемый файл RGPS.EXE. Ярлык для данного файла в процессе инсталляции программы устанавливается на рабочий стол.
В появившемся главном окне программы все кнопки кроме кнопки «Регистрация пользователя» неактивны. Для дальнейшей работы необходимо зарегистрироваться. В случае успешной регистрации кнопки с остальными разделами станут активными.
Необходимо выбрать нужный раздел для работы. Например для оплаты заявки необходимо нажать кнопку с надписью «Оплата заявки» и в появившемся окне выбрать из выпадающего списка финансовый год и код предприятия. Заполнить все необходимые поля и нажать кнопку «Сохранить».При необходимость можно распечатать платежное поручение.
3.3.1 Инструкция программисту
Данная программа может быть модифицирована для работы с удаленными базами данных.
Для этого необходимо подключить к программе выбранную базу данных, например MySQL.
В администрировании базы данных необходимо создать таблицы и указать поля таблиц, созданных в локально. Также необходимо прописать в свойствах таблиц путь к удаленной базе данных.
3.4 Индивидуальное задание: «Разработка алгоритма метода релаксации» для лабораторной работы «Методы оптимизации»
В дипломном проекте было выполнено индивидуальное задание на тему: Разработка алгоритма метода релаксации для лабораторной работы дисциплины «Методы оптимизации».
Алгоритм метода заключается в отыскании осевого направления, вдоль которого функция цели уменьшается наиболее сильно. Для этого в начальной точке поиска определяются производные оптимизируемой функции по всем независимым переменным.
Осевому направлению с наибыстрейшим убыванием целевой функции, очевидно, соответствует наибольшая по модулю производная. Если знак производной отрицательный, то целевая функция убывает в направлении оси, если положительный, то в обратном направлении. По направлению убывания целевой функции производятся шаги до тех пор, пока не будет получено минимальное значение по выбранному осевому направлению. Тогда вновь определяются производные по всем переменным за исключением той, по которой осуществляется спуск, и снова находится осевое направление наибыстрейшего убывания функции в цели, по которому производятся дальнейшие шаги, и т.д.
Критерием окончания поиска оптимума является достижение такой точки, при движении из которой по любому осевому направлению дальнейшего убывания функции цели не происходит. На практике в качестве признака оптимума часто применяется условие:
(1)
которое при ?->0 превращается в точное условие равенства нулю производных в точке оптимума.
Алгоритм спуска для выбранного осевого направления может быть записан в виде следующей формулы:
Xj(k+1)=Xj(k)-h(k)sgn(dF(X(p)/dXj) (2)
Очевидно, что скорость движения к минимуму зависит от того, насколько удачно выбран шаг h(k) изменения независимых переменных. При слишком малой величине шага число шагов, которое необходимо сделать, чтобы достичь оптимума, будет большим, и следовательно, потребуется много раз вычислять значения целевой функции на пути движения к оптимуму.
Если, напротив, величина шага с самого начала спуска выбрана слишком большой, то вблизи оптимума может возникнуть “рыскание”, так как при большой величине шага мала вероятность попадания в окрестность оптимума, в которой выполняется условие окончания поиска (1). Поэтому представляют интерес специальные приемы изменения величины шага в процессе поиска.
Простейший алгоритм изменения шага состоит в следующем. В начале спуска по одному из осевых направлений задается некоторый шаг h(0) равный, например, 0.1, что соответствует изменению значения физической переменной Yj на 10% от принятого диапазона dj.
С этим шагом производится спуск по выбранному осевому направлению до тех пор, пока для двух последующих вычислений значений целевой функции выполняется условие:
F(X(k+1))<F(X(k)) (3)
При нарушении условия на каком-либо L-м шаге направление спуска по оси изменяется на обратное и спуск продолжается из последней рассчитанной точки с уменьшенной вдвое величенной шага.
Формульная запись этого алгоритма имеет вид:
(4)
В результате использования такой стратегии шаг спуска по осевому направлению будет уменьшаться в районе минимума целевой функции по этому направлению и поиск минимума можно прекратить, когда величина шага h(k) станет меньше заданной точности определения минимума , в осевом направлении. Затем отыскивается новое осевое направление, в котором функция изменяется наиболее сильно.
Алгоритм поиска оптимума целевой функции методом релаксации при выполнении лабораторной работы следующий:
1) Задаются координаты начальной точки: X10, X20, k =0;
2) Определяются частные производные в начальной точке;
3) dX1K = F'X1(X1K,X2K), dX2K = F'X2(X1K,X2K);
4) Вдоль выбранного осевого направления определяется (по методу (2),(3))оптимальная точка методом обратного половинного шага. Первоначальную величину шага принять равной hi = 1, а точность поиска вдоль осевого направления принять равной wi = 0.1;
5) Найденная точка фиксируется и, аналогичным образом, находится оптимальная точка вдоль другого осевого направления;
6) Проверяется условие окончания поиска по (1). Величину ? принять равной 0.005. Если это условие выполняется для каждой частной производной в найденной точке, то поиск прекращается, если нет, то вычисления продолжаются с пункта 2.
Контрольный пример
Исследуется оптимум целевой функции: Y = F(T,Q) аналитическое выражение, которой имеет вид:
Y=1296.6279-17.82162*T+0.07213*T2-13.36467*Q+0.277715*Q2
T = 110..130, Q = 18..30.
Формы программы
На рисунках 3.30 и 3.31 представлены формы программы.
Листинг программы
Модуль Fullrel3
#include <math.h>
#include <conio.h>
#include "matrix6.cpp"
double norma(TMatrix<double> &x)
{double res=0;
int m=x.getSizeRow(), n=x.getSizeCol();
for(int i=1; i<=m; i++)
{
for(int j=1; j<=n; j++
)
{res+=x(i,j)*x(i,j); }}
return sqrt(res);}
{ int n=a.getSizeRow();
Matrix<double> x(b), r(n,1), alpha(n,1);
for(long k=0; k<max_step; k++)
{r=b-a*x; for(int i=1; i<=n; i++)
{alpha[i]=r[i]/a(i,i);} x+=alpha;
if(norma(r)<sigma)
{break; } }
if(k==max_step)}return x;}
void main(void)
{char ch;
TMatrix<double> a_b;
double sigma=.0000001;
long max_step=10000;
cout.setf(ios::showpoint);
for(;;)
{clrscr();
do
{ ch=getch(); }
while(ch!='1' && ch!='2' && ch!='3' && ch!='4' && ch!=27);
switch(ch)
{ case '1':{
clrscr();
char str[20];
cin>>str;
ifstream in_file(str);
if(in_file)
{ int n; in_file>>n;
a_b.setSize(n,n+1);
a_b.readArray(in_file);
a_b.writeArray(cout);
}
else
getch();
break;}
case '2':
{ clrscr();
cin>>sigma; break; } case '3':
{ clrscr(); cin>>max_step;
break; } case '4':
{ TMatrix<double> x;
clrscr();
int n=a_b.getSizeRow();
TMatrix<double> a(a_b.getPart(1,1,n,n)), b(a_b.getCol(n+1));
x=linearSolveFullRelax(a,b,sigma,max_step); x.writeArray(cout);
ofstream out_file("result.txt");
if(out_file)
a_b.writeArray(out_file);
x.writeArray(out_file);}
else getch(); break; } case 27:
return;
Модуль Matrix
#ifndef MATRIX6_CPP
#define MATRIX6_CPP
#include <assert.h>
#include <iostream.h>
template <class TYPE>
class TMatrix
{
friend TMatrix operator+ (TYPE, TMatrix &);
friend TMatrix operator- (TYPE, TMatrix &);
friend TMatrix operator* (TYPE, TMatrix &);
friend istream& operator>> (istream &, TMatrix &);
friend ostream& operator<< (ostream &, TMatrix &);
public:
Tmatrix ();
TMatrix (TMatrix &);
TMatrix (int, int);
TMatrix ();
Void init (TYPE c);
void initStat (TYPE *p, int, int);
void initDynam (TYPE **p, int, int);
void setSize (int, int);
int getSizeRow ();
int getSizeCol ();
TYPE & operator() (int, int);
TYPE & operator[] (int);
TMatrix & operator= (TMatrix &);
TMatrix getRow (int);
TMatrix getCol (int);
Void setRow (int, TMatrix &);
Void setCol (int, TMatrix &);
Tmatrix getPart (int, int, int, int);
Void setPart (int, int, TMatrix &);
Void swapRow (int, int);
void swapCol (int, int);
TMatrix operator + (TMatrix &);
TMatrix operator - (TMatrix &);
TMatrix operator * (TMatrix &);
TMatrix operator ^ (TMatrix &);
TMatrix & operator + = (TMatrix &);
TMatrix & operator - = (TMatrix &);
TMatrix & operator * = (TMatrix &);
TMatrix & operator ^ = (TMatrix &);
TMatrix & getTranspose ();
TMatrix & setSingle (int n);
TMatrix & operator+ (type);
TMatrix & operator- (type);
TMatrix & operator* (type);
TMatrix & operator (type);
TMatrix & operator+= (type);
TMatrix & operator-= (type);
TMatrix & operator*= (type);
TMatrix & operator/= (type);
TMatrix & operator- ();
TYPE & operator% (TMatrix &);
int readSize (istream &);
int readArray (istream &);
int writeSize (ostream &);
int writeArray (ostream &);
private:
TYPE ** array;
int sizeRow;
int sizeCol;
void error (int); };
template<class TYPE>
TMatrix<TYPE>::TMatrix()
{
array=NULL; sizeRow=0;
sizeCol=0;
}
template<class TYPE>
TMatrix<TYPE>::TMatrix(TMatrix<TYPE> &m)
{
array=NULL;
sizeRow=0;
sizeCol=0;
if (m.sizeRow>0 && m.sizeCol>0)
{ sizeRow=m.sizeRow;
sizeCol=m.sizeCol;
array=new TYPE*[sizeRow];
assert(array!=NULL);
for(int i=0; i<sizeRow; i++)
{array[i]=new TYPE[sizeCol];
assert(array[i]!=NULL);}
for(i=0; i<sizeRow; i++)
{for(int j=0; j<sizeCol; j++)
template<class TYPE>
TMatrix<TYPE>::TMatrix(int row, int col)
{ array=NULL;
sizeRow=0;
sizeCol=0;
if(row>0 && col>0)
{ sizeRow=row;
sizeCol=col;
array=new TYPE*[sizeRow];
assert(array!=NULL);
for(int i=0; i<sizeRow; i++)
{ array[i]=new TYPE[sizeCol];
assert(array[i]!=NULL);}
}
else
{
error(2);
}
template<class TYPE>
TMatrix<TYPE>::~TMatrix()
{
if(array!=NULL)
{
for(int i=0; i<sizeRow; i++)
{ if(array[i]!=NULL)
{ delete [] array[i];}
delete [] array;
}
template<class TYPE>
TMatrix<TYPE> &TMatrix<TYPE>::operator=(TMatrix<TYPE> &m)
{
if(this!=&m)
{ if(sizeRow==0 && sizeCol==0)
{ sizeRow=m.sizeRow;
sizeCol=m.sizeCol;
array=new TYPE*[sizeRow];
assert(array!=NULL);
for (int i=0; i<sizeRow; i++)
{ array[i]=new TYPE[sizeCol];
assert(array[i]!=NULL);}
}if(sizeRow==m.sizeRow && sizeCol==m.sizeCol)
{ for(int i=0; i<sizeRow; i++)
{ for(int j=0; j<sizeCol; j++)
{ array[i][j]=m.array[i][j]; }
} else
{ error(3); }
}
return *this;
}
template<class TYPE>
TYPE & TMatrix<TYPE>::operator()(int row, int col)
{ if(row>0 && row<=sizeRow && col>0 && col<=sizeCol)
{ return array[row-1][col-1];
}
else
{
error(4);
return array[0][0]; }
template<class TYPE>
TYPE & TMatrix<TYPE>::operator[](int k)
{
if (sizeRow==1 && k>0 && k<=sizeCol)
{return array[0][k-1];}
else
{
if(sizeCol==1 && k>0 && k<=sizeRow)
{return array[k-1][0];}
else
{
error(5);
return array[0][0]; } }
template<class TYPE>
return sizeRow;}
template<class TYPE>
int TMatrix<TYPE>::getSizeCol()
{return sizeCol;}
template<class TYPE>
void TMatrix<TYPE>::setSize(int row, int col)
{if(row==0 && col==0)
{if (array!=NULL)
{for (int i=0; i<sizeRow; i++)
{if(array[i]!=NULL)
{delete [] array[i];}delete [] array; array=NULL;
}
sizeRow=0;
sizeCol=0;
return; }
if(row>0 && col>0)
{if (array!=NULL)
return 0; }
for(int i=0; i<sizeRow; i++)
{for(int j=0; j<sizeCol; j++)
out<<array[i][j];}out<<endl;
}
return 1;
}
Список использованной литературы
1. Брукс Ф. П. Как проектируются и создаются программные комплексы.- И.:Наука, 1979.
2. Фокс Дж. Программное обеспечение и его разработка.-М.: Мир, 1985. Martin J., McClure C. Structured Techniques: The Basis for CASE. Englewood Cliffs: Prentice Hall, 1988.
3. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ- М.:Мир, 1981.
4. Software Engineering: A Practioner's Approach. 3 ed. by ed. R.S. Pressman. N.Y.: McGraw Hill, 1992.
5. Липаев В.В. Проектирование программных средств. - М.:Высшая
школа, 1990.
6. Фаронов В.В. DELPHI Программирование на языке высокого уровня. Учебник для втузов, Москва: изд.дом «Питер», 2004.
7. Архангельский А.Я. Язык Pascal и основы программирования в Delphi. Учебное пособие, Москва: изд.БИНОМ, 2004.
8. Боэм Б.У. Инженерное проектирование программного обеспечения. - М.: Радио и связь, 1985.
10. Майерс Г. Искусство тестирования программ.-М.: Финансы и статистика, 1982.
11. Боэм Б.У. Инженерное проектирование программного обеспечения. - М.: Радио и связь, 1985.
Размещено на Allbest.ru
Подобные документы
Понятие и специфика автоматизированных систем. Описание методики разработки программы для автоматизации. Ее тестирование и отладка. Внедрение АС в работу предприятия. Расчет экономического эффекта от разработки и реализации программного продукта.
дипломная работа [1,4 M], добавлен 23.06.2015Описание предметной области. Характеристика программных средств. Описание компонентов, интерфейс программы. Описание процедур и функций. Вызов и загрузка программы. Испытание методом белого и черного ящика на ошибки кода программного приложения.
курсовая работа [2,2 M], добавлен 26.04.2015Математическая модель алгоритма с модификацией муравьиной колонии. Выбор аппаратных и программных средств для разработки программы. Особенность построения оптимального маршрута обхода пациентов. Характеристика тестирования и отладки данного проекта.
дипломная работа [1,9 M], добавлен 17.11.2017Рассмотрение приемов разработки программных средств для автоматизированных систем обработки информации и управления. Разработка программного продукта, предназначенного для автоматизации работы заместителя директора по учебно-воспитательной работе.
дипломная работа [1,7 M], добавлен 27.02.2015Выбор программных и аппаратных средств для создания базы данных. Описание структуры программы. Описание разработки приложения. Подключение к базе данных, выполняемое с помощью компонента ADOConnectio. Создание средств защиты информации в программе.
курсовая работа [2,1 M], добавлен 16.02.2015Установление локальной вычислительной сети, специального программного обеспечения. Описание структуры автоматизации. Использование в туристической фирме комплекса аппаратных и программных средств. Осуществление выхода в интернет с помощью браузера.
отчет по практике [114,1 K], добавлен 15.01.2016Описание комплекса программных модулей, предназначенного для повышения эффективности аппаратных ресурсов компьютера. Характеристика компонентов сетевых и распределенных операционных систем. Модели сетевых служб. Способы разделения приложений на части.
презентация [1,4 M], добавлен 10.11.2013Анализ и сравнение существующих систем тьюторской поддержки. Методологии разработки программного обеспечения. Разработка web-ориентированной системы тьюторской поддержки самостоятельной работы студента. Выбор архитектуры программных средств разработки.
курсовая работа [1,1 M], добавлен 05.01.2013Разработка программы для автоматизации расчетов на телефонной станции. Описание входной и выходной информации, комплекс технических средств. Интерфейс конечного пользователя. Проектирование программных модулей представления входных и выходных данных.
курсовая работа [460,1 K], добавлен 26.06.2015Анализ аппаратных и программных средств предприятия ТОО "Alicesystems", занимающегося разработкой web-сайтов. Выбор структур, топологий и технологий разработки системы. Технологии создания сайтов и выбор площадки. Описание программно-аппаратных средств.
отчет по практике [690,9 K], добавлен 29.05.2015