ВЫПУСКНАЯ РАБОТА БАКАЛАВРА

Размер: px
Начинать показ со страницы:

Download "ВЫПУСКНАЯ РАБОТА БАКАЛАВРА"

Транскрипт

1 Федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский политехнический университет Петра Великого» Институт компьютерных наук и технологий Кафедра измерительных информационных технологий Проект допущен к защите Зав. кафедрой Г.Ф.Малыхина 2015 г. ВЫПУСКНАЯ РАБОТА БАКАЛАВРА Тема: «Защита базы данных кредитной информации» Направление: Информационная безопасность Выполнил студент гр /2 (подпись) М.В.Чистякова Руководитель, профессор, д.т.н. (подпись) Г.Ф.Малыхина Санкт-Петербург 2015 г.

2 Федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский политехнический университет Петра Великого» Институт компьютерных наук и технологий Кафедра измерительных информационных технологий ЗАДАНИЕ на бакалаврскую работу Чистякова М.В. 1) Тема работы: «Защита базы данных кредитной информации» 2) Срок сдачи: 9 июня 2015г. 3) Исходные данные к работе: СУБД SQLite Программная среда разработки Qt 5.4 Утверждаю июня 2015г. Зав. кафедрой ИИТ Малыхина Г.Ф. (подпись) 4) Содержание расчётно-пояснительной записки (обзор подлежащих разработке вопросов): Аналитический обзор баз данных кредитной информации и методов защиты данных Построение модели БД кредитной информации Разработка программного обеспечения БД кредитной информации 5) Перечень графического материала: Схема 1. ER- модель БД 6) Дата выдачи задания: 3 марта 2015г. Научный руководитель д.т.н. профессор Малыхина Г.Ф. Задание принял к исполнению «3» марта 2015г. (подпись)

3 РЕФЕРАТ На 44 с, 3 рисунка, 6 приложений. Базы данных, методы защиты баз данных, аудит баз данных, SQL, C++, Qt, хеширование данных, персональные данные, уровень защищенности персональных данных. В данной работе изложен процесс разработки базы данных кредитной информации на языке SQL и приложение клиента на языке С++ с использованием инструментария Qt. Данны общие сведения о базах данных, кредитной информации, персональных данных. Приведены требования законодательства к защите персональных данных. Представлены методы защиты информации в базах данных, и методы аудита баз данных, а также методы криптографиеческой защиты данных. THE ABSTRACT 44 pages, 3 pictures, 6 applications Database, database protection methods, database audit, SQL, C++, Qt, data hashing, personal data, protection level personal data. The present work deals with credit file database development process on SQL APL and client application on C++ using Qt software. The general information on databases, credit file, pesronal data is given. Data security requirements are given. Database data security, database audit methods and cryptographic data security are given.

if ($this->show_pages_images && $page_num < DocShare_Docs::PAGES_IMAGES_LIMIT) { if (! $this->doc['images_node_id']) { continue; } // $snip = Library::get_smart_snippet($text, DocShare_Docs::CHARS_LIMIT_PAGE_IMAGE_TITLE); $snips = Library::get_text_chunks($text, 4); ?>

4 СОДЕРЖАНИЕ Введение Аналитический обзор баз данных кредитной информации и методов защиты Аналитический обзор баз данных кредитной информации Базы данных Кредитная информация Использование баз данных кредитной информации Системы управления базами данных и языки программирования Анализ возможностей современных СУБД и выбор СУБД для базы данных кредитной информации Выбор языка программирования для приложения клиента Требования законодательства РФ к защите персональных данных Анализ методов защиты персональных данных в БД Развернутое техническое задание Выводы Моделирование базы данных кредитной информации. Политика безопасности Моделирование базы данных кредитной информации База данных кредитной информации Модель на языке ODL Модель сущность-связь (E/R-модель) Модель политики безопасности Криптографическая защита Аудит Выводы Разработка базы данных и программного обеспечения Разработка базы данных кредитной информации Создание базы данных кредитной информации Аудит базы данных кредитной информации Разработка приложения клиента Реализация приложения-клиента Выводы Заключение Список использованных источников Приложения Приложение 1. Список мер по обеспечению безопасности персональных данных... 53

5 Приложение 2. Модель базы данных кредитной информации на языке ODL Приложение 3. Создание и заполнение базы данных на языке SQL Приложение 4. Алгоритм работы приложения клиента Приложение 5. Код приложения клиента на языке С++ с использование инструментария Qt Приложение 6. Варианты работы программы

6 6 Введение Актуальность. В современном обществе большое количество людей, которые взяли кредит или только собираются это сделать. Для них очень важно заотслеживать информацию по своему кредиту: оставшаяся сумма по кредиту, штрафы и т.д. Сейчас чаще всего доступ к такой информации осуществляется через личный кабинет на сайте банка, но у начинающих компьютерных пользователей это может вызвать затруднения. Разработанное в данной работе приложение удобно и просто в использовании, что позволит облегчить доступ к информации всех клиентов банка, не зависимо от их компьютерной грамотности. Цель бакалаврской работы. Целью данной бакалаврской работы является разработка базы данных кредитной информации и приложенияклиента для работы с ней. Задача бакалаврской работы. Архитектура клиент-сервер позволяет разделить задачу на две подзадачи: - разработка базы данных, управляемой СУБД - разработка приложения-клиента, получающего доступ к базе данных с помощью SQL-запросов. Основные результаты бакалаврской работы. В разделе 1 выбрана реляционая модель данных, определена СУБД для управления базой данных SQLite, язык программирования приложения клиента С++ и использование инструментария Qt, а также основные требования по обеспечению безопасности для второго уровня безопасности, которые необходимо реализовать. В разделе 2 была разработана модель базы данных и политика безопасности. В разделе 3 описаны разработанные база данных кредитной информации и приложения клиент для доступа к ней.

7 7 1. Аналитический обзор баз данных кредитной информации и методов защиты Целью первой главы является аналитический обзор баз данных кредитной информации, выбор СУБД и языка программирования, а также обзор требований законодательства РФ к защите персональных данных и методов защиты данных в базах данных. Первый раздел посвящён обзору баз данных кредитной информации. Второй выбору СУБД и языка программирования. Третий обзору требований законодательства РФ. Четвертый рассматривает методы защиты баз данных. 1.1 Аналитический обзор баз данных кредитной информации. Задачами данного раздела является рассмотрение теоретических основ баз данных, определение кредитной информации, и определение, где используются базы данных кредитной информации в настоящее время Базы данных База данных это некоторый набор перманентных (постоянных) данных, используемых прикладными системами какого-либо предприятия, организации. Она представляет собой совокупность связанных данных конкретной предметной области [2]. Каждый различимый объект в базе называется сущностью. Между собой их объединяют связи. И те, и другие обладают свойствами, которые соответствуют данным в базе. Существует несколько подходов к организации системы баз данных. Первыми были иерархическая и сетевая модели данных. Они начали применяться в начале 60-х годов. После чего в начале 70-х была

8 8 предложена реляционная модель. Их главное различие заключается в способах представления представления взаимосвязей между объектами. Иерархическая модель данных строится по принципу иерархии типов объектов, т.е. один тип объектов является главным, а остальные, находящиеся на низших уровнях, подчинёнными. Между главным и подчинёнными типами объекта устанавливается взаимосвязь один ко многим. Иерархическая древовидная структура строится из узлов и ветвей. Узел представляет собой совокупность атрибутов данных, описывающих некоторый объект. Зависимые узлы располагаются на более низких уровнях дерева. В сетевой модели данных понятия главного и подчинённых объектов несколько расширены. Любой объект может быть и главным, и подчинённым. Главный объект обозначается термином владелец набора, а подчинённый член набора. Один и тот же объект одновременно может выступать и в роли владельца, и в роли члена набора. Это означает, что каждый объект может участвовать в любом случае взаимосвязей. В сетевой модели данных объекты объединяются в сеть. Каждый тип записи может содержать, один, несколько или вообще не содержать атрибутов. Реляционные системы основаны на формальной теории, называемой реляционной моделью данных, которая предполагает следующее: 1) данные представлены посредством строк в таблицах, и эти строки могут быть непосредственно интерпретированы как истинные высказывания; 2) для обработки строк данных предоставляются операторы, которые напрямую поддерживают процесс логического получения дополнительных истинных высказываний из существующих высказываний.

9 9 В работе реализуется реляционная модель баз данных Кредитная информация Кредит активно изучается всеми разделами экономической науки. Такой интерес к вопросу кредита и кредитования обусловлен тем, что он играет большую роль не только в национальной и международной экономике, но и в жизни общества, а также конкретного человека. Согласно определению Джона Милля, кредит «есть разрешение одному лицу пользоваться капиталом другого лица» [1]. Основные характеристики кредитов: Возвратность - обязательная выплата кредитору суммы основного долга на оговорённых условиях; эта особенность отличает кредит от других экономических категорий товарно-денежных отношений. Срочность - заранее оговорённые сроки возврата кредитору заёмных средств, то есть временная определённость возврата кредита, нарушение которой влечёт за собой применение определённых санкций. Срок кредитования является предельным временем нахождения ссудных средств в распоряжении заёмщика. Платность - основывается на возмездном характере услуг, оказываемых банками при кредитовании. За предоставление банковской ссуды, как правило, взимается определённая плата в виде процентов. Размер процентной ставки устанавливается сторонами по кредитному договору [3]. Обеспечение внесение заёмщиком залога по кредиту, или же указания третьего лица, как поручителя. В случае задолженности по кредиту поручитель берет на себя ответственность за выплату кредита.

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

11 Системы управления базами данных и языки программирования Задачами данного раздела является выбор СУБД для базы данных кредитной информации и языка программирования для приложения клиента Анализ возможностей современных СУБД и выбор СУБД для базы данных кредитной информации Система управления базой данных (СУБД) включает в себя программное обеспечение, которое управляет всем доступом к базе данных. Функции СУБД: 1) определение данных; 2) обработка данных; 3) оптимизация и выполнение; 4) защита и сохранение целостности данных; 5) восстановление данных и поддержка параллельности; 6) словарь данных. Сама по себе система баз данных это достаточно простая структура, которая включает в себя две части: сервер (внутренний компонент или машины баз данных) и набор клиентов (внешний компонент или внешний интерфейс). Сервер это и есть СУБД. Он выполняет все основные функции СУБД и осуществляет поддержку внешнего, концептуального и внутреннего уровня. Клиентом же являются различные приложения, которые обращаются к серверу. Это могут быть приложения, написанные самим пользователем, приведенные в данной работе, так и уже готовые приложения.

12 Выбор СУБД осуществляется разработчиком, а не пользователем, поскольку она управляется приложением. Также при выборе руководствуются следующими показателями: как масштабируемость, мультиплатформенность, быстродействие (как в выборе транзакций, так и в построении сложных аналитических выборок), работа с XML и кластерные решения. IBM, Oracle и Microsoft ведущие поставщики СУБД. По техническим причинам для реализации приложения использована СУБД SQLite разработчика Ричарда Хиппа. Ее особенностями являются то, что вся база данных хранится в одном файле, а также нет возможности создавать пользователей. В остальном она практически не отличается от более крупных СУБД. Использование такой системы позволит только промоделировать соединение приложение клиента с базой данных локально на одном компьютере. Но реализация такого подхода предполагает защиту практически от всего списка угроз к реализации соединения клиент-сервер кроме специфических угроз соединению клиента с сервером Выбор языка программирования для приложения клиента В современном мире существует множество различных языков программирования. Например, С, С++, Java и др. В качестве языка для разрабатываемого приложения клиента был выбран язык С++. C++ компилируемый статически типизированный язык программирования общего назначения. Он поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную 12

13 13 компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции [15]. В качестве инструментария для разработки программы клиента был выбран Qt. Программой разработки приложения является Qt Designer. Инструментарий включает в свой состав различные модули и предоставляет: поддержку двух- и трехмерной графики; возможность интернационализации, которая позволяет значительно расширить рынок сбыта ваших программ; использование формата XML (extensible Markup Language); STL-совместимую библиотеку контейнеров; поддержку стандартных протоколов ввода-вывода; классы для работы с сетью; поддержку программирования баз данных; и другое. Отличительной особенностью Qt является концепция сигналов и слотов для взаимосвязи между различными объектами. Сигналы и слоты могут быть соединены друг с другом, причем сигнал может быть соединен с большим количеством слотов. Слот, в свою очередь, тоже может быть соединен со многими сигналами. В случае, когда слот не делает ничего, кроме отправки полученного сигнала дальше, то можно вообще обойтись без него, а просто соединить сигналы друг с другом [8]. Во всех остальных случаях слот выполняет определенную пользователем последовательность действий после получения сигнала. Таким образом, языком для разработки приложения клиента был выбран язык С++, а программной средой разработки Qt.

14 Требования законодательства РФ к защите персональных данных Задачами данного раздела является обзор основных требований законодательства РФ для защиты персональных данных, и выбор необходимых для применения к разрабатываемому приложению. Помимо кредитной информации в разрабатываемой базе данных необходимо хранить персональные данные. Персональные данные (ПДн) любая информация, относящаяся к прямо или косвенно определенному, или определяемому физическому лицу (субъекту персональных данных) [13]. Базовый закон о персональных данных в РФ - Федеральный закон Российской Федерации от 27 июля 2006 г. 152-ФЗ «О персональных данных». Международные обязательства, которые Российская Федерация обязалась исполнять, подписав Конвенцию Совета Европы о защите физических лиц при автоматизированной обработке персональных данных 7 ноября 2001 года, послужили причинной принятия закона. Оператор - государственный орган, муниципальный орган, юридическое или физическое лицо, организующие и (или) осуществляющие обработку персональных данных, а также определяющие цели и содержание обработки персональных данных [13, гл. 1, ст. 3]. В разрабатываемой базе данных хранится и обрабатывается персональные данные, а значит необходимо выполнять требования по защите персональных данных, предъявляемые к операторам. Оператор при обработке персональных данных обязан принимать все необходимые меры или обеспечить их принятие для защиты персональных данных от неправомерного или случайного доступа к ним, уничтожения, изменения, блокирования, копирования, предоставления, распространения

15 15 персональных данных, а также от иных неправомерных действий в отношении персональных данных. Обеспечение безопасности персональных данных достигается, в частности: 1) определением угроз безопасности персональных данных при их обработке в информационных системах персональных данных; 2) применением организационных и технических мер по обеспечению безопасности персональных данных при их обработке в информационных системах персональных данных, необходимых для выполнения требований к защите персональных данных, исполнение которых обеспечивает установленные Правительством Российской Федерации уровни защищенности персональных данных; 3) применением прошедших в установленном порядке процедуру оценки соответствия средств защиты информации; 4) оценкой эффективности принимаемых мер по обеспечению безопасности персональных данных до ввода в эксплуатацию информационной системы персональных данных; 5) учетом машинных носителей персональных данных; 6) обнаружением фактов несанкционированного доступа к персональным данным и принятием мер; 7) восстановлением персональных данных, модифицированных или уничтоженных вследствие несанкционированного доступа к ним; 8) установлением правил доступа к персональным данным, обрабатываемым в информационной системе персональных данных, а также обеспечением регистрации и учета всех действий, совершаемых с персональными данными в информационной системе персональных данных; 9) контролем за принимаемыми мерами по обеспечению безопасности персональных данных и уровня защищенности информационных систем персональных данных [13, гл. 4, ст. 19].

16 16 Состав и содержание организационных и технических мер по обеспечению безопасности персональных данных определенны в приказе Федеральной службы по техническому и экспортному контролю (ФСТЭК России) от 18 февраля 2013 г. N 21 г. Москва "Об утверждении Состава и содержания организационных и технических мер по обеспечению безопасности персональных данных при их обработке в информационных системах персональных данных". Согласно ему, в рамках системы защиты персональных данных с учетом актуальных угроз безопасности персональных данных и применяемых информационных технологий, а также уровня защищенности персональных данных следует применять различные составы организационно технических мер. Постановлением правительства РФ от 1 ноября 2012 года 1119 «Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных» утверждено 4 уровня защищенности персональных данных. Уровень защищенности персональных данных это комплексный показатель, который характеризует выполнение требований, нейтрализующих угрозы безопасности информационных систем персональных данных. В зависимости от уровня защищенности меняется состав и содержание организационных и технических мер по обеспечению безопасности персональных данных при их обработке в информационных системах персональных данных [10]. Персональные данные, обрабатываемые в базе данных кредитной информации, относятся к 3 группе общедоступные персональные данные, т.е. сведения о субъекте, полный и неограниченный доступ к которым предоставлен самим субъектом. Так же в ней обрабатываются персональные данные субъектов, не являющихся работниками

17 организации, и этих субъектов менее А актуальные угрозы первого типа связаны с наличием не декларированных возможностей в системе ПО, используемом в информационных системах персональных данных. Отсюда следует, что уровень защищенности персональных данных в базе данных кредитной информации второй. Полный список всех мер по обеспечению безопасности персональных данных для каждого уровня представлен в приложении 1. Перечислим меры необходимые для второго уровня безопасности, которые будут реализованы в рамках разрабатываемого приложения: Идентификация и аутентификация пользователей, являющихся работниками оператора. Управление идентификаторами. Идентификация и аутентификация пользователей, не являющихся работниками оператора. Управление учетными записями пользователей. Реализация необходимых методов, типов и правил разграничения доступа. Разделение полномочий пользователей, администраторов и лиц, обеспечивающих функционирование информационной системы. Ограничение неуспешных попыток входа в информационную систему [11]. 17

18 Анализ методов защиты персональных данных в БД Задачами данного раздела является обзор основных методов защиты персональных данных, и выбор необходимых для применения в разрабатываемой базе данных. В современных СУБД существует два подхода к обеспечению безопасности: Избирательный Обязательный Избирательный подход заключается в создании пользователей, которые обладают различными привилегиями при работе с объектами. Пользователи могут быть объединены в группы. Под привилегиями пользователя или группы понимаются операции, которые они могут выполнять с объектами базы данных. В настоящее время в СУБД появилось понятие роль. Роль это переименованный набор полномочий. Удобство их использования заключается в том, что роли можно создавать до того, как будут созданы пользователи системы. В случае обязательного подхода настраиваются уровни допуска к каждому объекту. Доступ к объекту имеет пользователь с соответствующим уровнем. В обеспечении безопасности, не зависимо от подхода, необходимо придерживаться двух фундаментальных правил: проверка полномочий и проверка подлинности (аутентификация). Проверка полномочий основана на том, что каждому пользователю или процессу информационной системы соответствует набор действий, которые он может выполнять по отношению к определенным объектам. А проверка подлинности это подтверждение того, что пользователь или

19 19 процесс, пытающийся выполнить действие, действительно тот, за кого он себя выдает. Существует ряд специфических угроз безопасности баз данных. Инференция получение конфиденциальной информации из сведений с меньшей степенью конфиденциальности путем умозаключений; Агрегирование - получения более важных сведений по сравнению с важностью тех отдельно взятых данных, на основе которых и получаются эти сведения; Комбинация разрешенных запросов для получения закрытых данных - Использование сложных, а также последовательности простых логически связанных запросов позволяет получать данные, к которым доступ пользователю закрыт [7]. Методы противодействия данным угрозам: Блокировка ответа при неправильном числе запросов. Блокировка ответа, если в запросе содержится больше определённого числа совпадающих данных из предыдущих запросов. Искажение ответа путем округления и другой преднамеренной коррекции данных. Взаимный обмен значений полей записей. Разделение баз данных. База данных разделяется на группы, причем в одну группу может войти не более определенного числа записей. Запрещены запросы к нескольким записям из одной группы, но разрешены запросы к нескольким группам одновременно. Случайный выбор записи для статической обработки.

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

21 Развернутое техническое задание 1. Введение Система обработки и хранения конфиденциальных данных предназначена для быстрого доступа к информации о кредитах клиентов банка. 2. Основания для разработки Задание бакалаврской работы. 3. Назначение разработки Программа представляет собой приложение клиент для доступа к базе данных кредитной информации. 4. Требования к программе Программа должна решать следующие задачи: доступ к данным по имени и паролю; обеспечение разграничения доступа к данным по ролям: клиенты и работники банка; наличие процедуры поиска; возможность фильтрации; возможность внесения платежа по кредиту со счета (если таковой имеется) Требования к функциональным характеристикам Создание базы данных кредитной информации Требования к надежности Для устойчивого функционирования программного обеспечения необходимо: защищенное постоянное соединение с сервером базы данных;

22 22 наличие бесперебойных блоков питания персонального компьютера Условия эксплуатации Диапазон рабочих температур: 0 +30º С Относительная влажность при температуре 25º С % Все пользователи должны являться квалифицированными пользователями персонального компьютера, обладающие знаниями и навыками по работе с документированной информацией в электронном виде Требования к составу и параметрам технических средств Технические характеристики: Центральный сервер базы данных процессор Intel или совместимый с тактовой частотой от 2 GHz и выше, 32 битная ОС (Windows 7, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2), 2 Gb оперативной памяти и выше. Рабочие станции для запуска приложения клиента: процессор Intel или совместимый с тактовой частотой от 1 GHz и выше, 32 битная ОС (Windows 7, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2), не менее 512 Mb оперативной памяти.

23 Выводы Таким образом, в первой главе была выбрана реляционная модель баз данных, определено, что кредитной информацией является типом, суммой кредита, процентной ставкой, сроками его возврата и информацией о залоге или поручителе, а также определена необходимость хранить оставшуюся сумму выплаты по кредиту и номер кредитного договора клиента. В качестве СУБД была выбрана SQLite, а в качестве языка программирования приложения клиента и инструментария C++ и Qt, соответственно. На основе требований законодательства РФ определен второй уровень защищенности персональных данных в базе данных кредитной информации. А также были выбраны основные меры необходимые для второго уровня, которые будут реализованы в разрабатываемом приложении. И определено, что основной угрозой к разрабатываемой базе данных является комбинация разрешенных запросов. Основным подходом для защиты был выбран избирательный подход, а основным методом контроль поступающих запросов. На основе всех вышеперечисленных выводов было составлено развернутое техническое задание.

24 24 2. Моделирование базы данных кредитной информации. Политика безопасности. Целью второй главы является моделирование базы данных кредитной информации и моделирование основных средств защиты информации в ней. Первый раздел главы посвящен построению моделей базы данных кредитной информации на языке ODL и E/R-модели. Второй раздел посвящен описанию политики безопасности, которая будет реализованы для защиты информации в базе данных кредитной информации. 2.1 Моделирование базы данных кредитной информации. Процесс проектирования любой базы данных начинается с построения структуры базы данных. В ней отражаются основные сущности, их отношения и характеристики. Разрабатывается схема БД с помощью моделирования данных. Существует два подхода к моделированию: язык ODL и диаграммы сущность-связь (E/R). При этом необходимо четко знать тип проектируемой БД, т.к. первый подход можно использовать и для объектно-ориентированных баз данных, и для реляционных, второй же подход применим только для реляционных баз данных. База данных кредитной информации реляционная, а значит можно использовать оба подхода к моделированию База данных кредитной информации База данных кредитной информации содержит пять основых таблиц и две вспомогательных. Основные таблицы это: client, credit, guarantor, account и password. В них хранится вся информация. Вспомогательные таблицы это audit и oldvalue.

25 Client содержит в себе все данные о пользователе банка: фамилия, имя, отчество, дата рождения и телефон, серия и номер паспорта, кем и когда он был выдан, домашний адрес, место работы, должность и зарплату. Guarantor содержит в себе все данные о поручителях по кредиту. Они совпадают с данными о клиентах, кроме паспортных данных. Credit содержит в себе все данные о кредите: id клиента, номер кредитного договора, дата выдачи, статус, id поручителя, если он есть, процент, остаток по кредиту, продолжительность, тип кредита и сумма кредита. Account содержит в себе номер счета, количество денег на счету и id пользователя. Password содержит в себе логин пользователя, состоящим из имени и фамилии, пароль и id пользователя. В таблицу audit записывается информация о действиях пользователя приложения. А в таблицу oldvalue копируются старые значения данных пользователя и поручителя перед их изменением. Это происходит для того, чтобы была возможность восстановить данные. Вспомогательные таблицы не представлены в моделях баз данных т.к. они не связаны не с одной из таблиц Модель на языке ODL Язык описания объектов ODL (Object Defifnition Language) - средство определения схемы базы данных. Он является расширением IDL (Interface Definition Language - язык описания интерфейсов) модели OMG (Object Management Group - консорциум поставщиков ООБД и других заинтересованных организаций) и предоставляет средства для определения объектных типов, их атрибутов, связей и методов [4]. 25

26 Объявление класса включает: 1. Имя класса. 2. Объявление ключей (необязательное). 3. Объявление пространства (extent) = имя для множества текущих объектов класса 4. Объявления элементов. Элемент является аттрибутом, отношением или методом. Пример: class <name> elements = attributes, relationships, methods Объявление элементов: attribute <type> <name>; relationship <rangetype> <name>; Связи между классами описываются взаимно-обратными парами в самиъ классах. Существует три типа связей: «многие-ко-многим», «многие-кодному» и «один-к-одному». В первом случае связь имеет тип множества (Set) на стороне обоих связанных объектов. Во втором тип множество на стороне первого объекта, и простое имя класса на стороне второго объекта. В последнем случае простое имя класса на стороне каждого объекта. Модель базы данных кредитной информации на языке ODL представлена в приложение Модель сущность-связь (E/R-модель) ER-модель используют при высокоуровневом проектировании баз данных. В этой модели представлены основные сущности моделируемой 26

27 базы данных и связи между ними. ER-модель это формальная конструкция. В качестве стандартной графической нотации для визуализации используется диаграмма сущность связь или E/R-диаграмма. Используем нотацию Питера Чена. Сущности отображаются в виде прямоугольников, связи ромбов. Атрибуты отображаются в виде овалов, связанных с сущностью. 27

28 28 numberexpense Guarantor Credit Account Client Password Get Keep Take Save idclient password login idclient amount number idclient Name lastname Otch phone b-day gender series number published apartment home street city date jobtitle job salary idguarantor Name lastname Otch phone b-day gender apartment home street city jobtitle job salary idclient contractnumber dateissue term type idguarantor status percent residue Sum

29 Модель политики безопасности Политика безопасности организации одно или несколько правил, процедур, практических приемов или руководящих принципов в области безопасности, которыми руководствуется организация в своей деятельности [6]. В разрабатываемом клиентском приложении существует два вида пользователей: работники банка и клиенты банка. Работник банка имеет доступ к основным данным в базе, и могут изменять и добавлять данные о клиенте, поручителе и кредите. Значит необходимо вести аудит действий работников банка, чтобы иметь возможность проследить за их действиями. Клиент же должен иметь доступ только к своим данным, но аудит его основных действий так же необходим. Доступ ко всей базе данных имеет только администратор. Аудит его действий с базой так же необходим, во избежание превышения им своих полномочий. Хранение паролей пользователей осуществляется в базе данных. Необходимо обеспечить их криптографическую защиту. Персональные данные пользователей политикой доступа, и к ним методы криптографической защиты приниматься не будут. Далее рассмотрим подробнее криптографическую защиту и аудит баз данных Криптографическая защита Использования уникального набора символов для подтверждения личности, т.е. пароля, распространенный способ защиты в информационных системах. При входе в программу пользователь вводит логин и пароль, после чего происходит сравнение с тем, что хранится в

30 30 базе данных. Если значения совпадают пользователь получает доступ, в противном случае в доступе будет отказано. Хранить и передавать пароль в открытом виде нельзя. Решением проблемы защиты паролей является использование методов криптографической защиты. Существует два метода криптографической защиты данных: Шифрование. Хеширование. Для реализации выберем метод хеширования данных. Хешированием называется процесс преобразования текста произвольной длинны в текст фиксированной длины с помощью хэш-функции. В отличие от шифрования процесс хеширования однонаправленный и необратимый. В базу данных заносится только результат работы хеш-функции. Для аутентификации предоставляемый пароль хешируется и результат сравнивается с тем, что хранится в таблице. Таким образом, если злоумышленнику и удается получить доступ к таблице, где хранятся пароли, у него нет практически никаких шансов восстановить их значения. В качестве алгоритма хеширования из всех возможных реализованных в инструментарии Qt был выбран SHA1. Он построен на идеи функции сжатия. На вход хеш-функции подается блок сообщения длинной 512 бит и выход предыдущего блока, который является значением всех предыдущих хеш-блоков. Результат на выходе последнего блока и будет являться хеш преобразованием сообщения Аудит Действия пользователей с базой данных необходимо отслеживать, т.к. это позволит определить злоупотребления своими полномочиями или

31 неавторизованный доступ. Нет смысла отслеживать все действия подряд есть риск в потоке информации не увидеть нужного Основные методы, используемые для аудита баз данных: 1. Системные триггеры. Используются для детального аудита. В журнал записываются глобальные события. Например, запуск и остановка базы данных, соединение с базой, изменение и удаление таблиц. 2. Update, delete и insert триггеры. Отслеживаются действия на уровне столбца и строки. С помощью триггеров можно сохранить данные до и после выполнения действия. У метода существует два минуса: невозможность отследить чтение данных и ресурсоемкость. 3. Детализированный (Fine-grained) аудит. Решается проблема отслеживания чтения данных. Внутренние триггеры срабатывают при разборе какой-нибудь части SQL-приложения или же запись в таблицу аудита происходит при чтении данных через приложение клиент. 4. Системные журналы. Сами СУБД часто генерируют журнальные файлы, информацию из которых можно использовать при проведении аудита. 31 Из всего выше перечисленного следует, что существует множество различных возможностей аудита баз данных, но, как уже было отмечено, использование их всех разом, может привести к большому потому информации, поиск в котором будет отнимать много времени и ресурсов. Поэтому в разрабатываемой базе данных ограничимся следующими задачами аудита: Аудит превышения ограничения неуспешных попыток входа.

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

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

34 34 3. Разработка базы данных и программного обеспечения Целью третьей главы является описание разрабатываемой базы данных кредитной информации и программного обеспечения для работы с ней. В первом разделе содержится описание базы данных на языке SQL, вовтором приложения клиента на языке С++ с использованием инструментария Qt. 3.1 Разработка базы данных кредитной информации Задачами данного раздела является описание разработанной базы данных кредитной информации на языке SQL Создание базы данных кредитной информации Выбранная в первой главе СУБД SQLite стандартно позволяет производить управление базой данных через консоль. Для работы с большими таблицами это не очень удобно, поэтому для управления базой данных кредитной информации была выбрана программа SQLiteStudio, которая является менеджером баз данных SQLite. В ней и была произведена разработка базы данных кредитной информации на языке SQL. Все таблицы соответствуют по содержанию модели базы данных, которая была приведена во второй главе. Информация, хранящаяся в базе данных, является случайно, и предназначена лишь для демонстрации работы программы. Ниже приведен код создания таблицы клиентов. Код создание всех остальных таблиц и их заполнение приведено в приложении 3.

35 35 CREATE TABLE Clients ( id INTEGER primary key AUTOINCREMENT, Name VARCHAR (30), LastName VARCHAR (30), Otch VARCHAR (30), Bday DATE, Phone VARCHAR (10), Gender CHAR(5), SeriesP INTEGER, NumberP INTEGER, PublishedP VARCHAR (255), DateP DATE, City VARCHAR (20), Street VARCHAR (30), Home INTEGER, Apartment INTEGER, Job VARCHAR (255), JobTitle VARCHAR (255), Salary INTEGER ); Идентификационный номер (id) клиента определяется автоматически самой СУБД и является автоинкрементным, т.е. каждое следующее добавление нового клиента автоматически увеличивает значения поля id на единицу. Но при удалении клиента значение идентификатора не возвращается к освободившемуся значению, а увеличивается дальше. Так же реализовано управление идентификационным номером поручителя. Работникам банка, информация о которых не хранится, присваивается идентификационный номер равный нулю.

36 Для работы приложения клиента необходимо хранить в базе данных логин и пароль работников банка и клиентов банка. Логин клиента банка составляется автоматически из его имени и фамилии, а пароль, вводимый самим клиентом, хешируется в приложении клиенте и уже после этого добавляется в базу. Логин работника банка так же составляется из его имени и фамилии, но добавление его и пароля осуществляется системным администратором базы данных, который единственный имеет доступ к базе данных с помощью менеджера управления, а не через разрабатываемое приложение клиент. Вся остальная информация, хранимая в базе данных, вводится при добавлении нового клиента, поручителя или кредита самим работником банка или клиентов Аудит базы данных кредитной информации Аудит действий, которые может совершать только администратор, а именно удаление информации о клиенте, поручителе, или кредите, а также изменение кредитной информации, информации о счетах и паролях реализовано с помощью триггеров SQL. Так же помощью них реализовано резервное копирование данных перед их изменением в основной таблице. Триггер, срабатывающий при удалении информации о клиенте банка: DROP TRIGGER DeleteClient; CREATE TRIGGER DeleteClient DELETE ON Clients BEGIN DELETE FROM Account WHERE idclient = OLD.id; DELETE FROM Password WHERE idclient = OLD.id; 36

37 INSERT INTO Audit VALUES(0,'SystemAdmin','Администратор','Уделание клиента',old.id,'клиент',old.name+old.lastname,datetime('now')); INSERT INTO oldvalue VALUES(old.id,'Клиент',old.Name,old.Otch,old.LastName,old.Bday,old.Phone,old.Gender,old.SeriesP,old.NumberP,old.PublishedP,old.DateP,old.City,old.Str eet,old.home,old.apartment,old.job, old.jobtitle,old.salary); END; При удалении клиента удаляется вся информация о его счетах, а также его логин и пароль. В таблицу аудита заносится сообщение об удалении системным администратором клиента, т.к. только у него есть такие права. Триггер, срабатывающий при изменении информации о клиенте банка: DROP TRIGGER UpdateClient; CREATE TRIGGER UpdateClient UPDATE ON Clients BEGIN INSERT INTO oldvalue VALUES(old.id,'Клиент',old.Name,old.Otch,old.LastName,old.Bday,old.Phone,old.Gender,old.SeriesP,old.NumberP,old.PublishedP,old.DateP,old.City,old.Str eet,old.home,old.apartment,old.job, old.jobtitle,old.salary); END; При изменении клиента в таблицу старых значений копируются значения, до внесения изменений. Эта информация может пригодится в случае предумышленного изменения данных клиента на неверные, или в случае ошибочного изменения. Запись в таблицу аудита происходит в приложении клиенте. Триггер, срабатывающий при удалении информации о поручителе: 37

38 DROP TRIGGER DeleteGuarantor; CREATE TRIGGER DeleteGuarantor DELETE ON Guarantor BEGIN INSERT INTO Audit VALUES(0,'SystemAdmin','Администратор','Уделание поручителя',old.id,'поручитель',0,datetime('now')); END; Запись об удалении информации о поручителе заносится в таблицу аудита. Триггер, срабатывающий при изменении информации о поручителе: DROP TRIGGER UpdateGuarantor; CREATE TRIGGER UpdateGuarantor UPDATE ON Guarantor BEGIN INSERT INTO oldvalue VALUES(old.id,'Поручитель',old.Name,old.Otch,old.LastName,old.Bday,old.P hone,old.gender,0,0,0,0,old.city,old.street,old.home,old.apartment,old.job, old.jobtitle,old.salary); END; При изменении данных о поручителе так же вся старая информация заносится в таблицу старых значений. По причине того, что в базе данных не хранятся паспортные данные поручителя, в таблицу вместо них заносятся нулевые значения. Триггеры, срабатывающий при удалении информации о кредите или счете: 38

39 DROP TRIGGER DeleteCredit; CREATE TRIGGER DeleteCredit DELETE ON Credit BEGIN INSERT INTO Audit VALUES(0,'SystemAdmin','Администратор','Уделание кредита',old.idclient,'клиент',0,datetime('now')); END; DROP TRIGGER DeleteAccount; CREATE TRIGGER DeleteAccount DELETE ON Account BEGIN INSERT INTO Audit VALUES(0,'SystemAdmin','Администратор','Уделание счета',old.idclient,'клиент',0,datetime('now')); END; Запись об удалении информации заносится в таблицу аудита. Триггер, срабатывающий при изменении информации о кредите или счете: DROP TRIGGER UpdateCredit; CREATE TRIGGER UpdateCredit UPDATE ON Credit BEGIN INSERT INTO Audit VALUES(0,'SystemAdmin','Администратор','Изменение кредита',old.idclient,'клиент',0,datetime('now')); END; 39 DROP TRIGGER UpdateAccount; CREATE TRIGGER UpdateAccount

40 UPDATE ON Credit BEGIN INSERT INTO Audit VALUES(0,'SystemAdmin','Администратор','Изменение счета',old.idclient,'клиент',0,datetime('now')); END; Запись об изменении информации заносится в таблицу аудита. 40

41 Разработка приложения клиента Задачами данного раздела является разработка приложения-клиента для доступа к базе данных кредитной информации на языке С++ с использование инструментария Qt Реализация приложения-клиента Реализованное приложение клиент включает в себя семнадцать классов. Класс окна входа mainwindow. Классы, отвечающие за работу приложения для работника банка: rabotnikbankaform, newclient, findclient, newcredit, findcredit, newguarantor, findguarantor, updateclient, updateguarantor, updatepasswordrabotnik. Классы, отвечающие за работу приложения для клиента: clientform, findcreditclient, findaccount, updatepassword, updateclientclient, paymentcredit. Все запросы к базе данных на языке SQL определены уже в коде приложения клиента, а данные, вводимые пользователем, экранированы, а это значит, злоумышленник не сможет применить метод SQL-инъекций. В приложение клиенте происходит аудит неудачных попыток входа в приложение, действий работника банка при внесении нового клиента, кредита или поручителя, просмотре персональных данных клиента, и изменении данных клиента или поручителя, действий клиента банка при изменении своих данных и совершении оплаты по кредиту. Эта часть аудита производится в приложении клиенте, т.к. именно в нем происходит разделение по ролям и конкретным пользователям. Окно входа включает в себя поля для ввода логина и пароля и три кнопки: вход, очистить и выход (рис. 3.1).

42 42 Рисунок 3.1 Окно входа При нажатии кнопки вход происходит соединение с базой данных, в которой происходит поиск по логину пароля пользователя. После чего считается результат хеширования пароля, введенного пользователем, и сравнивается со значением из базы данных. Если логин или пароль введены неверно, выводится сообщение об ошибке. После третьей неудачной попытки кнопка вход блокируется на 10 минут, а в таблицу аудита заносится сообщение о неудачной попытке входа. Алгоритм работы программы содержится в приложении 4.Полный код приложения клиента на языке С++ с использованием инструментария Qt находится в приложении Вариант приложения для работника банка Работник банка в приложении может выполнять следующие функции: поиск информации о клиенте и ее изменение, добавление информации о новом клиенте, изменение пароля клиента, поиск информации о кредите, добавление информации о новом кредите, поиск информации о поручителе

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

44 введена не вся информация, то продолжить не удастся. Второй этап ввод номер счета клиента. Автоматически на счету клиента будет нулевой баланс, т.к. работник банка не производит никакие операции с деньгами. Так же если ничего не введено продолжить добавлять клиента не удастся. Третий этап ввод пароля самим клиентом. Пароль должен быть введен два раза, значения должны совпадать. При этом оба введенных значения будут скрыты кружками при выводе на экран. Логин автоматически формируется из имени и фамилии клиента. Информация о действии заносится в таблицу аудита. Изменение пароля клиента начинается с поиска клиента по тем же данным, после чего самим клиентом вводится новое значение пароля, так же, как и при добавлении информации о новом клиенте, два раза. Информация так же закончится в таблицу аудита. Поиск информации о кредите происходит по номеру кредитного договора. На экран выводит фамилия, имя, отчество клиента, его телефон и домашний адрес, статус кредита, остаток по кредиту и процентная ставка, а также, если есть поручитель его фамилия, имя, отчество, и телефон. Пример вывода информации о кредите представлен в приложении 6. В этом случае в таблицу аудита ничего не заносится. Добавление нового кредита происходит так же в несколько этапов. Первый поиск клиента в базе данных по тем же данным, что и до этого. Если клиент не найден, так же выводится сообщение об ошибке и предоставляется возможность ввести данные еще раз. Второй этап ввод основной кредитной информации: номера кредитного договора, процентной ставки, даты выдачи, срока действия, остатка по кредиту, и суммы кредита. Третий этап это поиск поручителя по фамилии, имени, отчеству и номеру телефона, или добавление нового поручителя в базу, если необходимо. Если поручителя нет, то добавление информации о 44

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

46 46 Рисунок 3.3 Внешний вид приложения для клиента банка Изменение информации о себе самим клиентом не требует поиска, на экран сразу же выводится доступные для изменения данные. Пример вывода данных представлен в приложении 4. В таблицу аудита заносится запись о совершенном изменении данных самим клиентом. Для изменения пароля самим пользователем ему необходимо ввести свой старый пароль, а затем два раза ввести новый. При несоответствии старого пароля или несовпадении значений нового пароль изменен не будет. Если пользователь забыл свой старый пароль ему необходимо обратиться в банк для смены его работником банка. Запись об изменении пароля добавляется в таблицу аудита. Поиск информации о кредите происходит по номеру кредитного договора. В отличие от работника банка клиент не вводит номер кредитного договора, а выбирает из выпадающего списка один из номеров кредитных договоров. Это сделано во избежание опечатки клиентом и получения им информации, к которой он не имеет доступа. На экран выводится статус кредита, остаток по кредиту, процентная ставка, а также, если есть поручитель его фамилия, имя, отчество, и телефон. В этом случае в таблицу аудита ничего не заносится.

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

48 Выводы В данной главе описана разработанная база данных на языке SQL. Описаны основные особенности данных, содержащихся в ней. Так же описано разработанное программное обеспечение для доступа и управления базой данных кредитной информации. Описаны основные возможности работника и клиента банка в приложении. А также реализация аудита, который был определен во второй главе и требований для второго уровня безопасности, определенных в первой главе.

49 49 Заключение Основными задачами бакалаврской работы были реализация базы данных кредитной информации, управляемая СУБД, и приложения клиента для управления базой данных. База данных реализована на языке SQL. Все данные в ней случайны, и необходимы для моделирования работы приложения. Часть данных формируется автоматически перед добавлением новой записи в приложении клиенте. Это логин пользователя, составляемый из имени и фамилии, без пробела, а также идентификационные номера клиента и поручителя, при добавлении записи о новом кредите. Возможностями СУБД реализован аудит действий администратора базы данных, а также резервное копирование старых данных поручителя и клиента перед их изменением. Приложение клиент реализовано на языке С++ с использованием инструментария Qt. В нем реализовано разделение возможностей работы с базой данных для работника и клиента банка. В таблицу аудита происходит запись об основных действиях работника и клиента банка. Работнику банка через приложение доступно просмотр, добавление и изменение данных о клиенте и поручителе, просмотр и добавление новых данных о кредите, а также изменение пароля пользователя. Клиент банка может изменить свои данные, изменить свой пароль, просмотреть информацию о кредитах и счетах, а также совершить платеж по одному из своих кредитов с одного из своих счетов. Реализованные база данных и приложение клиент отвечают всем требования законодательства по защите персональных данных. Реализованы основные методы защиты информации и аудита в базах

50 данных. Таким образом основные задачи были реализованы успешно. 50

51 51 Список использованных источников 1. Атлас З.В. Деньги и кредит (при капитализме и в СССР). М.,1930, с Атре Ш. Структурный подход к организации баз данных М.: Финансы и статистика, с. 3. Боровкова В.А. Основы теории финансов и кредита: учебное пособие / В. А. Боровкова, С. В. Мурашова. - СПб.: ПИТЕР, с. 4. Введение в базы данных. [Электронный ресурс] Объектноориентированные СУБД. URL: (дата последнего обращения г.). 5. Введение в системы баз данных, 8-е издание.: Пер. с англ. М.: Издательский дом "Вильяме", с. 6. ГОСТ Р ИСО/МЭК Методы и средства обеспечения безопасности. Критерии оценки безопасности информационных технологий безопасности. Часть 1. Введение и общая модель. / М.: ИПК Издательство стандартов, Завгородний В.И. Комплексная защита информации в компьютерных системах. [Электронный ресурс] Особенности защиты информации в базах данных. URL: (дата последнего обращения г.). 8. Макс Шлее. Qt 4.8 Профессиональное программирование на C++. СПб.: «БХВ-Петербург», С Малыхина Г.Ф. Управление данными: учебное пособие/ Г.Ф. Малыхина, Н.Г. Полетаева. СПб.: Издательство Политехнического университета, с.

52 10. Постановлением правительства РФ от 1 ноября 2012 года 1119 «Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных» 11. Приказ Федеральной службы по техническому и экспортному контролю (ФСТЭК России) от 18 февраля 2013 г. 21 г. Москва "Об утверждении Состава и содержания организационных и технических мер по обеспечению безопасности персональных данных при их обработке в информационных системах персональных данных". 12. Пучкова Д.М. Обзор современных СУБД, веб-серверов, языков написания сценариев. [Электронный ресурс].url: (дата последнего обращения г.). 13. Федеральный закон Российской Федерации от 27 июля 2006 г «О персональных данных». 14. Хайдаров К.А. Введение в системы управления базами данных. [Электронный ресурс] - Лекция 13. Защита информации в базах данных. URL: (дата последнего обращения г.). 15. Шилдт Г. Самоучитель C++. Учебный курс. - СПб. : БХВ - Санкт- Петербург, с. 16. Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. М.: Триумф, с. 52

53 53 Приложения Приложение 1. Список мер по обеспечению безопасности персональных данных

54 54

55 55

56 56

57 57

58 58 Приложение 2. Модель базы данных кредитной информации на языке ODL. Interface Client attribute int idclient; attribute string name; attribute string lastname; attribute string Otch; attribute int phone; attribute Date b-day; attribute string gender attribute struct pd int series, int number, string published, int date passport details; attribute struct Addr string city, string street, int home, int apartment homeaddres; attribute int numberexpense; attribute string job; attribute string jobtitle; attribute string salary; relationship set< Account >keep; inverse Account:: belong; relationship set< Credit >take; inverse Credit:: issue; relationship < Password>get; inverse Password:: belong; Interface Guarantor attribute int idguarantor;

59 59 attribute string name; attribute string lastname; attribute string Otch; attribute int phone; attribute string gender attribute struct Addr string city, string street, int home, int apartment homeaddres; attribute string job; attribute string jobtitle; attribute string salary; relationship < Credit > respond; inverse Credit:: save; Interface Account attribute int idclient; attribute int number; attribute int amount relationship <Client> belong; inverse Client::keep; Interface Password attribute int idclient; attribute string login; attribute string password; relationship < Client > belong; inverse Client::get; Interface Credit attribute int idclient;

60 60 attribute int contractnumber ; attribute string type; attribute Date term; attribute Date dateissue; attribute int amount; attribute int idguarantor; attribute int percent; attribute bool status; attribute int residue; attribute int sum; relationship < Client > issue; inverse Client::take; relationship < Guarantor > save; inverse Guarantor::respond;

61 61 Приложение 3. Создание и заполнение базы данных на языке SQL Создание таблиц: CREATE TABLE Clients ( id INTEGER primary key AUTOINCREMENT, Name VARCHAR (30), LastName VARCHAR (30), Otch VARCHAR (30), Bday DATE, Phone VARCHAR (10), Gender CHAR(5), SeriesP INTEGER, NumberP INTEGER, PublishedP VARCHAR (255), DateP DATE, City VARCHAR (20), Street VARCHAR (30), Home INTEGER, Apartment INTEGER, Job VARCHAR (255), JobTitle VARCHAR (255), Salary INTEGER ); CREATE TABLE Guarantor( id INTEGER primary key AUTOINCREMENT, "Name" VARCHAR (30), LastName VARCHAR (30), Otch VARCHAR (30), Bday DATE, Phone VARCHAR (10), Gender VARCHAR (5), City VARCHAR (20), Street VARCHAR (30), Home INTEGER, Apartment INTEGER, Job VARCHAR (255), JobTitle VARCHAR (255), Salary INTEGER ); CREATE TABLE Account( idclient INTEGER References Clients (id), "Number" INTEGER primary key, Amount INTEGER ); CREATE TABLE Password( idclient INTEGER, Login VARCHAR (255) primary key, Password VARCHAR (255) );

62 62 CREATE TABLE Credit( idclient INTEGER References Clients (id), ContractNumber INTEGER primary key, DateIssue DATE, Status INT, idguarantor INTEGER, "Percent" INTEGER, Residue INTEGER, Term INT, "Type" VARCHAR (30), "Sum" INTEGER ); CREATE TABLE Audit ( idwho INTEGER, LoginWho VARCHAR (255), TypeWho VARCHAR (255), [Action] VARCHAR (255), idwith VARCHAR (255), TypeWith VARCHAR (255), LoginWith VARCHAR (255), Date DATE ); CREATE TABLE OldValue ( id INTEGER, Type VARCHAR (30), Name VARCHAR (30), LastName VARCHAR (30), Otch VARCHAR (30), Bday DATE, Phone VARCHAR (10), Gender CHAR (5), SeriesP INTEGER, NumberP INTEGER, PublishedP VARCHAR (255), DateP DATE, City VARCHAR (20), Street VARCHAR (30), Home INTEGER, Apartment INTEGER, Job VARCHAR (255), JobTitle VARCHAR (255), Salary INTEGER ); Заполнение таблиц: INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Alexander','Vladimirovich','Ovsov',' ',' ','Men',4210,507624,'UFMS 134',' ','St. Petersburg','Avangardnaya','11','242','Galereya','Ohrannik','30000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Victor','Anatolevich','Mikhalkov',' ',' ','Men', 9405, ,'UFMS 135',' ','St. Petersburg','Alexandra Matrosova','32','97','Agenstvo Lunnii Svet','Detektiv','45000');

63 INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Nikolai','Alexandrovich','Rostov',' ',' ','Men', 8090, ,'UFMS 135',' ','St. Petersburg','Antonovskaya','93','167','OOO "Polyaris"','Webdizainer','50000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Ruslan','Olegovich','Malevich',' ',' ','Men', 8948, ,'UFMS 56',' ','St. Petersburg','Magdalinskiy','61','30','Centralnaya bolnica 5','Akusher','30000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Alexandra','Alekseyevna','Kulikova',' ',' ','Women', 6748, ,'UFMS 78',' ','St. Petersburg','Marshala Govorova','79','259','Centralnaya bolnica 25','Laborant ','35000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ( 'Maria','Alexandrovna','Vastkina', ' ',' ','Women', 6494,761654,'UFMS 134', ' ','St. Petersburg', 'Michaela Dudina','62','200','Izdatelstvo "Aist"','Izdatel','78000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Olga','Sergeevna','Drygina', ' ',' ','Women',2627,309563,'UFMS 35', ' ','St. Petersburg','Ivana Fomina','68','128','Aleksandrovskii teatr','artist','50000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Sergey','Viktorovich','Gorshochnikov',' ',' ','Men',6902,157421,'UFMS 56',' ','St. Petersburg','Industrial','77','190','Agenstvo "Kuzma"','Malyar','45000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Vadim','Sergeyevich','Novitsky', ' ',' ','Men',1631,516165,'UFMS 35', ' ','St. Petersburg','Irinovsky',38,262,'RJD','Provodnik','30000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Nikolai','Mihaylovich','Lukin', ' ',' ','Men',8909,118733,'UFMS 134', ' ','St. Petersburg','Tchaikovskogo',51,80,'Agenstvo "Absolyut"','Strahovoi agent','67000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Maxim','Nikolaevich','Ivanov', ' ',' ','Men',4263,435625,'UFMS 76', ' ','St. Petersburg','Cherkasova',7,62,'Agenstvo "Kuzma"','Slesar','35000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Anton','Vladimirovich','Petrov', ' ',' ','Men',5600,298172,'UFMS 67', ' ','St. Petersburg','Chernyakhovsky',31,163,'Gostinica Metropol','Porte','40000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Valeria','Victorovna','Chernokrylova', '

64 1987',' ','Women',1584,537232,'UFMS 78', ' ','St. Petersburg','Nab- Obvodnogo k-',52,276,'arhpro','arhitektor','90000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Aleksey','Olegovich','Alekseev', ' ',' ','Men',5889,146641,'UFMS 123', ' ','St. Petersburg','Ordinarnay',83,142,'OAO "Femida"','Yurist','80000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Anastasia','Olegovna','Leonidova', ' ',' ','Women',8322,752550,'UFMS 106', ' ','St. Petersburg','Fanerniy',99,4,'Centralnaya bolnica 3','Nevrolog','50000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Ekaterina','Nikolaevna','Gorohova', ' ',' ','Women',5517,726059,'UFMS 71', ' ','St. Petersburg','Fermskoe',22,221,'Ermitaj','Istorik','35000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Daria','Vladimirovna','Kochergina', ' ',' ','Women',8020,980340,'UFMS 23', ' ','St. Petersburg','Fontanki nab-',23,96,'russkii muzei','restavrator','46000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Denis','Sergeyevich','Belov', ' ',' ','Men',7579,451511,'UFMS 34', ' ','St. Petersburg','Rubinstein',28,124,'Konditerskaya Sever','Povar','75000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Oleg','Anatolevich','Miromov', ' ',' ','Men',3342,361761,'UFMS 45', ' ','St. Petersburg','Gzhatskaya',37,34,'Agenstvo Salma','Perevodchik','52000'); INSERT INTO Clients (Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,Pub lishedp,datep,city,street,home,apartment,job, JobTitle,Salary) VALUES ('Maxim','Alexandrovich','Shilov', ' ',' ','Men',6866,418172,'UFMS 56', ' ','St. Petersburg','Kharchenko',80,14,'LAES','Injener','50000'); INSERT INTO Guarantor VALUES ('Alexander','Anatolevich','Ivanov',' ',' ','Men','St. Petersburg','Irinovsky','11','242','Salon krasoti "Janna"','Parikmaher','30000'); INSERT INTO Guarantor VALUES ('Nikolai','Olegovich','Petrov',' ',' ','Men','St. Petersburg','Cherkasova','51','80',' OAO "Dins"','Menedjer po PR','50000'); INSERT INTO Guarantor VALUES ('Sergey','Alexandrovich','Sidorov',' ',' ','Men','St. Petersburg','Nab. Obvodnogo k.','77','190','oao "Femida"','Ekonomist','65000'); INSERT INTO Guarantor VALUES ('Nikolai','Mihaylovich','Sergeev',' ',' ','Men','St. Petersburg','Rubinstein','93','167','Agentstvo "Northwest" ','Injener konstruktor','45000'); INSERT INTO Guarantor VALUES ( 'Maria','Vladimirovna','Frolova', ' ',' ','Women','St. Petersburg', 'Kharchenko','62','200','Mariinskii teatr','rejisser','60000'); INSERT INTO Guarantor VALUES ('Olga','Olegovna','Konstantinova', '

65 1986',' ','Women','St. Petersburg','Ivana Fomina','68','129','Centralnaya bolnica 42 ','Androlog','40000'); INSERT INTO Guarantor VALUES ('Ruslan','Sergeyevich','Semenov',' ',' ','Men','St. Petersburg','Avangardnaya','61','30','Notarialnaya kontora','notarius','55000'); INSERT INTO Guarantor VALUES ('Victor','Alexandrovich','Palevin', ' ',' ','Men','St. Petersburg','Marshala Govorova',32,97,'OOO "Gasad"','Kopiraiter','35000'); INSERT INTO Guarantor VALUES ('Vadim','Olegovich','Belov', ' ',' ','Men','St. Petersburg','Fanerniy',38,262,'Aleksandrovskii teatr','horeograf','45000'); INSERT INTO Guarantor VALUES ('Alexandra','Nikolaevna','Petrova', ' ',' ','Women','St. Petersburg','Tchaikovskogo',79,259,'Veterinarnaya klinika 43','Veterinar','40000'); INSERT INTO Account VALUES (1,' ',780000); INSERT INTO Account VALUES (2,' ',530000); INSERT INTO Account VALUES (3,' ',250000); INSERT INTO Account VALUES (4,' ',650000); INSERT INTO Account VALUES (5,' ',560000); INSERT INTO Account VALUES (6,' ',470000); INSERT INTO Account VALUES (7,' ',590000); INSERT INTO Account VALUES (8,' ',560000); INSERT INTO Account VALUES (9,' ',490000); INSERT INTO Account VALUES (10,' ',780000); INSERT INTO Account VALUES (11,' ',45000); INSERT INTO Account VALUES (12,' ',100); INSERT INTO Account VALUES (13,' ',1200); INSERT INTO Account VALUES (14,' ',5400); INSERT INTO Account VALUES (15,' ',7800); INSERT INTO Account VALUES (16,' ',7856); INSERT INTO Account VALUES (17,' ',90231); INSERT INTO Account VALUES (18,' ',4532); INSERT INTO Account VALUES (19,' ',5849); INSERT INTO Account VALUES (20,' ',3483); 65

66 66 INSERT INTO Password VALUES (1,'AlexanderOvsov','6c7aed14f92152fd486072c09233c cba'); INSERT INTO Password VALUES (2,'VictorMikhalkov','aec9f133494f8c2a66c ecf ee'); INSERT INTO Password VALUES (3,'NikolaiRostov','59cec81ae60ce63b af39fcda6e708036'); INSERT INTO Password VALUES (4,'RuslanMalevich','c452de9f1148e0df10d9e450e8fc142b690b650c'); INSERT INTO Password VALUES (5,'AlexandraKulikova','21210d94dd0120fb1661e288f9215c d97'); INSERT INTO Password VALUES (6,'MariaVastkina','34284e4596d5d9395f7c94e66668cc f4d'); INSERT INTO Password VALUES (7,'OlgaDrygina', 'b32b47ae8ba0d520e8741e84b5a1be8ab1070c76'); INSERT INTO Password VALUES (8,'SergeyGorshochnikov','ad64ad943774ef8d9b26e53f6b614ba4cbbe7b56') ; INSERT INTO Password VALUES (9,'VadimNovitsky','2260b4274a122cb222e0c0285b9f3e26eb056110'); INSERT INTO Password VALUES (10,'NikolaiLukin','36de75741a67b2fcd58ab2000aa ee0b67'); INSERT INTO Password VALUES (11,'MaximIvanov','654f8763abfa9a496aeb0a4651e7a75ea27d4903'); INSERT INTO Password VALUES (12,'AntonPetrov','396ad3d11eecc591aa3b ede0ca61b22af'); INSERT INTO Password VALUES (13,'ValeriaChernokrylova','aa5a42e9ed821be3beb7765ec4b0aae91652ccea '); INSERT INTO Password VALUES (14,'AlekseyAlekseev','cf6c57a0394baab4b5d6987a65ed20c4ec067838'); INSERT INTO Password VALUES (15,'AnastasiaLeonidova','28c8ec4bc108e977e5315aaaf3b602aafffcf65f') ; INSERT INTO Password VALUES (16,'EkaterinaGorohova','8383b2ad7d7e4e f97d9fc00ff6142'); INSERT INTO Password VALUES (17,'DariaKochergina','87eaa88e6b10cb26460f149f888ce253045de0c7'); INSERT INTO Password VALUES (18,'DenisBelov','c301a066b00b5e6b74c97502d43a5394e9de576c'); INSERT INTO Password VALUES (19,'OlegMiromov','087888bd b0c176f3e e7ff9944'); INSERT INTO Password VALUES (20,'MaximShilov','f246f1f544ae797bcadff2d719f0a50d7ef26490'); INSERT INTO Password VALUES (0,'MarinaIvanova','baa46e05a04a69591bef7100d1b7bce532512b0a'); INSERT INTO Password VALUES (0,'MaximPetrov','6d067216db9b4229b0f b22cd436c2f2fc'); INSERT INTO Password VALUES (0,'AleksandraSidorova','318583a7b209a08c3c9005d08a9fc663d8cf576'); INSERT INTO Password VALUES (0,'AlekseyMartinov','1be6bc7167b85dab7b6a796ef731aa62e8d9e97e');

67 67 INSERT INTO Password VALUES (0,'ValeyriyLeonov','e37140ab01d5ab757c0b26ec1dbadc4e3033d2db'); INSERT INTO Credit VALUES (1,'970743',' ','1','2','15','90000','12','Potrebitelskii',100000); INSERT INTO Credit VALUES (2,'723932',' ',1,'1','15','158000','12','Potrebitelskii',200000); INSERT INTO Credit VALUES (3,'923939',' ',1,0,'20','75000','12','Potrebitelskii',150000); INSERT INTO Credit VALUES (4,'684589',' ',1,4,15,240000,24,'Potrebitelskii',350000); INSERT INTO Credit VALUES (5,'982501',' ',1,0,15,20000,6,'Potrebitelskii',35000); INSERT INTO Credit VALUES (6,'685449',' ',1,0,18,40000,8,'Potrebitelskii',50000); INSERT INTO Credit VALUES (7,'158850',' ',1,10,19,55000,12,'Potrebitelskii',100000); INSERT INTO Credit VALUES (8,402133, ' ',1,0,20,300000,24,'Potrebitelskii',370000); INSERT INTO Credit VALUES (9,323951, ' ',1,9,17,30000,6,'Potrebitelskii',45000); INSERT INTO Credit VALUES (10,718996, ' ',1,3,13,90000,12,'Potrebitelskii',120000); INSERT INTO Credit VALUES (11,404992, ' ',1,6,16,30000,8,'Potrebitelskii',50000); INSERT INTO Credit VALUES (12,861636, ' ',1,0,15,89000,18,'Potrebitelskii',150000); INSERT INTO Credit VALUES (13,762113, ' ',1,0,18,200000,24,'Potrebitelskii',400000); INSERT INTO Credit VALUES (14,815787, ' ',1,0,15,237000,24,'Potrebitelskii',400000); INSERT INTO Credit VALUES (15,833121, ' ',1,8,17,145000,12,'Potrebitelskii',200000); INSERT INTO Credit VALUES (16,709587, ' ',1,0,20,95000,18,'Potrebitelskii',150000); INSERT INTO Credit VALUES (17,137385, ' ',1,0,15,17000,6,'Potrebitelskii',37000); INSERT INTO Credit VALUES (18,417085, ' ',1,0,19,30000,8,'Potrebitelskii',50000); INSERT INTO Credit VALUES (19,105474, ' ',1,5,18,24000,12,'Potrebitelskii',45000); INSERT INTO Credit VALUES (20,117667,' ',1,7,16,100000,18,'Potrebitelskii',120000);

68 68 Приложение 4 Алгоритм работы приложения клиента Старт Получение логина и пароля пользователя Сравнение со значениями в базе Вход от имени конкретного пользователя Выбор действия пользователем Отправка SQLзапроса базе данных Получение ответа от базы данных Вывод информации пользователю Завершение работы докум. Подпись Дата Выполнил Чистякова Проверил Малыхина Блок-схема алгоритма работы приложения клиента ВКРБ.ИИТ ПЗ Лит. Лист Листов 1 1 СПбПУ

69 69 Приложение 5. Код приложения клиента на языке С++ с использование инструментария Qt Clientform.h #ifndef CLIENTFORM_H #define CLIENTFORM_H #include <QMainWindow> #include "mainwindow.h" #include "findcreditclient.h" #include "findaccount.h" #include "updateclientclient.h" #include "updatepassword.h" #include "paymentcredit.h" namespace Ui class ClientForm; //Класс создания основного окна приложения для клиента банка class ClientForm : public QMainWindow Q_OBJECT public: explicit ClientForm(QString Login, QString idclient, QWidget *parent = 0); ~ClientForm(); QString idclienta; private slots: void on_action_6_triggered(); void on_action_7_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); void on_pushbutton_3_clicked(); void on_pushbutton_4_clicked(); void on_pushbutton_5_clicked(); private: Ui::ClientForm *ui; ; #endif // CLIENTFORM_H Clientform.cpp #include "clientform.h" #include "ui_clientform.h" #include "updatepassword.h"

70 70 ClientForm::ClientForm(QString Login, QString idclient, QWidget *parent) : QMainWindow(parent), ui(new Ui::ClientForm) ui->setupui(this); idclienta=idclient; qdebug()<<idclienta; ui->label->settext("здравствуйте, "+Login); //приветствие клиента по имени ClientForm::~ClientForm() delete ui; //Функция смены пользователя void ClientForm::on_action_6_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void ClientForm::on_action_7_triggered() close(); //Функция поиска кредитов, перед выводом информации. В случаи отсутствия кредитов выводится оповещение void ClientForm::on_pushButton_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString b = "Select* From Credit WHERE idclient="; query.exec(b+"'"+idclienta+"'"); query.next(); if(query.value(query.record().indexof("contractnumber")).tostring().isempty() ) QMessageBox msgbox; msgbox.settext("у вас нет кредитов."); msgbox.exec(); else FindCreditClient* FCC = new FindCreditClient(idClienta); FCC->show(); this->close(); //Функция поиска счетов, перед выводом информации. В случаи отсутствия счетов выводится оповещение

71 71 void ClientForm::on_pushButton_2_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString b = "Select Number From Account WHERE idclient="; query.exec(b+"'"+idclienta+"'"); query.next(); if(query.value(query.record().indexof("number")).tostring().isempty()) QMessageBox msgbox; msgbox.settext("у вас нет счетов."); msgbox.exec(); else FindAccount* FA = new FindAccount(idClienta); FA->show(); this->close(); //Функция возврата в главнле меню void ClientForm::on_pushButton_3_clicked() UpDateClientClient* UDCC = new UpDateClientClient(idClienta); UDCC->show(); this->close(); //Функция перехода к изменению пароля void ClientForm::on_pushButton_4_clicked() UpDatePassword* UDP = new UpDatePassword(idClienta); UDP->show(); this->close(); //Функция перехода к оплате кредита void ClientForm::on_pushButton_5_clicked() PaymentCredit* PC = new PaymentCredit(idClienta); PC->show(); this->close(); findaccount.h #ifndef FINDACCOUNT_H #define FINDACCOUNT_H #include <QMainWindow> #include "clientform.h" #include "mainwindow.h" namespace Ui class FindAccount; //Класс поиска информации о счете клиентом банка class FindAccount : public QMainWindow Q_OBJECT

72 72 public: explicit FindAccount(QString idclient, QWidget *parent = 0); ~FindAccount(); QLineEdit* LE; QString idclienta,name; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); private: Ui::FindAccount *ui; ; #endif // FINDACCOUNT_H findaccount.cpp #include "findaccount.h" #include "ui_findaccount.h" FindAccount::FindAccount(QString idclient, QWidget *parent) : QMainWindow(parent), ui(new Ui::FindAccount) //Поиск всех счетов пользователя и вывод их номеров ui->setupui(this); idclienta=idclient; qdebug()<<idclienta; QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select* From Clients WHERE id="; query.exec(a+"'"+idclient+"'"); query.next(); Name = query.value(query.record().indexof("name")).tostring(); QString b = "Select Number From Account WHERE idclient="; query.exec(b+"'"+idclient+"'"); while (query.next()) QString number = query.value(query.record().indexof("number")).tostring(); ui->combobox->additem(number); FindAccount::~FindAccount()

73 73 delete ui; void FindAccount::on_action_triggered() ClientForm* cliform = new ClientForm(Name,idClienta); cliform->show(); this->close(); void FindAccount::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void FindAccount::on_action_3_triggered() close(); void FindAccount::on_pushButton_clicked() on_action_triggered(); //Функция вывода информации о конкретном счете void FindAccount::on_pushButton_2_clicked() ui->label->settext("информация о счете"); ui->label->repaint(); ui->combobox->hide(); LE = new QLineEdit(this); LE->setGeometry(0,60,391,20); QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QString AccountData; QString Number = ui->combobox->currenttext(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString b = "Select Amount From Account WHERE Number="; query.exec(b+"'"+number+"'"); query.next(); AccountData= "\nсумма на счету:"+query.value(query.record().indexof("amount")).tostring(); LE->setText(AccountData); LE->show(); ui->pushbutton_2->hide(); findclient.h #ifndef FINDCLIENT_H #define FINDCLIENT_H #include <QMainWindow> #include <rabotnikbankaform.h>

74 74 #include "mainwindow.h" #include <QTextEdit> namespace Ui class FindClient; //Класс поиска клиента работником банка class FindClient : public QMainWindow Q_OBJECT public: explicit FindClient(QString Login, QWidget *parent = 0); ~FindClient(); QString LoginRabotnika; private slots: void on_pushbutton_clicked(); void on_action_triggered(); void on_action_3_triggered(); void on_action_2_triggered(); void on_pushbutton_2_clicked(); private: Ui::FindClient *ui; ; #endif // FINDCLIENT_H findclient.cpp #include "findclient.h" #include "ui_findclient.h" FindClient::FindClient(QString Login,QWidget *parent) : QMainWindow(parent), ui(new Ui::FindClient) ui->setupui(this); LoginRabotnika=Login; ui->lineedit->setplaceholdertext("имя");//вывод текста в фоновом режиме ui->lineedit_2->setplaceholdertext("фамилия"); ui->lineedit_3->setplaceholdertext("серия"); ui->lineedit_4->setplaceholdertext("номер"); FindClient::~FindClient() delete ui; //Функция возвращения к основному меню работника банка void FindClient::on_pushButton_clicked() RabotnikBankaForm* rbf = new RabotnikBankaForm(LoginRabotnika); rbf->show(); this->close();

75 75 void FindClient::on_action_triggered() on_pushbutton_clicked(); void FindClient::on_action_3_triggered() close(); //Функция смены пользователя void FindClient::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); //Функция вывода информации о клиенте void FindClient::on_pushButton_2_clicked() ui->label->hide(); QTextEdit* Infa = new QTextEdit(this); QTextEdit* Adccount = new QTextEdit(this); QTextEdit* Credit = new QTextEdit(this); Adccount->setGeometry(ui->lineEdit->geometry()); Infa->setGeometry(ui->lineEdit_2->geometry()); Credit->setGeometry(ui->lineEdit_3->geometry()); Infa->setFixedHeight(100); Adccount->setFixedHeight(40); Credit->setFixedHeight(120); Infa->show(); Adccount->show(); Credit->show(); ui->lineedit->hide(); ui->lineedit_2->hide(); ui->lineedit_3->hide(); ui->lineedit_4->hide(); ui->pushbutton_2->hide(); QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QString idclient,accountdata, ClientDate, CreditDate, GuarantorDate, idguarantor,statuscredit; int Status; QString Name = ui->lineedit->text(); QString Family = ui->lineedit_2->text(); QString Series = ui->lineedit_3->text(); QString Number = ui->lineedit_4->text(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select* From Clients WHERE Name="; query.exec(a+"'"+name+"' AND LastName="+"'"+Family+"' AND SeriesP="+"'"+Series+"' AND NumberP="+"'"+Number+"'"); query.next(); idclient = query.value(query.record().indexof("id")).tostring(); //Проверка наличия клиента if(idclient.isnull()) QMessageBox msgbox; msgbox.settext("клиент не найден.\nпопробуйте еще раз."); msgbox.exec(); FindClient* FC = new FindClient(LoginRabotnika);

76 76 FC->show(); this->close(); ClientDate = "\nимя:"+query.value(query.record().indexof("name")).tostring()+ "\nотчество:"+query.value(query.record().indexof("otch")).tostring()+ "\nфамилия:"+query.value(query.record().indexof("lastname")).tostring()+ "\nдата рождения:"+query.value(query.record().indexof("bday")).tostring()+ "\nтелефон:"+query.value(query.record().indexof("phone")).tostring()+ "\nсерия паспорта:"+query.value(query.record().indexof("seriesp")).tostring()+ "\nномер паспорта:"+query.value(query.record().indexof("numberp")).tostring()+ "\nкем и когда выдан:"+query.value(query.record().indexof("publishedp")).tostring()+ " "+query.value(query.record().indexof("datep")).tostring()+ "\nадрес проживания: г."+query.value(query.record().indexof("city")).tostring()+ " ул."+query.value(query.record().indexof("street")).tostring()+ " д."+query.value(query.record().indexof("home")).tostring()+ " кв. "+query.value(query.record().indexof("apartment")).tostring()+ "\nместо работы:"+query.value(query.record().indexof("job")).tostring()+ "\nдолжность:"+query.value(query.record().indexof("jobtitle")).tostring()+ "\nзарплата:"+query.value(query.record().indexof("salary")).tostring(); QString b = "Select* From Account WHERE idclient="; query.exec(b+"'"+idclient+"'"); query.next(); AccountData= "\nномер счета:"+query.value(query.record().indexof("number")).tostring()+ "\nсумма на счету:"+query.value(query.record().indexof("amount")).tostring(); QString c = "Select* From Credit WHERE idclient="; query.exec(c+"'"+idclient+"'"); while (query.next()) Status = query.value(query.record().indexof("status")).toint(); if(status==1) StatusCredit="Активен"; else StatusCredit="Неактивен"; idguarantor = query.value(query.record().indexof("idguarantor")).tostring(); CreditDate ="\nномер кредитного договора:"+query.value(query.record().indexof("contractnumber")).tostring()+ "\nстатус:"+statuscredit+"\nостаток:"+query.value(query.record().indexof("res idue")).tostring()+ "\nпроцент:"+query.value(query.record().indexof("percent")).tostring()+"\nинф ормация о поручителе:"; if(idguarantor!=0) QString b = "Select Name,LastName,Otch,Bday, Phone From Guarantor WHERE id="; query.exec(b+"'"+idguarantor+"'"); query.next();

77 77 GuarantorDate = "\nимя:"+query.value(query.record().indexof("name")).tostring()+ "\nотчество:"+query.value(query.record().indexof("otch")).tostring()+ "\nфамилия:"+query.value(query.record().indexof("lastname")).tostring()+ "\nдата рождения:"+query.value(query.record().indexof("bday")).tostring()+ "\nтелефон:"+query.value(query.record().indexof("phone")).tostring(); else GuarantorDate="Поручителя нет"; CreditDate=CreditDate+GuarantorDate; QString Login = Name+Family; QString d = "INSERT INTO Audit VALUES('"; query.exec(d+"0','" +LoginRabotnika+ "','Работник','Просмотр данных пользователя','"+idclient+"','клиент','"+login+"',datetime('now'))"); Infa->setText("Общая информация:"+clientdate); Adccount->setText("Номера счета:"+accountdata); Credit->setText("Информация о кредитах:"+creditdate); findcredit.h #ifndef FINDCREDIT_H #define FINDCREDIT_H #include <QMainWindow> #include <rabotnikbankaform.h> #include "mainwindow.h" namespace Ui class FindCredit; //Класс поиска кредита работником банка class FindCredit : public QMainWindow Q_OBJECT public: explicit FindCredit(QString Login, QWidget *parent = 0); ~FindCredit(); QString LoginRabotnika; private slots: void on_action_triggered(); void on_action_3_triggered(); void on_action_4_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); private: Ui::FindCredit *ui; ; #endif // FINDCREDIT_H

78 78 findcredit.cpp #include "findcredit.h" #include "ui_findcredit.h" FindCredit::FindCredit(QString Login,QWidget *parent) : QMainWindow(parent), ui(new Ui::FindCredit) ui->setupui(this); ui->textedit->hide(); LoginRabotnika=Login; FindCredit::~FindCredit() delete ui; //Функция возвращения к основному меню работника банка void FindCredit::on_action_triggered() RabotnikBankaForm* rbf = new RabotnikBankaForm(LoginRabotnika); rbf->show(); this->close(); //Функция смены пользователя void FindCredit::on_action_3_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void FindCredit::on_action_4_triggered() close(); void FindCredit::on_pushButton_clicked() on_action_triggered(); //Функция вывода информации о кредите void FindCredit::on_pushButton_2_clicked() QString idguarantor,reside, Percent, GuarantorDate, StatusCredit,idClient,ClientDate; int Status; QString ContractNumber = ui->lineedit->text(); qdebug()<<contractnumber; QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select * From Credit WHERE ContractNumber='"; query.exec(a+contractnumber+"'"); query.next();

79 qdebug()<<a+contractnumber; idclient=query.value(query.record().indexof("idclient")).tostring(); Status = query.value(query.record().indexof("status")).toint(); if(status==1) StatusCredit="Активен"; else StatusCredit="Неактивен"; idguarantor = query.value(query.record().indexof("idguarantor")).tostring(); Reside = query.value(query.record().indexof("residue")).tostring(); Percent = query.value(query.record().indexof("percent")).tostring(); if(idguarantor!=0) QString b = "Select Name,LastName,Otch,Bday, Phone From Guarantor WHERE id="; query.exec(b+"'"+idguarantor+"'"); query.next(); GuarantorDate = "\nимя:"+query.value(query.record().indexof("name")).tostring()+ "\nотчество:"+query.value(query.record().indexof("otch")).tostring()+ "\nфамилия:"+query.value(query.record().indexof("lastname")).tostring()+ "\nдата рождения:"+query.value(query.record().indexof("bday")).tostring()+ "\nтелефон:"+query.value(query.record().indexof("phone")).tostring(); else GuarantorDate="Поручителя нет"; 79 QString c = "Select Name,Otch,LastName,Phone From Clients WHERE id="; query.exec(c+"'"+idclient+"'"); query.next(); ClientDate = "\nимя:"+query.value(query.record().indexof("name")).tostring()+ "\nотчество:"+query.value(query.record().indexof("otch")).tostring()+ "\nфамилия:"+query.value(query.record().indexof("lastname")).tostring()+ "\nтелефон:"+query.value(query.record().indexof("phone")).tostring(); ui->label->settext("информация о кредите"); ui->lineedit->hide(); ui->textedit->settext("данные клиента:"+clientdate+"\nстатус:"+statuscredit+"\nостаток:"+reside+"\nпроцент: "+Percent+"\nДанные поручителя:"+guarantordate); ui->textedit->show(); ui->label->repaint(); ui->pushbutton_2->hide(); findcreditclient.h #ifndef FINDCREDITCLIENT_H #define FINDCREDITCLIENT_H #include <QMainWindow> #include "clientform.h" #include "mainwindow.h" #include <QTextEdit>

80 80 namespace Ui class FindCreditClient; //Класс поиска информации о кредите клиентом банка class FindCreditClient : public QMainWindow Q_OBJECT public: explicit FindCreditClient(QString idclient, QWidget *parent = 0); ~FindCreditClient(); QTextEdit* TE; QString idclienta, Name; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); private: Ui::FindCreditClient *ui; ; #endif // FINDCREDITCLIENT_H findcreditclient.cpp #include "findcreditclient.h" #include "ui_findcreditclient.h" FindCreditClient::FindCreditClient(QString idclient, QWidget *parent) : QMainWindow(parent), ui(new Ui::FindCreditClient) //Поиск информации о кредитах пользователя ui->setupui(this); idclienta=idclient; QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select* From Clients WHERE id="; query.exec(a+"'"+idclient+"'"); query.next(); Name = query.value(query.record().indexof("name")).tostring(); QString b = "Select* From Credit WHERE idclient="; query.exec(b+"'"+idclient+"'"); while (query.next()) QString number = query.value(query.record().indexof("contractnumber")).tostring(); ui->combobox->additem(number);

81 81 FindCreditClient::~FindCreditClient() delete ui; //Функция возвращения к основному меню клиента банка void FindCreditClient::on_action_triggered() ClientForm* cliform = new ClientForm(Name,idClienta); cliform->show(); this->close(); //Функция смены пользователя void FindCreditClient::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void FindCreditClient::on_action_3_triggered() close(); void FindCreditClient::on_pushButton_clicked() on_action_triggered(); //Функция вывода информации о конкретном кредите void FindCreditClient::on_pushButton_2_clicked() ui->label->settext("информация о кредите"); ui->label->repaint(); ui->combobox->hide(); TE = new QTextEdit(this); ui->pushbutton_2->hide(); QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QString idguarantor,reside, Percent, GuarantorDate, StatusCredit; int Status,id; QString ContractNumber = ui->combobox->currenttext(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select* From Credit WHERE ContractNumber="; query.exec(a+"'"+contractnumber+"'"); query.next(); Status = query.value(query.record().indexof("status")).toint(); if(status==1) StatusCredit="Активен"; else StatusCredit="Неактивен"; id= query.value(query.record().indexof("idguarantor")).toint(); idguarantor = query.value(query.record().indexof("idguarantor")).tostring(); Reside = query.value(query.record().indexof("residue")).tostring(); Percent = query.value(query.record().indexof("percent")).tostring(); qdebug()<<idguarantor; if(id!=0)

82 82 QString b = "Select Name,LastName,Otch, Phone From Guarantor WHERE id="; query.exec(b+"'"+idguarantor+"'"); query.next(); GuarantorDate = "\nимя:"+query.value(query.record().indexof("name")).tostring()+ "\nотчество:"+query.value(query.record().indexof("otch")).tostring()+ "\nфамилия:"+query.value(query.record().indexof("lastname")).tostring()+ "\nтелефон:"+query.value(query.record().indexof("phone")).tostring(); else GuarantorDate="Поручителя нет"; TE->setGeometry(0,60,391,100); TE- >settext("статус:"+statuscredit+"\nостаток:"+reside+"\nпроцент:"+percent+"\nд анные поручителя:"+guarantordate);; TE->show(); findguarantor.h #ifndef FINDGUARANTOR_H #define FINDGUARANTOR_H #include <QMainWindow> #include <rabotnikbankaform.h> #include "mainwindow.h" namespace Ui class FindGuarantor; //Класс поиска информации о поручителе работником банка class FindGuarantor : public QMainWindow Q_OBJECT public: explicit FindGuarantor(QString Login,QWidget *parent = 0); ~FindGuarantor(); QString LoginRabotnika; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); private: Ui::FindGuarantor *ui; ; #endif // FINDGUARANTOR_H findguarantor.cpp

83 83 #include "findguarantor.h" #include "ui_findguarantor.h" FindGuarantor::FindGuarantor(QString Login, QWidget *parent) : QMainWindow(parent), ui(new Ui::FindGuarantor) ui->setupui(this); LoginRabotnika=Login; ui->lineedit->setplaceholdertext("имя");//вывод текста в фоновом режиме ui->lineedit_6->setplaceholdertext("отчество"); ui->lineedit_7->setplaceholdertext("фамилия"); ui->lineedit_8->setplaceholdertext("телефон"); FindGuarantor::~FindGuarantor() delete ui; //Функция возвращения к основному меню работника банка void FindGuarantor::on_action_triggered() RabotnikBankaForm* rbf = new RabotnikBankaForm(LoginRabotnika); rbf->show(); this->close(); //Функция для входа от имени нового пользователя void FindGuarantor::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void FindGuarantor::on_action_3_triggered() close(); void FindGuarantor::on_pushButton_clicked() on_action_triggered(); //Функция вывода информации о поручителе void FindGuarantor::on_pushButton_2_clicked() ui->label->hide(); QTextEdit* Infa = new QTextEdit(this); Infa->setGeometry(ui->lineEdit->geometry()); Infa->setFixedHeight(100); Infa->setFixedWidth(300); Infa->show(); ui->lineedit->hide(); ui->lineedit_6->hide(); ui->lineedit_7->hide(); ui->lineedit_8->hide(); ui->pushbutton_2->hide(); QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QString GuarantorDate; QString Name = ui->lineedit->text(); QString Otch = ui->lineedit_6->text();

84 84 QString Family = ui->lineedit_7->text(); QString Phone = ui->lineedit_8->text(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select* From Guarantor WHERE Name="; query.exec(a+"'"+name+"' AND Otch="+"'"+Otch+"' AND LastName="+"'"+Family+"' AND Phone="+"'"+Phone+"'"); query.next(); QString check = query.value(query.record().indexof("name")).tostring(); if(check.isnull()) QMessageBox msgbox; msgbox.settext("поручитель не найден.\nпопробуйте еще раз."); msgbox.exec(); FindGuarantor* FG = new FindGuarantor(LoginRabotnika); FG->show(); this->close(); GuarantorDate = "\nимя:"+query.value(query.record().indexof("name")).tostring()+ "\nотчество:"+query.value(query.record().indexof("otch")).tostring()+ "\nфамилия:"+query.value(query.record().indexof("lastname")).tostring()+ "\nдата рождения:"+query.value(query.record().indexof("bday")).tostring()+ "\nтелефон:"+query.value(query.record().indexof("phone")).tostring()+ "\nадрес проживания: г."+query.value(query.record().indexof("city")).tostring()+ " ул."+query.value(query.record().indexof("street")).tostring()+ " д."+query.value(query.record().indexof("home")).tostring()+ " кв. "+query.value(query.record().indexof("apartment")).tostring()+ "\nместо работы:"+query.value(query.record().indexof("job")).tostring()+ "\nдолжность:"+query.value(query.record().indexof("jobtitle")).tostring()+ "\nзарплата:"+query.value(query.record().indexof("salary")).tostring(); Infa->setText("Общая информация:"+guarantordate); mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLineEdit> #include <rabotnikbankaform.h> #include <clientform.h> #include <QCryptographicHash> #include <QtSql/QtSql> #include <iostream> #include <qdebug.h>

85 85 namespace Ui class MainWindow; //Класс окна входа class MainWindow : public QMainWindow Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); int CountPasswordError; private slots: void on_lineedit_2_textedited(const QString &arg1); void on_lineedit_textedited(const QString &arg1); void on_lineedit_3_textedited(const QString &arg1); void on_lineedit_4_textedited(const QString &arg1); void on_pushbutton_2_clicked(); void on_pushbutton_clicked(); void on_pushbutton_3_clicked(); void timer(); private: Ui::MainWindow *ui; ; #endif // MAINWINDOW_H mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) ui->setupui(this); CountPasswordError=0; MainWindow::~MainWindow() delete ui; void MainWindow::on_lineEdit_4_textEdited(const QString &arg1) ui->lineedit_4->setechomode(qlineedit::password); void MainWindow::on_pushButton_2_clicked()

86 86 ui->lineedit_3->clear(); ui->lineedit_4->clear(); void MainWindow::on_pushButton_clicked() close(); //Функция сравнения введенных логина и пароля с теми, что хранятся в базе void MainWindow::on_pushButton_3_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QString Password,Type,idClienta; int idclient; QString LoginPolz = ui->lineedit_3->text(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select Password From Password WHERE Login="; query.exec(a+"'"+loginpolz+"'"); query.next(); Password = query.value(query.record().indexof("password")).tostring(); //QSqlQuery query; QString b = "Select idclient From Password WHERE Login="; query.exec(b+"'"+loginpolz+"'"); query.next(); idclient = query.value(query.record().indexof("idclient")).toint(); idclienta = query.value(query.record().indexof("idclient")).tostring(); if(idclient==0)type="работник"; else Type="Клиент"; QCryptographicHash* hash; QString PasswordPol = ui->lineedit_4->text(); QByteArray result = hash- >hash(passwordpol.tolatin1(),qcryptographichash::sha1); QString resultat = result.tohex(); if(password==resultat) //Вход работника банка if(idclient==0) RabotnikBankaForm* rabform = new RabotnikBankaForm(LoginPolz); rabform->show(); this->close(); else //Вход клиента банка QSqlQuery query; QString a = "Select Name From Clients WHERE id="; query.exec(a+idclienta); query.next(); QString NameClient = query.value(query.record().indexof("name")).tostring(); qdebug()<<nameclient; ClientForm* cliform = new ClientForm(NameClient,idClienta); cliform->show();

87 this->close(); else CountPasswordError++; if(countpassworderror!=3) QMessageBox msgbox; msgbox.settext("неверный логин или пароль. Попробуйте еще раз"); msgbox.exec(); ui->lineedit_3->clear(); ui->lineedit_4->clear(); if(countpassworderror==3) QMessageBox msgbox; msgbox.settext("неверный логин или пароль.превышено количество попыток входа в приложение"); msgbox.exec(); ui->lineedit_3->clear(); ui->lineedit_4->clear(); CountPasswordError=0; ui->pushbutton_3->setenabled(false); QTimer::singleShot(200000, this, SLOT(timer())); QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "INSERT INTO Audit VALUES('"; query.exec(a+idclienta+ "','" +LoginPolz+ "','" +Type+ "','Превышение количества попыток входа','0','0','0',datetime('now'))"); 87 void MainWindow::timer() ui->pushbutton_3->setenabled(true); newclient.h #ifndef NEWCLIENT_H #define NEWCLIENT_H #include <QMainWindow> #include <rabotnikbankaform.h> #include "mainwindow.h" #include <QPushButton> #include <QCryptographicHash> namespace Ui class NewClient; //Класс добавления нового клиента работником банка class NewClient : public QMainWindow Q_OBJECT public: explicit NewClient(QString Login, QWidget *parent = 0);

88 88 ~NewClient(); void newpassword(); QString idclient,name,family, LoginRabotnika; QPushButton* next; QPushButton* nextnext; void newaccount(); private slots: void on_pushbutton_clicked(); void on_action_triggered(); void on_action_2_triggered(); void on_pushbutton_2_clicked(); void on_next_clicked(); void on_nextnext_clicked(); void on_action_3_triggered(); private: Ui::NewClient *ui; ; #endif // NEWCLIENT_H newclient.cpp #include "newclient.h" #include "ui_newclient.h" NewClient::NewClient(QString Login, QWidget *parent) : QMainWindow(parent), ui(new Ui::NewClient) ui->setupui(this); LoginRabotnika=Login; ui->lineedit->setplaceholdertext("имя"); ui->lineedit_2->setplaceholdertext("отчество"); ui->lineedit_3->setplaceholdertext("фамилия"); ui->lineedit_4->setplaceholdertext("дата рождения"); ui->lineedit_5->setplaceholdertext("номер телефона"); ui->lineedit_6->setplaceholdertext("серия паспорта"); ui->lineedit_7->setplaceholdertext("номер паспорта"); ui->lineedit_8->setplaceholdertext("кем выдан"); ui->lineedit_9->setplaceholdertext("когда выдан"); ui->lineedit_10->setplaceholdertext("город проживания"); ui->lineedit_11->setplaceholdertext("улица"); ui->lineedit_12->setplaceholdertext("дом"); ui->lineedit_13->setplaceholdertext("квартира"); ui->lineedit_14->setplaceholdertext("место работы"); ui->lineedit_15->setplaceholdertext("должность"); ui->lineedit_16->setplaceholdertext("зп"); ui->lineedit_17->setplaceholdertext("пол"); next = new QPushButton("Далее",this); next->setgeometry(610,312,111,23); connect(next,signal(clicked()),this,slot(on_next_clicked())); next->hide(); nextnext = new QPushButton("Далее",this); nextnext->setgeometry(610,312,111,23); connect(nextnext,signal(clicked()),this,slot(on_nextnext_clicked()));

89 89 nextnext->hide(); NewClient::~NewClient() delete ui; //Функция возврата к основному меню работника void NewClient::on_pushButton_clicked() RabotnikBankaForm* rbf = new RabotnikBankaForm(LoginRabotnika); rbf->show(); this->close(); //Функция смены пользователя void NewClient::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void NewClient::on_pushButton_2_clicked() //Проверка ввода всех данных клиента if(ui->lineedit->text().isempty() ui->lineedit_2->text().isempty() ui- >lineedit_3->text().isempty() ui->lineedit_4->text().isempty() ui->lineedit_5- >text().isempty() ui->lineedit_10->text().isempty() ui->lineedit_11- >text().isempty() ui->lineedit_12->text().isempty() ui->lineedit_13- >text().isempty() ui->lineedit_14->text().isempty() ui->lineedit_15- >text().isempty() ui->lineedit_16->text().isempty() ui->lineedit_6- >text().isempty() ui->lineedit_7->text().isempty() ui->lineedit_8- >text().isempty() ui->lineedit_9->text().isempty() ui->lineedit_17- >text().isempty()) QMessageBox msgbox; msgbox.settext("введены не все данные.\nпопробуйте еще раз."); msgbox.exec(); else QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "INSERT INTO Clients(Name,Otch,LastName,Bday,Phone,Gender,SeriesP,NumberP,PublishedP,DateP,City,Street,Home,Apartment,Job, JobTitle,Salary) VALUES ('"; query.exec(a+ui->lineedit->text()+"','"+ ui->lineedit_2->text()+"','"+ ui->lineedit_3->text()+"','"+ ui->lineedit_4->text()+"','"+ ui->lineedit_5->text()+"','"+ ui->lineedit_17->text()+"','"+ ui->lineedit_6->text()+"','"+ ui->lineedit_7->text()+"','"+ ui->lineedit_8->text()+"','"+

90 ui->lineedit_9->text()+"','"+ ui->lineedit_10->text()+"','"+ ui->lineedit_11->text()+"','"+ ui->lineedit_12->text()+"','"+ ui->lineedit_13->text()+"','"+ ui->lineedit_14->text()+"','"+ ui->lineedit_15->text()+"','"+ ui->lineedit_16->text()+"')"); query.next(); QString b = "Select id From Clients WHERE Name="; query.exec(b+"'"+ui->lineedit->text()+"' AND LastName="+"'"+ui- >lineedit_3->text()+"' AND SeriesP="+"'"+ui->lineEdit_6->text()+"' AND NumberP="+"'"+ui->lineEdit_7->text()+"'"); query.next(); idclient = query.value(query.record().indexof("id")).tostring(); Name = ui->lineedit_2->text(); Family = ui->lineedit_3->text(); newaccount(); //Функция изменения внешнего вида окна для добавления счета клиента void NewClient::newAccount() ui->pushbutton->hide(); ui->lineedit->clear(); ui->lineedit->setplaceholdertext("номер счета"); ui->lineedit_2->hide(); ui->lineedit_3->hide(); ui->lineedit_4->hide(); ui->lineedit_5->hide(); ui->lineedit_6->hide(); ui->lineedit_7->hide(); ui->lineedit_8->hide(); ui->lineedit_9->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); ui->lineedit_14->hide(); ui->lineedit_15->hide(); ui->lineedit_16->hide(); ui->lineedit_17->hide(); ui->pushbutton_2->hide(); ui->label->settext("номер счета клиента:"); ui->label->repaint(); next->show(); //Функция добавления счета клиента в базу данных void NewClient::on_next_clicked() if(ui->lineedit->text().isempty()) QMessageBox msgbox; msgbox.settext("не введен номер счета.\nпопробуйте еще раз."); msgbox.exec(); newaccount(); else QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else 90

91 91 QSqlQuery query; QString a = "INSERT INTO Account VALUES ("; query.exec(a+idclient+",'"+ui->lineedit->text()+"','0')"); query.next(); newpassword(); //Функция добавление логина и пароля пользователя void NewClient::on_nextnext_clicked() if(ui->lineedit->text().isempty()) QMessageBox msgbox; msgbox.settext("пароль не введен.\nпопробуйте еще раз."); msgbox.exec(); newpassword(); else if(ui->lineedit->text()!=ui->lineedit_2->text()) QMessageBox msgbox; msgbox.settext("пароли не совпадают.\nпопробуйте еще раз."); msgbox.exec(); newpassword(); else QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QString Login = Name+Family;//Формирование логина QCryptographicHash* hash; QString PasswordPol = ui->lineedit->text(); QByteArray result = hash- >hash(passwordpol.tolatin1(),qcryptographichash::sha1);//вычисление значения хэш-функции QString Password = result.tohex(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "INSERT INTO Password VALUES("; query.exec(a+idclient+",'"+login+"','"+password+"')"); query.next(); ui->label->settext("новый клиент успешно добавлен в базу данных"); ui->label->repaint(); nextnext->hide(); ui->lineedit_2->hide(); ui->lineedit->hide(); ui->pushbutton->show(); void NewClient::on_action_3_triggered() close(); //Функция изменения внешнего вида окна для добавления логина и пароля пользователя void NewClient::newpassword() ui->lineedit->clear();

92 92 ui->lineedit_2->clear(); ui->lineedit->setechomode(qlineedit::password); ui->lineedit->setplaceholdertext("пароль"); ui->lineedit_2->show(); ui->lineedit_2->setechomode(qlineedit::password); ui->lineedit_2->setplaceholdertext("повторите пароль"); ui->label->settext("пароль клиента (должен ввести сам улиент):"); ui->label->repaint(); next->hide(); nextnext->show(); QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString Login = Name+Family; QString a = "INSERT INTO Audit VALUES('"; query.exec(a+"0','" +LoginRabotnika+ "','Работник','Добавление нового пользователя','"+idclient+"','клиент','"+login+"',datetime('now'))"); newcredit.h #ifndef NEWCREDIT_H #define NEWCREDIT_H #include <QMainWindow> #include <QMainWindow> #include <rabotnikbankaform.h> #include "mainwindow.h" #include <QPushButton> #include <QLabel> #include <QMessageBox> namespace Ui class NewCredit; //Класс добавления нового кредита в базу данных class NewCredit : public QMainWindow Q_OBJECT public: explicit NewCredit(QString Login, QWidget *parent = 0); ~NewCredit(); QString idclient,idcurantor,contract,loginrabotnika,name,family; int id; QPushButton* next; QPushButton* nextnext; int Diolog(); void newguarantor(); void oldguarantor(); void theend(); void CreditData(); private slots: void on_pushbutton_clicked(); void on_action_triggered();

93 93 void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_2_clicked(); void on_next_clicked(); void on_nextnext_clicked(); private: Ui::NewCredit *ui; ; #endif // NEWCREDIT_H newcredit.cpp #include "newcredit.h" #include "ui_newcredit.h" NewCredit::NewCredit(QString Login, QWidget *parent) : QMainWindow(parent), ui(new Ui::NewCredit) ui->setupui(this); LoginRabotnika=Login; ui->lineedit->setplaceholdertext("имя"); ui->lineedit_2->setplaceholdertext("фамилия"); ui->lineedit_3->setplaceholdertext("серия"); ui->lineedit_4->setplaceholdertext("номер"); ui->lineedit_5->hide(); ui->lineedit_6->hide(); ui->lineedit_7->hide(); ui->lineedit_8->hide(); ui->lineedit_9->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); next = new QPushButton("Далее",this); next->setgeometry(610,320,111,23); next->hide(); nextnext = new QPushButton("Далее",this); nextnext->setgeometry(610,320,111,23); nextnext->hide(); connect(nextnext,signal(clicked()),this,slot(on_nextnext_clicked())); connect(next,signal(clicked()),this,slot(on_next_clicked())); NewCredit::~NewCredit() delete ui; //Функция возврата к основному меню работника void NewCredit::on_pushButton_clicked() RabotnikBankaForm* rbf = new RabotnikBankaForm(LoginRabotnika); rbf->show(); this->close();

94 94 void NewCredit::on_action_triggered() on_pushbutton_clicked(); //Функция смены пользователя void NewCredit::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void NewCredit::on_action_3_triggered() close(); //Функция поиска клиента void NewCredit::on_pushButton_2_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); Name = ui->lineedit->text(); Family = ui->lineedit_2->text(); QString Series = ui->lineedit_3->text(); QString Number = ui->lineedit_4->text(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select id From Clients WHERE Name="; query.exec(a+"'"+name+"' AND LastName="+"'"+Family+"' AND SeriesP="+"'"+Series+"' AND NumberP="+"'"+Number+"'"); query.next(); idclient = query.value(query.record().indexof("id")).tostring(); if(idclient.isnull()) QMessageBox msgbox; msgbox.settext("клиент не найден.\nпопробуйте еще раз."); msgbox.exec(); NewCredit* FC = new NewCredit(LoginRabotnika); FC->show(); this->close(); CreditData(); //Функция добавления кредитной информации void NewCredit::on_next_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else if(ui->lineedit->text().isempty() ui->lineedit_2- >text().isempty() ui->lineedit_3->text().isempty() ui->lineedit_4->text().isempty() ui->lineedit_5- >text().isempty() ui->lineedit_6->text().isempty()) QMessageBox msgbox; msgbox.settext("введены не все данные о кредите.\nпопробуйте еще раз.");

95 95 msgbox.exec(); CreditData(); else QSqlQuery query; QString a = "INSERT INTO Credit VALUES ("; query.exec(a+idclient+",'"+ ui->lineedit->text()+"','"+ ui->lineedit_2->text()+"',"+"1,0,"+ ui->lineedit_3->text()+","+ ui->lineedit_4->text()+","+ ui->lineedit_5->text()+",'potrebitelskii',"+ ui->lineedit_6->text()+")"); query.next(); Contract = ui->lineedit->text(); int n = this->diolog(); if(n==1) newguarantor(); if(n==0) oldguarantor(); else next->hide(); theend(); //Функция смены внешнего вида окна для добавления нового поручителя void NewCredit::newGuarantor() ui->lineedit_7->show(); ui->lineedit_8->show(); ui->lineedit_9->show(); ui->lineedit_10->show(); ui->lineedit_11->show(); ui->lineedit_12->show(); ui->lineedit_13->show(); ui->lineedit->setplaceholdertext("имя"); ui->lineedit_2->setplaceholdertext("отчество"); ui->lineedit_3->setplaceholdertext("фамилия"); ui->lineedit_4->setplaceholdertext("дата рождения"); ui->lineedit_5->setplaceholdertext("номер телефона"); ui->lineedit_6->setplaceholdertext("город проживания"); ui->lineedit_7->setplaceholdertext("улица"); ui->lineedit_8->setplaceholdertext("дом"); ui->lineedit_9->setplaceholdertext("квартира"); ui->lineedit_10->setplaceholdertext("место работы"); ui->lineedit_11->setplaceholdertext("должность"); ui->lineedit_12->setplaceholdertext("зп"); ui->lineedit_13->setplaceholdertext("пол"); id=0; ui->label->settext("информация о поручателе:"); ui->label->repaint(); next->hide(); nextnext->show(); connect(nextnext,signal(clicked()),this,slot(on_nextnext_clicked())); //Функция смены внешнего вида окна для поиска поручителя void NewCredit::oldGuarantor() ui->lineedit->setplaceholdertext("имя");

96 96 ui->lineedit_2->setplaceholdertext("отчество"); ui->lineedit_3->setplaceholdertext("фамилия"); ui->lineedit_4->setplaceholdertext("телефон"); ui->lineedit_5->hide(); ui->lineedit_6->hide(); ui->lineedit_7->hide(); ui->lineedit_8->hide(); ui->lineedit_9->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); id=1; ui->label->settext("информация о поручателе:"); ui->label->repaint(); next->hide(); nextnext->show(); //Функция добавления нового поручителя или поиска инфрмации об уже добавленном void NewCredit::on_nextnext_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; if(id==0) if(ui->lineedit->text().isempty() ui->lineedit_2- >text().isempty() ui->lineedit_3->text().isempty() ui->lineedit_4->text().isempty() ui->lineedit_5- >text().isempty() ui->lineedit_10->text().isempty() ui->lineedit_11- >text().isempty() ui->lineedit_12->text().isempty() ui->lineedit_13- >text().isempty() ui->lineedit_6->text().isempty()) QMessageBox msgbox; msgbox.settext("введены не все данные о поручителе.\nпопробуйте еще раз."); msgbox.exec(); newguarantor(); else QString a = "INSERT INTO Guarantor (Name,Otch,LastName,Bday,Phone,Gender,City,Street,Home,Apartment,Job, JobTitle,Salary) VALUES ('"; query.exec(a+ui->lineedit->text()+"','"+ ui->lineedit_2->text()+"','"+ ui->lineedit_3->text()+"','"+ ui->lineedit_4->text()+"','"+ ui->lineedit_5->text()+"','"+ ui->lineedit_13->text()+"','"+ ui->lineedit_6->text()+"','"+ ui->lineedit_7->text()+"','"+ ui->lineedit_8->text()+"','"+ ui->lineedit_9->text()+"','"+ ui->lineedit_10->text()+"','"+ ui->lineedit_11->text()+"','"+ ui->lineedit_12->text()+"')"); query.next(); QString b = "Select id From Guarantor WHERE Name=";

97 97 query.exec(b+"'"+ui->lineedit->text()+"' AND Otch="+"'"+ui- >lineedit_2->text()+"' AND LastName="+"'"+ui->lineEdit_3->text()+"' AND Phone="+"'"+ui->lineEdit_5->text()+"'"); query.next(); idcurantor=query.value(query.record().indexof("id")).tostring(); QString c = "UPDATE Credit SET idguarantor='"; query.exec(c+idcurantor+"' WHERE ContractNumber='"+Contract+"'"); query.next(); QString d = "INSERT INTO Audit VALUES('"; query.exec(d+"'0','" +LoginRabotnika+ "','Работник','Добавление нового поручителя','"+idcurantor+"','поручитель','0',datetime('now'))"); theend(); else QString Name = ui->lineedit->text(); QString Otch = ui->lineedit_2->text(); QString Family = ui->lineedit_3->text(); QString Phone = ui->lineedit_4->text(); QSqlQuery query; QString a = "Select* From Guarantor WHERE Name="; query.exec(a+"'"+name+"' AND Otch="+"'"+Otch+"' AND LastName="+"'"+Family+"' AND Phone="+"'"+Phone+"'"); query.next(); idcurantor=query.value(query.record().indexof("id")).tostring(); if(idcurantor.isempty()) QMessageBox msgbox; msgbox.settext("поручитель не найден.\nпопробуйте еще раз."); msgbox.exec(); ui->lineedit->clear(); ui->lineedit_2->clear(); ui->lineedit_3->clear(); ui->lineedit_4->clear(); oldguarantor(); else QString c = "UPDATE Credit SET idguarantor='"; query.exec(c+idcurantor+"where ContractNumber='"+Contract+"'"); query.next(); theend(); //Функция диолога о добавлении нового поручителя int NewCredit::Diolog() QMessageBox::StandardButton reply; reply = QMessageBox::question(this, QString::fromUtf8("Добавление поручителя в базу"), QString::fromUtf8("Необходимо добавлять поручителя?"), QMessageBox::Yes QMessageBox::No QMessageBox::Cancel); if (reply == QMessageBox::Yes) return 1;

98 98 else if (reply == QMessageBox::No) return 0; else return -1; //Функция смены внешнего вида окна для добавления кредитной информации void NewCredit::CreditData() ui->lineedit->clear(); ui->lineedit_2->clear(); ui->lineedit_3->clear(); ui->lineedit_4->clear(); ui->lineedit->setplaceholdertext("номер договора"); ui->lineedit_2->setplaceholdertext("дата выдачи"); ui->lineedit_3->setplaceholdertext("процентная ставка"); ui->lineedit_4->setplaceholdertext("остаток (сумма кредита-первый взнос)"); ui->lineedit_5->show(); ui->lineedit_6->show(); ui->lineedit_5->setplaceholdertext("длительность"); ui->lineedit_6->setplaceholdertext("сумма"); ui->label->settext("информация о кредите:"); ui->label->repaint(); next->show(); ui->pushbutton_2->hide(); //Функция смены внешнего вида окна при завершении добавления void NewCredit::theEnd() ui->lineedit->hide(); ui->lineedit_2->hide(); ui->lineedit_3->hide(); ui->lineedit_4->hide(); ui->lineedit_5->hide(); ui->lineedit_6->hide(); ui->lineedit_7->hide(); ui->lineedit_8->hide(); ui->lineedit_9->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); ui->label->settext("новый кредит успешно добавлен в базу данных"); ui->label->repaint(); nextnext->hide(); QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString Login = Name+Family; QString a = "INSERT INTO Audit VALUES('"; query.exec(a+"0','" +LoginRabotnika+ "','Работник','Добавление нового кредита','"+idclient+"','клиент','"+login+"',datetime('now'))"); newguarantor.h #ifndef NEWGUARANTOR_H

99 99 #define NEWGUARANTOR_H #include <QMainWindow> #include <rabotnikbankaform.h> #include "mainwindow.h" #include <QPushButton> namespace Ui class NewGuarantor; //Класс добавления в базу нового поручителя работником банка class NewGuarantor : public QMainWindow Q_OBJECT public: explicit NewGuarantor(QString Login, QWidget *parent = 0); ~NewGuarantor(); int idclient; QString Name,LoginRabotnika,Phone; QPushButton* next; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); private: Ui::NewGuarantor *ui; ; #endif // NEWGUARANTOR_H newguarantor.cpp #include "newguarantor.h" #include "ui_newguarantor.h" NewGuarantor::NewGuarantor(QString Login, QWidget *parent) : QMainWindow(parent), ui(new Ui::NewGuarantor) ui->setupui(this); LoginRabotnika=Login; ui->lineedit->setplaceholdertext("имя"); ui->lineedit_2->setplaceholdertext("отчество"); ui->lineedit_3->setplaceholdertext("фамилия"); ui->lineedit_4->setplaceholdertext("дата рождения"); ui->lineedit_5->setplaceholdertext("номер телефона"); ui->lineedit_10->setplaceholdertext("город проживания"); ui->lineedit_11->setplaceholdertext("улица"); ui->lineedit_12->setplaceholdertext("дом"); ui->lineedit_13->setplaceholdertext("квартира"); ui->lineedit_14->setplaceholdertext("место работы"); ui->lineedit_15->setplaceholdertext("должность"); ui->lineedit_16->setplaceholdertext("зп"); ui->lineedit_6->setplaceholdertext("пол");

100 100 NewGuarantor::~NewGuarantor() delete ui; //Функция возврата к основному меню работника банка void NewGuarantor::on_action_triggered() RabotnikBankaForm* rbf = new RabotnikBankaForm(LoginRabotnika); rbf->show(); this->close(); //Функция смены пользователя void NewGuarantor::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void NewGuarantor::on_action_3_triggered() close(); void NewGuarantor::on_pushButton_clicked() on_action_triggered(); //Функция добавления нового поручителя void NewGuarantor::on_pushButton_2_clicked() //Проверка, введены ли все данные if(ui->lineedit->text().isempty() ui->lineedit_2->text().isempty() ui- >lineedit_3->text().isempty() ui->lineedit_4->text().isempty() ui->lineedit_5- >text().isempty() ui->lineedit_10->text().isempty() ui->lineedit_11- >text().isempty() ui->lineedit_12->text().isempty() ui->lineedit_13- >text().isempty() ui->lineedit_14->text().isempty() ui->lineedit_15- >text().isempty() ui->lineedit_16->text().isempty() ui->lineedit_6- >text().isempty()) QMessageBox msgbox; msgbox.settext("введены не все данные.\nпопробуйте еще раз."); msgbox.exec(); else QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "INSERT INTO Guarantor (Name,Otch,LastName,Bday,Phone,Gender,City,Street,Home,Apartment,Job, JobTitle,Salary) VALUES ('"; query.exec(a+ui->lineedit->text()+"','"+ ui->lineedit_2->text()+"','"+ ui->lineedit_3->text()+"','"+ ui->lineedit_4->text()+"','"+

101 101 ui->lineedit_5->text()+"','"+ ui->lineedit_6->text()+"','"+ ui->lineedit_10->text()+"','"+ ui->lineedit_11->text()+"','"+ ui->lineedit_12->text()+"','"+ ui->lineedit_13->text()+"','"+ ui->lineedit_14->text()+"','"+ ui->lineedit_15->text()+"','"+ ui->lineedit_16->text()+"')"); query.next(); QString b = "Select id From Guarantor WHERE Name="; query.exec(b+"'"+ui->lineedit->text()+"' AND LastName="+"'"+ui- >lineedit_2->text()+"' AND Otch="+"'"+ui->lineEdit_3->text()+"' AND Phone="+"'"+ui->lineEdit_5->text()+"'"); query.next(); QString idcurantor=query.value(query.record().indexof("id")).tostring(); query.next(); QString c = "INSERT INTO Audit VALUES('"; query.exec(c+"0','" +LoginRabotnika+ "','Работник','Добавление нового поручителя','"+idcurantor+"','поручитель','0',datetime('now'))"); ui->lineedit->hide(); ui->lineedit_2->hide(); ui->lineedit_3->hide(); ui->lineedit_4->hide(); ui->lineedit_5->hide(); ui->lineedit_6->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); ui->lineedit_14->hide(); ui->lineedit_15->hide(); ui->lineedit_16->hide(); ui->label->settext("новый поручитель успешно добавлен в базу данных"); ui->label->repaint(); ui->pushbutton_2->hide(); paymentcredit.h #ifndef PAYMENTCREDIT_H #define PAYMENTCREDIT_H #include <QMainWindow> #include "clientform.h" #include "mainwindow.h" namespace Ui class PaymentCredit; //Класс для оплаты клиентом по одному из кредитов class PaymentCredit : public QMainWindow Q_OBJECT public: explicit PaymentCredit(QString idclient,qwidget *parent = 0);

102 102 ~PaymentCredit(); QString idclienta,name,family; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); private: Ui::PaymentCredit *ui; ; #endif // PAYMENTCREDIT_H paymentcredit.cpp #include "paymentcredit.h" #include "ui_paymentcredit.h" PaymentCredit::PaymentCredit(QString idclient, QWidget *parent) : QMainWindow(parent), ui(new Ui::PaymentCredit) //Поиск информации о кредитах и счетах пользователя и вывод номеров кредитных договоров и счетов ui->setupui(this); idclienta=idclient; QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select* From Clients WHERE id="; query.exec(a+"'"+idclient+"'"); query.next(); Name = query.value(query.record().indexof("name")).tostring(); Family = query.value(query.record().indexof("lastname")).tostring(); QString b = "Select Number From Account WHERE idclient="; query.exec(b+"'"+idclient+"'"); while (query.next()) QString number = query.value(query.record().indexof("number")).tostring(); ui->combobox->additem(number); QString c = "Select * From Credit WHERE idclient="; query.exec(c+"'"+idclient+"'"); while (query.next()) QString number = query.value(query.record().indexof("contractnumber")).tostring(); ui->combobox_2->additem(number);

103 103 PaymentCredit::~PaymentCredit() delete ui; //Функция возврата к основному меню клиента void PaymentCredit::on_action_triggered() ClientForm* cliform = new ClientForm(Name,idClienta); cliform->show(); this->close(); //Функция смены пользователя void PaymentCredit::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void PaymentCredit::on_action_3_triggered() close(); void PaymentCredit::on_pushButton_clicked() on_action_triggered(); //Функция проведения оплаты выбраного кредита с выбраного счета void PaymentCredit::on_pushButton_2_clicked() QString Account = ui->combobox->currenttext(); QString Credit = ui->combobox_2->currenttext(); QString Sum = ui->lineedit->text(); int AccountData; QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString b = "Select Amount From Account WHERE Number="; query.exec(b+"'"+account+"'"); query.next(); AccountData= query.value(query.record().indexof("amount")).toint(); QString a = "Select Residue From Credit WHERE ContractNumber="; query.exec(a+"'"+credit+"'"); query.next(); qdebug()<<a+"'"+credit+"'"; int Reside = query.value(query.record().indexof("residue")).toint(); QString Reside2 = query.value(query.record().indexof("residue")).tostring(); if(sum.toint()>accountdata) QMessageBox msgbox; msgbox.settext("недостаточно средств на счете."); msgbox.exec(); if(sum.toint()>reside)

104 104 кредиту."); QMessageBox msgbox; msgbox.settext("сумма платежа превышает остаток по msgbox.exec(); else if(db.transaction())//реализация транзакции int result = Reside-Sum.toInt(); QString resultatcredit = QString::number(result); QString a = "UPDATE Credit SET Residue='"; query.exec(a+resultatcredit+"' WHERE ContractNumber='"+Credit+"'"); query.next(); result=accountdata-sum.toint(); QString resultataccount = QString::number(result); QString b = "UPDATE Account SET Amount='"; query.exec(b+resultataccount+"' WHERE Number='"+Account+"'"); query.next(); QString d = "INSERT INTO Audit VALUES('"; QString Login=Name+Family; QString zapros2 =d+idclienta+"','"+ Login+ "','Клиент','Платеж по кредиту "+Credit+" на сумму "+Sum+"','"+idClienta+"','Клиент','"+Login+"',datetime('now'))" ; query.exec(zapros2); //qdebug()<<zapros2; query.next(); db.commit(); ui->combobox->hide(); ui->combobox_2->hide(); ui->label_2->hide(); ui->lineedit->hide(); ui->label->settext("оплата прошла успешно"); ui->label->repaint(); ui->pushbutton_2->hide(); rabotnikbankaform.h #ifndef RABOTNIKBANKAFORM_H #define RABOTNIKBANKAFORM_H #include <QMainWindow> #include "mainwindow.h" #include "newclient.h" #include "findclient.h" #include "newcredit.h" #include "findcredit.h" #include "newguarantor.h" #include "findguarantor.h" #include "updateclient.h" #include "updateguarantor.h" #include "updatepasswordrabotnik.h" namespace Ui

105 105 class RabotnikBankaForm; //Класс основной формы работника банка class RabotnikBankaForm : public QMainWindow Q_OBJECT public: explicit RabotnikBankaForm(QString Login, QWidget *parent = 0); ~RabotnikBankaForm(); QString LoginRabotnika; private slots: void on_action_7_triggered(); void on_action_8_triggered(); void on_pushbutton_2_clicked(); void on_pushbutton_clicked(); void on_action_triggered(); void on_action_2_triggered(); void on_pushbutton_4_clicked(); void on_action_4_triggered(); void on_action_5_triggered(); void on_pushbutton_3_clicked(); void on_pushbutton_6_clicked(); void on_pushbutton_5_clicked(); void on_action_6_triggered(); void on_action_3_triggered(); void on_pushbutton_7_clicked(); void on_action_9_triggered(); void on_pushbutton_8_clicked(); void on_action_10_triggered(); void on_action_11_triggered(); private: Ui::RabotnikBankaForm *ui; ; #endif // RABOTNIKBANKAFORM_H rabotnikbankaform.cpp #include "rabotnikbankaform.h" #include "ui_rabotnikbankaform.h" RabotnikBankaForm::RabotnikBankaForm(QString Login, QWidget *parent) :

106 106 QMainWindow(parent), ui(new Ui::RabotnikBankaForm) ui->setupui(this); LoginRabotnika=Login; RabotnikBankaForm::~RabotnikBankaForm() delete ui; //Функция смены пользователя void RabotnikBankaForm::on_action_7_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void RabotnikBankaForm::on_action_8_triggered() close(); //Функция поиска информации о клиенте void RabotnikBankaForm::on_pushButton_2_clicked() FindClient* FC = new FindClient(LoginRabotnika); FC->show(); this->close(); //Функция добавления нового клиента void RabotnikBankaForm::on_pushButton_clicked() NewClient* NC = new NewClient(LoginRabotnika); NC->show(); this->close(); void RabotnikBankaForm::on_action_triggered() on_pushbutton_2_clicked(); void RabotnikBankaForm::on_action_2_triggered() on_pushbutton_clicked(); //Функция поиска информации о кредите void RabotnikBankaForm::on_pushButton_4_clicked() FindCredit* FC = new FindCredit(LoginRabotnika); FC->show(); this->close(); void RabotnikBankaForm::on_action_4_triggered() on_pushbutton_4_clicked();

107 107 //Функция добавления нового кредита void RabotnikBankaForm::on_pushButton_3_clicked() NewCredit* NC = new NewCredit(LoginRabotnika); NC->show(); this->close(); void RabotnikBankaForm::on_action_3_triggered() on_pushbutton_3_clicked(); //Функция поиска информации о поручителе void RabotnikBankaForm::on_pushButton_6_clicked() FindGuarantor* FG = new FindGuarantor(LoginRabotnika); FG->show(); this->close(); //Функция добавления нового поручителя void RabotnikBankaForm::on_pushButton_5_clicked() NewGuarantor* NG = new NewGuarantor(LoginRabotnika); NG->show(); this->close(); void RabotnikBankaForm::on_action_6_triggered() on_pushbutton_6_clicked(); void RabotnikBankaForm::on_action_5_triggered() on_pushbutton_5_clicked(); //Функция добавления изменения информации о клиенте void RabotnikBankaForm::on_pushButton_7_clicked() UpDateClient* udc = new UpDateClient(LoginRabotnika); udc->show(); this->hide(); void RabotnikBankaForm::on_action_9_triggered() on_pushbutton_7_clicked(); //Функция добавления изменения информации о поручителе void RabotnikBankaForm::on_pushButton_8_clicked() UpDateGuarantor* udg = new UpDateGuarantor(LoginRabotnika); udg->show(); this->hide(); void RabotnikBankaForm::on_action_10_triggered()

108 108 on_pushbutton_8_clicked(); //Функция добавления изменения пароля пользователя void RabotnikBankaForm::on_action_11_triggered() UpDatePasswordRabotnik* UDPR = new UpDatePasswordRabotnik(LoginRabotnika); UDPR->show(); this->hide(); updateclient.h ifndef UPDATECLIENT_H #define UPDATECLIENT_H #include <QMainWindow> #include <rabotnikbankaform.h> #include "mainwindow.h" namespace Ui class UpDateClient; //Класс изменения информации о клиенте работником банка class UpDateClient : public QMainWindow Q_OBJECT public: explicit UpDateClient(QString Login,QWidget *parent = 0); ~UpDateClient(); QPushButton* next; QString idclient,loginrabotnika; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); void on_next_clicked(); private: Ui::UpDateClient *ui; ; #endif // UPDATECLIENT_H updateclient.cpp #include "updateclient.h" #include "ui_updateclient.h" UpDateClient::UpDateClient(QString Login, QWidget *parent) : QMainWindow(parent), ui(new Ui::UpDateClient)

109 109 ui->setupui(this); LoginRabotnika=Login; ui->lineedit->setplaceholdertext("имя"); ui->lineedit_3->setplaceholdertext("фамилия"); ui->lineedit_6->setplaceholdertext("серия паспорта"); ui->lineedit_7->setplaceholdertext("номер паспорта"); ui->lineedit_2->hide(); ui->lineedit_4->hide(); ui->lineedit_5->hide(); ui->lineedit_8->hide(); ui->lineedit_9->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); ui->lineedit_14->hide(); ui->lineedit_15->hide(); ui->lineedit_16->hide(); ui->lineedit_17->hide(); UpDateClient::~UpDateClient() delete ui; //Функция возвращения к основному окну работника банка void UpDateClient::on_action_triggered() RabotnikBankaForm* rbf = new RabotnikBankaForm(LoginRabotnika); rbf->show(); this->close(); //Функция смены пользователя void UpDateClient::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void UpDateClient::on_action_3_triggered() close(); void UpDateClient::on_pushButton_clicked() on_action_triggered(); //Функция вывода старых данных void UpDateClient::on_pushButton_2_clicked() ui->lineedit_2->show(); ui->lineedit_4->show(); ui->lineedit_5->show(); ui->lineedit_8->show(); ui->lineedit_9->show(); ui->lineedit_10->show(); ui->lineedit_11->show(); ui->lineedit_12->show(); ui->lineedit_13->show(); ui->lineedit_14->show();

110 110 ui->lineedit_15->show(); ui->lineedit_16->show(); ui->pushbutton_2->hide(); ui->label->settext("старые данные клиента:"); ui->label->repaint(); next = new QPushButton("Сохранить",this); next->setgeometry(610,320,111,23); next->show(); ui->pushbutton_2->hide(); connect(next,signal(clicked()),this,slot(on_next_clicked())); //Функция добавления измененных данных в базу данных void UpDateClient::on_next_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QString Name = ui->lineedit->text(); QString Otch = ui->lineedit_2->text(); QString Family = ui->lineedit_3->text(); QString Bday = ui->lineedit_4->text(); QString Phone = ui->lineedit_5->text(); QString SeriesP = ui->lineedit_6->text(); QString NumberP = ui->lineedit_7->text(); QString PublishedP = ui->lineedit_8->text(); QString DateP = ui->lineedit_9->text(); QString City = ui->lineedit_10->text(); QString Street = ui->lineedit_11->text(); QString Home = ui->lineedit_12->text(); QString Apartment = ui->lineedit_13->text(); QString Job = ui->lineedit_14->text(); QString JobTitle = ui->lineedit_15->text(); QString Salary = ui->lineedit_16->text(); QString Gender = ui->lineedit_17->text(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "UPDATE Clients SET Name='"; QString zapros = a+name+"',otch='"+otch+"',lastname='"+family+"',bday='"+bday+ "',Phone='"+Phone+"',SeriesP='"+SeriesP+"',NumberP='"+NumberP+ "',PublishedP='"+PublishedP+"',DateP='"+DateP+"',City='"+City+ "',Street='"+Street+"',Home='"+Home+"',Apartment='"+Apartment+ "',Job='"+Job+"',JobTitle='"+JobTitle+"',Salary='"+Salary+ "',Gender='"+Gender+"' WHERE id="+idclient; query.exec(zapros); query.next(); QString Login=Name+Family; QString b = "UPDATE Password SET Login='"; query.exec(b+login+"' WHERE id="+idclient); query.next(); QString d = "INSERT INTO Audit VALUES('"; QString zapros2 =d+"0','" +LoginRabotnika+ "','Работник','Изменение данных пользователя','"+idclient+"','клиент','"+login+"',datetime('now'))" ; query.exec(zapros2); qdebug()<<zapros2; query.next();

111 111 ui->lineedit->hide(); ui->lineedit_2->hide(); ui->lineedit_3->hide(); ui->lineedit_4->hide(); ui->lineedit_5->hide(); ui->lineedit_6->hide(); ui->lineedit_7->hide(); ui->lineedit_8->hide(); ui->lineedit_9->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); ui->lineedit_14->hide(); ui->lineedit_15->hide(); ui->lineedit_16->hide(); ui->lineedit_17->hide(); ui->label->settext("данные пользователя успешно изменены"); ui->label->repaint(); next->hide(); updateclientclient.h #ifndef UPDATECLIENTCLIENT_H #define UPDATECLIENTCLIENT_H #include <QMainWindow> #include "clientform.h" #include "mainwindow.h" namespace Ui class UpDateClientClient; //Класс изменения данных о клиенте самим клиентом class UpDateClientClient : public QMainWindow Q_OBJECT public: explicit UpDateClientClient(QString idclient, QWidget *parent = 0); ~UpDateClientClient(); QString idclienta, Name; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); private: Ui::UpDateClientClient *ui; ;

112 112 #endif // UPDATECLIENTCLIENT_H updateclientclient.cpp include "updateclientclient.h" #include "ui_updateclientclient.h" UpDateClientClient::UpDateClientClient(QString idclient, QWidget *parent) : QMainWindow(parent), ui(new Ui::UpDateClientClient) //Поиск информации о клиенте и вывод ее на экран сразу ui->setupui(this); idclienta=idclient; QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select* From Clients WHERE id="; query.exec(a+"'"+idclienta+"'"); query.next(); Name = query.value(query.record().indexof("name")).tostring(); ui->lineedit->settext(name); ui->lineedit_2- >settext(query.value(query.record().indexof("otch")).tostring()); ui->lineedit_3- >settext(query.value(query.record().indexof("lastname")).tostring()); ui->lineedit_4- >settext(query.value(query.record().indexof("bday")).tostring()); ui->lineedit_5- >settext(query.value(query.record().indexof("phone")).tostring()); ui->lineedit_6- >settext(query.value(query.record().indexof("seriesp")).tostring()); ui->lineedit_7- >settext(query.value(query.record().indexof("numberp")).tostring()); ui->lineedit_8- >settext(query.value(query.record().indexof("publishedp")).tostring()); ui->lineedit_9- >settext(query.value(query.record().indexof("datep")).tostring()); ui->lineedit_10- >settext(query.value(query.record().indexof("city")).tostring()); ui->lineedit_11- >settext(query.value(query.record().indexof("street")).tostring()); ui->lineedit_12- >settext(query.value(query.record().indexof("home")).tostring()); ui->lineedit_13- >settext(query.value(query.record().indexof("apartment")).tostring()); ui->lineedit_14- >settext(query.value(query.record().indexof("job")).tostring()); ui->lineedit_15- >settext(query.value(query.record().indexof("jobtitle")).tostring()); ui->lineedit_16- >settext(query.value(query.record().indexof("salary")).tostring()); ui->lineedit_17- >settext(query.value(query.record().indexof("gender")).tostring()); UpDateClientClient::~UpDateClientClient()

113 113 delete ui; //Функция возвращения к основному окну клиента банка void UpDateClientClient::on_action_triggered() ClientForm* cliform = new ClientForm(Name,idClienta); cliform->show(); this->close(); //Функция возвращения смены пользователя void UpDateClientClient::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void UpDateClientClient::on_action_3_triggered() close(); void UpDateClientClient::on_pushButton_clicked() on_action_triggered(); //Функция обновления данных клиента в базе данных void UpDateClientClient::on_pushButton_2_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QString NewName = ui->lineedit->text(); QString Otch = ui->lineedit_2->text(); QString Family = ui->lineedit_3->text(); QString Bday = ui->lineedit_4->text(); QString Phone = ui->lineedit_5->text(); QString SeriesP = ui->lineedit_6->text(); QString NumberP = ui->lineedit_7->text(); QString PublishedP = ui->lineedit_8->text(); QString DateP = ui->lineedit_9->text(); QString City = ui->lineedit_10->text(); QString Street = ui->lineedit_11->text(); QString Home = ui->lineedit_12->text(); QString Apartment = ui->lineedit_13->text(); QString Job = ui->lineedit_14->text(); QString JobTitle = ui->lineedit_15->text(); QString Salary = ui->lineedit_16->text(); QString Gender = ui->lineedit_17->text(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "UPDATE Clients SET Name='"; QString zapros = a+newname+"',otch='"+otch+"',lastname='"+family+"',bday='"+bday+ "',Phone='"+Phone+"',SeriesP='"+SeriesP+"',NumberP='"+NumberP+ "',PublishedP='"+PublishedP+"',DateP='"+DateP+"',City='"+City+ "',Street='"+Street+"',Home='"+Home+"',Apartment='"+Apartment+ "',Job='"+Job+"',JobTitle='"+JobTitle+"',Salary='"+Salary+ "',Gender='"+Gender+"' WHERE id="+idclienta;

114 114 query.exec(zapros); //qdebug()<<zapros; query.next(); QString Login=NewName+Family; QString b = "UPDATE Password SET Login='"; query.exec(b+login+"' WHERE id="+idclienta); query.next(); QString d = "INSERT INTO Audit VALUES('"; QString zapros2 =d+idclienta+"','"+ Login+ "','Клиент','Изменение данных','"+idclienta+"','клиент','"+login+"',datetime('now'))" ; query.exec(zapros2); //qdebug()<<zapros2; query.next(); ui->lineedit->hide(); ui->lineedit_2->hide(); ui->lineedit_3->hide(); ui->lineedit_4->hide(); ui->lineedit_5->hide(); ui->lineedit_6->hide(); ui->lineedit_7->hide(); ui->lineedit_8->hide(); ui->lineedit_9->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); ui->lineedit_14->hide(); ui->lineedit_15->hide(); ui->lineedit_16->hide(); ui->lineedit_17->hide(); ui->label->settext("данные успешно изменены"); ui->label->repaint(); ui->pushbutton_2->hide(); updateguarantor.h #ifndef UPDATEGUARANTOR_H #define UPDATEGUARANTOR_H #include <QMainWindow> #include <rabotnikbankaform.h> #include "mainwindow.h" namespace Ui class UpDateGuarantor; //Класс изменения данных поручителя работником банка class UpDateGuarantor : public QMainWindow Q_OBJECT public: explicit UpDateGuarantor(QString Login,QWidget *parent = 0); ~UpDateGuarantor(); QPushButton* next;

115 115 QString idguarantor,loginrabotnika; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); void on_next_clicked(); private: Ui::UpDateGuarantor *ui; ; #endif // UPDATEGUARANTOR_H updateguarantor.cpp #include "updateguarantor.h" #include "ui_updateguarantor.h" UpDateGuarantor::UpDateGuarantor(QString Login, QWidget *parent) : QMainWindow(parent), ui(new Ui::UpDateGuarantor) ui->setupui(this); LoginRabotnika=Login; ui->lineedit->setplaceholdertext("имя"); ui->lineedit_2->setplaceholdertext("отчество"); ui->lineedit_3->setplaceholdertext("фамилия"); ui->lineedit_4->setplaceholdertext("телефон"); ui->lineedit_5->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); ui->lineedit_14->hide(); ui->lineedit_15->hide(); ui->lineedit_16->hide(); ui->lineedit_6->hide(); UpDateGuarantor::~UpDateGuarantor() delete ui; //Функция возвращения к основному окну работника банка void UpDateGuarantor::on_action_triggered() RabotnikBankaForm* rbf = new RabotnikBankaForm(LoginRabotnika); rbf->show(); this->close(); //Функция смены пользователя void UpDateGuarantor::on_action_2_triggered()

116 116 MainWindow* w = new MainWindow(); w->show(); this->close(); void UpDateGuarantor::on_action_3_triggered() close(); void UpDateGuarantor::on_pushButton_clicked() on_action_triggered(); //Функция вывода старых данных поручителя void UpDateGuarantor::on_pushButton_2_clicked() ui->lineedit_5->show(); ui->lineedit_10->show(); ui->lineedit_11->show(); ui->lineedit_12->show(); ui->lineedit_13->show(); ui->lineedit_14->show(); ui->lineedit_15->show(); ui->lineedit_16->show(); ui->lineedit_6->show(); ui->pushbutton_2->hide(); ui->label->settext("старые данные поручителя:"); ui->label->repaint(); next = new QPushButton("Сохранить",this); next->setgeometry(610,320,111,23); next->show(); ui->pushbutton_2->hide(); connect(next,signal(clicked()),this,slot(on_next_clicked())); //Функция обновления данных поручителя в базе данных void UpDateGuarantor::on_next_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QString Name = ui->lineedit->text(); QString Otch = ui->lineedit_2->text(); QString Family = ui->lineedit_3->text(); QString Bday = ui->lineedit_4->text(); QString Phone = ui->lineedit_5->text(); QString City = ui->lineedit_10->text(); QString Street = ui->lineedit_11->text(); QString Home = ui->lineedit_12->text(); QString Apartment = ui->lineedit_13->text(); QString Job = ui->lineedit_14->text(); QString JobTitle = ui->lineedit_15->text(); QString Salary = ui->lineedit_16->text(); QString Gender = ui->lineedit_6->text(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "UPDATE Guarantor SET Name='"; QString zapros = a+name+"',otch='"+otch+"',lastname='"+family+"',bday='"+bday+ "',Phone='"+Phone+"',City='"+City+ "',Street='"+Street+"',Home='"+Home+"',Apartment='"+Apartment+

117 117 "',Job='"+Job+"',JobTitle='"+JobTitle+"',Salary='"+Salary+ "',Gender='"+Gender+"' WHERE id="+idguarantor; query.exec(zapros); qdebug()<<zapros; query.next(); QString d = "INSERT INTO Audit VALUES('"; query.exec(d+"0','" +LoginRabotnika+ "','Работник','Изменение данных поручителя','"+idguarantor+"','поручитель','0',datetime('now'))"); query.next(); ui->lineedit->hide(); ui->lineedit_2->hide(); ui->lineedit_3->hide(); ui->lineedit_4->hide(); ui->lineedit_5->hide(); ui->lineedit_10->hide(); ui->lineedit_11->hide(); ui->lineedit_12->hide(); ui->lineedit_13->hide(); ui->lineedit_14->hide(); ui->lineedit_15->hide(); ui->lineedit_16->hide(); ui->lineedit_6->hide(); ui->label->settext("данные поручителя успешно изменены"); ui->label->repaint(); next->hide(); updatepassword.h #ifndef UPDATEPASSWORD_H #define UPDATEPASSWORD_H #include <QMainWindow> #include "clientform.h" #include "mainwindow.h" #include <QCryptographicHash> namespace Ui class UpDatePassword; //Класс изменения пароля клиента самим клиентом class UpDatePassword : public QMainWindow Q_OBJECT public: explicit UpDatePassword(QString idclient, QWidget *parent = 0); ~UpDatePassword(); QString idclienta,passwordpol,name,login; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked();

118 118 void on_pushbutton_2_clicked(); private: Ui::UpDatePassword *ui; ; #endif // UPDATEPASSWORD_H updatepassword.cpp #include "updatepassword.h" #include "ui_updatepassword.h" UpDatePassword::UpDatePassword(QString idclient, QWidget *parent) : QMainWindow(parent), ui(new Ui::UpDatePassword) ui->setupui(this); idclienta=idclient; QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "SELECT* From Password WHERE idclient='"; query.exec(a+idclient+"'"); query.next(); PasswordPol=query.value(query.record().indexOf("Password")).toString();//Стар ы пароль пользователя Login=query.value(query.record().indexOf("Login")).toString();//Логин QString b = "Select* From Clients WHERE id="; query.exec(b+"'"+idclienta+"'"); query.next(); Name = query.value(query.record().indexof("name")).tostring(); ui->lineedit->setplaceholdertext("старый пароль"); ui->lineedit_2->setplaceholdertext("новый пароль"); ui->lineedit_3->setplaceholdertext("новый пароль еще раз"); ui->label->hide(); UpDatePassword::~UpDatePassword() delete ui; //Функция возвращения к основному окну клиента банка void UpDatePassword::on_action_triggered() ClientForm* cliform = new ClientForm(Name,idClienta); cliform->show(); this->close(); //Функция возвращения смены пользователя void UpDatePassword::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close();

119 119 void UpDatePassword::on_action_3_triggered() close(); void UpDatePassword::on_pushButton_clicked() on_action_triggered(); //Функция обновления пароля клиента в базе данных void UpDatePassword::on_pushButton_2_clicked() QCryptographicHash* hash; QString PasswordVvod = ui->lineedit->text(); QByteArray result = hash- >hash(passwordvvod.tolatin1(),qcryptographichash::sha1); QString Password = result.tohex(); if(password!=passwordpol) QMessageBox msgbox; msgbox.settext("старый пароль не верен.\nпопробуйте еще раз."); msgbox.exec(); QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString d = "INSERT INTO Audit VALUES('"; QString zapros2 =d+idclienta+"','"+ Login+ "','Клиент','Ввод неверного пароля при изменении','"+idclienta+"','клиент','"+login+"',datetime('now'))" ; query.exec(zapros2); else if(ui->lineedit_3->text()!=ui->lineedit_2->text()) QMessageBox msgbox; msgbox.settext("пароли не совпадают.\nпопробуйте еще раз."); msgbox.exec(); else QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QCryptographicHash* hash; QString PasswordPol = ui->lineedit_2->text(); QByteArray result = hash- >hash(passwordpol.tolatin1(),qcryptographichash::sha1); QString Password = result.tohex(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "UPDATE Password SET Password='"; QString zapros = a+password+"' WHERE idclient="+idclienta; query.exec(zapros); qdebug()<<zapros; query.next(); QString d = "INSERT INTO Audit VALUES('";

120 120 QString zapros2 =d+idclienta+"','"+ Login+ "','Клиент','Изменение пароля','"+idclienta+"','клиент','"+login+"',datetime('now'))" ; query.exec(zapros2); ui->lineedit->hide(); ui->lineedit_2->hide(); ui->lineedit_3->hide(); ui->label->show(); ui->label->settext("пароль успешно изменен"); ui->label->repaint(); ui->pushbutton_2->hide(); updatepasswordrabotnik.h #ifndef UPDATEPASSWORDRABOTNIK_H #define UPDATEPASSWORDRABOTNIK_H #include <QMainWindow> #include <rabotnikbankaform.h> #include "mainwindow.h" #include <QCryptographicHash> namespace Ui class UpDatePasswordRabotnik; //Класс изменения пароля клиента работником банка class UpDatePasswordRabotnik : public QMainWindow Q_OBJECT public: explicit UpDatePasswordRabotnik(QString Login, QWidget *parent = 0); ~UpDatePasswordRabotnik(); QPushButton* next; QString idclient,loginrabotnika,name,family; private slots: void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_pushbutton_clicked(); void on_pushbutton_2_clicked(); void on_next_clicked(); private: Ui::UpDatePasswordRabotnik *ui; ; #endif // UPDATEPASSWORDRABOTNIK_H updatepasswordrabotnik.cpp

121 121 #include "updatepasswordrabotnik.h" #include "ui_updatepasswordrabotnik.h" UpDatePasswordRabotnik::UpDatePasswordRabotnik(QString Login, QWidget *parent) : QMainWindow(parent), ui(new Ui::UpDatePasswordRabotnik) ui->setupui(this); LoginRabotnika=Login; ui->lineedit->setplaceholdertext("имя"); ui->lineedit_2->setplaceholdertext("фамилия"); ui->lineedit_3->setplaceholdertext("серия"); ui->lineedit_4->setplaceholdertext("номер"); UpDatePasswordRabotnik::~UpDatePasswordRabotnik() delete ui; //Функция возвращения к основному окну работника банка void UpDatePasswordRabotnik::on_action_triggered() RabotnikBankaForm* rbf = new RabotnikBankaForm(LoginRabotnika); rbf->show(); this->close(); //Функция смены пользователя void UpDatePasswordRabotnik::on_action_2_triggered() MainWindow* w = new MainWindow(); w->show(); this->close(); void UpDatePasswordRabotnik::on_action_3_triggered() close(); void UpDatePasswordRabotnik::on_pushButton_clicked() on_action_triggered(); //Функция поиска клиента, пароль которого необзодимо изменить void UpDatePasswordRabotnik::on_pushButton_2_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); Name = ui->lineedit->text(); Family = ui->lineedit_2->text(); QString Series = ui->lineedit_3->text(); QString Number = ui->lineedit_4->text(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "Select id From Clients WHERE Name="; query.exec(a+"'"+name+"' AND LastName="+"'"+Family+"' AND SeriesP="+"'"+Series+"' AND NumberP="+"'"+Number+"'"); query.next(); idclient = query.value(query.record().indexof("id")).tostring(); if(idclient.isnull())

122 122 QMessageBox msgbox; msgbox.settext("клиент не найден.\nпопробуйте еще раз."); msgbox.exec(); UpDatePasswordRabotnik* UP = new UpDatePasswordRabotnik(LoginRabotnika); UP->show(); this->close(); ui->lineedit_2->hide(); ui->lineedit_4->hide(); ui->lineedit->clear(); ui->lineedit_3->clear(); ui->label->settext("введите новый пароль:"); ui->label->repaint(); ui->lineedit->setplaceholdertext("новый пароль"); ui->lineedit_3->setplaceholdertext("новый пароль еще раз"); ui->lineedit->setechomode(qlineedit::password); ui->lineedit_3->setechomode(qlineedit::password); ui->pushbutton_2->hide(); next = new QPushButton("Сохранить",this); next->setgeometry(304,173,85,23); next->show(); connect(next,signal(clicked()),this,slot(on_next_clicked())); //Функция обновления пароля клиента в базе данных void UpDatePasswordRabotnik::on_next_clicked() QSqlDatabase db=qsqldatabase::adddatabase("qsqlite"); db.setdatabasename("creditdatabase"); QCryptographicHash* hash; QString PasswordPol = ui->lineedit->text(); QByteArray result = hash- >hash(passwordpol.tolatin1(),qcryptographichash::sha1); QString Password = result.tohex(); if(!db.open()) qdebug()<<db.lasterror(); else QSqlQuery query; QString a = "UPDATE Password SET Password='"; QString zapros = a+password+"' WHERE idclient="+idclient; query.exec(zapros); qdebug()<<zapros; query.next(); QString d = "INSERT INTO Audit VALUES('"; QString Login = Name+Family; query.exec(d+"0','" +LoginRabotnika+ "','Работник','Изменение пароля пользователя','"+idclient+"','клиент','"+login+"',datetime('now'))"); ui->lineedit->hide(); ui->lineedit_3->hide(); ui->label->settext("пароль успешно изменен"); ui->label->repaint(); next->hide();

123 123 Приложение 6. Варианты работы программы Рисунок 4.1 Вывод информации о клиенте для работника банка Рисунок 4.2Вывод информации о кредите для работника банка

124 124 Рисунок 4.3 Добавление информации о новом кленте первый этап Рисунок 4.4 Ввод информации для поиска клиента банка

125 125 Рисунок 4.5Вывод информации для клента банка Рисунок 4.6 Оплата клиентом с одного из своих счетов по одному их кредитов

БАНК ТЕСТОВЫХ ЗАДАНИЙ Информационные системы и технологии. Методов и средств измерений и автоматизации

БАНК ТЕСТОВЫХ ЗАДАНИЙ Информационные системы и технологии. Методов и средств измерений и автоматизации БАНК ТЕСТОВЫХ ЗАДАНИЙ Учебная дисциплина Направление Уровень подготовки Кафедра Б1.Б.12 Управление данными 09.03.02 Информационные системы и технологии бакалавриат Методов и средств измерений и автоматизации

Подробнее

ПОЛИТИКА. в отношении обработки персональных данных. ОАО «Электронная Москва»

ПОЛИТИКА. в отношении обработки персональных данных. ОАО «Электронная Москва» ПОЛИТИКА в отношении обработки персональных данных ОАО «Электронная Москва» СОДЕРЖАНИЕ 1. ТЕРМИНЫ И СОКРАЩЕНИЯ... 3 2. ОБЩИЕ ПОЛОЖЕНИЯ... 5 3. ПРИНЦИПЫ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ... 6 4. УСЛОВИЯ ОБРАБОТКИ

Подробнее

Модуль защиты информации от несанкционированного доступа «IRTech Security» Руководство по КСЗ

Модуль защиты информации от несанкционированного доступа «IRTech Security» Руководство по КСЗ Модуль защиты информации от несанкционированного доступа «IRTech Security» Руководство по КСЗ 2 АННОТАЦИЯ Настоящий документ является руководством по комплексу встроенных средств защиты информации (КСЗ)

Подробнее

Интеграционная платформа CONTACT NG Technology

Интеграционная платформа CONTACT NG Technology Интеграционная платформа CONTACT NG Technology Часть 1 Технология интеграции сервисов CONTACT МОСКВА Февраль 2016 ОГЛАВЛЕНИЕ Технология интеграции сервисов 1. СОСТАВ ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ... 1 2. ВВЕДЕНИЕ...

Подробнее

ЭТАПЫ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ

ЭТАПЫ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ ЭТАПЫ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ Основные задачи проектирования баз данных Обеспечение хранения в БД всей необходимой информации. Обеспечение возможности получения данных по всем необходимым запросам. Сокращение

Подробнее

Приложение к приказу 14 от г. ПОЛИТИКА ООО «Надым Связь Сервис» в отношении обработки персональных данных

Приложение к приказу 14 от г. ПОЛИТИКА ООО «Надым Связь Сервис» в отношении обработки персональных данных Приложение к приказу 14 от 15.06.2017г. ПОЛИТИКА ООО «Надым Связь Сервис» в отношении обработки персональных данных Оглавление 1. Термины и определения... 2 2. Общие положения... 3 3. Категории субъектов

Подробнее

УТВЕРЖДЕНА приказом АО «Открытие Финансовые решения» от 16 сентября 2015 г. 04/09/15/06-01од

УТВЕРЖДЕНА приказом АО «Открытие Финансовые решения» от 16 сентября 2015 г. 04/09/15/06-01од УТВЕРЖДЕНА приказом АО «Открытие Финансовые решения» от 16 сентября 2015 г. 04/09/15/06-01од ПОЛИТИКА обработки персональных данных в АО «Открытие Финансовые решения» г. Москва 2 ОГЛАВЛЕНИЕ 1. Общие положения...

Подробнее

Положение об обработке и защите персональных данных в Банке «Национальная Факторинговая Компания» (Закрытое акционерное общество)

Положение об обработке и защите персональных данных в Банке «Национальная Факторинговая Компания» (Закрытое акционерное общество) Утверждено Приказом Председателя Правления Банка НФК (ЗАО) от «28» 06. 2013 г. 169 Положение об обработке и защите персональных данных в Банке «Национальная Факторинговая Компания» (Закрытое акционерное

Подробнее

➀ Информационные системы и банки данных.

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

Подробнее

СМК РГУТиС. Лист 1 из

СМК РГУТиС. Лист 1 из Лист 1 из Лист 2 из 1. Тестовые задания 1. Обязательным компонентом любой информационной технологии является база a. данных b. правил c. знаний d. уровней представления информации 2. Метод последовательного

Подробнее

АННОТАЦИЯ РАБОЧЕЙ ПРОГРАММЫ

АННОТАЦИЯ РАБОЧЕЙ ПРОГРАММЫ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ

Подробнее

Лекция 1. Архитектура системы баз данных. Функции администратора системы баз данных в корпоративной информационной системе. Объекты базы данных.

Лекция 1. Архитектура системы баз данных. Функции администратора системы баз данных в корпоративной информационной системе. Объекты базы данных. 1 из 6 Лекция 1. Архитектура системы баз данных. Функции администратора системы баз данных в корпоративной информационной системе. Объекты базы данных. 1.1. Архитектура системы баз данных ANSI/SPARC...1

Подробнее

ПОЛИТИКА в отношении обработки персональных данных в ООО МФО «ДЕНЬГИ В ПОЛЬЗУ»

ПОЛИТИКА в отношении обработки персональных данных в ООО МФО «ДЕНЬГИ В ПОЛЬЗУ» Приложение 1 к Приказу 8 от «01» ноября 2016 г. ООО МФО «ДЕНЬГИ В ПОЛЬЗУ» ПОЛИТИКА в отношении обработки персональных данных в ООО МФО «ДЕНЬГИ В ПОЛЬЗУ» Волгоград 2016 Оглавление 1. Общие положения 3 2.

Подробнее

УТВЕРЖДЕНО приказом от г. П-119/А. Положение по обеспечению информационной безопасности персональных данных в ФГУ ФНЦ НИИСИ РАН

УТВЕРЖДЕНО приказом от г. П-119/А. Положение по обеспечению информационной безопасности персональных данных в ФГУ ФНЦ НИИСИ РАН УТВЕРЖДЕНО приказом от 03.07.2015г. П-119/А Положение по обеспечению информационной безопасности персональных данных в ФГУ ФНЦ НИИСИ РАН 2015 2 Содержание 1. Общие положения... 3 2. Список терминов и определений...

Подробнее

Положение по обработке и защите персональных данных Клиентов ООО «Айкотел»

Положение по обработке и защите персональных данных Клиентов ООО «Айкотел» 1 ОГЛАВЛЕНИЕ 1 ВВЕДЕНИЕ...3 2 ТЕРМИНЫ...4 3 ОБРАБОТКА ПЕРСОНАЛЬНЫХ ДАННЫХ КЛИЕНТОВ ООО «Айкотел»...6 3.1 Основания и цели обработки персональных данных Клиентов...6 3.2 Условия обработки персональных данных

Подробнее

ПОЛОЖЕНИЕ об обработке и защите персональных данных в

ПОЛОЖЕНИЕ об обработке и защите персональных данных в АКЦИОНЕРНОЕ ОБЩЕСТВО КОММЕРЧЕСКИЙ БАНК «МОДУЛЬБАНК» УТВЕРЖДЕНО Правлением АО КБ «Модульбанк» ПОЛОЖЕНИЕ об обработке и защите персональных данных в АО КБ «Модульбанк» Кострома, 2017 Банковские услуги предоставляются

Подробнее

Лекция 1. Базыданных. Моисеев Михаил Юрьевич. Вводнаялекция

Лекция 1. Базыданных. Моисеев Михаил Юрьевич. Вводнаялекция Лекция 1 Базыданных Моисеев Михаил Юрьевич Вводнаялекция Целии задачи курса Получение навыков проектирования ИС Основные понятия и определения Базовые теории Практические навыки проектирования ИС Изучение

Подробнее

Защита информации в базах данных

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

Подробнее

Введение в базы данных. Введение в SQL.

Введение в базы данных. Введение в SQL. Введение в базы данных. Введение в SQL. Sumy Educational Center Software Quality Assurance (QA) Netcracker 2016 1 Вы узнаете о следующем Что такое база данных Классификация баз данных СУБД Клиенты СУБД

Подробнее

ОГЛАВЛЕНИЕ 1. ОБЩИЕ ПОЛОЖЕНИЯ ПЕРСОНАЛЬНЫЕ ДАННЫЕ, ОБРАБАТЫВАЕМЫЕ ОПЕРАТОРОМ ЦЕЛИ СБОРА И ОБРАБОТКИ И ПРАВОВОЕ ОБОСНОВАНИЕ ОБРАБОТКИ П

ОГЛАВЛЕНИЕ 1. ОБЩИЕ ПОЛОЖЕНИЯ ПЕРСОНАЛЬНЫЕ ДАННЫЕ, ОБРАБАТЫВАЕМЫЕ ОПЕРАТОРОМ ЦЕЛИ СБОРА И ОБРАБОТКИ И ПРАВОВОЕ ОБОСНОВАНИЕ ОБРАБОТКИ П ОГЛАВЛЕНИЕ 1. ОБЩИЕ ПОЛОЖЕНИЯ... 3 2. ПЕРСОНАЛЬНЫЕ ДАННЫЕ, ОБРАБАТЫВАЕМЫЕ ОПЕРАТОРОМ... 3 3. ЦЕЛИ СБОРА И ОБРАБОТКИ И ПРАВОВОЕ ОБОСНОВАНИЕ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ... 3 4. УСЛОВИЯ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ

Подробнее

Распределенные базы данных. Общие сведения

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

Подробнее

Инструкция администратора безопасности информационной системы персональных данных

Инструкция администратора безопасности информационной системы персональных данных УТВЕРЖДАЮ Ректор ГОУ ВПО «НГГУ» С. И. Горлов 2010 г. Инструкция администратора безопасности информационной системы персональных данных 1. Общие положения 1.1. Настоящая инструкция разработана на основании:

Подробнее

Модели администрирования и синхронизации настроек

Модели администрирования и синхронизации настроек УТВЕРЖДЕН 643.53262993.00021-01 96- ЛУ КОМПЛЕКСНАЯ СИСТЕМА ЗАЩИТЫ ИНФОРМАЦИИ «ПАНЦИРЬ+» ДЛЯ ОС MICROSOFT WINDOWS Модели администрирования и синхронизации настроек 643.53262993.00021-01 96 Инв. подл Подп.

Подробнее

Политика обработки персональных данных, оператором которых является Муниципальное автономное учреждение «Многофункциональный центр»

Политика обработки персональных данных, оператором которых является Муниципальное автономное учреждение «Многофункциональный центр» Муниципальное автономное учреждение «Многофункциональный центр» Г^фУНКЦИОНлльХ УТВЕРЖДАЮ МАУ «МФЦ» Н.Е.Креклин * /> U -. 2013г. Политика обработки персональных данных, оператором которых является Муниципальное

Подробнее

ПОЛИТИКА обработки и защиты персональных данных

ПОЛИТИКА обработки и защиты персональных данных УТВЕРЖДАЮ Ректор ННГАСУ А.А. Лапшин " " 2014 г. ПОЛИТИКА обработки и защиты персональных данных Федерального государственного бюджетного образовательного учреждения высшего профессионального образования

Подробнее

УТВЕРЖДЕНО приказом Директора МАУ «МФЦ» 3-пд от 18 августа 2014 г.

УТВЕРЖДЕНО приказом Директора МАУ «МФЦ» 3-пд от 18 августа 2014 г. УТВЕРЖДЕНО приказом Директора МАУ «МФЦ» 3-пд от 18 августа 2014 г. ПОЛИТИКА в отношении обработки персональных данных в муниципальном автономном учреждении городского округа Похвистнево Самарской области

Подробнее

ПОЛИТИКА ООО «Промсельхозбанк» в отношении обработки персональных данных

ПОЛИТИКА ООО «Промсельхозбанк» в отношении обработки персональных данных ООО «Промсельхозбанк» УТВЕРЖДЕНО решением Правления ООО «Промсельхозбанк» протокол б/н от 01.11.2012 Председатель Правления Н.А. Воронкова ПОЛИТИКА ООО «Промсельхозбанк» в отношении обработки персональных

Подробнее

Инструкция по порядку работы с Системой электронного документооборота «Витус-Клиент»

Инструкция по порядку работы с Системой электронного документооборота «Витус-Клиент» Инструкция по порядку работы с Системой электронного документооборота «Витус-Клиент» ВХОД В СИСТЕМУ... 2 ОБЩИЕ ЭЛЕМЕНТЫ ИНТЕРФЕЙСА... 2 СТАТУСЫ ДОКУМЕНТА... 2 ПЕЧАТЬ ДОКУМЕНТОВ... 3 СПИСКИ... 3 Перемещение

Подробнее

Общероссийский Профсоюз работников физической культуры, спорта и туризма Объединения Профсоюзов России СОЦПРОФ РОСПРОФСПОРТ

Общероссийский Профсоюз работников физической культуры, спорта и туризма Объединения Профсоюзов России СОЦПРОФ РОСПРОФСПОРТ 1 невозможным восстановить содержание персональных данных в информационной системе персональных данных и (или) в результате которых уничтожаются материальные носители персональных данных; Информационная

Подробнее

ПОЛИТИКА. в отношении защиты и обработки персональных данных. «Кредит Урал Банк»

ПОЛИТИКА. в отношении защиты и обработки персональных данных. «Кредит Урал Банк» УТВЕРЖДЕНО Правлением «КУБ» ОАО открытое акционерное общество Протокол 8 от 2 февраля 2015 г. ПОЛИТИКА в отношении защиты и обработки персональных данных «Кредит Урал Банк» открытого акционерного общества

Подробнее

АДМИНИСТРАЦИЯ ГОРОДА СМОЛЕНСКА

АДМИНИСТРАЦИЯ ГОРОДА СМОЛЕНСКА АДМИНИСТРАЦИЯ ГОРОДА СМОЛЕНСКА ПОСТАНОВЛЕНИЕ (с изменениями, внесенными постановлениями Администрации города Смоленска от 02.12.2014 2094, от 23.12.2015 284-адм, от 29.12.2015 394-адм) от 30.12.2010 920-адм

Подробнее

АВТОМАТИЗИРОВАННАЯ СИСТЕМА УЧЕТА КНИГ В БИБЛИОТЕКЕ

АВТОМАТИЗИРОВАННАЯ СИСТЕМА УЧЕТА КНИГ В БИБЛИОТЕКЕ NovaInfo.Ru - 43, 2016 г. Технические науки 1 АВТОМАТИЗИРОВАННАЯ СИСТЕМА УЧЕТА КНИГ В БИБЛИОТЕКЕ Пивнев Дмитрий Александрович Силаев Алексей Александрович Информационные технологии применяются во всех

Подробнее

Политика ООО «Дельта Телесистемы» в отношении обработки персональных данных

Политика ООО «Дельта Телесистемы» в отношении обработки персональных данных УТВЕРЖДАЮ Директор ООО «Дельта Телесистемы» В.В. Толканов «26» мая 2014 г. Политика ООО «Дельта Телесистемы» (Редакция 1.0 от 26.05.2014) г. Тюмень 2014 1. Назначение 1.1 Настоящий документ определяет

Подробнее

ООО «Компания Мир Шин» Политика в отношении обработки персональных данных

ООО «Компания Мир Шин» Политика в отношении обработки персональных данных ООО «Компания Мир Шин» Политика в отношении обработки персональных данных 1. Основные понятия и определения 1.1. Сайт совокупность размещенных в сети Интернет веб-страниц, объединенных единой темой, дизайном

Подробнее

Политика обработки персональных данных в АО «Банк оф Токио-Мицубиси ЮФДжей (Евразия)»

Политика обработки персональных данных в АО «Банк оф Токио-Мицубиси ЮФДжей (Евразия)» АО «Банк оф Токио-Мицубиси ЮФДжей (Евразия)» AO Bank of Tokyo-Mitsubishi UFJ (Eurasia) Утверждено Правлением АО «Банк оф Токио-Мицубиси ЮФДжей (Евразия)» Approved by the Management Board of AO Bank of

Подробнее

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО "ТК Олимпия-Райзен-Сибирь"

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО ТК Олимпия-Райзен-Сибирь УТВЕРЖДАЮ Директор ООО "ТК Олимпия-Райзен-Сибирь" В. Э. Данн 03.07.2017 М.П. ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО "ТК Олимпия-Райзен-Сибирь" 1. Общие положения 1.1. Политика в отношении

Подробнее

1.1. Основы работы с базами данных Базы данных и системы управления базами данных. Модели данных

1.1. Основы работы с базами данных Базы данных и системы управления базами данных. Модели данных 1.1. Основы работы с базами данных 1.1.1. Базы данных и системы управления базами данных. Модели данных База данных (БД) это именованная совокупность структурированных данных, относящихся к определенной

Подробнее

Лекция #11. Базыданных. Михаил Моисеев. Нереляционныемодели данных

Лекция #11. Базыданных. Михаил Моисеев. Нереляционныемодели данных Лекция #11 Базыданных Михаил Моисеев Нереляционныемодели данных Достоинствареляционной модели Предсказуемостьрезультатов работы с данными. В основе реляционной модели лежит математическая модель любой

Подробнее

ПОЛИТИКА ОАО «СОГАЗ» В ОТНОШЕНИИ ОБРАБОТКИ И ЗАЩИТЫ ПЕРСОНАЛЬНЫХ ДАННЫХ. 1. Общие положения

ПОЛИТИКА ОАО «СОГАЗ» В ОТНОШЕНИИ ОБРАБОТКИ И ЗАЩИТЫ ПЕРСОНАЛЬНЫХ ДАННЫХ. 1. Общие положения Приложение к Приказу Председателя Правления ОАО «СОГАЗ» от «30» марта 2015 года 258 ПОЛИТИКА ОАО «СОГАЗ» В ОТНОШЕНИИ ОБРАБОТКИ И ЗАЩИТЫ ПЕРСОНАЛЬНЫХ ДАННЫХ 1. Общие положения Настоящая Политика в отношении

Подробнее

Политика Общества с ограниченной ответственностью «Издательство «Историческая литература» в отношении обработки персональных данных

Политика Общества с ограниченной ответственностью «Издательство «Историческая литература» в отношении обработки персональных данных Политика Общества с ограниченной ответственностью «Издательство «Историческая литература» в отношении обработки персональных данных Утверждена Приказом Генерального директора от 03.10.16 г. 1. Назначение

Подробнее

Вопросы, выносимые на опрос (для дискуссии) разделам учебной дисциплины:

Вопросы, выносимые на опрос (для дискуссии) разделам учебной дисциплины: 1. Оценочные средства текущего контроля. Вопросы, выносимые на опрос (для дискуссии) разделам учебной дисциплины: Раздел 1.Введение в банки данных 1. Понятие банка данных (БнД). Компоненты БнД. 1.1. Информационный

Подробнее

РЕГИОНАЛЬНЫЙ ФРАГМЕНТ ЕДИНОЙ ГОСУДАРСТВЕННОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ В СФЕРЕ ЗДРАВООХРАНЕНИЯ. Руководство пользователя. Руководство администратора

РЕГИОНАЛЬНЫЙ ФРАГМЕНТ ЕДИНОЙ ГОСУДАРСТВЕННОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ В СФЕРЕ ЗДРАВООХРАНЕНИЯ. Руководство пользователя. Руководство администратора УТВЕРЖДЕНО 13356537.42 5520 9.357.И3.29 РЕГИОНАЛЬНЫЙ ФРАГМЕНТ ЕДИНОЙ ГОСУДАРСТВЕННОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ В СФЕРЕ ЗДРАВООХРАНЕНИЯ Руководство пользователя Модуль «Конструктор отчетных форм» Руководство

Подробнее

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

Политика предприятия в отношении обработки персональных данных Политика предприятия в отношении обработки персональных данных Владимир 2015 Содержание 1. Назначение 2. Сведения об операторе персональных данных 3. Общие положения 4. Категории обрабатываемых персональных

Подробнее

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА

Подробнее

Адрес фактического нахождения: , г. Киров, ул. Производственная, дом 38.

Адрес фактического нахождения: , г. Киров, ул. Производственная, дом 38. Политика ООО «КировПакТрейд» в отношении обработки персональных данных 1. Назначение и область действия документа 1. «Политика ООО «КировПакТрейд» (далее по тексту также Общество) в отношении обработки

Подробнее

Об авторе 14 Благодарности 16 Введение 17. àñòü I. Èíñòàëëÿöèÿ 23. Глава 1. Введение в базы данных 25. Глава 2. Техническое описание MySQL 35

Об авторе 14 Благодарности 16 Введение 17. àñòü I. Èíñòàëëÿöèÿ 23. Глава 1. Введение в базы данных 25. Глава 2. Техническое описание MySQL 35 6 Ñîäåðæàíèå Ñîäåðæàíèå Об авторе 14 Благодарности 16 Введение 17 àñòü I. Èíñòàëëÿöèÿ 23 Глава 1. Введение в базы данных 25 Общая картина... 25... и небольшие базы данных 28 История и развитие 28 Возможности

Подробнее

ПОЛИТИКА. обработки персональных данных. ООО «Альта-Софт» Редакция 1.2. г. Москва 2016 г.

ПОЛИТИКА. обработки персональных данных. ООО «Альта-Софт» Редакция 1.2. г. Москва 2016 г. Утверждена Приказом ООО «Альта-Софт» от «23» сентября 2016 г. УЦ-34 ПОЛИТИКА обработки персональных данных ООО «Альта-Софт» Редакция 1.2 г. Москва 2016 г. 1 1. Термины и определения 1.1. Оператор государственный

Подробнее

1. Общие положения 1.1. Настоящая Политика об обработке персональных данных (далее Политика):

1. Общие положения 1.1. Настоящая Политика об обработке персональных данных (далее Политика): 1. Общие положения 1.1. Настоящая Политика об обработке персональных данных (далее Политика): является основополагающим внутренним документом коммерческого банка «Газтрансбанк» (Общество с ограниченной

Подробнее

ПОЛИТИКА. в отношении обработки персональных данных. в ООО «Живой Сайт» Листов: 12. УТВЕРЖДАЮ Генеральный директор ООО «Живой Сайт» /Т.Р.

ПОЛИТИКА. в отношении обработки персональных данных. в ООО «Живой Сайт» Листов: 12. УТВЕРЖДАЮ Генеральный директор ООО «Живой Сайт» /Т.Р. УТВЕРЖДАЮ Генеральный директор ООО «Живой Сайт» /Т.Р. Валишев «02» июня 2017 г. ПОЛИТИКА в отношении обработки персональных данных ов: 12 г. Москва 2017 1 Оглавление Термины и определения... 3 1. Общие

Подробнее

Правила по обеспечению информационной безопасности на рабочем месте

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

Подробнее

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО "Амкодор-Брянск"

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО Амкодор-Брянск УТВЕРЖДАЮ Генеральный Директор ООО "Амкодор-Брянск" С. И. Гайтюкевич 30.06.2017 М.П. ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО "Амкодор-Брянск" 1. Общие положения 1.1. Политика в отношении

Подробнее

СРЕДСТВО ДОВЕРЕННОЙ ЗАГРУЗКИ Dallas Lock. Руководство оператора (пользователя)

СРЕДСТВО ДОВЕРЕННОЙ ЗАГРУЗКИ Dallas Lock. Руководство оператора (пользователя) УТВЕРЖДЕН ПФНА.501410.003 34-ЛУ СРЕДСТВО ДОВЕРЕННОЙ ЗАГРУЗКИ Dallas Lock Руководство оператора (пользователя) ПФНА.501410.003 34 Листов 12 2016 Содержание ВВЕДЕНИЕ... 3 1 НАЗНАЧЕНИЕ СДЗ DALLAS LOCK...

Подробнее

Закрытое акционерное общество «Блондинка.Ру» (ОГРН , ИНН , КПП ) ПОЛИТИКА. по обработке персональных данных

Закрытое акционерное общество «Блондинка.Ру» (ОГРН , ИНН , КПП ) ПОЛИТИКА. по обработке персональных данных Закрытое акционерное общество «Блондинка.Ру» (ОГРН 1077761374514, ИНН 7709761209, КПП 770901001) УТВЕРЖДЕНА Приказом 070417-001 от 07.04.2017 г. Генерального директора ЗАО «Блондинка.Ру» / Костенковой

Подробнее

1.1 Настоящий документ определяет политику в ООО «Пицца дель папа» (далее Компания) в отношении обработки персональных данных (далее ПДн).

1.1 Настоящий документ определяет политику в ООО «Пицца дель папа» (далее Компания) в отношении обработки персональных данных (далее ПДн). Политика в отношении обработки персональных данных 1 Введение 1.1 Настоящий документ определяет политику в ООО «Пицца дель папа» (далее Компания) в отношении обработки персональных данных (далее ПДн).

Подробнее

CRLS. Описание контрольного примера. (Система управления доступом к данным)

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

Подробнее

Политика обработки персональных данных в Открытом Акционерном Обществе Коммерческий Банк «Химик»

Политика обработки персональных данных в Открытом Акционерном Обществе Коммерческий Банк «Химик» Утверждаю: Председатель Совета ОАО Комбанк «Химик» В.Г. Юрицын Протокол 19 от 02.02.2012 г. Политика обработки персональных данных в Открытом Акционерном Обществе Коммерческий Банк «Химик» Дзержинск 2012

Подробнее

Метаданные теста. 1 База данных (БД) это информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов, обладающих...

Метаданные теста. 1 База данных (БД) это информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов, обладающих... Метаданные теста Автор теста: Неверова Елена Григорьевна, старший преподаватель кафедры «ПИ» Название курса: Базы данных в информационных системах Предназначено для студентов специальности: очное отделение

Подробнее

- по разработке и развертыванию автоматизированной системы; - первоначальному вводу данных в Единую базу данных «ЕИС Филиал» и её Копии;

- по разработке и развертыванию автоматизированной системы; - первоначальному вводу данных в Единую базу данных «ЕИС Филиал» и её Копии; 1. Общие положения Настоящий Регламент определяет перечень и порядок выполнения мероприятий по внедрению (обслуживанию и ведению) Единой базы данных «ЕИС Филиал» и её Копий, осуществляемых в управлениях

Подробнее

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

Архитектура СУБД. Старший преподаватель каф. Процессов управления и информационной безопасности Пермского государственного университета А.В. Архитектура СУБД Старший преподаватель каф. Процессов управления и информационной безопасности Пермского государственного университета А.В. Неверов Архитектура СУБД Определяет уровни абстрагирования представления

Подробнее

Дж.Боуман, С.Эмерсон, М.Дарновски ПРАКТИЧЕСКОЕ РУКОВОДСТВО ПО SQL Эта книга поможет даже в тех случаях, когда бесполезно самое лучшее руководство

Дж.Боуман, С.Эмерсон, М.Дарновски ПРАКТИЧЕСКОЕ РУКОВОДСТВО ПО SQL Эта книга поможет даже в тех случаях, когда бесполезно самое лучшее руководство Дж.Боуман, С.Эмерсон, М.Дарновски ПРАКТИЧЕСКОЕ РУКОВОДСТВО ПО SQL Эта книга поможет даже в тех случаях, когда бесполезно самое лучшее руководство пользователя. Здесь раскрываются темы, которые часто пропускаются

Подробнее

Политика в отношении организации обработки и обеспечения безопасности персональных данных в МБДОУ «Детский сад 99»

Политика в отношении организации обработки и обеспечения безопасности персональных данных в МБДОУ «Детский сад 99» Политика в отношении организации обработки и обеспечения безопасности персональных данных в МБДОУ «Детский сад 99» Оглавление 1. Общие положения... 3 2. Правовые основания обработки персональных данных...

Подробнее

ООО «АНЧЕЛ» Клиника «Здоровье» Политика в отношении обработки персональных данных

ООО «АНЧЕЛ» Клиника «Здоровье» Политика в отношении обработки персональных данных ООО «АНЧЕЛ» Клиника «Здоровье» Политика в отношении обработки персональных данных Владимир 2014 УТВЕРЖДАЮ Директор ООО «АНЧЕЛ» Клиника «Здоровье» А.Л. Антипов г. ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ

Подробнее

ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ

ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ П О С Т А Н О В Л Е Н И Е от 23 июля 2015 г. 748 МОСКВА О создании, развитии и эксплуатации аналитической информационной системы обеспечения открытости деятельности федеральных

Подробнее

СМОЛЕНСКОЕ ОБЛАСТНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ВЯЗЕМСКИЙ ПОЛИТЕХНИЧЕСКИЙ ТЕХНИКУМ»

СМОЛЕНСКОЕ ОБЛАСТНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ВЯЗЕМСКИЙ ПОЛИТЕХНИЧЕСКИЙ ТЕХНИКУМ» СМОЛЕНСКОЕ ОБЛАСТНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ВЯЗЕМСКИЙ ПОЛИТЕХНИЧЕСКИЙ ТЕХНИКУМ» ОДОБРЕНО УТВЕРЖДЕНО Протоколом Методического совета

Подробнее

СИСТЕМА ЗАЩИТЫ ИНФОРМАЦИИ. ОТ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА Dallas Lock 8.0. Инструкция по использованию MS SQL-сервера для СБ

СИСТЕМА ЗАЩИТЫ ИНФОРМАЦИИ. ОТ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА Dallas Lock 8.0. Инструкция по использованию MS SQL-сервера для СБ УТВЕРЖДЕН -ЛУ СИСТЕМА ЗАЩИТЫ ИНФОРМАЦИИ ОТ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА Dallas Lock 8.0 Инструкция по использованию MS SQL-сервера для СБ Листов 35 2016 2 СОДЕРЖАНИЕ ТЕРМИНЫ И СОКРАЩЕНИЯ... 3 1 ОБЩИЕ СВЕДЕНИЯ...

Подробнее

БАЗЫ ДАННЫХ (БД). СИСТЕМЫ УПРАВЛЕНИЯ БД

БАЗЫ ДАННЫХ (БД). СИСТЕМЫ УПРАВЛЕНИЯ БД БАЗЫ ДАННЫХ (БД). СИСТЕМЫ УПРАВЛЕНИЯ БД Общие положения Цель любой информационной системы - обработка данных об объектах реального мира. В широком смысле слова база данных - это совокупность сведений о

Подробнее

РЕКОМЕНДОВАННЫЕ ТРЕБОВАНИЯ

РЕКОМЕНДОВАННЫЕ ТРЕБОВАНИЯ ПРИЛОЖЕНИЕ 6 к протоколу заседания подкомиссии по использованию информационных технологий при предоставлении государственных и муниципальных услуг Правительственной комиссии по использованию информационных

Подробнее

ПОЛОЖЕНИЕ ПО ОБЕСПЕЧЕНИЮ БЕЗОПАСНОСТИ ПЕРСОНАЛЬНЫХ ДАННЫХ ИП Молчанов Александр Владимирович

ПОЛОЖЕНИЕ ПО ОБЕСПЕЧЕНИЮ БЕЗОПАСНОСТИ ПЕРСОНАЛЬНЫХ ДАННЫХ ИП Молчанов Александр Владимирович ПОЛОЖЕНИЕ ПО ОБЕСПЕЧЕНИЮ БЕЗОПАСНОСТИ ПЕРСОНАЛЬНЫХ ДАННЫХ ИП Молчанов Александр Владимирович ИНН/КПП: 352521171400 ОРГНИП:310774613300148 УТВЕРЖДАЮ ИП Александр Владимирович Молчанов 03 марта 2015 года

Подробнее

ПОЛИТИКА ПО ОБРАБОТКЕ ПЕРСОНАЛЬНЫХ ДАННЫХ ИП Александр Владимирович Молчанов

ПОЛИТИКА ПО ОБРАБОТКЕ ПЕРСОНАЛЬНЫХ ДАННЫХ ИП Александр Владимирович Молчанов ПОЛИТИКА ПО ОБРАБОТКЕ ПЕРСОНАЛЬНЫХ ДАННЫХ ИП Александр Владимирович Молчанов ОРГНИП:310774613300148 УТВЕРЖДАЮ ИП Александр Владимирович Молчанов 03 марта 2015 года Москва, 2015 1. Термины и определения

Подробнее

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

Проектирование баз данных Базы данных Проектирование баз данных "Сложная система, спроектированная наспех, никогда не работает, и исправить её, чтобы заставить работать, невозможно". Законы Мерфи. 16-й закон системантики Этапы

Подробнее

Система защиты информации от несанкционированного доступа «Блокхост-сеть К» Руководство пользователя

Система защиты информации от несанкционированного доступа «Блокхост-сеть К» Руководство пользователя Система защиты информации от несанкционированного доступа «Блокхост-сеть К» Руководство пользователя СЗИ «Блокхост-сеть К». Руководство пользователя. Стр. 2 Содержание 1. Общие сведения... 3 1.1. Назначение

Подробнее

Установка Print Audit 6 - Пошаговое руководство

Установка Print Audit 6 - Пошаговое руководство 1 Установка Print Audit 6 - Пошаговое руководство ВНИМАНИЕ! ПЕРЕД НАЧАЛОМ УСТАНОВКИ PRINT AUDIT 6 ОЗНАКОМТЕСЬ С СОДЕРЖАНИЕМ НАСТОЯЩЕГО РУКОВОДСТВА Настольное приложение Print Audit 6 необходимо устанавливать

Подробнее

Приложение 1 к приказу по НКО ЗАО НРД от Положение об обработке персональных данных

Приложение 1 к приказу по НКО ЗАО НРД от Положение об обработке персональных данных Приложение 1 к приказу по НКО ЗАО НРД от 21.08.2015 169 Положение об обработке персональных данных г. Москва, 2015 Содержание Введение... 3 1. Принципы обработки персональных данных... 4 2. Условия обработки

Подробнее

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ЗАО «ФОРВАРД»

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ЗАО «ФОРВАРД» ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ЗАО «ФОРВАРД» 1 НАЗНАЧЕНИЕ 1.1 Настоящий документ определяет политику ЗАО «Форвард» (далее Оператор) в отношении обработки персональных данных (далее

Подробнее

Вводная лекция. Курс «Базы данных» Вадим Цесько. Санкт-Петербургский государственный политехнический университет. 9 февраля 2012 г.

Вводная лекция. Курс «Базы данных» Вадим Цесько. Санкт-Петербургский государственный политехнический университет. 9 февраля 2012 г. Вводная лекция Курс «Базы данных» Вадим Цесько Санкт-Петербургский государственный политехнический университет 9 февраля 2012 г. Вадим Цесько (СПбГПУ) Вводная лекция 9 февраля 2012 г. 1 / 24 Содержание

Подробнее

ПОЛИТИКА ОАО «Капитал Страхование» в отношении обработки персональных данных

ПОЛИТИКА ОАО «Капитал Страхование» в отношении обработки персональных данных ПОЛИТИКА ОАО «Капитал Страхование» в отношении обработки персональных данных 1. Назначение документа 1 «Политика ОАО «Капитал Страхование» в отношении обработки персональных данных» (далее Политика) определяет

Подробнее

1. Общие положения 1.1. Настоящая Политика в отношении обработки персональных данных (далее ПДн) (далее Политика) бюджетного учреждения Ханты-

1. Общие положения 1.1. Настоящая Политика в отношении обработки персональных данных (далее ПДн) (далее Политика) бюджетного учреждения Ханты- Приложение к приказу от 29.12.2016 г. 449 «Об утверждении политики в отношении обработки персональных данных бюджетного учреждения Ханты-Мансийского автономного округа Югры «Медицинский информационно-аналитический

Подробнее

Санкт-Петербург, 2017 г.

Санкт-Петербург, 2017 г. ПОЛИТИКА САНКТ-ПЕТЕРБУРГСКОГО ГОСУДАРСТВЕННОГО КАЗЁННОГО УЧРЕЖДЕНИЯ «ГОРОДСКОЙ ИНФОРМАЦИОННО-РАСЧЁТНЫЙ ЦЕНТР» В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ Санкт-Петербург, 2017 г. Оглавление 1. Цель документа...

Подробнее

2.1. Принципы обработки персональных данных:

2.1. Принципы обработки персональных данных: ПОЛИТИКА обработки персональных данных и реализуемых требований к защите персональных данных управления по охране окружающей среды и природопользованию по Тамбовской области 1. Общие положения 1.1. Настоящая

Подробнее

ООО «ТверьЛайн» Политика в отношении обработки персональных данных. Политика в отношении обработки персональных данных

ООО «ТверьЛайн» Политика в отношении обработки персональных данных. Политика в отношении обработки персональных данных ООО «ТверьЛайн» Политика в отношении обработки персональных данных Тверь 2013 1 Содержание 1 Назначение 4 2 Общие положения 5 3 Принципы обработки персональных данных 6 4 Условия обработки персональных

Подробнее

РАЗРАБОТКА ИНФОРМАЦИОННО СИСТЕМЫ ДЛЯ АВТОШКОЛЫ ООО «ЗЕБРА» Кудинов С.В. Московский технический университет связи и информатики Москва, Россия

РАЗРАБОТКА ИНФОРМАЦИОННО СИСТЕМЫ ДЛЯ АВТОШКОЛЫ ООО «ЗЕБРА» Кудинов С.В. Московский технический университет связи и информатики Москва, Россия РАЗРАБОТКА ИНФОРМАЦИОННО СИСТЕМЫ ДЛЯ АВТОШКОЛЫ ООО «ЗЕБРА» Кудинов С.В. Московский технический университет связи и информатики Москва, Россия DEVELOPMENT OF THE INFORMATION SYSTEM FOR DRIVING SCHOOL «ZEBRA»

Подробнее

Микротест - источник ваших знаний

Микротест - источник ваших знаний Курс Oracle: Основы SQL и PL/SQL (Код: MT-SQL/PLSQL) Код: MT-SQL/PLSQL Курс длится 40 академических часов Январь 17 Февраль 17 Март 17 Апрель 17 Май 17 Июнь 17 Июль 17 Август 17 Сентябрь 17 Октябрь 17

Подробнее

Утверждаю Главный врач ТОГБУЗ «ГКБ 3 г. Тамбова» В.Г. Виницкий 2014 г.

Утверждаю Главный врач ТОГБУЗ «ГКБ 3 г. Тамбова» В.Г. Виницкий 2014 г. Утверждаю Главный врач ТОГБУЗ «ГКБ 3 г. Тамбова» В.Г. Виницкий 2014 г. ПОЛИТИКА обработки персональных данных и реализуемых требований к защите персональных данных ТОГБУЗ «ГКБ 3 г. Тамбова» 1. Общие положения

Подробнее

Теория баз данных Общие понятия

Теория баз данных Общие понятия Глава 6 Теория баз данных 6.1. Общие понятия 6.2. Модели данных 6.3. Реляционные базы данных 6.4. Постреляционные модели и базы данных 6.5. Проектирование баз данных Современные информационные системы,

Подробнее

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ ООО «КЕЛЛОГГ РУС»

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ ООО «КЕЛЛОГГ РУС» ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ ООО «КЕЛЛОГГ РУС» Bоронеж, 2016 Содержание Контроль версий документа... Ошибка! Закладка не определена. 1 Введение... 3 2 Принципы обработки ПДн... 4

Подробнее

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

Политика в области обработки персональных данных Политика в области обработки персональных данных 1. Персональные данные 2. Обработка персональных данных 3. Контроль над использованием персональных данных 4. Доступ к персональным данным 5. Безопасность

Подробнее

ИНФОРМАЦИОННО-ВЫЧИСЛИТЕЛЬНЫЕ, УПРАВЛЯЮЩИЕ И СЕТЕВЫЕ СИСТЕМЫ

ИНФОРМАЦИОННО-ВЫЧИСЛИТЕЛЬНЫЕ, УПРАВЛЯЮЩИЕ И СЕТЕВЫЕ СИСТЕМЫ ИНФОРМАЦИОННО-ВЫЧИСЛИТЕЛЬНЫЕ, УПРАВЛЯЮЩИЕ И СЕТЕВЫЕ СИСТЕМЫ УДК 519.6 РЕАЛИЗАЦИЯ ПОДСИСТЕМЫ УПРАВЛЕНИЯ ПРОЕКТАМИ СИСТЕМЫ «УНИВЕРСАЛЬНЫЙ СПРАВОЧНИК ДЛЯ НЕФИНАНСОВЫХ ЗАДАЧ» М. В. Майорова, И. Е. Воронина

Подробнее

Инструкция пользователю по вводу данных и работе в личном кабинете бюро кредитных историй МикроФинанс

Инструкция пользователю по вводу данных и работе в личном кабинете бюро кредитных историй МикроФинанс 1 Инструкция пользователю по вводу данных и работе в личном кабинете бюро кредитных историй МикроФинанс Версия 1.2 от 22.02.2017 2 Оглавление Общее описание... 3 Ввод информации по физическим лицам...

Подробнее

Политика ЗАО «Компания ВИСМ» в области обработки персональных данных клиентов

Политика ЗАО «Компания ВИСМ» в области обработки персональных данных клиентов УТВЕРЖДАЮ Генеральный директор ЗАО «Компания ВИСМ» Подрезов А.С. 31.12.2014 Политика ЗАО «Компания ВИСМ» в области обработки персональных данных клиентов Утверждено и введено в действие приказом от 31

Подробнее

Приложение 1. к приказу ТОГБУЗ «Тамбовская ЦРБ». от г ПРАВИЛА обработки персональных данных в ТОГБУЗ «Тамбовская ЦРБ»

Приложение 1. к приказу ТОГБУЗ «Тамбовская ЦРБ». от г ПРАВИЛА обработки персональных данных в ТОГБУЗ «Тамбовская ЦРБ» Приложение 1. к приказу ТОГБУЗ «Тамбовская ЦРБ». от 21.10.2014 г. 229 ПРАВИЛА обработки персональных данных в ТОГБУЗ «Тамбовская ЦРБ» 1. ОБЩИЕ ПОЛОЖЕНИЯ 1..Настоящий документ устанавливает процедуры, направленные

Подробнее

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ИП Подгайный И. Б.

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ИП Подгайный И. Б. УТВЕРЖДАЮ И. Б. Подгайный 28.06.2017 М.П. ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ИП Подгайный И. Б. 1. Общие положения 1.1. Политика в отношении обработки персональных данных (далее Политика)

Подробнее

ПОЛИТИКА ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ И РЕАЛИЗУЕМЫХ ТРЕБОВАНИЙ К ЗАЩИТЕ ПЕРСОНАЛЬНЫХ ДАННЫХ

ПОЛИТИКА ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ И РЕАЛИЗУЕМЫХ ТРЕБОВАНИЙ К ЗАЩИТЕ ПЕРСОНАЛЬНЫХ ДАННЫХ Приложение 2 к приказу утвержденному Генеральным директором ООО Центр пластической хирургии и эндоскопии «РИТМ» 26-ОД от «21» апреля 2016 г. ПОЛИТИКА ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ И РЕАЛИЗУЕМЫХ ТРЕБОВАНИЙ

Подробнее

5. Основные цели Политики: повышение доверия к Банку со стороны клиентов и работников; повышение стабильности функционирования Банка;

5. Основные цели Политики: повышение доверия к Банку со стороны клиентов и работников; повышение стабильности функционирования Банка; АКЦИОНЕРНЫЙ КОММЕРЧЕСКИЙ БАНК «ЕВРОФИНАНС МОСНАРБАНК» (открытое акционерное общество) Политика в отношении обработки персональных данных в ОАО АКБ «ЕВРОФИНАНС МОСНАРБАНК» 1. Настоящая Политика в отношении

Подробнее

ОГЛАВЛЕНИЕ Глава 1. Введение в базы данных. Общая характеристика основных понятий обработки данных Глава 2. Концептуальное моделирование базы данных

ОГЛАВЛЕНИЕ Глава 1. Введение в базы данных. Общая характеристика основных понятий обработки данных Глава 2. Концептуальное моделирование базы данных ОГЛАВЛЕНИЕ Предисловие... 3 Глава 1. Введение в базы данных. Общая характеристика основных понятий обработки данных... 5 1.1. Развитие основных понятий представления данных... 5 1.2. Системы управления

Подробнее

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО "АЙС-МАРКЕТ"

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО АЙС-МАРКЕТ УТВЕРЖДАЮ Генеральный Директор ООО "АЙС-МАРКЕТ" М. В. Александров 27.06.2017 М.П. ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО "АЙС-МАРКЕТ" 1. Общие положения 1.1. Политика в отношении обработки

Подробнее

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО "МИР ОКОН"

ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО МИР ОКОН УТВЕРЖДАЮ Директор ООО "МИР ОКОН" Е. В. Гаврилов 28.06.2017 М.П. ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ В ООО "МИР ОКОН" 1. Общие положения 1.1. Политика в отношении обработки персональных

Подробнее

Задание #1 Вопрос: Какие серверы применяются в технологии "клиент-сервер"?

Задание #1 Вопрос: Какие серверы применяются в технологии клиент-сервер? Тест: C:\Documents and Settings\BOG\Мои документы\study\бд\атт\тесты\бд_тест_общий.mtf Тест Задание #1 Какие серверы применяются в технологии "клиент-сервер"? Выберите несколько из 8 вариантов ответа:

Подробнее

Лист. Политика в отношении обработки персональных данных в ООО «Макдоналдс»

Лист. Политика в отношении обработки персональных данных в ООО «Макдоналдс» 1 ОГЛАВЛЕНИЕ Термины и определения... 3 1. Общие положения... 4 1.1. Назначение документа... 4 1.2. Нормативные ссылки... 4 1.3. Область действия... 4 1.4. Утверждение и пересмотр... 4 2. Персональные

Подробнее

1. Общие положения. 2. Основные понятия. 3. Правовые основания обработки персональных данных

1. Общие положения. 2. Основные понятия. 3. Правовые основания обработки персональных данных ПОЛИТИКА Санкт-Петербургского государственного казенного учреждения «Многофункциональный центр предоставления государственных и муниципальных услуг» в отношении обработки персональных данных (Утверждена

Подробнее

Политика ООО «Парк-отель «Орловский» в отношении обработки персональных данных.

Политика ООО «Парк-отель «Орловский» в отношении обработки персональных данных. Политика ООО «Парк-отель «Орловский» в отношении обработки персональных данных. Юридический и фактический адрес ООО «Парк-отель «Орловский»: 142714, Московская обл., Ленинский р-н, д. Д.Прудищи, уч. 5/БП

Подробнее