Разработка системы управления базой данных (СУБД) «Аэропорт»

Автор работы: Пользователь скрыл имя, 08 Июня 2015 в 23:49, курсовая работа

Описание работы

СУБД — это программное обеспечение, которое взаимодействует с прикладными программами пользователя, базой данных и обладает перечисленными ниже возможностями:
позволяет создать базу данных, что обычно осуществляется с помощью языка определения данных (DDL — Data Definition Language). Язык DDL предоставляет пользователям средства указания типа данных и их структуры, а также средства задания ограничений для информации, хранимой в базе данных;

Файлы: 1 файл

Пояснительная_записка.docx

— 488.04 Кб (Скачать файл)
    • Таблица находиться во второй нормальной форме.
    • Любой ее не ключевой атрибут функционально зависит только от первичного ключа.

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

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

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

    • Все строки должны быть различными.
    • Все элементы внутри ячеек должны быть атомарными.

В результате данной курсовой работы была реализована база данных в третьей нормальной форме.

Модель данных представлена в приложении З. SQL-скрипт для создания базы данных представлен в приложении И.

 

    1. Проектирование приложения

 

 

В ходе выполнения данного курсового проекта было реализовано клиент-серверное приложение. Диаграмма классов приложения представлена в приложении Г.

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

 

Авторизация:

    • считывание логина и пароля;
    • проверка на существование пользователя в БД;
    • при правильном логине и пароле вход в систему;
    • при неправильном логине и пароле перезапрос авторизации.

Просмотр записей:

    • выбор параметров фильтрации записей;
    • вывод в табличном виде записей согласно параметрам фильтрации.

Просмотр определенной записи:

    • выбор определенной записи в таблице записей;
    • отображение полной информации о выбранной записи.

Создание новой записи:

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

Редактирование записи:

    • выбор необходимой для редактирования записи;
    • отображение всех полей записи;
    • редактирование необходимых полей записи;
    • считывание и валидация всех полей записи;
    • сохранение измененного объекта в БД.

Удаление записи:

    • выбор записи для удаления;
    • удаление объекта в БД.

Сохранение записей в файл:

    • приведение таблицы к нужному виду;
    • сохранение записей из таблицы в указанный файл.

Распечатка записей:

    • приведение таблицы к нужному виду;
    • вывод записей из таблицы на печать.

На основе сущностей предметной области были созданы классы, которые их описывают, представлены в приложении Г. Поля класса соответствуют существующим полям соответствующих таблиц.

 

  1. РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ СУБД

 

    1. Детальная реализация функциональных частей приложения

 

 

В данном курсовом проекте в качестве сервера баз данных был использован сервер MySQL 5.5.27. Для доступа к данным использовалась библиотека NHibernate 3.3.3.

 

      1. Детальная реализация функциональных частей приложения

 

 

Для настройки NHibernate используется конфигурационный файл hibernate.cfg.xml, представленный в листинге 3.1.

 

Листинг 3.1 – Содержимое файла hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>

<!--

This template was written to work with NHibernate.Test.

Copy the template to your NHibernate.Test project folder and rename it in hibernate.cfg.xml and change it

for your own use before compile tests in VisualStudio.

-->

<!-- This is the ByteFX.Data.dll provider for MySql -->

<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2">

  <session-factory name="NHibernate.Test">

    <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>

    <property name="connection.connection_string">

      Database=db_airport;Data Source=localhost;User Id=root;Password=mypass

    </property>

    <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>

  </session-factory>

</hibernate-configuration>

 

В файле hibernate.cfg.xml указываются параметры настройки библиотеки NHibernate, указывается диалект MySQL Dialect, так как мы работаем с базой данных MySQL, драйвер MySQL, так как мы работаем с сервером MySQL, название базы дынных, логин и пароль для подключения к ней. Так же указываем использование кодировки UTF-8, в которой находится наша база данных.

Для подключения к базе данных была создана функция OpenSession, представленная в листинге 3.2.

 

Листинг 3.2 – Функция OpenSession

static ISessionFactory factory;

 

static ISession OpenSession()

{

    if (factory == null)

    {

        try

        {

            Configuration conf = new Configuration().Configure("hibernate.cfg.xml");

            conf.AddAssembly(Assembly.GetCallingAssembly());

            factory = conf.BuildSessionFactory();

        }

        catch (Exception exc)

        {

            MessageBox.Show(exc.Message, "Connection/mapping error", MessageBoxButtons.OK, MessageBoxIcon.Error);

            System.Environment.Exit(0);

        }

    }

 

    return factory.OpenSession();

}

 

Для добавления элемента в базу была реализована функция AddElementToDB, представленная в листинге 3.3.

 

Листинг 3.3 – Функция AddElementToDB

public static void AddElementToDB(Object _elem)

{

    using (ISession session = OpenSession())

    {

        using (ITransaction transaction = session.BeginTransaction())

        {

            session.Save(_elem);

            transaction.Commit();

        }

    }

}

 

Для удаления элемента из базы была реализована функция DeleteElementFromDB, представленная в листинге 3.4.

 

Листинг 3.4 – Функция DeleteElementFromDB

public static void DeleteElementFromDB(Object _elem)

{

    using (ISession session = OpenSession())

    {

        using (ITransaction transaction = session.BeginTransaction())

        {

 

            session.Delete(_elem);

            transaction.Commit();

        }

    }

}

 

Для обновления элемента в базе была реализована функция UpdateElementInDB, представленная в листинге 3.5.

 

Листинг 3.5 – Функция UpdateElementInDB

public static void UpdateElementInDB(Object _elem)

{

    using (ISession session = OpenSession())

    {

        using (ITransaction transaction = session.BeginTransaction())

        {

            session.Update(_elem);

            transaction.Commit();

        }

    }

}

Для объектов из базы была реализована функция LoadObjectsFromDB, представленная в листинге 3.6.

 

Листинг 3.6 – Функция LoadObjectsFromDB

public static IList LoadObjectsFromDB(string table)

{

    using (ISession session = OpenSession())

    {

        IQuery query = session.CreateQuery("from " + table + " as obj order by obj.ID asc");

 

        IList foundObjects = query.List();

        return foundObjects;

    }

}

 

Все вышеописанные функции были собраны в классе Form1.cs.

 

      1. Реализация классов сущностей

 

 

В главе 2 были выделены сущности и связи между сущностями, необходимые для реализации данного курсового проекта. На данном этапе были созданы классы для каждой сущности:

Airport.cs – класс сущности "Airport";

Board.cs – класс сущности "Board";

ClassType.cs – класс сущности "ClassType";

Company.cs – класс сущности "Company";

City.cs – класс сущности "City";

Country.cs – класс сущности "Country";

Flight.cs – класс сущности "Flight";

Orders.cs – класс сущности "Orders";

Passenger.cs – класс сущности "Passenger";

Plane.cs – класс сущности "Plane";

Users.cs – класс сущности тип "Users".

 

Для маппинга (сопоставления) C#-классов с таблицами базы данных были созданы файлы маппинга для каждой сущности:

Airport.hbm.xml – файл маппинга сущности "Airport";

Board.hbm.xml – файл маппинга сущности "Board";

ClassType.hbm.xml – файл маппинга сущности "Class";

Company.hbm.xml – файл маппинга сущности "Company";

City.hbm.xml – файл маппинга сущности "City";

Country.hbm.xml – файл маппинга сущности "Country";

Flight.hbm.xml – файл маппинга сущности "Flight";

Orders.hbm.xml – файл маппинга сущности "Orders";

Passenger.hbm.xml – файл маппинга сущности "Passenger";

Plane.hbm.xml – файл маппинга сущности "Plane";

Users.hbm.xml – файл маппинга сущности тип "Users".

 

 

 

    1. Разработка пользовательского интерфейса программы

 

 

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

Form1.cs – главное окно приложения;

FormAuth.cs – окно авторизации;

FormAirport.cs – окно для работы с сущностью "Airport";

FormBoard.cs – окно для работы с сущностью "Board";

FormClassType.cs – окно для работы с сущностью "ClassType";

FormCompany.cs – окно для работы с сущностью "Company";

FormCity.cs – окно для работы с сущностью "City";

FormCountry.cs – окно для работы с сущностью "Country";

FormFlight.cs – окно для работы с сущностью "Flight";

FormOrders.cs – окно для работы с сущностью "Orders";

FormPassenger.cs – окно для работы с сущностью "Passenger";

FormPlane.cs – окно для работы с сущностью "Plane";

FormUsers.cs – окно для работы с сущностью "Users".

 

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

 

При запуске приложения появляется окно авторизации (рисунок 3.1).

 

 

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

 

Авторизация осуществляется путем ввода логина и пароля. В случае некорректной регистрации форма авторизации появится снова.

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

Рисунок 3.2 – Главное окно программы

 

Справа расположена панель, с помощью которой происходит управление базой данных. При нажатии на кнопки Add, Update появляется форма с полями, необходимыми для заполнения (рисунок 3.3). При нажати на кнопу Advanced Filter к у этой формы становится появляется возможность выбирать поля, необходимые для фильтрации.

 

.

Рисунок 3.3 – Главное окно программы

 

Выбор таблицы осуществляется с помощью выпадающего списка с пометкой "Table". Выбор ID элемента, необходимого для удаления с помощью кнопки Delete, изменения с помощью кнопки Update, нахождения с помощью кнопки Find, осуществляется с помощью списка с пометкой ID. При нажатии на кнопку Reload таблица перезагружается. При нажатии на кнопку Simple Filter происходит фильтрация основной таблицы по полям, заполненным в дополнительной таблице (над основной). При нажатии на кнопку Menu вверху выпадает список (рисунок 3.4) с такими функциями, как сохранение содержимого таблицы в файл (Save as...), печать содержимого таблицы (Print), смена пользователя (Change user), выход из программы (Exit).

 

Рисунок 3.4 – Дополнительные функции программы

 

    1. Тестирование приложения

 

 

Информация о проводимых тестах, их описание и ожидаемый результат представлен в таблице 3.1.

 

Таблица 3.1 – Информация о проводимых тестах

Номер

Название

Описание

Ожидаемый результат

1

Вход в систему

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

Пользователь переходит на главное окно приложения

2

Вывод записей из таблиц

Пользователь выбирает таблицу

В основной таблице приложения появляются записи из таблиц

3

Фильтрация записей простым фильтром

Пользователь настраивает фильтр простой фильтр

Окно отображения записей перезагружается и отображаются отфильтрованные записи

4

Фильтрация записей дополнительным фильтром

Пользователь настраивает фильтр дополнительный фильтр

Окно отображения записей перезагружается и отображаются отфильтрованные записи

5

Добавление новой записи в таблицу

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

Запись добавляется в БД, таблица перезагружается


 

Продолжение таблицы 3.1

6

Редактирование записи

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

Запись обновляется в БД, таблица перезагружается

7

Удаление записи

Пользователь с типом учетной записи «администратор» выбирает ID записи, нажимает на кнопку удаления

Запись удаляется из БД, таблица перезагружается

8

Поиск записи

Пользователь выбирает ID записи, нажимает на кнопку поиска

Окно отображения записей перезагружается и отображается найденная запись

9

Перезагрузка таблицы

Пользователь нажимает на кнопку перезагрузки таблицы

Окно отображения записей перезагружается

10

Сохранение записей в файл

Пользователь выбирает пункт меню сохранения записей, указывает имя файла, сохраняет файл

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

11

Вывод записей на печать

Пользователь выбирает пункт меню печати записей, указывает параметры печати, печатает

Таблица распечатана

Информация о работе Разработка системы управления базой данных (СУБД) «Аэропорт»