Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
СОДЕРЖАНИЕ
лист |
|
Введение |
4 |
1 Постановка задачи |
6 |
1.1 Описание предметной области |
6 |
1.2 Функциональная модель предметной области |
9 |
1.3 Схема данных |
11 |
1.4 Описание входной информации |
12 |
1.5 Описание структуры базы данных |
13 |
1.6 Описание выходной информации |
15 |
1.7 Контрольный пример |
16 |
1.8 Общие требования к программному продукту |
17 |
2 Экспериментальный раздел |
18 |
2.1 Обоснование выбора языка программирования |
18 |
2.2 Описание программы |
21 |
2.3 Протокол тестирования программного продукта |
24 |
2.4 Руководство пользователя |
25 |
3 Экономический раздел |
35 |
3.1 Расчёт затрат на создание программного продукта |
35 |
3.2 Расчет цены предложения и минимального количества копий тиражирования |
39 |
Заключение |
41 |
Приложение А. Исходный текст программы |
42 |
Приложение Б. Выходной документ «Договор» |
61 |
Список сокращений |
98 |
Список литературы |
99 |
ВВЕДЕНИЕ
Современный мир информационных технологий трудно представить себе без использования баз данных. Практически все системы в той или иной степени связаны с функциями долговременного хранения и обработки информации. Фактически информация становится фактором, определяющим эффективность любой сферы деятельности. Увеличились информационные потоки и повысились требования к скорости обработки данных, и теперь уже большинство операций не может быть выполнено вручную, они требуют применения наиболее перспективных компьютерных технологий.
Базы данных создаются обычно не для решения какой-либо одной задачи для одного пользователя, а для многоцелевого использования. Базы данных отражают определенную часть реального мира. Эта информация должна по возможности фиксироваться в базе данных однократно, и все пользователи, которым эта информация нужна, должны иметь возможность работать с ней. Отсутствие централизованных методов управления доступом к информации послужило причиной разработки систем управления базой данных, а сами хранилища информации, которые работали под управлением данных систем, назывались базами или банками данных.
Автоматизированные информационные системы ─ это совокупность информации экономико-математических методов и моделей технических, программных, технологических средств и специалистов, предназначенных для автоматизации деятельности, связанной с хранением, передачей и обработкой информации. Классическими примерами автоматизированных информационных систем являются банковские системы, автоматизированные системы управления предприятиями, системы резервирования авиационных или железнодорожных билетов и т. д.
Целью данного дипломного проекта является разработка автоматизированной системы учета вкладов в банке.
Автоматизация позволит работникам избавиться от многих рутинных процессов, что обеспечит наиболее быстрое, полное и качественное обслуживание клиентов.
Требуется разработать информационную систему для ведения учета вкладов в банке. Система должна предусматривать проверки данных клиентов, учет вкладов.
В информационной системе необходимо хранить большое количество информации, вследствие чего разработка программного продукта начинается с создания базы данных, в которой хранится информация о клиентах.
Перечень задач для реализации:
Необходимо разработать базу данных, которая отвечает следующим показателям:
Перечень документов, необходимых для открытия счета в банке физическому лицу резиденту, не являющемуся предпринимателем:
Перечень документов, необходимых для открытия счета в Банке физическому лицу нерезиденту:
Иностранные документы принимаются только с подлинными отметками о консульской легализации либо заверении апостилем (для стран участниц Гаагской Конвенции 1961 г.), если освобождение от этих процедур не предусмотрено международными соглашениями РФ, вместе с удостоверенным нотариально либо в консульском загранучреждении переводом на русский язык. |
Функциональная модель это модель инфологического уровня представления, в которой акцентируется функциональный аспект моделирования предметной области.
Функциональная модель в виде иерархии функций способствует пониманию поведения субъекта моделирования.
В соответствии с методологией структурного анализа в первую очередь строится контекстная диаграмма самое общее описание главной функции системы в целом и ее взаимодействия с внешней средой. Контекстная диаграмма представлена на рисунке 1.2.1.
Рисунок 1.2.1 - Контекстная диаграмма «Автоматизация учета вкладов
в банке»
Последующая, функциональная декомпозиция сопровождается построением диаграмм декомпозиции, которые описывают каждый фрагмент декомпозиции и их взаимодействие. Детализация функциональной модели продолжается до достижения необходимой степени подробности. После каждого шага декомпозиции выполняется сеанс экспертизы с участием экспертов предметной области. Диаграмма декомпозиции представлена на рисунке 1.2.2.
Рисунок 1.2.2 Диаграмма декомпозиции «Автоматизация учета вкладов
в банке»
Схема данных отображает путь данных при решении задачи и определяет этапы обработки, информационные потоки и применяемые носители данных. Схема данных представлена на рисунке 1.3.1.
Рисунок 1.3.1 - Схема данных
1.4 Описание входной информации
Входным документом для задачи «Автоматизация учета вкладов в банке» является заявление,паспорт от клиента. Описание входного документа показано в таблице 1.4.1.
Таблица .4.1 Описание входных документов
Наименование документа (шифр) |
Дата поступления документа |
Откуда поступает документ |
Заявление |
При регистрационных действиях |
Клиент |
Паспорт |
При регистрационных действиях |
Клиент |
1.5 Описание структуры базы данных
Описание структуры базы данных показано в таблице 1.5.1.
Таблица 1.5.1 - Описание структуры базы данных
Назначение (содержимое) таблицы |
Физическое имя таблицы |
Наименование полей |
Шифр поля |
Формат поля |
Размер поля |
1 |
2 |
3 |
4 |
5 |
6 |
Данные о клиенте |
Klientu.db |
Номер счета |
N_cheta * |
Строка |
15 |
Ф.И.О |
FIO |
Строка |
40 |
||
Дата рождения |
DTR |
Дата |
8 |
||
Телефон |
Telefon |
Строка |
11 |
||
Паспорт |
Pasport |
Строка |
11 |
||
Номер договора |
N_dogovora |
Строка |
2 |
||
Код вклада |
Kod_vklada |
Строка |
4 |
||
Данные о сотруднике |
Sotrudniki.db |
Табельный номер |
Tab_nomer * |
Строка |
2 |
Ф.И.О |
FIO |
Строка |
30 |
||
Дата рождения |
DTR |
Дата |
8 |
||
Должность |
Dolshnost |
Строка |
10 |
||
Стаж |
Stash |
Строка |
2 |
||
Телефон |
Telefon |
Строка |
20 |
продолжение таблицы 1.5.1
1 |
2 |
3 |
4 |
5 |
6 |
Данные о видах вклада |
Vidu_vkladu.db |
Код вклада |
Kod_vklada * |
Строка |
4 |
Наименование вклада |
Naim_vklada |
Строка |
30 |
||
% ставка |
%_stavka |
Строка |
6 |
||
Статус счета |
Status_cheta |
Строка |
16 |
||
Данные о вкладах |
Vkladu.db |
Номер |
N * |
Счетчик |
6 |
Номер счета |
N_cheta |
Строка |
15 |
||
Дата |
Data |
Дата |
8 |
||
Приход |
Prixod |
Денежный |
ххх ххх |
||
Расход |
Rasxod |
Денежный |
ххх ххх |
||
Табельный номер сотрудника |
Tab_N_sotr |
Строка |
2 |
Примечание
* - ключевое поле
1.6 Описание выходной информации
Выходными документами являются:
Описание выходных документов показано в таблице 1.6.1
Таблица 1.6.1 Описание выходных документов
Наименование документа (шифр) |
Периодичность выдачи документа |
Кол-во экз. |
Куда передаются |
Отчет «Виды вкладов» |
Ежегодно |
1 |
Банк |
Договор |
При регистрационных действиях |
1 |
Клиент |
Выходные документы и отчеты получаются на основании входных данных.
Выходной документ «Договор» приведен в приложении Б.
1.7 Контрольный пример
Контрольный пример является ручным вариантом просчета решения задачи и служит для проверки правильности решения задач на ЭВМ.
Формы «Добавление нового клиента» и «Список клиентов» показаны на рисунках 1.7.1 1.7.2
Рисунок 1.7.1 - Форма «Добавление нового клиента»
Рисунок 1.7.2 - Форма «Список клиентов»
1.8 Общие требования к программному продукту
Программный продукт должен обладать высокой степенью надежности. Во всем программном продукте должно использоваться ограничение ввода данных в поля таблиц. Перед занесением новых данных должна производиться проверка введенной информации на соответствие. Программный продукт должен обладать высоким быстродействием, производит все действия за короткий промежуток времени.
Создаваемый программный продукт позволяет:
Для корректной работы программы компьютер должен соответствовать следующим минимальным требованиям:
Также на компьютере необходимо наличие таких программных продуктов как:
2. Экспериментальный раздел
2.1 Обоснование выбора языка программирования
Среди большого разнообразия продуктов для разработки приложений Delphi занимает одно из ведущих мест. Delphi отдают предпочтение разработчики с разным стажем, привычками, профессиональными интересами. С помощью Delphi написано колоссальное количество приложений, десятки фирм и тысячи программистов-одиночек разрабатывают для Delphi дополнительные компоненты.
В основе такой общепризнанной популярности лежит тот факт, что Delphi, как никакая другая система программирования, удовлетворяет изложенным выше требованиям. Действительно, приложения с помощью Delphi разрабатываются быстро, причем взаимодействие разработчика с интерактивной средой Delphi не вызывает внутреннего отторжения, а наоборот, оставляет ощущение комфорта. Delphi-приложения эффективны, если разработчик соблюдает определенные правила (и часто если не соблюдает). Эти приложения надежны и при эксплуатации обладают предсказуемым поведением.
Интегрированная среда разработки Delphi с ее инструментами визуального редактирования, библиотекой компонент, механизмом баз данных и многим другим, идеально подходит для написания приложений Windows, используя свой диалект языка Object Pascal Delphi Pascal, который является объектно-ориентированным.
В состав Delphi входят компоненты, позволяющие создавать программы работы с файлами данных, созданными различными системами: от dBASE до Infomix и Oracle. Delphi также позволяет программисту, используя утилиту Borland Database Desktop, создавать файлы баз данных в различных форматах.
В зависимости от расположения программы, использующей данные, и самих данных, а также способа разделения данных между несколькими пользователями различают локальные и удаленные базы данных.
Paradox это локальная база данных. Данные локальной базы данных находятся на одном устройстве, в качестве которого может выступать диск компьютера или сетевой диск. Для обеспечения доступа к данным между несколькими пользователями, в качестве которых выступают программы, работающие на одном или нескольких компьютерах, в локальных базах данных применяется метод, получивший название блокировка файлов. Суть этого метода заключается в том, что пока данные используются одним пользователем, другой пользователь не может работать с этими данными, т.е. данные для него закрыты, заблокированы.
Пакет Delphi продолжение линии компиляторов языка Pascal корпорации Borland. Pascal как язык очень прост, а строгий контроль типов данных способствует раннему обнаружению ошибок и позволяет быстро создавать надежные и эффективные программы.
Обоснованием выбора служат следующие факторы:
Таким образом, среда программирования Delphi является оптимальным выбором для решения поставленной задачи, так как:
2.2 Описание программы
Программа «Автоматизация учета вкладов в банке» имеет модульную структуру и состоит из 14 модулей. Код программы приведен в приложении А. Список модулей, и их связь представлены в модульной схеме (рисунок 2.2.1).
Рисунок 2.2.1 - Модульная схема
Описание процедур:
mainDataModuleUnit (Открытие модуля данных):
mainUnit (Главное меню):
Unit1 (Счета):
Unit2 (Виды вкладов):
Unit3 (Сотрудники):
Unit5 (Вклады):
Unit6 (Список клиентов):
2.3 Протокол тестирования программного продукта
Тестирование программного продукта на некорректных данных:
Данный программный продукт удовлетворяет всем функциональным требованиям, имеет дружественный интерфейс, исключает появлении системных ошибок.
При тестировании программного продукта на данных контрольного примера модификация данных, сортировка, поиск, подсчет статистики, экспорт в Excel, вывод отчетов происходит корректно. Результаты тестирования полностью совпадают с ожидаемыми результатами.
2.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)
где См.ч. - себестоимость машинного часа;
Fп - годовой полезный фонд времени работы единицы оборудования;
Кг=0,95 - коэффициент готовности;
Зi годовые затраты, связанные с эксплуатацией и обслуживанием ВиОТ.
, (3.2)
где FН =1944 номинальный годовой фонд рабочего времени в часах в 2014 году;
р=(0,05…0,2) коэффициент, учитывающий время, затраченное на ремонт, настройку, обслуживание ВиОТ.
Fп=1944*(1-0,05)=1846 (ч.).
Для расчета годовых затрат, необходимо определить балансовую стоимость условного комплекта СБАЛ:
Таблица 3. - Состав условного комплекта.
№ |
Наименование |
Кол-во шт. (к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. - Состав ЕСН.
№ |
Статья |
% |
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), составляет:
(руб.).
3.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 коэффициент использования оборудования.
N = 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 и отлажена на данных контрольного примера.
В процессе разработки дипломного проекта были приобретены навыки в области построения баз данных, а также их программной защиты. Кроме того, был разработан дружественный интерфейс.
Были написаны руководство пользователя. Приложение было выполнено на данных контрольного примера.
Приложение А
unit PasswordDlgUnit;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, jpeg, ExtCtrls;
type
TPasswordDlg = class(TForm)
OKBtn: TButton;
Image1: TImage;
Edit1: TEdit;
Button1: TButton;
procedure OKBtnClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
PasswordDlg: TPasswordDlg;
implementation
uses mainUnit;
{$R *.dfm}
procedure TPasswordDlg.OKBtnClick(Sender: TObject);
begin
if edit1.Text='123' then
begin
mainForm.Show;
passwordDlg.Hide;
end
else
Application.MessageBox('Неверный пароль','Неверный пароль');
end;
procedure TPasswordDlg.Button1Click(Sender: TObject);
begin
Application.Terminate;
end;
end.
unit mainUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Buttons, jpeg, ExtCtrls;
продолжение приложения А
type
TmainForm = class(TForm)
Image1: TImage;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
mainForm: TmainForm;
implementation
uses Sotrudniki, Unit2, Unit3, Unit4, Unit9, Unit10;
{$R *.dfm}
procedure TmainForm.SpeedButton2Click(Sender: TObject);
begin
mainForm.Hide;
Form1.Show;
end;
procedure TmainForm.SpeedButton3Click(Sender: TObject);
begin
mainForm.Hide;
Form2.Show;
end;
procedure TmainForm.SpeedButton1Click(Sender: TObject);
begin
mainForm.Hide;
Form3.Show;
end;
procedure TmainForm.SpeedButton4Click(Sender: TObject);
begin
mainForm.Hide;
Form4.Show;
end;
procedure TmainForm.FormCreate(Sender: TObject);
begin
HelpFile := ExtractFilePath(Application.ExeName) + 'help\sber.chm';
end;
end.
продолжение приложения А
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, ShellAPI, ComObj;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Button6: TButton;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
ComboBox1: TComboBox;
Button3: TButton;
Button4: TButton;
Label3: TLabel;
Button5: TButton;
Button7: TButton;
Label4: TLabel;
Label5: TLabel;
Button8: TButton;
procedure Button6Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses mainDataModuleUnit, mainUnit, Unit5, Unit4, Unit11, Unit6;
{$R *.dfm}
procedure TForm1.Button6Click(Sender: TObject);
begin
Form1.Hide;
mainForm.Show;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
продолжение приложения А
mainDataModule.Query1.SQL.Clear;
mainDataModule.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');
mainDataModule.Query1.Open;
label5.Caption:=mainDataModule.Query1.Fields[0].AsString + ' руб.';
mainDataModule.Query1.SQL.Clear;
mainDataModule.Query1.SQL.Add('SELECT * FROM Vkladu');
mainDataModule.Query1.SQL.Add('WHERE N_cheta = '''+form1.ComboBox1.Text + '''');
mainDataModule.Query1.Open;
Self.DBGrid1.DataSource:= mainDataModule.DataSource5;
Form5.Edit1.Text:=mainDataModule.Query1.Fields[1].AsString;
label3.Visible:=true;
button5.Visible:=true;
button7.Visible:=true;
label5.Visible:=true;
label4.Visible:=true;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Form6.Show;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
mainDataModule.Query2.Active:=False;
mainDataModule.Query2.SQL.Clear;
mainDataModule.Query2.SQL.Add('SELECT * FROM Klientu');
mainDataModule.Query2.SQL.Add('WHERE N_cheta = '''+ComboBox1.Text + '''');
mainDataModule.Query2.Open;
Self.DBGrid1.DataSource:= mainDataModule.DataSource6;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ComboBox1.Items.Clear;
while not mainDataModule.Query2.Eof do
begin
ComboBox1.Items.Add(mainDataModule.Query2.Fields.FieldByName('N_cheta').AsString);
mainDataModule.Query2.Next;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
label3.Visible:=false;
button5.Visible:=false;
button7.Visible:=false;
label5.Visible:=false;
label4.Visible:=false;
end;
продолжение приложения А
procedure TForm1.Button5Click(Sender: TObject);
begin
Form5.Show;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
if messageDlg('Удалить запись?',
mtConfirmation, [mbYes,mbNo], 0)=mrYes then mainDataModule.Table5.Delete;
end;
procedure TForm1.Button8Click(Sender: TObject);
var i,j,index:byte;
ExcelApp, sheet:Variant;
begin
ExcelApp:=createOleObject('Excel.Application');
ExcelApp.Visible:=True;
ExcelApp.WorkBooks.Add(-4167);
ExcelApp.WorkBooks[1].WorkSheets[1].Name:='счета';
sheet:=ExcelApp.WorkBooks[1].WorkSheets['счета'];
index:=2;
form1.dbgrid1.DataSource.DataSet.First;
for i:=1 to form1.dbgrid1.DataSource.DataSet.RecordCount do begin
for j:=1 to form1.dbgrid1.FieldCount do
sheet.cells[index, j]:=form1.dbgrid1.Fields[j-1].AsString;
Inc(index);
form1.dbgrid1.DataSource.DataSet.Next;
end;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, DB, DBTables,
RpRave, RpDefine, RpCon, RpConDS;
type
TForm2 = class(TForm)
DBGrid1: TDBGrid;
Button5: TButton;
RadioGroup1: TRadioGroup;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
продолжение приложения А
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses mainUnit, mainDataModuleUnit, Unit6, Unit9;
{$R *.dfm}
procedure TForm2.Button5Click(Sender: TObject);
begin
Form2.Hide;
mainForm.Show;
end;
procedure TForm2.Button1Click(Sender: TObject);
var KeyFields: string;
KeyValues: variant;
Options: TLocateOptions;
begin
if not (CheckBox1.Checked or CheckBox2.Checked) then
begin
MessageDlg('Не заданы условия поиска!',mtInformation, [mbOK],0);
exit;
end;
if CheckBox1.Checked and CheckBox2.Checked then
begin
KeyFields:='Kod_vklada;%_stavka';
KeyValues:=VarArrayOf([Edit1.Text, Edit2.Text]);
end
else
begin
if CheckBox1.Checked then
begin
KeyFields:='Kod_vklada';
KeyValues:=Edit1.Text;
end;
if CheckBox2.Checked then
begin
KeyFields:='%_stavka';
KeyValues:=Edit2.Text;
end;
end;
Options:=[loCaseInsensitive, loPartialKey];
if not mainDataModule.Table4.Locate(KeyFields,KeyValues,Options) then
begin
Beep;
MessageDlg('Запись не найдена!',mtInformation, [mbOK],0);
exit;
end;
end;
procedure TForm2.Button3Click(Sender: TObject);
продолжение приложения А
begin
Form8.QuickRep1.Preview;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, ExcelXP, ComObj,
TeEngine, Series, TeeProcs, Chart, DbChart;
type
TForm3 = class(TForm)
DBGrid1: TDBGrid;
Button4: TButton;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Button3: TButton;
Button5: TButton;
Button6: TButton;
procedure Button4Click(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses mainDataModuleUnit, Unit7, mainUnit, Unit12;
{$R *.dfm}
procedure TForm3.Button4Click(Sender: TObject);
begin
Form3.Hide;
mainForm.Show;
end;
procedure TForm3.DBGrid1TitleClick(Column: TColumn);
begin
mainDataModule.table2.IndexFieldNames:=Column.FieldName;
продолжение приложения А
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
mainDataModule.Table2.IndexFieldNames:='FIO';
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
mainDataModule.Table2.IndexFieldNames:='Stash';
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
Form12.ShowModal;
end;
procedure TForm3.Button5Click(Sender: TObject);
begin
Form12.ShowModal;
end;
procedure TForm3.Button6Click(Sender: TObject);
begin
if messageDlg('Удалить запись?',
mtConfirmation, [mbYes,mbNo], 0)=mrYes then mainDataModule.Table2.Delete;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, DbChart, Series;
type
TForm4 = class(TForm)
DBChart1: TDBChart;
Series2: TPieSeries;
Series1: TBarSeries;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
продолжение приложения А
uses mainDataModuleUnit;
{$R *.dfm}
procedure TForm4.FormCreate(Sender: TObject);
begin
mainDataModule.Query4.Active:=true;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, Buttons, ComCtrls;
type
TForm5 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
DateTimePicker1: TDateTimePicker;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses mainDataModuleUnit, mainUnit, Unit4, Sotrudniki;
{$R *.dfm}
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
if DateTimePicker1.Date < Date then
ShowMessage('Вы пытаетесь добавить задним числом!')
else
begin
if (Edit1.Text = '01360179') or (Edit1.Text = '02369899') or (Edit1.Text = '59207788') then
ShowMessage('Недопустимый номер счета!')
else
продолжение приложения А
begin
with mainDataModule.Table5 do
begin
Insert;
FieldByName('N_cheta').AsString:=Edit1.Text;
FieldByName('Data').AsString:=DateToStr(DateTimePicker1.Date);
FieldByName('Prixod').AsString:=Edit2.Text;
FieldByName('Rasxod').AsString:=Edit3.Text;
FieldByName('Tab_N_sotr').AsString:='3';
Post;
Refresh;
end;
mainDataModule.Query1.Active:=false;
mainDataModule.Query1.Active:=true;
Form1.DBGrid1.Refresh;
Self.Close;
end;
end;
end;
procedure TForm5.BitBtn2Click(Sender: TObject);
begin
Self.Close;
end;
procedure TForm5.FormCreate(Sender: TObject);
begin
DateTimePicker1.Date:=Date;
end;
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables, shellapi, ComObj;
type
TForm6 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
продолжение приложения А
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Unit11, mainUnit;
{$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject);
begin
Table1.Insert;
Form11.ShowModal;
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
Form11.ShowModal;
end;
procedure TForm6.Button3Click(Sender: TObject);
begin
if messageDlg('Удалить запись?',
mtConfirmation, [mbYes,mbNo], 0)=mrYes then Table1.Delete;
end;
procedure TForm6.Button4Click(Sender: TObject);
begin
Form6.Hide;
mainForm.show;
end;
procedure TForm6.Button5Click(Sender: TObject);
var
TempleateFileName: string;
WordApp, Document, ADocument: OleVariant;
i: Integer;
BookmarkName: string;
Range: OleVariant;
function CompareBm(ABmName: string; const AName: string): Boolean;
var
i: Integer;
begin
i := Pos('__', ABmName);
if i > 0 then
Delete(ABmName, i, Length(ABmName) - i + 1);
Result := SameText(ABmName, AName);
end;
begin
TempleateFileName := ExtractFilePath(Application.ExeName) + 'dogovor.dot';
продолжение приложения А
try
// Если нет то запускаем
WordApp := CreateOleObject('Word.Application');
except
on E: Exception do
begin
ShowMessage('Не удалось запустить Word!'#13#10 + E.Message);
Exit;
end;
end;
try
Screen.Cursor := crHourGlass;
// Создание нового документа на основе шаблона
Document := WordApp.Documents.Add(Template := TempleateFileName, NewTemplate := False);
ADocument:=Document;
// Заменяем закладки на данные
for i := ADocument.Bookmarks.Count downto 1 do
begin
BookmarkName := ADocument.Bookmarks.Item(i).Name;
Range := ADocument.Bookmarks.Item(i).Range;
if CompareBm(BookmarkName, 'klientnum') then
Range.Text := Table1.FieldByName('N_dogovora').AsString
else
if CompareBm(BookmarkName, 'klientname1') then
begin
Range.Text := Table1.FieldByName('FIO').AsString;
end
else
if CompareBm(BookmarkName, 'klientname') then
Range.Text := Table1.FieldByName('FIO').AsString
else
if CompareBm(BookmarkName, 'passn') then
begin
Range.Text := Table1.FieldByName('Pasport').AsString;
end
else
if CompareBm(BookmarkName, 'bdate') then
begin
Range.Text := Table1.FieldByName('DTR').AsString;
end
else
if CompareBm(BookmarkName, 'number') then
begin
Range.Text := Table1.FieldByName('telefon').AsString;
end;
end;
// По умолчание окно Word скрыто, делаем его видимым с готовым отчетом
WordApp.Visible := True;
finally
// Необходимо для удаления экземпляра Word.
WordApp := Unassigned;
продолжение приложения А
Screen.Cursor := crDefault;
end;
end;
end.
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Series, TeEngine, ExtCtrls, TeeProcs, Chart, DbChart, BubbleCh;
type
TForm7 = class(TForm)
DBChart1: TDBChart;
Series1: TPieSeries;
Series2: TBarSeries;
Series3: TBubbleSeries;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
uses mainDataModuleUnit;
{$R *.dfm}
procedure TForm7.FormCreate(Sender: TObject);
begin
mainDataModule.Query3.Active:=true;
end;
end.
unit Unit9;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QRCtrls, QuickRpt, ExtCtrls;
type
TForm8 = class(TForm)
QuickRep1: TQuickRep;
продолжение приложения А
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
PageFooterBand1: TQRBand;
PageHeaderBand1: TQRBand;
TitleBand1: TQRBand;
QRSysData1: TQRSysData;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRSysData3: TQRSysData;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRDBText3: TQRDBText;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
implementation
uses mainDataModuleUnit;
{$R *.dfm}
end.
unit Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, Buttons;
type
TForm11 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
BitBtn1: TBitBtn;
продолжение приложения А
BitBtn2: TBitBtn;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form11: TForm11;
implementation
{$R *.dfm}
end.
unit Unit12;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Mask, DBCtrls;
type
TForm12 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
procedure BitBtn1Click(Sender: TObject);
//procedure DBEdit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form12: TForm12;
implementation
uses Unit3, mainDataModuleUnit;
продолжение приложения А
{$R *.dfm}
procedure TForm12.BitBtn1Click(Sender: TObject);
begin
mainDataModule.Table2.Insert;
mainDataModule.Table2.FieldByName('Tab_nomer').AsString:=Edit1.Text;
mainDataModule.Table2.FieldByName('FIO').AsString:=Edit2.Text;
mainDataModule.Table2.FieldByName('DTR').AsString:=Edit3.Text;
mainDataModule.Table2.FieldByName('Dolshnost').AsString:=Edit4.Text;
mainDataModule.Table2.FieldByName('Stash').AsString:=Edit5.Text;
mainDataModule.Table2.FieldByName('Telefon').AsString:=Edit6.Text;
mainDataModule.Table2.Post;
end;
end.
unit AboutBoxUnit;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, jpeg;
type
TAboutBox = class(TForm)
Panel: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
Comments: TLabel;
OKButton: TButton;
procedure OKButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AboutBox: TAboutBox;
implementation
{$R *.dfm}
procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
AboutBox.Close;
end;
end.
unit mainDataModuleUnit;
продолжение приложения А
interface
uses
SysUtils, ShellAPI, Classes, Menus, DB, DBTables, Messages, Windows, Forms, ComObj, Dialogs;
type
TmainDataModule = class(TDataModule)
globalMenu: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
DataSource1: TDataSource;
N7: TMenuItem;
DataSource2: TDataSource;
Table1: TTable;
Table2: TTable;
DataSource3: TDataSource;
Table3: TTable;
DataSource4: TDataSource;
Table4: TTable;
N11: TMenuItem;
Table3N_cheta: TStringField;
Table3Data: TDateField;
Table3Prixod: TCurrencyField;
Table3Rasxod: TCurrencyField;
Query1: TQuery;
DataSource5: TDataSource;
Query2: TQuery;
DataSource6: TDataSource;
Table1N_cheta: TStringField;
Table1FIO: TStringField;
Table1DTR: TDateField;
Table1Telefon: TStringField;
Table1Pasport: TStringField;
Table1N_dogovora: TStringField;
Table1Kod_vklada: TStringField;
Table2Tab_nomer: TStringField;
Table2FIO: TStringField;
Table2DTR: TDateField;
Table2Dolshnost: TStringField;
Table2Stash: TStringField;
Table2Telefon: TStringField;
N13: TMenuItem;
DataSource7: TDataSource;
Query3: TQuery;
N14: TMenuItem;
DataSource8: TDataSource;
Table5: TTable;
N3: TMenuItem;
DataSource9: TDataSource;
Query4: TQuery;
Query5: TQuery;
Table4Kod_vklada: TStringField;
продолжение приложения А
Table4Naim_vklada: TStringField;
Table4_stavka: TStringField;
Table4Status_cheta: TStringField;
Table5N: TAutoIncField;
Table5N_cheta: TStringField;
Table5Data: TDateField;
Table5Prixod: TCurrencyField;
Table5Rasxod: TCurrencyField;
Table5Tab_N_sotr: TStringField;
procedure N8Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
mainDataModule: TmainDataModule;
implementation
uses AboutBoxUnit, mainUnit, Unit3, Unit9, Unit10, Unit7, Unit4;
{$R *.dfm}
procedure TmainDataModule.N8Click(Sender: TObject);
begin
AboutBox.Show;
end;
procedure TmainDataModule.N11Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TmainDataModule.N12Click(Sender: TObject);
begin
Form10.QuickRep1.Preview;
end;
procedure TmainDataModule.N9Click(Sender: TObject);
var S:string;
i:integer;
begin
if MessageDlg('Произвести резервное копирование?',mtCustom, mbOKCancel, 0) = 1 then
begin
S:=ExtractFilePath(Application.ExeName);
продолжение приложения А
WinExec(pansichar('xcopy /Y '+S+'DB '+S+'backup\'),SW_HIDE);
ShowMessage('Копирование закончено');
end;
end;
procedure TmainDataModule.N5Click(Sender: TObject);
begin
ShellExecute(Application.Handle, 'open', 'help\spravka.chm',nil, nil, SW_SHOW);
end;
procedure TmainDataModule.N6Click(Sender: TObject);
begin
ShellExecute(Application.Handle, 'open', 'help\sber.chm',nil, nil, SW_SHOW);
end;
procedure TmainDataModule.N13Click(Sender: TObject);
begin
Form7.Show;
end;
procedure TmainDataModule.N14Click(Sender: TObject);
var S:string;
i:integer;
begin
if MessageDlg('Произвести восстановление данных?',mtCustom, mbOKCancel, 0) = 1 then
begin
S:=ExtractFilePath(Application.ExeName);
WinExec(pansichar('xcopy /Y '+S+'backup '+S+'DB\'),SW_HIDE);
ShowMessage('Данные восстановлены');
end;
end;
procedure TmainDataModule.N3Click(Sender: TObject);
begin
Form4.Show;
end;
end.