ВВЕДЕНИЕ
В настоящие время всё больше программ используют для хранения данных базы данных. Так как поиск в них производить значительно легче чем, в обычном файле. Так же СУБД имеет встроенную систему безопасности, что уменьшает риск кражи данных и их порчу. Самым распространенным типом БД являются реляционные базы, где все данные хранятся в таблицах. Благодаря языку запросов SQL, возможно осуществлять довольно просто доступ к данным. Все современные языки программирования позволяю посылать запросы и принимать результаты от СУБД. MS SQL сервер и C# является неплохим вариантом для написания программ работающих с большими объёмами данных. Также для студентов предусмотрены бесплатные версии этих продуктов.
1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
1.1 Объектно-ориентированное программирование
Объе́ктно-ориенти́рованное программи́рование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов (либо, в менее известном варианте языков с прототипированием — прототипов).
Класс — это тип, описывающий устройство объектов — экземпляров. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.
Прототип — это образцовый объект, по образу и подобию которого создаются другие объекты.
Языки объектного программирования принято делить на объектные, в которых существуют классы и объекты, и объектно-ориентированные, в которых программист может не только пользоваться предопределёнными классами, но и задавать собственные пользовательские классы (либо создавать объекты, устройство которых отличается от устройства прототипов — в языках прототипного программирования).
Объектное и объектно-ориентированное программирование возникло в результате развития идеологии процедурного программирования, где данные и подпрограммы (процедуры, функции) их обработки формально не связаны. Кроме того, в современном объектно-ориентированном программировании часто большое значение имеют понятия события (так называемое событийно-ориентированное программирование) и компонента (компонентное программирование).
Объектно-ориентированное программирование в настоящее время является абсолютным лидером в области прикладного программирования (языки Java, C#, C++, JavaScript, ActionScript и др.). В то же время в области системного программирования до сих пор лидирует парадигма процедурного программирования, и основным языком программирования является язык C. Хотя при взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать языки объектно-ориентированного программирования. Например, мультиплатформенным стандартом стала система Qt, написанная на языке C++.
Первым языком программирования, в котором были предложены принципы объектной ориентированности, была Симула. В момент своего появления (в 1967 году), этот язык программирования предложил поистине революционные идеи: объекты, классы, виртуальные методы и др., однако это всё не было воспринято современниками как нечто грандиозное. Тем не менее, большинство концепций были развиты Аланом Кэйем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым широко распространённым объектно-ориентированным языком программирования.
1.2 SQL
SQL является, прежде всего, информационно-логическим языком, предназначенным для описания хранимых данных, для извлечения хранимых данных и для модификации данных. SQL не является языком программирования. (Вместе с тем стандарт языка спецификацией SQL/PSM предусматривает возможность его процедурных расширений.)
Изначально, SQL был основным способом работы пользователя с базой данных и представлял собой небольшую совокупность команд (операторов) допускающих создание таблиц, добавление в таблицы новых записей, извлечение записей из таблиц (в соответствии с заданным условием), удаление записей и изменение структур таблиц. В связи с усложнением язык SQL стал более языком прикладного программирования, а пользователи получили возможность использовать визуальные построители запросов.
Язык SQL представляет собой совокупность операторов.
Операторы SQL делятся на:
операторы определения данных (Data Definition Language, DDL)
операторы манипуляции данными (Data Manipulation Language, DML)
операторы определения доступа к данным (Data Control Language, DCL)
операторы управления транзакциями (Transaction Control Language, TCL)
2 АНАЛИЗ ПРОЕКТА
2.1 Определение заинтересованных лиц и их требований
Программа предназначена для облегчения труда и уменьшения ошибок приёмной комиссии ВУЗа. Она позволяет хранить данные о всех поступающих. Исходя из поданных документов определяет какие льготами обладает абитуриент, так же по завершению приёма можно автоматически рассчитать кто попал в институт и на какую форму обучения.
Таблица 1. Пользователи системы и их возможности
Пользователь | Требования |
Редактор | Должен иметь возможность создавать в базе новые институты и факультеты, а так же менять данные о существующих, добавлять и изменять возможные дополнительные документы, сопоставлять льготы с документами. |
Работник комиссии | Должен получать доступ лишь к специальностям на которые его назначил редактор. Может добавлять, редактировать и удалять абитуриентов на свои специальности. |
Администратор |
Должен иметь способность добавлять новых пользователей в систему, а также редактировать и удалять существующих. |
Директор | Должен иметь возможность просмотреть распределение мест на всех факультетах. |
2.2 Используемые технологии
Проект пишется с использованием трёх современных технологий, что существенно упрощает, но с другой стороны и усложняет разработку проекта. Первой технологией является .NET технология, базовым языком которой является язык программирования C#, использующий самый современный подход к программированию, именуемый объектно-ориентировочным программированием. Данный язык был выбран в связи с тем, что он имеет большую функциональность и при этом относительно не сложен в использовании, особенно если имеется опыт программирования в таких языках как С\С++.
Второй же технологией является WPF. Данная технология упрощает создание интерфейса и позволяет динамически менять внешний вид программы. Третьей технологией является реляционная база данных. Мною в качестве сервера баз данных был выбран MS SQL Server. Он был выбран за быстроту работу, а так же за наличие бесплатной версии сервера, которую предоставляет Microsoft на своём сайте. Для работы с базой данных использовались классы ADO.NET. Подключение происходило с помощью специализированных классов работы с MS SQL Server, а не с помощью драйвера. Для написания программы была использована среда разработки Microsoft Visual Studio 2010.
2.3 Прецеденты
У каждого пользователя есть своя задача в приложении. Для выполнения их он должен быть наделён соответствующими правами. Но прав должно быть не больше, чем необходимо, иначе появляется возможность нанесения ущерба данным или их краже. На рисунке 1 изображена диаграмма взаимодействий пользователей с системой. Там можно выделить четыре основных пользователя, у каждого из которых есть свои права.
2.4 База данных
Использование базы данных в таких проектах является осознанной необходимостью. Но прежде чем создать базу данных нужно её спроектировать. Результатом же проектирования является реляционная модель базы, которая приведена в приложении А. Ниже же приведена её структура.
Рис 1. Диаграмма прецедентов
Users – хранит пользователей системы
Surname – фамилия
Name - имя
Patronymic – отчество
Login - логин
Password – md5 хеш пароля
Date_born – дата рождения
Role – возможные роли пользователей
Name – название
About – описание роли
User_role – связывает пользователя с ролью, что позволяет одному пользователю назначать несколько ролей.
Form_learning – форма обучения
Type – тип формы обучения (заочная, денная)
Exam – содержит все возможные вступительные экзамены
Name – название экзамена
Source_exam – содержит возможные источники экзамена (институтский, внешнее тестирование)
Name - название источника
Assessment – оценка абитуриента по определённому экзамену
Assessment-значение оценки (1, 2, 3 и т. д.)
Applicant – содержит всех абитуриентов поступавших в институт
Diplom_number – номер диплома
Passporn_number – номер паспорта
Code – идентификационный код
Refusal – true, если студент забрал документы
Year – год поступления
Privilege – возможные привилегии студентов
Name – название привилегии
Priority – приоритет привилегии, чем число выше, тем привилегия значимее
Document – возможные документы для подачи комиссии
Name – название документа
Privilege_document – содержит нужный набор документов для получения каждой привилегии
Place – содержит места для каждого года и специальности
Year – год
Budget_places – количество бюджетных мест
Contract_places – количество контрактных мест
Contract – содержит цены контрактов
Cost – цена за год
Course – курс
3. СТРУКТУРА СИСТЕМЫ
3.1 Хранение логинов и паролей
В таблице с пользователями пароль хранится в зашифрованном виде. Шифрованным значение является хэш от пароля. Он получается при помощи алгоритма хеширования MD5. Так как эта функция не обратима, то восстановить пароль пользователю невозможно, при необходимости можно его лишь заменить.
В качестве идентификатора пользователя используются не цифровые идентификаторы пользователя, а статистически уникальный 128-битный идентификатор - GUID.
3.2 Безопасность
Все подключаемые пользователи к базе данных имеют лишь права выполнять процедуры, что делает бесполезным попытку взлома субд из под открытого для всех логина. Так же все процедуры принимают идентификатор пользователя и случае если пользователь не имеет прав или не найден, запрос не будет выполнен. Подбор же идентификатора займёт много времени.
3.3 Системные требования
Для работы приложения на компьютере должна быть установлена ОС Windows XP и выше. Для хранения данных используется MS SQL Server 2005 или выше. Для работы программы база данных должна быть расположена на сервере доступном для приложения. Так же обязательно наличие .NET Framework 4.0 на компьютере.
4. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
4.1 Вход в систему
Для входа в систему необходимо ввести свой логин и пароль. Система сама определит к какой группе пользователей вы относитесь. В зависимости от ваших прав, вам будут доступны определённые функции.
Рис. 1 Окно входа
4.2 Изменение параметров соединения с базой
Перед тем как попытаться войти в систему, можно изменить параметры соединения с СУБД. Эта функция очень важна при первом использовании программы.
Рис. 2 Окно настроек подключения
4.3 Навигация
В главном окне программы находится меню, а так же несколько панели с помощью которых можно осуществлять общие действия для всех ролей. В правом углу находятся кнопки для перехода в разделы предназначенные для каждой из ролей.
Рис. 3 Главное окно
4.4 Администратор
Панель администратора представляет из себя список пользователей системы. Все данные пользователей можно менять, а также создавать и удалять пользователей. Доступна возможность назначения ролей пользователям, причем не только одной, а сразу нескольких.
Рис. 4 Окно администратора
4.5 Редактор
В окне редактора институты и их специальности представлены в виде дерева. При выборе специальности мы видим распределения мест. Все данные в окне могут быть изменены а так же добавлены новые записи.
Рис. 5 Окно редактора
4.6 Работник комиссии
В верхней части окна находится список специальностей работника, в нижней список абитуриентов. Слева расположены личные данные выделенного абитуриента.
Рис. 6 Окно работника комиссии
4.7 Директор
Слева находится список институтов и специальностей в иерархическом виде. Справа распределение мест на выбранной специальности.
Рис . 7 Окно директора
Вывод: современные многопользовательские приложения для работы с относительно большими объёмами данных невозможно представить без использования баз данных. Использования вместо баз данных обычных текстовых файлов замедлило б работу программ в разы, вдобавок пришлось бы самостоятельно организовывать взаимодействие через сеть. Так же возможность сохранения процедур на сервере избавляет нас в дальнейшем, при обнаружении ошибок в них, перекомпилировать приложения – достаточно будет обновить процедуры. Использование в разработке последних технологий от Microsoft позволяет сделать процесс программирования значительно проще и соответственно быстрее. Использование WPF позволило без особых трудов обеспечить синхронизацию данных и их представления.