Наименование документа
(шифр)
|
Периодичность выдачи
документа
|
Кол-во экз.
|
Куда передаются
|
Отчет «Виды вкладов»
|
Ежегодно
|
1
|
Банк
|
Договор
|
При регистрационных
действиях
|
1
|
Клиент
|
Выходные документы и отчеты получаются на основании входных данных.
Выходной документ «Договор» приведен в приложении Б.
.7 Контрольный пример
Контрольный пример является ручным вариантом просчета решения задачи и
служит для проверки правильности решения задач на ЭВМ.
Формы «Добавление нового клиента» и «Список клиентов» показаны на
рисунках 1.7.1 - 1.7.2
Рисунок 1.7.1 - Форма «Добавление нового клиента»
Рисунок 1.7.2 - Форма «Список клиентов»
.8 Общие требования к программному продукту
Программный продукт должен обладать высокой степенью надежности. Во всем
программном продукте должно использоваться ограничение ввода данных в поля
таблиц. Перед занесением новых данных должна производиться проверка введенной
информации на соответствие. Программный продукт должен обладать высоким
быстродействием, производит все действия за короткий промежуток времени.
Создаваемый программный продукт позволяет:
- вести автоматизированный учет вкладов в банке;
- составлять отчетную ведомость.
Для корректной работы программы компьютер должен соответствовать
следующим минимальным требованиям:
- MS Windows XP/Vista/7;
- процессор 1 ГГц;
- 128 МБ ОЗУ;
- 20 МБ свободного пространства на диске;
- принтер;
- клавиатура;
- мышь.
Также на компьютере необходимо наличие таких программных продуктов как:
- Microsoft Word;
- Microsoft Excel.
автоматизированный учет вклад
2. Экспериментальный раздел
.1 Обоснование выбора языка программирования
Среди большого разнообразия продуктов для разработки приложений Delphi
занимает одно из ведущих мест. Delphi отдают предпочтение разработчики с разным
стажем, привычками, профессиональными интересами. С помощью Delphi написано
колоссальное количество приложений, десятки фирм и тысячи
программистов-одиночек разрабатывают для Delphi дополнительные компоненты.
В основе такой общепризнанной популярности лежит тот факт, что Delphi,
как никакая другая система программирования, удовлетворяет изложенным выше
требованиям. Действительно, приложения с помощью Delphi разрабатываются быстро,
причем взаимодействие разработчика с интерактивной средой Delphi не вызывает
внутреннего отторжения, а наоборот, оставляет ощущение комфорта.
Delphi-приложения эффективны, если разработчик соблюдает определенные правила
(и часто - если не соблюдает). Эти приложения надежны и при эксплуатации
обладают предсказуемым поведением.
Интегрированная среда разработки Delphi с ее инструментами визуального редактирования,
библиотекой компонент, механизмом баз данных и многим другим, идеально подходит
для написания приложений Windows,
используя свой диалект языка Object Pascal - Delphi Pascal, который является объектно-ориентированным.
В состав Delphi входят компоненты, позволяющие создавать программы работы
с файлами данных, созданными различными системами: от dBASE до Infomix и
Oracle. Delphi также позволяет программисту, используя утилиту Borland Database
Desktop, создавать файлы баз данных в различных форматах.
В зависимости от расположения программы, использующей данные, и самих
данных, а также способа разделения данных между несколькими пользователями
различают локальные и удаленные базы данных.- это локальная база данных. Данные
локальной базы данных находятся на одном устройстве, в качестве которого может
выступать диск компьютера или сетевой диск. Для обеспечения доступа к данным
между несколькими пользователями, в качестве которых выступают программы,
работающие на одном или нескольких компьютерах, в локальных базах данных
применяется метод, получивший название блокировка файлов. Суть этого метода
заключается в том, что пока данные используются одним пользователем, другой
пользователь не может работать с этими данными, т.е. данные для него закрыты,
заблокированы.
Пакет Delphi - продолжение линии компиляторов языка Pascal корпорации
Borland. Pascal как язык очень прост, а строгий контроль типов данных
способствует раннему обнаружению ошибок и позволяет быстро создавать надежные и
эффективные программы.
Обоснованием выбора служат следующие факторы:
- быстрота разработки. От быстрой разработки зависит, прежде всего, цена
программного продукта. Для увеличения скорости написания Windows-приложений необходимо использовать
средства визуального программирования. Delphi как нельзя более подходит для выполнения данной
задачи, так как назначение Delphi
- быстрая разработка приложений (RAD - Rapid Application Development). Разработка приложений интерфейса
пользователя с помощью Delphi
- в основном процесс проектирования, с весьма небольшим количеством
фактического программирования, что существенно сокращает время на создание
удобного интерфейса, отвечающего стандартам разработки Windows-приложений. Delphi может компилировать 32-битные программы, обеспечивая высокую скорость
выполнения;
- характер задачи. Рассматриваемая в дипломном проекте задача
относится к разряду с использованием баз данных. В состав Delphi входит высокоэффективный компилятор
с языка Object Pascal, основанном на концепции объектно-ориентированного
программирования. Данный компилятор генерирует оптимизированный код,
позволяющий увеличить скорость выполнения программ, что немаловажно для данного
программного продукта. Delphi
создает действительно откомпилированные программы, готовые для исполнения;
- доступ к аппаратным средствам. Постановка задачи исключает
необходимость доступа к аппаратным средствам ЭВМ, поэтому отсутствует
надобность выбора языка низкого уровня для написания программы или ее частей.
Таким образом, среда программирования Delphi является оптимальным выбором
для решения поставленной задачи, так как:
- обеспечивает простоту написания вычислительных частей приложения, высокую
скорость вычисления скомпилированной программы;
- обладает широкими средствами визуального построения
интерфейса;
- обладает обширными средствами поддержки баз данных.
.2 Описание программы
Программа «Автоматизация учета вкладов в банке» имеет модульную структуру
и состоит из 14 модулей. Код программы приведен в приложении А. Список модулей,
и их связь представлены в модульной схеме (рисунок 2.2.1).
Рисунок 2.2.1 - Модульная схема
Описание процедур:
mainDataModuleUnit (Открытие модуля данных):
- procedure
TmainDataModule.N8Click(Sender: TObject);- переход
на форму «О программе»;
- Procedure
TmainDataModule.N9Click(Sender:TObject);- создание резервной копии;
- procedure
TmainDataModule.N14Click(Sender: TObject);- выполнение восстановления данных;
- procedure
TmainDataModule.N5Click(Sender: TObject);- вызов справочной системы;
- procedure
TmainDataModule.N6Click(Sender: TObject);- вызов помощи;
- procedure
TmainDataModule.N13Click(Sender: TObject);- переход
на форму «Диаграмма по видам вкладов»;
- procedure
TmainDataModule.N3Click(Sender: TObject);- переход
на форму «Диаграмма по месяцам»(Главное
меню):
- procedure
TmainForm.SpeedButton2Click(Sender: TObject);- переход на форму «Счета»;
- procedure
TmainForm.SpeedButton3Click(Sender: TObject); - переход на форму «Виды вкладов»;
- procedure
TmainForm.SpeedButton1Click(Sender: TObject);- переход на форму «Сотрудники».(Счета):
- procedure TForm1.Button6Click(Sender:
TObject);- переход на главную форму;
- procedure TForm1.Button4Click(Sender:
TObject);- переход на форму «Список
клиентов»;
- procedure TForm1.Button2Click(Sender:
TObject);- поиск по номеру счета;
- procedure TForm1.Button1Click(Sender:
TObject);- очистка таблицы;
- procedure TForm1.Button5Click(Sender:
TObject);- добавление суммы;
- procedure TForm1.Button7Click(Sender:
TObject);- удаление счета;
- procedure TForm1.Button8Click(Sender:
TObject);- экспорт в Excel.2 (Виды вкладов):
- procedure TForm2.Button5Click(Sender:
TObject);- переход на главную форму;
- procedure TForm2.Button1Click(Sender:
TObject);- поиск по коду вклада и % ставке;
- procedure TForm2.Button3Click(Sender:
TObject);- открытие отчета «Виды вкладов».3 (Сотрудники):
- procedure TForm3.Button4Click(Sender:
TObject);- переход на главную форму;
- procedure
TForm3.DBGrid1TitleClick(Column: TColumn);- сортировка;
- procedure TForm3.Button1Click(Sender:
TObject);- сортировка по фамилии;
- procedure TForm3.Button2Click(Sender:
TObject);- сортировка по дате рождения.
- procedure TForm3.Button3Click(Sender:
TObject);- добавление нового
сотрудника;
- procedure TForm3.Button5Click(Sender:
TObject);- изменение данных
сотрудника;
- procedure TForm3.Button6Click(Sender:
TObject);- удаление сотрудника.5
(Вклады):
- procedure TForm5.BitBtn1Click(Sender:
TObject);- сохранение данных.6
(Список клиентов):
- procedure TForm6.Button1Click(Sender:
TObject); - добавление клиента;
- procedure TForm6.Button2Click(Sender:
TObject);- изменение клиента;
- procedure TForm6.Button3Click(Sender:
TObject);- удаление клиента;
- procedure TForm6.Button5Click(Sender:
TObject);- переход на главную форму;
- procedure TForm6.Button4Click(Sender:
TObject);- печать договора.
2.3 Протокол тестирования программного продукта
Тестирование программного продукта на некорректных данных:
- при входе в программу и вводе неправильного пароля выводится сообщение:
«Неверный пароль;
- запрещается ввод и изменение данных представленных в
табличном виде непосредственно в самой таблице, только через специальные формы
Данный программный продукт удовлетворяет всем функциональным требованиям,
имеет дружественный интерфейс, исключает появлении системных ошибок.
При тестировании программного продукта на данных контрольного примера
модификация данных, сортировка, поиск, подсчет статистики, экспорт в Excel, вывод отчетов происходит корректно.
Результаты тестирования полностью совпадают с ожидаемыми результатами.
.4 Руководство пользователя
Для правильной работы нельзя перемещать файл базы данных из основной
папки и переименовывать все файлы, находящиеся в ней во избежание ошибок.
Запуск программы осуществляется приложением Project.exe.
После запуска приложения открывается окно авторизации пользователя (рисунок
2.4.1).
Рисунок 2.4.1 - Окно авторизации
Выход из программы осуществляется нажатием кнопки «Выход». Для продолжения
работы необходимо ввести логин и пароль. При введении неправильного логина или
пароля система выдает ошибку (рисунок 2.4.2).
Рисунок 2.4.2 - Окно ошибки
После успешной авторизации появится форма «Банк» (рисунок 2.4.3).
Рисунок 2.4.3 - Форма «Банк»
Примеры открытых таблиц показаны на рисунках 2.4.4 - 2.4.6.
Рисунок 2.4.4 - Таблица «Сотрудники»
Рисунок 2.4.5 - Таблица «Счета»
Рисунок 2.4.6 - Таблица «Виды вкладов»
В каждой таблице осуществляется модификация данных. Чтобы добавить запись
в таблицу нажмите на кнопку , после чего откроется форма «Добавление записи». Заполнив
все поля, для сохранения нажмите на кнопку , для закрытия формы без сохранения -
. Пример представлен на рисунке
2.4.7.
Рисунок 2.4.7 - Добавление записи в таблицу «Вклады»
Чтобы удалить запись выделите ее и нажмите на кнопку , после чего появится окно
подтверждения удаления. Пример представлен на рисунке 2.4.8
Рисунок 2.4.8 - Удаление записи
Просмотр сформированного отчета осуществляется кнопкой (рисунок 2.4.9) в таблице «Виды
вкладов». Пример представлен на рисунке 2.4.10.
Рисунок 2.4.9 - Пункт меню «Отчеты»
Рисунок 2.4.10 - Отчет «По видам вкладов»
Поиск записей возможен в двух таблицах. Поиск производится нажатием
кнопки на форме с открытой таблицей, в
которой Вы хотите осуществить поиск записей. На форме для поиска напишите
значение по которому Вы хотите искать запись,затем нажмите кнопку .
Сортировка данных возможна в одной таблице.На форме для сортировки
отметьте поле, по которому вы хотите сортировать записи. Пример показан на
рисунке 2.4.11.
Рисунок 2.4.11 - Сортировка в таблице «Сотрудники»
Просмотр диаграмм осуществляется в главном меню,в форме «Банк». Примеры
представлены на рисунках 2.4.12 - 2.4.13.
Рисунок 2.4.12 - Диаграмма по видам вкладов
Рисунок 2.4.13 - Диаграмма по месяцам
Экспорт данных в Excel возможен в одной таблице. Осуществляется нажатием
кнопки на форме «Счета». Пример показан на
рисунке 2.4.14.
Рисунок 2.4.14 - Экспорт в Excel
таблицы «Счета»
Вызов справки осуществляется выбором пункта в форме главного меню. Пример вызова
справки показан на рисунке 2.4.15.
Рисунок 2.4.15 - Справка
Просмотр образца договора осуществляется нажатием кнопки . Пример представлен на рисунке
2.4.16.
Рисунок 2.4.16 - Образец договора
Резервное копирование базы данных осуществляется выбором вкладки
«Резервное копирование» в пункте меню «Сервис» (рисунок 2.4.17). После чего
откроется окно сообщения «Резервное копирование» (рисунок 2.4.18). Затем нажа
кнопку «ОК» происходит резервное копирование.
Восстановление базы данных осуществляется выбором вкладки «Восстановление
базы данных» в пункте меню «Сервис» (рисунок 2.4.17). После чего откроется окно
«Восстановление данных» (рисунок 2.4.19). Затем нажа кнопку «ОК» происходит
восстановление данных.
Рисунок 2.4.17 - Пункт меню «Сервис»
Рисунок 2.4.18 - Резервное копирование
Рисунок 2.4.19 - Восстановление данных
Выход из приложения осуществляется выбором пункта меню .
3 Экономический раздел
3.1 Расчёт затрат на создание программного продукта
Расчет себестоимости машинного часа эксплуатации вычислительной и
оргтехники (ВиОТ):
,(3.1)
где См.ч. - себестоимость машинного часа;п -
годовой полезный фонд времени работы единицы оборудования;
Кг=0,95 - коэффициент готовности;
Зi -годовые затраты, связанные с эксплуатацией и обслуживанием
ВиОТ.
,(3.2)
где FН =1944 - номинальный годовой фонд рабочего времени в
часах в 2014 году;
aр=(0,05…0,2)
- коэффициент, учитывающий время, затраченное на ремонт, настройку, обслуживание
ВиОТ.
Fп=1944*(1-0,05)=1846 (ч.).
Для расчета годовых затрат, необходимо определить балансовую стоимость
условного комплекта СБАЛ:
№
|
Наименование
|
Кол-во шт. (кi)
|
Цена руб. (Цi)
|
1
|
Системный блок
|
1
|
24650
|
2
|
Монитор ЖК
|
1
|
5600
|
3
|
Клавиатура
|
1
|
280
|
4
|
Мышь
|
1
|
180
|
5
|
Принтер
|
1
|
3690
|
|
Итого:
|
34400
|
|
|
|
|
|
(3.3)
где РД - дополнительные расходы на доставку, установку,
первоначальную наладку и пр.
(3.4)
РД = 0,1*(24650*1+5600*1+280*1+180*1+3690*1) = 3440 (руб.).
СБАЛ = 24650*1+5600*1+280*1+180*1+3690*1+3440 = 37840 (руб.).
Затраты на материалы:
(3.5)
Зм=0,02*37840=756,8
Основная и дополнительная заработная плата персонала, обслуживающего
ВиОТ. Предусмотрен 1 человек.
(3.6)
гдеОi =6000 -
оклад i-го работника, обслуживающего ВиОТ,
Кд = 0,1 - коэффициент дополнительной заработной платы,
КР = 0,15 - районный коэффициент,
NобсПК= 20
» 4554 (руб.).
Начисления на заработную плату НЗ/П составляет 30,2%.
Таблица
3.3 - Состав ЕСН.
№
|
Статья
|
%
|
1
|
Пенсионный фонд
|
22
|
2
|
Фонд социального
страхования
|
2,9
|
3
|
Федеральный фонд
обязательного медицинского страхования
|
5,1
|
4
|
Страховой налог от
несчастного случая на производстве для служащих
|
0,2
|
|
Итого:
|
30,2
|
(3.7)
НЗ/П = 0,302*4554 »1375 (руб.).
Амортизационные отчисления ВиОТ.
, (3.8)
где
= 0,2 - норма амортизационных начислений.
АООБОР = 37840 * 0,2 = 7568 (руб.).
Износ программных продуктов.
Условный комплект обладает следующими необходимыми программными
продуктами:
Таблица 3.3 - Используемые программные средства
Наименование
|
Цена (руб.)
|
MS Windows XP
|
4127
|
Borland Delphi 7
|
68102
|
Итого
|
75895
|
Амортизационные отчисления программных продуктов - АОпп
, (3.9)
где
= 0,65 - норма амортизационных начислений.
= 75895
руб. - суммарная стоимость программных продуктов.
АОПП
= 75895 * 0,65 = 49331,7 (руб.).
Расходы на содержание и эксплуатацию оборудования.
Расходы на содержание и эксплуатацию оборудования состоят из:
- затрат на ремонт и специальное обслуживание
;(3.10)
- затрат на электрическую энергию
,(3.11)
где
- суммарная мощность;
КГ - коэффициент готовности;
ЦкВт/ч - стоимость кВт/ч.
ЗРЕМ=0,03*37840=1135,2 (руб.)
ЗЭ=0,95*1,42
Расходы на содержание и эксплуатацию оборудования
(3.12)
ЗРЭ= 1135,2+1,349=1136,549(руб.)
Прочие расходы.
Так как используется один тип техники и количество обслуживающего
персонала не превышает трех человек, следовательно:
(3.13)
ЗПР=0,4*37840=15136 (руб.)
Суммарные годовые затраты.
(3.14)
Себестоимость машинного часа, из формулы (1), составляет:
(руб.).
.2
Расчет цены предложения и минимального количества копий тиражирования
Расчёт
цены предложения
ТО
= 2 месяца - общее время работы над программным продуктом.
ТМ
= 1,5 месяца - машинное время работы над программным продуктом.
Фонд
оплаты труда за время работы над программным продуктом.
, (3.15)
где Кд = 0,15 - коэффициент дополнительной заработной платы.
КР = 0,15 - районный коэффициент.
О = 5000 руб. - оклад, работающего над продуктом.
ФОТ =5000*2*(1+0,15)*(1+0,15) = 13225 (руб.).
Начисления на ФОТ:
, (3.16)
НЗ/П = 13225 * 0,302 = 3993,95 (руб.).
Затраты, связанные с эксплуатацией и обслуживанием ВиОТ:
, (3.17)
где ЧРМ = 162 - число рабочих часов в месяце;
КИ = 0,9 - коэффициент использования оборудования.= 1 -
количество условных комплектов.
ЗОВТ = 1,5*162*0,9*1*12 = 2624,4 (руб.).
Затраты на хозяйственные операции и нужды (ЗХН):
Таблица 3.4 - Затраты на хозяйственные нужды.
Наименование
|
Цена за единицу, (руб.)
|
Количество
|
Всего
|
Бумага
|
95
|
1
|
95
|
Ручка
|
5
|
1
|
5
|
Картридж принтера
|
300
|
1
|
300
|
Диск
|
30
|
1
|
30
|
Итого:
|
430
|
ЗХН = 430 руб.
Накладные расходы:
, (3.18)
РН = 0,45*13225 = 5951,25 (руб.).
Полные затраты на разработку программного продукта:
, (3.19)
ЗПОЛ = 19440 + 3314,3 + 2624,4 + 0 + 406 + 5060= 60506 (руб.).
Расчет установочной прибыли:
, (3.20)
где RУ = 20 % - установочная рентабельность.
ПРУ = 60506* 0,2 = 12101,26 (руб.).
Расчет величины налога на добавленную стоимость (НДС):
, (3.21)
НДС = (60506+12101) * 0,18 = 13069 (руб.).
Цена предложения разработанного программного продукта:
, (3.22)
ЦПР = 60506 + 12101 + 13069= 85676,93 (руб.).
Расчет минимального количества копий, необходимых для реализации, для
получения установочной прибыли:
,(3.23)
где ЦСПР - цена на рынке одной копии программного продукта;
ЗТИРАЖ -затраты на тиражирование одной копии программного
продукта.
,(3.24)
где СCD- цена диска - носителя;
Ттираж - время копирования.
Заключение
В процессе выполнения дипломного проекта были разработаны структура и
алгоритм работы приложения «Автоматизация учета вкладов в банке». При этом были
учтены особенности реализации других компонентов информационной системы.
Результатом работы стало создание программного обеспечения. Программа Project.exe написана на языке Object Pascal в среде программирования Delphi 7.0. с использованием СУБД Paradox 7, предназначена для работы в
операционной системе MS Windows XP и отлажена на данных контрольного примера.
В процессе разработки дипломного проекта были приобретены навыки в
области построения баз данных, а также их программной защиты. Кроме того, был
разработан дружественный интерфейс.
Были написаны руководство пользователя. Приложение было выполнено на
данных контрольного примера.
Приложение А
PasswordDlgUnit;Windows, SysUtils, Classes, Graphics, Forms,
Controls, StdCtrls, , jpeg, ExtCtrls;= class(TForm): TButton;: TImage;: TEdit;:
TButton;OKBtnClick(Sender: TObject);Button1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TPasswordDlg;mainUnit;
{$R *.dfm}TPasswordDlg.OKBtnClick(Sender:
TObject);edit1.Text='123' then.Show;.Hide;.MessageBox('Неверный пароль','Неверный пароль');;TPasswordDlg.Button1Click(Sender:
TObject);.Terminate;;.mainUnit;, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,, ComCtrls, Buttons, jpeg, ExtCtrls;= class(TForm):
TImage;: TSpeedButton;: TSpeedButton;: TSpeedButton;SpeedButton2Click(Sender:
TObject);SpeedButton3Click(Sender: TObject);SpeedButton1Click(Sender:
TObject);SpeedButton4Click(Sender: TObject);FormCreate(Sender: TObject);
{ Private declarations }
{ Public declarations };: TmainForm;Sotrudniki, Unit2, Unit3,
Unit4, Unit9, Unit10;
{$R *.dfm}TmainForm.SpeedButton2Click(Sender:
TObject);.Hide;.Show;;TmainForm.SpeedButton3Click(Sender:
TObject);.Hide;.Show;;TmainForm.SpeedButton1Click(Sender:
TObject);.Hide;.Show;;TmainForm.SpeedButton4Click(Sender:
TObject);.Hide;.Show;;TmainForm.FormCreate(Sender: TObject);:=
ExtractFilePath(Application.ExeName) + 'help\sber.chm';;.Unit1;, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, DBGrids,
StdCtrls, ExtCtrls, DBCtrls, ShellAPI, ComObj;= class(TForm): TDBGrid;:
TButton;: TButton;: TButton;: TLabel;: TLabel;: TComboBox;: TButton;: TButton;:
TLabel;: TButton;: TButton;: TLabel;: TLabel;: TButton;Button6Click(Sender:
TObject);Button3Click(Sender: TObject);Button4Click(Sender:
TObject);Button2Click(Sender: TObject);FormShow(Sender:
TObject);Button1Click(Sender: TObject);Button5Click(Sender:
TObject);Button7Click(Sender: TObject);Button8Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm1;mainDataModuleUnit,
mainUnit, Unit5, Unit4, Unit11, Unit6;
{$R *.dfm}TForm1.Button6Click(Sender:
TObject);.Hide;.Show;;TForm1.Button3Click(Sender:
TObject);.Query1.SQL.Clear;.Query1.SQL.Add('SELECT (SELECT SUM(Prixod) FROM
Vkladu WHERE N_cheta = '''+form1.ComboBox1.Text + ''')-(SELECT SUM(Rasxod) FROM
Vkladu WHERE N_cheta = '''+form1.ComboBox1.Text + ''') FROM
Vkladu');.Query1.Open;.Caption:=mainDataModule.Query1.Fields[0].AsString + ' руб.';.Query1.SQL.Clear;.Query1.SQL.Add('SELECT
* FROM Vkladu');.Query1.SQL.Add('WHERE N_cheta = '''+form1.ComboBox1.Text +
'''');.Query1.Open;.DBGrid1.DataSource:=
mainDataModule.DataSource5;.Edit1.Text:=mainDataModule.Query1.Fields[1].AsString;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;;TForm1.Button4Click(Sender:
TObject);.Show;;TForm1.Button2Click(Sender:
TObject);.Query2.Active:=False;.Query2.SQL.Clear;.Query2.SQL.Add('SELECT * FROM
Klientu');.Query2.SQL.Add('WHERE N_cheta = '''+ComboBox1.Text +
'''');.Query2.Open;.DBGrid1.DataSource:=
mainDataModule.DataSource6;;TForm1.FormShow(Sender: TObject);.Items.Clear;not
mainDataModule.Query2.Eof
do.Items.Add(mainDataModule.Query2.Fields.FieldByName('N_cheta').AsString);.Query2.Next;;;TForm1.Button1Click(Sender:
TObject);.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;;TForm1.Button5Click(Sender:
TObject);.Show;;TForm1.Button7Click(Sender: TObject);messageDlg('Удалить запись?',,
[mbYes,mbNo], 0)=mrYes then
mainDataModule.Table5.Delete;;TForm1.Button8Click(Sender:
TObject);i,j,index:byte;,
sheet:Variant;:=createOleObject('Excel.Application');.Visible:=True;.WorkBooks.Add(-4167);.WorkBooks[1].WorkSheets[1].Name:='счета';:=ExcelApp.WorkBooks[1].WorkSheets['счета'];:=2;.dbgrid1.DataSource.DataSet.First;i:=1
to form1.dbgrid1.DataSource.DataSet.RecordCount do beginj:=1 to
form1.dbgrid1.FieldCount do.cells[index,
j]:=form1.dbgrid1.Fields[j-1].AsString;(index);.dbgrid1.DataSource.DataSet.Next;;;.Unit2;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids,
DBGrids, StdCtrls, ExtCtrls, DBCtrls, DB, DBTables,, RpDefine, RpCon, RpConDS;=
class(TForm): TDBGrid;: TButton;: TRadioGroup;: TCheckBox;: TCheckBox;: TEdit;:
TEdit;: TButton;: TButton;: TButton;Button5Click(Sender:
TObject);Button1Click(Sender: TObject);Button3Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm2;mainUnit,
mainDataModuleUnit, Unit6, Unit9;
{$R *.dfm}TForm2.Button5Click(Sender:
TObject);.Hide;.Show;;TForm2.Button1Click(Sender: TObject);KeyFields: string;:
variant;: TLocateOptions;not (CheckBox1.Checked or CheckBox2.Checked) then('Не заданы условия
поиска!',mtInformation,
[mbOK],0);;;CheckBox1.Checked and CheckBox2.Checked
then:='Kod_vklada;%_stavka';:=VarArrayOf([Edit1.Text,
Edit2.Text]);CheckBox1.Checked then:='Kod_vklada';:=Edit1.Text;;CheckBox2.Checked
then:='%_stavka';:=Edit2.Text;;;:=[loCaseInsensitive, loPartialKey];not
mainDataModule.Table4.Locate(KeyFields,KeyValues,Options) then;('Запись не найдена!',mtInformation,
[mbOK],0);;;;TForm2.Button3Click(Sender: TObject);.QuickRep1.Preview;;.Unit3;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls,
Grids, DBGrids, ExtCtrls, DBCtrls, ExcelXP, ComObj,, Series, TeeProcs, Chart,
DbChart;= class(TForm): TDBGrid;: TButton;: TButton;: TButton;: TLabel;:
TButton;: TButton;: TButton;Button4Click(Sender:
TObject);DBGrid1TitleClick(Column: TColumn);Button1Click(Sender:
TObject);Button2Click(Sender: TObject);Button3Click(Sender:
TObject);Button5Click(Sender: TObject);Button6Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm3;mainDataModuleUnit, Unit7,
mainUnit, Unit12;
{$R *.dfm}TForm3.Button4Click(Sender:
TObject);.Hide;.Show;;TForm3.DBGrid1TitleClick(Column:
TColumn);.table2.IndexFieldNames:=Column.FieldName;;TForm3.Button1Click(Sender:
TObject);.Table2.IndexFieldNames:='FIO';;TForm3.Button2Click(Sender:
TObject);.Table2.IndexFieldNames:='Stash';;TForm3.Button3Click(Sender:
TObject);.ShowModal;;TForm3.Button5Click(Sender:
TObject);.ShowModal;;TForm3.Button6Click(Sender: TObject);messageDlg('Удалить запись?',,
[mbYes,mbNo], 0)=mrYes then mainDataModule.Table2.Delete;;.Unit4;, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, TeeProcs,
TeEngine, Chart, DbChart, Series;= class(TForm): TDBChart;: TPieSeries;:
TBarSeries;FormCreate(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm4;mainDataModuleUnit;
{$R *.dfm}TForm4.FormCreate(Sender:
TObject);.Query4.Active:=true;;.Unit5;, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,, StdCtrls, Mask, DBCtrls, Buttons, ComCtrls;=
class(TForm): TLabel;: TLabel;: TLabel;: TLabel;: TBitBtn;: TBitBtn;: TEdit;:
TEdit;: TEdit;: TDateTimePicker;BitBtn1Click(Sender:
TObject);BitBtn2Click(Sender: TObject);FormCreate(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm5;mainDataModuleUnit,
mainUnit, Unit4, Sotrudniki;
{$R *.dfm}TForm5.BitBtn1Click(Sender:
TObject);DateTimePicker1.Date < Date then('Вы пытаетесь добавить задним числом!')
else(Edit1.Text = '01360179') or (Edit1.Text = '02369899') or
(Edit1.Text = '59207788') then('Недопустимый номер счета!')
elsemainDataModule.Table5
do;('N_cheta').AsString:=Edit1.Text;('Data').AsString:=DateToStr(DateTimePicker1.Date);('Prixod').AsString:=Edit2.Text;('Rasxod').AsString:=Edit3.Text;('Tab_N_sotr').AsString:='3';;;;.Query1.Active:=false;.Query1.Active:=true;.DBGrid1.Refresh;.Close;;;;TForm5.BitBtn2Click(Sender:
TObject);.Close;;TForm5.FormCreate(Sender: TObject);.Date:=Date;;.Unit6;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls,
Grids, DBGrids, DB, DBTables, shellapi, ComObj;= class(TForm): TTable;:
TDataSource;: TDBGrid;: TButton;: TButton;: TButton;: TButton;:
TButton;Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender:
TObject);Button4Click(Sender: TObject);Button5Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm6;Unit11, mainUnit;
{$R *.dfm}TForm6.Button1Click(Sender:
TObject);.Insert;.ShowModal;;TForm6.Button2Click(Sender:
TObject);.ShowModal;;TForm6.Button3Click(Sender: TObject);messageDlg('Удалить
запись?',, [mbYes,mbNo], 0)=mrYes then
Table1.Delete;;TForm6.Button4Click(Sender:
TObject);.Hide;.show;;TForm6.Button5Click(Sender: TObject);: string;, Document,
ADocument: OleVariant;: Integer;: string;: OleVariant;CompareBm(ABmName:
string; const AName: string): Boolean;: Integer;:= Pos('__', ABmName);i > 0
then(ABmName, i, Length(ABmName) - i + 1);:= SameText(ABmName, AName);;:=
ExtractFilePath(Application.ExeName) + 'dogovor.dot';
// Если нет то запускаем:=
CreateOleObject('Word.Application');E: Exception do('Не удалось запустить Word!'#13#10 + E.Message);
Exit;;;.Cursor := crHourGlass;
// Создание нового документа на основе шаблона
Document := WordApp.Documents.Add(Template :=
TempleateFileName, NewTemplate := False);:=Document;
// Заменяем закладки на данные
for i := ADocument.Bookmarks.Count downto 1 do:=
ADocument.Bookmarks.Item(i).Name;:=
ADocument.Bookmarks.Item(i).Range;CompareBm(BookmarkName, 'klientnum')
then.Text := Table1.FieldByName('N_dogovora').AsStringCompareBm(BookmarkName,
'klientname1') then.Text :=
Table1.FieldByName('FIO').AsString;CompareBm(BookmarkName, 'klientname')
then.Text := Table1.FieldByName('FIO').AsStringCompareBm(BookmarkName, 'passn')
then.Text := Table1.FieldByName('Pasport').AsString;CompareBm(BookmarkName,
'bdate') then.Text :=
Table1.FieldByName('DTR').AsString;CompareBm(BookmarkName, 'number') then.Text
:= Table1.FieldByName('telefon').AsString;;
end;
// По умолчание окно Word
скрыто, делаем его видимым с готовым отчетом
WordApp.Visible := True;
finally
// Необходимо для удаления экземпляра Word.
WordApp := Unassigned;.Cursor := crDefault;;;.Unit7;,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Series,
TeEngine, ExtCtrls, TeeProcs, Chart, DbChart, BubbleCh;= class(TForm):
TDBChart;: TPieSeries;: TBarSeries;: TBubbleSeries;FormCreate(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm7;mainDataModuleUnit;
{$R *.dfm}TForm7.FormCreate(Sender:
TObject);.Query3.Active:=true;;.Unit9;, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,, QRCtrls, QuickRpt, ExtCtrls;= class(TForm):
TQuickRep;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRBand;: TQRSysData;:
TQRLabel;: TQRLabel;: TQRLabel;: TQRLabel;: TQRSysData;: TQRDBText;:
TQRDBText;: TQRDBText;
{ Private declarations }
{ Public declarations };: TForm8;mainDataModuleUnit;
{$R *.dfm}.Unit11;, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,, StdCtrls, Mask, DBCtrls, Buttons;= class(TForm):
TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TDBEdit;:
TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TBitBtn;: TBitBtn;
{ Private declarations }
{ Public declarations };: TForm11;
{$R *.dfm}.Unit12;, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,, StdCtrls, Buttons, Mask, DBCtrls;= class(TForm):
TLabel;: TLabel;: TLabel;: TBitBtn;: TBitBtn;: TLabel;: TLabel;: TLabel;:
TEdit;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;BitBtn1Click(Sender: TObject);
//procedure DBEdit1Change(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm12;Unit3, mainDataModuleUnit;
{$R *.dfm}TForm12.BitBtn1Click(Sender:
TObject);.Table2.Insert;.Table2.FieldByName('Tab_nomer').AsString:=Edit1.Text;.Table2.FieldByName('FIO').AsString:=Edit2.Text;.Table2.FieldByName('DTR').AsString:=Edit3.Text;.Table2.FieldByName('Dolshnost').AsString:=Edit4.Text;.Table2.FieldByName('Stash').AsString:=Edit5.Text;.Table2.FieldByName('Telefon').AsString:=Edit6.Text;.Table2.Post;;.AboutBoxUnit;Windows,
SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,, ExtCtrls, jpeg;=
class(TForm): TPanel;: TImage;: TLabel;: TLabel;: TLabel;: TLabel;:
TButton;OKButtonClick(Sender: TObject);
{ Private declarations }
{ Public declarations };: TAboutBox;
{$R *.dfm}TAboutBox.OKButtonClick(Sender: TObject);.Close;;. mainDataModuleUnit;
продолжение приложения А
interface
uses, ShellAPI, Classes, Menus, DB, DBTables, Messages,
Windows, Forms, ComObj, Dialogs;= class(TDataModule): TMainMenu;: TMenuItem;:
TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TDataSource;:
TMenuItem;: TDataSource;: TTable;: TTable;: TDataSource;: TTable;:
TDataSource;: TTable;: TMenuItem;N_cheta: TStringField;Data: TDateField;Prixod:
TCurrencyField;Rasxod: TCurrencyField;: TQuery;: TDataSource;: TQuery;:
TDataSource;N_cheta: TStringField;FIO: TStringField;DTR: TDateField;Telefon:
TStringField;Pasport: TStringField;N_dogovora: TStringField;Kod_vklada:
TStringField;Tab_nomer: TStringField;FIO: TStringField;DTR:
TDateField;Dolshnost: TStringField;Stash: TStringField;Telefon: TStringField;:
TMenuItem;: TDataSource;: TQuery;: TMenuItem;: TDataSource;: TTable;:
TMenuItem;: TDataSource;: TQuery;: TQuery;Kod_vklada: TStringField;Naim_vklada:
TStringField;_stavka: TStringField;Status_cheta: TStringField;N:
TAutoIncField;N_cheta: TStringField;Data: TDateField;Prixod:
TCurrencyField;Rasxod: TCurrencyField;Tab_N_sotr: TStringField;N8Click(Sender:
TObject);N11Click(Sender: TObject);N12Click(Sender: TObject);N9Click(Sender:
TObject);N5Click(Sender: TObject);N6Click(Sender: TObject);N13Click(Sender:
TObject);N14Click(Sender: TObject);N3Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TmainDataModule;AboutBoxUnit,
mainUnit, Unit3, Unit9, Unit10, Unit7, Unit4;
{$R *.dfm}TmainDataModule.N8Click(Sender:
TObject);.Show;;TmainDataModule.N11Click(Sender:
TObject);.Terminate;;TmainDataModule.N12Click(Sender:
TObject);.QuickRep1.Preview;;TmainDataModule.N9Click(Sender:
TObject);S:string;:integer;MessageDlg('Произвести резервное
копирование?',mtCustom, mbOKCancel, 0) = 1
then:=ExtractFilePath(Application.ExeName);(pansichar('xcopy /Y '+S+'DB
'+S+'backup\'),SW_HIDE);('Копирование
закончено');;;TmainDataModule.N5Click(Sender: TObject);(Application.Handle,
'open', 'help\spravka.chm',nil, nil, SW_SHOW);;TmainDataModule.N6Click(Sender:
TObject);(Application.Handle, 'open', 'help\sber.chm',nil, nil,
SW_SHOW);;TmainDataModule.N13Click(Sender:
TObject);.Show;;TmainDataModule.N14Click(Sender: TObject);S:string;:integer;MessageDlg('Произвести
восстановление данных?',mtCustom, mbOKCancel, 0) = 1
then:=ExtractFilePath(Application.ExeName);(pansichar('xcopy /Y '+S+'backup
'+S+'DB\'),SW_HIDE);('Данные восстановлены');;;TmainDataModule.N3Click(Sender:
TObject);.Show;;.