Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработка информационной системы управления банковскими операциями

Содержание:

Введение.

Использование информационных технологий в производственной деятельности предприятий уже давно не является чем-то необычным. Скорее наоборот, их использование является необходимым условием для поддержания жизнеспособности любого предприятия, любого масштаба и сферы деятельности. Это обусловлено в первую очередь большой производительностью и широким функционалом современных информационных систем. Они позволяют не только хранить данные и формировать шаблонные документы, но и дают возможность составления различных прогнозов, помогают решать задачи планирования деятельности и управления как всем предприятием, так и отдельными его подразделениями. Однако, не смотря на бурное развитие информационных технологий и повсеместное их внедрение, всегда остаются небольшие участки производственного процесса, которые либо плохо автоматизированы, либо не автоматизированы вовсе. Такие слабо автоматизированные участки имеют более низкую производительность труда, что отрицательно сказывается на общей производительности труда на предприятии.

Цель курсового проекта – разработка информационной системы для автоматизации процессов ведения операций с драгоценными металлами в банке «ФК Дэвим».

Для достижения поставленной цели необходимо решить следующие задачи:

  • изучить текущую организацию бизнес-процесса ведения операций с драгоценными металлами в банке «ФК Дэвим»;
  • выделить недостатки в текущей организации бизнес-процесса, которые предполагается решить с помощью автоматизации;
  • рассмотреть имеющие на рынке аналоги, предназначенные для решения выделенных проблем;
  • составить перечень требований к разрабатываемой информационной системе;
  • спроектировать структуру базы данных для хранения всей необходимой информации и пользовательский интерфейс для работы с базой данных;
  • выбрать средства реализации ИС;
  • разработать базу данных и программные модули ИС;
  • описать контрольный пример работы ИС на тестовых данных.

Глава 1. Исследование предметной области

1.1 Общее описание предприятия

Банк «ФК Дэвим» является крупной федеральной компанией, работающей в 15 городах России. Компания основана в 2011 г. в г. Санкт-Петербург и является одной из старейших кредитных организаций на Северо-Западе России.

«ФК «Дэвим» управляет сетью более чем из 110 собственных офисов. Основным принципом компании является лояльность по отношению к Клиентам. С организационной точки зрения объединенная структура стала более мобильна и управляема, что, безусловно, будет положительно влиять на качество обслуживания клиентов.

В своей деятельности «ФК Дэвим» реализует принципы политики Правительства Российской Федерации и Банка России, направленной на укрепление, укрупнение и развитие российского финансового сектора.

Офисы Компании предлагают широкий спектр финансовых продуктов и услуг на всей территории Российской Федерации. В их числе – ипотечное кредитование, потребительское кредитование, инвестиционные услуги, возможность участия в фондах коллективных инвестиций.

Одним из ключевых элементов стратегии деятельности «ФК Дэвим» является создание в наиболее экономически активных регионах страны сети «финансовых супермаркетов» и «центров финансовых решений», предоставляющих своим клиентам широкий спектр высококачественных, стандартизированных финансовых услуг. В настоящее время во всех филиалах и отделениях «ФК Дэвим» унифицирован продуктовый банковский ряд и введены единые конкурентоспособные тарифы.

«ФК Дэвим» осуществляет все основные виды банковской деятельности, в том числе:

  • привлекает денежные средства физических и юридических лиц во вклады;
  • размещает привлеченные средства от своего имени и за свой счет;
  • открывает и ведет банковские счета физических и юридических лиц;
  • осуществляет расчеты по поручению физических и юридических лиц по их банковским счетам;
  • осуществляет переводы денежных средств по поручению физических лиц без открытия банковских счетов (за исключением почтовых переводов);
  • выдает поручительства за третьих лиц, предусматривающих исполнение в денежной форме;
  • доверительно управляет денежными средствами и иным имуществом по договору с физическими и юридическими лицами;
  • осуществляет операции с драгоценными металлами и драгоценными камнями в соответствии с законодательством Российской Федерации;
  • предоставляет в аренду физическим и юридическим лицам специальные помещения или находящиеся в них сейфы для хранения документов и ценностей;
  • оказывает консультационные и информационные услуги, операции со счетами.

«ФК Дэвим» для повышения качества обслуживания предлагает своим клиентам услуги персонального менеджера, через которого и происходит «общение» клиента с организацией. Речь идет не только о чисто технических функциях в обслуживании, но и функциях персонального менеджера по управлению денежными средствами клиента, чтобы освободить клиента от несвойственной ему работы и дать возможность сосредоточиться на профильном для него бизнесе.

1.2 Характеристика текущих бизнес-процессов

В качестве предмета исследования в рамках данной курсовой работы выступает бизнес-процесс ведения операций с драгоценными металлами, поэтому он будет рассмотрен более подробно.

Для анализа бизнес-процесса воспользуемся функционально-структурным моделированием. В качестве основной методологии построения функциональных моделей выступает IDEF0.

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

Исследование функций производится независимо от способов и методов их выполнения. Такой «функциональный» подход обеспечивает четкое разделение аспектов назначения описываемой системы от вопросов её реализации.

IDEF0 часто используется при исследовании и проектировании систем на логическом уровне.

IDEF0 определяет два графических объекта:

1. блок, с помощью которого обозначается некоторая функция (действие);

2. стрелка, с помощью которой указываются информационные или материальные объекты.

Модель IDEF0 представляет собой набор взаимоувязанных диаграмм. Каждая диаграмма является описанием системы или ее отдельных функциональных блоков в рамках некоторого уровня детализации.

Контекстная диаграмма – диаграмма самого верхнего уровня иерархии, дает самое общее представление о системе. На контекстной диаграмме (КД) отображается только один функциональный блок (контекстная функция).

Далее контекстная функция декомпозируется на основные функции системы с помощью отдельной диаграммы. В свою очередь, каждая такая функция может быть разложена на более мелкие и т.д. При построении модели нужно соотнести каждый функциональный блок более низкого уровня с функциональным блоком более высокого уровня.

Следует всегда помнить, что некоторый функциональный блок и диаграмма его декомпозиции суть одно и то же, но рассматриваемое с разной степенью детализации. Отсюда следует, что все стрелки, связанные с рассматриваемым функциональным блоком, должны присутствовать на декомпозирующей его диаграмме (если таковая имеется).

Контекстная диаграмма бизнес-процесса ведения операций с драгоценными металлами изображена на рисунке 1 (для построения диаграмм использовалось CASE- средство AllFusion Process Modeler 7).

Рисунок 1 – Контекстная диаграмма

В качестве входных данных выступает заявка от клиента, вы качестве выходных – квитанция об операции, журнал операций и отчеты об операциях за период. Выполняется деятельность в соответствии с ФЗ «О драгоценных металлах и драгоценных камнях», выполняет её сотрудник банка.

Следующий этап построения структурно-функциональной модели – декомпозиция контекстной диаграммы. Диаграмма декомпозиции исследуемой деятельности приведена на рисунке 2.

Рисунок 2 – Диаграмма декомпозиции

Ведение операций с драгоценными металлами выполняется в три этапа:

  • Выявление потребности клиента на основании заявки;
  • Выполнение необходимой операции;
  • Формирование отчетов о выполненных операциях.

Диаграмма декомпозиции процесса выполнения операции приведена на рисунке 3.

Рисунок 3 – Диаграмма декомпозиции процесса «Выполнить необходимую операцию»

Среди недостатков текущей организации процесса ведения операций с драгоценными металлами можно выделить в первую очередь низкий уровень автоматизации данного процесса. Учет всех операций ведется с помощью журнала операций, в который сотрудник банка вносит записи вручную. Квитанции также оформляются сотрудниками банка ручным способом. Такой ручной учет всех действий отрицательно сказывается не только на производительности сотрудников при выполнении операций, но и при формировании отчетов. Предполагается, что разработка и внедрение информационной системы автоматизации ведения операций с драгоценными металлами позволит увеличить производительность сотрудников компании.

1.3 Обзор аналогов

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

В настоящее время на рынке автоматизированных банковских систем присутствуют около 20-ти фирм-разработчиков АБС, создающих разнообразные программные продукты. Наиболее популярными и развитыми являются три компании-разработчика:

  • Диасофт (АБС Diasoft 5NT(e), 5NT);
  • R-Style Software Lab (АБС RS-Bank V.6);
  • ПрограмБанк (ИБС "Гефест").

Каждая из указанных выше компании предлагает комплексное решение по автоматизации деятельности банка любой направленности (микрозаймы, вклады, работы с частными и корпоративными клиентами, обслуживание пластиковых карт и т.д.)

Сложнее всего оценить стоимость информационной банковской системы, т.к. в настоящее время она складывается от стоимости самого ядра информационной системы и стоимости внедрения. И оба составляющих цены зависят в первую очередь от потребностей банка, его размера (штат сотрудников, количество филиалов), положения в рейтинге банков и т.д. то есть от самого банка.

Например, для крупных банков разработчики могут ядро системы предоставить полностью бесплатно, т.к. все их затраты окупятся за счёт больших масштабов работ, связанных с внедрением их программного продукта (например, если у банка больше 500 филиалов по РФ).

Если у банка низкий рейтинг, то стоимость ядра будет максимально завышена, т.к. при низком рейтинге банка существует вероятность, что банк закроется еще до того, как будет полностью внедрена АБС.

Поэтому на своих официальных сайтах компании-разработчики АБС не пишут никаких цен на свои программные продукты и в таблицу сравнения параметры со стоимостью не были включены.

Таблица 1. Сравнение банковских АИС

Критерии сравнения

Система 1

Система 2

Система 3

Название системы

Diasoft 5NT(e), 5NT

RS-Bank V.6

ИБС "Гефест"

Фирма-разработчик

Диасофт

R-Style Software Lab

ПрограмБанк

Фирма основана

1991

1995

1989

Сильные стороны

Занимает 4 место в международном рейтинге Global Banking Platform Deals Survey 2013 (Forrester)

Срок внедрения от 2 до 6 месяцев.

Высокое качество обслуживания

Оперативная техподдержка

Слабые стороны

Растянутый по времени предварительный анализ работы банка перед заключением договора на внедрение АБС

Низкая распространенность IT-решений компании

Успешные внедрения системы

«Газпромбанк»

«Банк Москвы»

«РоссельхозБанк»

«Сбербанк Онлайн»

АО «Альфа-Банк»

«HomeCredit bank»

«ВТБ»

ООО «ВСК-Ипотека»

ОАО «Промэнергобанк»

МБО «Оргбанк»

Требования к функциональной части

Управление кредитами

Да

Да

Да

Управление вкладами

Да

Да

Да

Работа с частными лицами

Базовый модуль

Да

Да

Работа с корпоративными клиентами

Базовый модуль

Да

Да

Управление филиалами

Отдельный модуль

Да

Да

Работа с пластиками картами

Отдельный модуль

Отдельный модель

Отдельное ПО

Работа с драгоценными металлами

Отдельный модуль

Отдельный модель

Отдельное ПО

Требование к обеспечивающей части

Архитектура системы

Клиент-сервер

Клиент-сервер

Клиент-сервер

Модульность

АБС состоит из модулей, каждый отвечает за свою сферу деятельности банка

Дополнительный функционал АБС добавляется с помощью покупки и подключения дополнительных программных модулей

Каждый программный продукт компании создан для решения отдельных задач

Гибкость

Подстраивается под индивидуальные особенности банка

Подстраивается под индивидуальные особенности банка

Подстраивается под индивидуальные особенности банка

Работа с базами данных

MS SQL 2005/2008/2012 и Oracle 10/11g

Pervasive.SQL и Oracle 10/11g

MS SQL 2005/2008/2012 и Oracle 10/11g

Операционная система

Кроссплатформенное

Windows/Linux

Windows

Поддержка

Круглосуточно

Круглосуточно

Круглосуточно

1.4 Постановка задачи

Разрабатываемая информационная система должна иметь следующий функционал:

  • Авторизация сотрудников с помощью пароля;
  • Учет клиентов;
  • Учет операций по металлическим вкладам (открытие, внесение, снятие, закрытие);

Разрабатываемая информационная система должна корректно работать на оборудовании со следующими характеристиками:

  • тактовая частота процессора не менее 1 Ггц;
  • объем оперативной памяти не менее 512 Мб;
  • периферийные устройства: VGA-монитор с разрешением не менее 1280х800 пикселей, клавиатура, мышь;
  • операционная система Windows 8 или более поздняя версия.

1.5 Описание входных и выходных данных

В качестве входных данных для информационной системы выступают данные клиентов и данные об операциях, которые им требуется провести.

Данные клиента включают следующую информацию:

  • ФИО
  • Номер телефона
  • Данные паспорта
  • Адрес регистрации
  • Дата рождения

Данные об операции включают следующую информацию:

Тип операции (открытие, частичное снятие, дополнительный взнос, закрытие);

  • Номер металлического счета, с которым выполняется операция;
  • Сотрудник, выполнивший операцию;
  • Сумма операции;
  • Дата и время выполнения операции.

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

В качестве выходных данных работы информационной системы выступают чеки о проведенных операциях и отчеты по операциям.

Каждый чек включает те же данные, что и сама операция, с добавлением результата выполнения операции (выполнена успешно, или неуспешно).

Отчет по операциям формируется за определенный период и включает статистические данные по количеству выполненных операций за этот период (обычно за месяц).

1.6 Разработка диаграммы «TO-BE»

Для разработки структурно-функциональной диаграммы «КАК ДОЛЖНО БЫТЬ» также была использована методология IDEF0. Контекстная диаграмма приведена на рисунке 4.

Рисунок 4 – Контекстная диаграмма «TO-BE»

Диаграмма декомпозиции приведена на рисунке 5.

Рисунок 5 – Диаграмма декомпозиции «TO-BE»

После внедрения информационной системы добавится новой правило «Регламент работы в ИС», а также блок – «Авторизация в ИС». Более серьезные изменения можно увидеть, декомпозировав блок «Выполнить операцию» (Рисунок 6).

Рисунок 6 – Диаграмма декомпозиции процесса «Выполнить операцию»

Выполнение операции включает четыре этапа:

  • открытие карточки клиента;
  • выбор операции, которую клиент желает выполнить;
  • ввод данных для выполнения операции;
  • печать квитанции о результатах выполнении операции.

Глава 2. Проектирование и разработка ИС

2.1 Проектирование структуры базы данных

Первый этап проектирования базы данных – выделение основных сущностей, характерных для предметной области. Исходя из анализа предметной области и описания входных и выходных данных можно выделить следующие сущности:

  • сотрудник;
  • клиент;
  • счет;
  • драгоценный металл;
  • операция по счету;
  • вид операции по счету.

Эти сущности связаны между собой. Существует 3 типа связей между сущностями:

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

Каждый счет принадлежит только одному клиенту, а с другой стороны – каждый клиент может открыть любое количество счетов. Значит связь между данными сущностями – один-ко-многим. Аналогичная связь присутствует и между другими сущностями. Все сущности и связи между ними изображены в виде модели, приведенной на рисунке 7.

C:\Users\Mixa\YandexDisk\Скриншоты\2017-09-10_13-41-20.png

Рисунок 7 – Сущности и связи между ними

Следующий этап построения модели данных – выделение всех атрибутов, характерных для выделенных сущностей.

В соответствии с правилами нормализации отношений реляционной модели данных, необходимо нормализовать выделенные сущности и отношения между ними. В соответствии с данными правилами необходимо выделить атрибуты, имеющие повторяющиеся значения у экземпляров одной сущности в отдельную сущность. Таких атрибутов нет

Кроме того, для каждой сущности необходимо выбрать ключевой атрибут. Ключевым атрибутом (или первичным ключом сущности) называется такой атрибут, значение которого для каждого экземпляра сущности является уникальным. Первичный ключ служит для однозначной идентификации экземпляров сущности. В каждую сущность добавим атрибут Идентификатор, он и будет служить первичным ключом.

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

Рисунок 8 – Модель данных

2.2 Дерево функций и сценарий диалога

Дерево функций информационной системы представлено на рисунке 9.

Рисунок 9 – Дерево функций информационной системы

На основании дерева функций разработан сценарий диалога, который представлен на рисунке 10.

Рисунок 10 – Сценарий диалога информационной системы

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

2.3 Выбор средств реализации

Для реализации проектируемой информационной систем необходимо выбрать систему управления базой данных (СУБД) и среду разработки программных модулей для реализации пользовательского интерфейса работы с базой данных.

В данном курсовом проекте в качестве СУБД используется Microsoft Access.

Access – это, прежде всего, система управления базами данных. Как и другие продукты этой категории, она предназначена для хранения и поиска данных, представления информации в удобном виде и автоматизации часто повторяющихся операций.

Access – мощное приложение к Windows; впервые производительность СУБД органично сочетается с теми удобствами, которые имеются в распоряжении пользователей Microsoft Windows. Поскольку оба эти продукта – детища компании Microsoft, они прекрасно взаимодействуют между собой. Система Access работает под управлением Windows, так что при работе с ней пользователю доступны все преимущества этой операционной систему. Можно вырезать, копировать и вставлять данные из любого приложения Windows в Access и наоборот; можно создавать проект формы в Access и сохранить его как отчет.

В Access в полной мере реализовано управление реляционными базами данных. Система поддерживает первичные и внешние ключи и обеспечивает целостность данных на уровне ядра (что предотвращает несовместимые операции обновления или удаления данных). Кроме того, таблицы в Access снабжены средствами проверки допустимости данных, предотвращающими некорректный ввод, независимо от того, как он осуществляется, а каждое поле таблицы имеет свой формат и стандартные описания, что существенно облегчает ввод данных. Access поддерживает все необходимые типы полей, в том числе текстовый, числовой, счетчик, денежный, дата/время, МЕМО, логический, гиперссылка и поля объектов OLE. Если в процессе специальной обработки в полях не оказывается никаких значений, система обеспечивает полную поддержку пустых значений.

Для разработки графического интерфейса предлагаемой к разработке информационной системы, было принято решение использовать среду программирования Delphi 7, поскольку Delphi позволяет, как создавать собственные базы, так и использовать уже созданные с помощью профессиональных СУБД и обладает всеми необходимыми средствами для подключения, использования и обработки данных, а также обеспечивает быстрое создание качественного интерфейса приложений.

Среда программирования Delphi обладает рядом преимуществ:

  • ориентирована на начинающих разработчиков, имеющих опыт работы в операционных системах семейства Windows и обладающих минимальными навыками программирования (на любом из языков программирования);
  • имеет визуальную разработку интерфейса пользователя;
  • возможность работы с файлами на низком уровне;
  • возможность работы с базами данных;
  • совместимость со стандартными компонентами Windows;
  • совместимость с большинством реляционных СУБД.

2.4 Описание таблиц базы данных

В таблицах ниже приведено описание всех созданных таблиц базы данных, а также их полей.

Таблица 2. Описание таблицы базы данных User (Сотрудники)

Поле

Описание

Тип данных

Ключ

Id

Идентификатор

Счетчик

PK

FIO

ФИО

Текстовой

password

Пароль

Текстовой

phone

Телефон

Текстовой

mail

Почта

Текстовой

Таблица 3. Описание таблицы базы данных Type (Тип операции)

Поле

Описание

Тип данных

Ключ

Id

Идентификатор

Счетчик

PK

Caption

Наименование

Текстовой

Таблица 4. Описание таблицы базы данных Operation (Операции)

Поле

Описание

Тип данных

Ключ

Id

Идентификатор

Счетчик

PK

Userid

Код сотрудника

Числовой

Accountid

Номер счета

Числовой

Typeid

Код типа

Числовой

Createdat

Дата и время операции

Дата и время

summa

Сумма операции

Числовой

Таблица 5. Описание таблицы базы данных Metall (Металлы)

Поле

Описание

Тип данных

Ключ

Id

Идентификатор

Счетчик

PK

Caption

Наименование

Числовой

Sale

Цена продажи

Числовой

Zakup

Цена покупки

Числовой

Таблица 6. Описание таблицы базы данных Client (Клиенты)

Поле

Описание

Тип данных

Ключ

Id

Идентификатор

Счетчик

PK

Caption

Наименование

Числовой

Sale

Цена продажи

Числовой

Zakup

Цена покупки

Числовой

Таблица 7. Описание таблицы базы данных Client (Клиент)

Поле

Описание

Тип данных

Ключ

Id

Идентификатор

Счетчик

PK

FIO

ФИО

Текстовой

Passport

Данные паспорта

Текстовой

Address

Адрес регистрации

Текстовой

Phone

Номер телефон

Текстовой

birthdate

Дата рождения

Дата

2.5 Описание программных модулей

Описание всех программных модулей разработанной ИС представлено в виде таблицы (Таблица 8).

Таблица 8. Описание программных модулей

Наименование модуля

Описание

Main.pas

Главное окно программы, содержит процедуры создания всех дочерних окон

DataM.pas

Модуль, отвечающий за инициализацию подключения к базе данных

Login.pas

Отвечает за авторизацию пользователей в АИС

Client.pas

Форма для отображения списка клиентов и работы с ним

Oneclient.Pas

Форма для работы с данными клиента и его счетов (добавления/изменение/выполнение операций)

NewAccount.pas

Форма для открытия нового счета

Sprav.pas

Форма для организации работы со справочниками системы

Report.Pas

Форма для ввода параметров отчета, его формирования и выгрузки в Excel

Исходный код программных модулей приведен в приложении.

2.6 Контрольный пример работы системы

После запуска программы открывается форма авторизации (Рисунок 11). На которой пользователю необходимо выбрать себя из списка и ввести пароль от своей учетной записи.

C:\Users\Mixa\YandexDisk\Скриншоты\2017-09-11_11-50-27.png

Рисунок 11 – Форма авторизации

После успешного прохождения авторизации отображается главное форма, у которой имеется основное меню. Путем выбора нужного пункта в основном меню (Рисунок 12) пользователь открывает форму, предназначенную для решения определенной задачи.

C:\Users\Mixa\YandexDisk\Скриншоты\2017-09-11_11-52-05.png

Рисунок 12 – Главное меню главного окна

Поле выбора пункта меню «Клиенты» Открывается форма со списком клиентов, на которой расположены элементы для поиска нужного клиента, кнопка для добавления нового (Рисунок 13).

Рисунок 13 – Форма Клиенты

После нажатия на кнопку «Добавить» открывается форма добавления нового клиента (Рисунок 14).

C:\Users\Mixa\YandexDisk\Скриншоты\2017-09-11_11-53-20.png

Рисунок 14 – Форма добавления клиента

При двойном щелчке на имени клиента в списке открывается форма работы с данными клиента, на которой отображаются все его данные и данные всех его счетов и операций по ним (Рисунок 15).

Рисунок 15 – Форма работы с данными клиентов

Для ввода новой операции по счету необходимо выделить его в списке и нажать правую кнопку мыши и выбрать соответствующий пункт контекстного меню (Рисунок 16).

C:\Users\Mixa\YandexDisk\Скриншоты\2017-09-17_18-16-52.png

Рисунок 16 – Контекстное меню

При необходимости откроется дополнительной диалоговое окно, запрашивающая необходимые данные, например, сумму операции дополнительного взноса в граммах соответствующего металла (Рисунок 17).

C:\Users\Mixa\YandexDisk\Скриншоты\2017-09-11_12-00-29.png

Рисунок 17 – Диалоговое окно запроса данных операции

После выполнения операции печатается квитанция.

Для формирования отчета по операциям необходимо перейти в раздел главного меню «Отчет по операциям». Отобразится форма для ввода интервала дат, за который нужно сформировать отчет (Рисунок 18).

Рисунок 18 – Форма для ввода интервала дат формирования отчета

Сформированный отчет выгружается в программу Excel (Рисунок 19).

Рисунок 19 – Сформированный отчет

ЗАКЛЮЧЕНИЕ

В ходе проделанной работы были решены следующие задачи:

  • была изучена текущая организация бизнес-процесса ведения операций с драгоценными металлами в банке «ФК Дэвим», в результате изучения была построена структурна-функциональная модель бизнес-процесса в нотации IDEF0;
  • по результатам изучения бизнес-процесса были выделены недостатки в текущей его организации, которые связаны с низкой автоматизацией данного процесса;
  • было рассмотрено три программных продукта, предназначенных для автоматизации банковской деятельности;
  • на основании проведенного исследования был составлен перечень требования к разрабатываемой информационной системе автоматизации ведения операций с драгоценными металлами;
  • была спроектирована база данных, составлены дерево функций и сценарий диалога информационной системы;
  • в качестве средств разработки ИС были выбраны СУБД Microsoft Access и среда программирования Delphi 7;
  • с использованием выбранных средств разработки была создана база данных и программные модули;
  • Была проверена работоспособность программы на тестовых данных.

Таким образом, все задачи, поставленные перед данным курсовым проектом, выполнены, а значит и основная цель достигнута.

СПИСОК ИСТОЧНИКОВ

  1. Автоматизированные информационные технологии в экономике: Учебник/Под ред. проф. Г.А. Титоренко. – М.: Компьютер, ЮИНИТИ, 2016. – 329 c.
  2. Гофман В., Хомоненко A., «Delphi. Быстрый старт»; С.-Петербург 2013 – 289 с.
  3. Кандзюба С.П., Громов В.Н. Delphi. Базы данных и приложения. Лекции и упражнения. – СПб.: ООО ДиаСофтЮП, 2015. – 456 c.
  4. Конналли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика – М.: Издательский дом «Вильямс», 2013. – 592 c.
  5. Марка Д. А., МакГоуэн К. Методология структурного анализа и проектирования SADT. М.: ДИАЛОГ-МИФИ, 2013. – 443 c.
  6. Маклаков С. В. Моделирование бизнес-процессов с AllFusion Process Modeler (BPwin 4.1). М.: ДИАЛОГ-МИФИ, 2013. – 340 c.
  7. Маклаков С.В. Создание информационных систем с AllFusion Modeling Suite. – М.: ДИАЛОГ-МИФИ, 2015. – 512 c.
  8. Маклаков С.В. BPwin и Erwin. CASE-средства разработки информационных систем. – М.: ДИАЛОГ–МИФИ, 2014. – 369 c.
  • Михеева В., Харитонова И. Microsoft SQL Server. – СПб.: БХВ – Санкт-Петербург, 2014, 1072с.
  1. Проектирование экономических информационных систем: учеб. / под ред. Ю. Ф. Тельнова. М., 2005 – 345 c.
  2. Рудинский И. Д. Основы формально-структурного моделирования систем обучения и автоматизации педагогического тестирования знаний. – М.: Горячая линия – Телеком, 2014. – 204 с.
  3. Смирнова Г.Н. и др. Проектирование экономических информационных систем: Учебник / Под ред. Ю.Ф. Тельнова. – М.: Финансы и статистика, 2018 – 512 с.
  4. Смирнов И.Н. и др. Основные СУБД. – М.: Наука, 2019 – 320 с.
  5. Хомоненко А.Д. и др. Базы данных: Учебник для вузов / Под ред. проф. А.Д. Хомоненко. – СПб.: КОРОНА принт, 2016 – 736 с.
  6. Фаронов, В.В. Программирование баз данных в Delphi 7: учебный курс / В.В. Фаронов. – СПб.: Питер, 2014. – 459 с.

ПРИЛОЖЕНИЕ

Исходный код программных модулей

unit Main;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DB, ADODB, ExtCtrls, Menus, ComObj;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

C1: TMenuItem;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

procedure CreateSpravForm(const childName, id: string; table: TDataset;

p: integer);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses DataM, Sprav, Client, OneClient;

{$R *.dfm}

//создание формы для работы со справочником

procedure TForm1.CreateSpravForm(const childName, id : string; table: TDataset; p: integer);

var

Child: TForm2;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземпляр такого окна

if (Form1.MDIChildren[i] is TForm2) and (Form1.MDIChildren[i].caption=childName) then

begin

f:=True;

k:=i;

end;

if (f) and (Form1.MDIChildren[k].Caption=childName) then begin //если создан, то

Form1.MDIChildren[k].bringToFront; //переносим его вперед

if Form1.MDIChildren[k].WindowState=wsMinimized then

Form1.MDIChildren[k].WindowState:=wsNormal;

end

else

begin //иначе - создаем форму

Child := TForm2.Create(Application);

Child.Caption := childName; //задаем название

Child.DBGrid1.DataSource.DataSet:=table; //задаем таблицу справочник, с которой будем работать

table.active:=true; //делаем таблицу активной

Child.Setgridcolumnwidths; //выравниваем ширину столбцов

//Child.Label1.Caption:=id; //передаем ид

// Case p of

// 1: Child.n1.visible:=true; //отображаем первый пункт контекстного меню

// 2: Child.n2.visible:=true; //отображаем второй пункт контекстного меню

{3: Child.n3.visible:=true; //отображаем третий пункт контекстного меню

4: Child.n4.visible:=true; //отображаем четвертый пункт контекстного меню

5: begin Child.n5.visible:=true; //отображаем четвертый пункт контекстного меню

Child.Panel2.visible:=false; }

// end;

end;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

CreateSpravForm('Пользователи','',Datamodule1.User,0); //Вызов процедуры для работы со Справочником Пользователи

end;

procedure TForm1.N5Click(Sender: TObject);

begin

CreateSpravForm('Драгоценные металлы','',Datamodule1.Metall,0); //Вызов процедуры для работы со Справочником Металлы

end;

procedure TForm1.N3Click(Sender: TObject);

begin

close;

end;

procedure TForm1.N1Click(Sender: TObject);

var

Child: TForm3;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземпляр такого окна

if (Form1.MDIChildren[i] is TForm3) then

begin

f:=True;

k:=i;

end;

if (f) then begin //если создан, то

Form1.MDIChildren[k].bringToFront; //переносим его вперед

if Form1.MDIChildren[k].WindowState=wsMinimized then

Form1.MDIChildren[k].WindowState:=wsNormal;

end

else

begin //иначе - создаем форму

Child := TForm3.Create(Application);

Child.DBGrid1.DataSource.DataSet.Open;

Child.Setgridcolumnwidths;

end;

end;

end.

unit Login;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, DBCtrls;

type

TForm6 = class(TForm)

DBLookupComboBox1: TDBLookupComboBox;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Label3: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure DBLookupComboBox1Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

uses Main, DataM;

{$R *.dfm}

procedure TForm6.BitBtn1Click(Sender: TObject);

begin

if DbLookupCombobox1.KeyValue<>-1 then //проверка выбран ли пользователь

begin

if Edit1.text=DbLookupCombobox1.ListSource.DataSet.FieldByName('password').AsString then //проверка правильности ввода пароля

begin

label3.Caption:='1';

Form1.Menu:=Form1.MainMenu1;

close;

end

else

begin

ShowMEssage('Пароль не верен');

edit1.Text:='';

Edit1.SetFocus;

end;

end;

end;

procedure TForm6.DBLookupComboBox1Click(Sender: TObject);

begin

Edit1.Text:=''; //очищаем пароль

Edit1.SetFocus; //передаем фокус ввода поля для ввода пароля

end;

procedure TForm6.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then BitBtn1.click; //нажатие энтер в поле пароля

end;

procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if label3.caption='0' then

application.Terminate

else

Action:=cafree;

end;

procedure TForm6.BitBtn2Click(Sender: TObject);

begin

close;

end;

end.

unit Client;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, DB, ADODB;

type

TForm3 = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

DBGrid1: TDBGrid;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

GroupBox1: TGroupBox;

Edit1: TEdit;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

ADOQuery1Id: TAutoIncField;

ADOQuery1FIO: TWideStringField;

ADOQuery1passport: TWideStringField;

ADOQuery1address: TWideStringField;

ADOQuery1phone: TWideStringField;

ADOQuery1birthdate: TDateTimeField;

BitBtn5: TBitBtn;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormResize(Sender: TObject);

procedure Setgridcolumnwidths;

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn5Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

Uses DataM, OneClient, Main;

{$R *.dfm}

Procedure TForm3.Setgridcolumnwidths;

var

i,x,dx:integer;

begin

x:=Round((DbGrid1.width-80)/(DbGrid1.Columns.Count-1));

DbGrid1.Columns[0].Width:=40;

For i:=1 to DbGrid1.Columns.Count-1 do

begin

DbGrid1.Columns[i].Width:=x;

end;

end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);

begin

action:=cafree;

end;

procedure TForm3.FormResize(Sender: TObject);

begin

Setgridcolumnwidths;

end;

procedure TForm3.BitBtn3Click(Sender: TObject);

begin

if edit1.text<>'' then

begin

With AdoQUery1 do

begin

close;

SQL.Clear;

SQL.Add('SELECT * FROM client WHERE FIO like %:text%');

Parameters.ParamByName('text').Value:=edit1.Text;

open;

end;

end

else

begin

With AdoQUery1 do

begin

close;

SQL.Clear;

SQL.Add('SELECT * FROM client');

open;

end;

end;

end;

procedure TForm3.BitBtn4Click(Sender: TObject);

begin

edit1.Clear;

end;

procedure TForm3.BitBtn1Click(Sender: TObject);

var

Child: TForm4;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземпляр такого окна

if (Form1.MDIChildren[i] is TForm4) then

begin

f:=True;

k:=i;

end;

if (f) then begin //если создан, то

Form1.MDIChildren[k].bringToFront; //переносим его вперед

if Form1.MDIChildren[k].WindowState=wsMinimized then

Form1.MDIChildren[k].WindowState:=wsNormal;

end

else

begin //иначе - создаем форму

Child := TForm4.Create(Application);

Child.Panel2.Visible:=false;

Child.Caption:='Новый клиент';

Child.Height:= 200;

end;

end;

procedure TForm3.BitBtn5Click(Sender: TObject);

begin

DbGrid1.DataSource.Dataset.close;

DbGrid1.DataSource.Dataset.open;

Setgridcolumnwidths;

end;

procedure TForm3.BitBtn2Click(Sender: TObject);

var

Child: TForm4;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземпляр такого окна

if (Form1.MDIChildren[i] is TForm4) then

begin

f:=True;

k:=i;

end;

if (f) then begin //если создан, то

Form1.MDIChildren[k].bringToFront; //переносим его вперед

if Form1.MDIChildren[k].WindowState=wsMinimized then

Form1.MDIChildren[k].WindowState:=wsNormal;

end

else

begin //иначе - создаем форму

Child := TForm4.Create(Application);

Child.Caption:='Клиент '+DbGrid1.DataSource.DataSet.FieldByName('fio').AsString;

Child.Edit1.Text:=DbGrid1.DataSource.DataSet.FieldByName('fio').AsString;

Child.Edit2.Text:=DbGrid1.DataSource.DataSet.FieldByName('phone').AsString;

Child.Edit3.Text:=DbGrid1.DataSource.DataSet.FieldByName('passport').AsString;

Child.Edit4.Text:=DbGrid1.DataSource.DataSet.FieldByName('address').AsString;

Child.DateTimePicker1.DateTime:= DbGrid1.DataSource.DataSet.FieldByName('birthdate').AsDatetime;

Child.Label6.Caption:=DbGrid1.DataSource.DataSet.FieldByName('id').AsString;

Child.DBGrid1.DataSource.DataSet.Filtered:=false;

Child.DBGrid1.DataSource.DataSet.Filter:='balance>0 and clientid = '+DbGrid1.DataSource.DataSet.FieldByName('id').AsString;

Child.DBGrid1.DataSource.DataSet.Filtered:=true;

Child.Account.Active:=true;

if not Child.DbGrid1.DataSource.DataSet.FieldByName('number').IsNull then

begin

Child.DBGrid2.DataSource.DataSet.Filtered:=false;

Child.DBGrid2.DataSource.DataSet.Filter:='accountid = '+Child.DbGrid1.DataSource.DataSet.FieldByName('number').AsString;

Child.DBGrid2.DataSource.DataSet.Filtered:=true;

Child.DBGrid2.DataSource.DataSet.active:=true;

end

else

begin

Child.DBGrid2.DataSource.DataSet.active:=true;

end;

Child.ResetChange;

Child.Setgridcolumnwidths;

end;

end;

end.

unit OneClient;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, StdCtrls, Buttons, ComCtrls, ExtCtrls, DB, ADODB,

Menus;

type

TForm4 = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

DateTimePicker1: TDateTimePicker;

BitBtn1: TBitBtn;

Panel3: TPanel;

Panel4: TPanel;

DBGrid1: TDBGrid;

DBGrid2: TDBGrid;

Label6: TLabel;

ADOQuery1: TADOQuery;

Account: TADOTable;

DataSource1: TDataSource;

Accountnumber: TAutoIncField;

Accountclientid: TIntegerField;

Accountmetallid: TIntegerField;

Accountopendate: TDateTimeField;

AccountMetallL: TStringField;

DataSource2: TDataSource;

Operation: TADOTable;

OperationId: TAutoIncField;

Operationuserid: TIntegerField;

Operationaccountid: TIntegerField;

Operationtypeid: TIntegerField;

Operationcreatedat: TDateTimeField;

OperationTypeL: TStringField;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

Accountbalance: TFloatField;

Operationsumma: TFloatField;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Edit1Change(Sender: TObject);

procedure Clientchange;

procedure Edit2Change(Sender: TObject);

procedure Edit3Change(Sender: TObject);

procedure Edit4Change(Sender: TObject);

procedure DateTimePicker1Change(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure DBGrid1CellClick(Column: TColumn);

procedure N4Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure FormResize(Sender: TObject);

procedure ResetChange;

procedure Setgridcolumnwidths;

procedure N5Click(Sender: TObject);

procedure N1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

Uses DataM, Main, NewAccount;

{$R *.dfm}

Procedure TForm4.Setgridcolumnwidths;

var

i,x,dx:integer;

begin

x:=round(width/2);

Panel4.width:=x;

x:=Round((DbGrid1.width-80)/(DbGrid1.Columns.Count-1));

DbGrid1.Columns[0].Width:=40;

For i:=1 to DbGrid1.Columns.Count-1 do

begin

DbGrid1.Columns[i].Width:=x;

end;

x:=Round((DbGrid2.width-80)/(DbGrid2.Columns.Count-1));

DbGrid2.Columns[0].Width:=40;

For i:=1 to DbGrid2.Columns.Count-1 do

begin

DbGrid2.Columns[i].Width:=x;

end;

end;

Procedure TForm4.Clientchange;

begin

if Pos('*',caption)=0 then

caption:=caption+'*';

bitbtn1.Enabled:=true;

end;

Procedure TForm4.ResetChange;

var

capt:string;

begin

if Pos('*',caption)<>0 then

begin

capt:=caption;

caption:=Copy(caption, 0,length(caption)-1);

bitbtn1.Enabled:=false;

end;

end;

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);

begin

action:=cafree;

end;

procedure TForm4.Edit1Change(Sender: TObject);

begin

Clientchange;

end;

procedure TForm4.Edit2Change(Sender: TObject);

begin

Clientchange;

end;

procedure TForm4.Edit3Change(Sender: TObject);

begin

Clientchange;

end;

procedure TForm4.Edit4Change(Sender: TObject);

begin

Clientchange;

end;

procedure TForm4.DateTimePicker1Change(Sender: TObject);

begin

Clientchange;

end;

procedure TForm4.BitBtn1Click(Sender: TObject);

begin

//проверяем наличие данных

if edit1.text='' then begin Showmessage('Введите ФИО клиента'); edit1.SetFocus; exit; end;

if edit2.text='' then begin Showmessage('Введите телефон клиента'); edit2.SetFocus; exit; end;

if edit3.text='' then begin Showmessage('Введите данные паспорта клиента'); edit3.SetFocus; exit; end;

if edit4.text='' then begin Showmessage('Введите адрес регистрации клиента'); edit4.SetFocus; exit; end;

if label6.caption='0' then

begin

With AdoQuery1 do

begin

close;

SQL.clear;

SQL.add('INSERT INTO Client(FIO, phone, passport, address, birthdate) VALUES ');

SQL.Add('(:fio, :phone, :passport, :address, :birthdate )');

Parameters.ParamByName('fio').Value:=Edit1.Text;

Parameters.ParamByName('phone').Value:=Edit2.Text;

Parameters.ParamByName('passport').Value:=Edit3.Text;

Parameters.ParamByName('address').Value:=Edit4.Text;

Parameters.ParamByName('birthdate').Value:=DateTimePicker1.DateTime;

execSQL;

end;

ResetChange;

close;

end

else

begin

With AdoQuery1 do

begin

close;

SQL.clear;

SQL.add('UPDATE Client SET FIO = :fio, phone = :phone, passport = :passport, address = :address, birthdate = :birthdate) WHERE id = :id ');

Parameters.ParamByName('fio').Value:=Edit1.Text;

Parameters.ParamByName('phone').Value:=Edit2.Text;

Parameters.ParamByName('passport').Value:=Edit3.Text;

Parameters.ParamByName('address').Value:=Edit4.Text;

Parameters.ParamByName('birthdate').Value:=DateTimePicker1.DateTime;

Parameters.ParamByName('id').Value:=label6.Caption;

execSQL;

end;

ResetChange

end;

end;

procedure TForm4.DBGrid1CellClick(Column: TColumn);

begin

if not DbGrid1.DataSource.DataSet.FieldByName('number').isNULL then

begin

DBGrid2.DataSource.DataSet.Filtered:=false;

DBGrid2.DataSource.DataSet.Filter:='accountid = '+DbGrid1.DataSource.DataSet.FieldByName('number').AsString;

DBGrid2.DataSource.DataSet.Filtered:=true;

DBGrid2.DataSource.DataSet.active:=true;

end

else

begin

DBGrid2.DataSource.DataSet.active:=true;

end;

end;

procedure TForm4.N4Click(Sender: TObject);

begin

If MessageBox(Handle,PChar('Закрыть счет?'),PChar('Подтверждение'),MB_ICONINFORMATION+MB_YESNO+MB_DEFBUTTON2)=IdYes

then

begin

//добавляем операцию

With AdoQuery1 do

begin

close;

SQL.clear;

SQL.Add('INSERT INTO operation (userid, accountid, typeid, createdat, summa) VALUES');

SQL.Add('(:userid, :accountid, :typeid, :createdat, :summa)');

Parameters.ParamByName('userid').Value:=1;

Parameters.ParamByName('accountid').Value:=DbGrid1.DataSource.DataSet.FieldByName('number').Value;

Parameters.ParamByName('typeid').Value:=4;

Parameters.ParamByName('createdat').Value:=Now;

Parameters.ParamByName('summa').Value:=DbGrid1.DataSource.DataSet.FieldByName('Balance').Value;

EXECSQL;

end;

//Списываем деньги с счета

With AdoQuery1 do

begin

close;

SQL.clear;

SQL.Add('UPDATE account SET balance = 0 WHERE number= :number');

Parameters.ParamByName('number').Value:=DbGrid1.DataSource.DataSet.FieldByName('number').Value;

EXECSQL;

end;

//обновляем отображаемые данные

Account.Close;

Account.Open;

Operation.Close;

Operation.Open;

end;

end;

procedure TForm4.N3Click(Sender: TObject);

var

InputSumma:string;

Summa:extended;

begin

InputSumma:=InputBox('Дополнительный взнос','Введите сумму дополнительного взноса','0');

if (TryStrToFloat(InputSumma,summa)) and (summa<>0) then

begin

//добавляем операцию

With AdoQuery1 do

begin

close;

SQL.clear;

SQL.Add('INSERT INTO operation (userid, accountid, typeid, createdat, summa) VALUES');

SQL.Add('(:userid, :accountid, :typeid, :createdat, :summa)');

Parameters.ParamByName('userid').Value:=1;

Parameters.ParamByName('accountid').Value:=DbGrid1.DataSource.DataSet.FieldByName('number').Value;

Parameters.ParamByName('typeid').Value:=2;

Parameters.ParamByName('createdat').Value:=Now;

Parameters.ParamByName('summa').Value:=summa;

EXECSQL;

end;

//Списываем деньги с счета

With AdoQuery1 do

begin

close;

SQL.clear;

SQL.Add('UPDATE account SET balance = balance + :summa WHERE number= :number');

Parameters.ParamByName('number').Value:=DbGrid1.DataSource.DataSet.FieldByName('number').Value;

Parameters.ParamByName('summa').Value:=summa;

EXECSQL;

end;

//обновляем отображаемые данные

Account.Close;

Account.Open;

Operation.Close;

Operation.Open;

end;

end;

procedure TForm4.N2Click(Sender: TObject);

var

InputSumma:string;

Summa:extended;

begin

InputSumma:=InputBox('Частичное снятие','Введите сумму частичного снятия','0');

if (TryStrToFloat(InputSumma, summa)) and (summa<>0) then

begin

//добавляем операцию

With AdoQuery1 do

begin

close;

SQL.clear;

SQL.Add('INSERT INTO operation (userid, accountid, typeid, createdat, summa) VALUES');

SQL.Add('(:userid, :accountid, :typeid, :createdat, :summa)');

Parameters.ParamByName('userid').Value:=1;

Parameters.ParamByName('accountid').Value:=DbGrid1.DataSource.DataSet.FieldByName('number').Value;

Parameters.ParamByName('typeid').Value:=3;

Parameters.ParamByName('createdat').Value:=Now;

Parameters.ParamByName('summa').Value:=summa;

EXECSQL;

end;

//Списываем деньги с счета

With AdoQuery1 do

begin

close;

SQL.clear;

SQL.Add('UPDATE account SET balance = balance - :summa WHERE number= :number');

Parameters.ParamByName('number').Value:=DbGrid1.DataSource.DataSet.FieldByName('number').Value;

Parameters.ParamByName('summa').Value:=summa;

EXECSQL;

end;

//обновляем отображаемые данные

Account.Close;

Account.Open;

Operation.Close;

Operation.Open;

end;

end;

procedure TForm4.FormResize(Sender: TObject);

begin

Setgridcolumnwidths;

end;

procedure TForm4.N5Click(Sender: TObject);

begin

Account.Close;

Account.Open;

Operation.Close;

Operation.Open;

Setgridcolumnwidths;

end;

procedure TForm4.N1Click(Sender: TObject);

var

Child: TForm5;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземпляр такого окна

if (Form1.MDIChildren[i] is TForm5) then

begin

f:=True;

k:=i;

end;

if (f) then begin //если создан, то

Form1.MDIChildren[k].bringToFront; //переносим его вперед

if Form1.MDIChildren[k].WindowState=wsMinimized then

Form1.MDIChildren[k].WindowState:=wsNormal;

end

else

begin //иначе - создаем форму

Child := TForm5.Create(Application);

Child.Caption:='Открытие счета';

Child.clientid.caption:=label6.caption;

Child.userid.caption:='1';

end;

end;

end.