разработка формы в visual Studio c подключением базы данных с sql. Разработка с нуля. Глава 2. Проектирование и разработка базы данных 2.1. Проектирование базы данных Первым шагом стала инфологическая модель — схема нужных сведений без привязки к конкретной СУБД. Выделено пять сущностей: «Клиент», «Тур», «Туроператор», «Бронирование» и «Пользователь». Связи такие: у одного клиента может быть несколько бронирований, а каждое бронирование относится к одному клиенту. Один тур может быть забронирован много раз, а каждое бронирование относится к одному туру. Тур предоставляется одним туроператором, а у туроператора может быть много туров. «Пользователь» хранит учетные записи сотрудников и с остальными сущностями не связан. Модель показана на рисунке 1. Рисунок 1 – модель базы данных Затем модель превратилась в ER- диаграмму базы данных Турагентства. Которая представлена на рисунке 2. Рисунок 2 – ER – диаграмма Турагентства клиента в автосервисе 2.2. Разработка базы данных и интерфейса База TravelAgency создана в SQL Server Management Studio и включает шесть таблиц: Бронирование, Клиент , Отель, Статус Оплаты, Транспорт, Тур.(рисунок 3) Рисунок 3 – Таблицы базы данных Состав столбцов и их типы описаны в таблицах 4–9. Таблица 4 – Структура таблицы Клиент № Название Тип данных Ограничения целостности Описание 1 ClientID int PRIMARY KEY, IDENTITY(1,1) Код клиента 2 FIO nvarchar(100) NOT NULL Фамилия, имя, отчество 3 Passport nvarchar(20) NOT NULL, UNIQUE Паспортные данные 4 Phone nvarchar(20) NOT NULL Контактный телефон 5 Email nvarchar(100) NULL Электронная почта Таблица 5 – Структура таблицы Отель № Название Тип данных Ограничения целостности Описание 1 id_Hotel int PRIMARY KEY, NOT NULL, IDENTITY Код отеля 2 Name nvarchar(100) NOT NULL Название отеля 3 Country nvarchar(50) NOT NULL Страна, в которой находится отель 4 Stars int NULL Количество звезд отеля (категория) Таблица 6 – Структура таблицы Тур № Название Тип данных Ограничения целостности Описание 1 id_Tour int PRIMARY KEY, NOT NULL, IDENTITY Код тура 2 Name nvarchar(150) NOT NULL Название тура 3 Date_Start date NOT NULL Дата начала тура 4 Date_End date NOT NULL Дата окончания тура 5 Hotel int FOREIGN KEY, NOT NULL Отель, в котором проживает турист 6 Transport int FOREIGN KEY, NOT NULL Транспорт, на котором добирается турист Таблица 7 – Структура таблицы Бронирования № Название Тип данных Ограничения целостности Описание 1 id_Booking int PRIMARY KEY, NOT NULL, IDENTITY Код бронирования, 2 Client int FOREIGN KEY, NOT NULL Клиент, оформивший бронирование 3 Tour int FOREIGN KEY, NOT NULL Забронированный тур 4 DateBooking date NOT NULL Дата оформления бронирования Таблица 8 – Структура таблицы Транспорт № Название Тип данных Ограничения целостности Описание 1 id_Transport int PRIMARY KEY, NOT NULL, IDENTITY Код транспорта. 2 Type nvarchar(50) NOT NULL Вид транспорта 3 Flight_Number nvarchar(20) NOT NULL Номер рейса Таблица 9 – Структура таблицы Статус_Оплаты № Название Тип данных Ограничения целостности Описание 1 Payment int PRIMARY KEY, NOT NULL, IDENTITY Код Статуса Оплаты 2 Booking int FOREIGN KEY, NOT NULL Бронь, к которой относится оплата 3 Date_Payment date NOT NULL Дата оплаты 4 Amount decimal(10,2) NOT NULL Сумма оплаты Приложение состоит из нескольких форм: окно входа, главное окно со списком клиентов (MainForm), окно туров (ToursForm), окно бронирований (BookingsForm) и форма оформления и правки (AddBookingForm). Переходы выполняются кнопками, «Назад» возвращает на предыдущий экран. Чтобы найти базу, в коде указана строка подключения, которая представлена на рисунке 4. Рисунок 4 – Строка подключения к базе данных После входа открывается главное окно, и выбирается роль. Рисунок 5– Разграничение прав в конструкторе главной формы Когда главное окно открывается из таблицы Clinets, все линии зачитываются и для каждой карточки создается, которая добавляется к панели. Когда имеется много записей, появляется скручивающая полоса. Рисунок 6- Окно клиента В окне «Туры» отображаются страна, город, отель, даты поездки и цена, а также предусмотрен фильтр по стране. Окно «Бронирования» собирает данные сразу из трех таблиц: дата и статус берутся из Bookings, страна и отель — из Tours, а ФИО клиента — из Clients. Сверху размещены строка поиска, , фильтр по статусу. Рисунок 7- Окно Бронирования Основной формой является AddBookingForm. Она поддерживает два режима работы: создание новой брони и редактирование уже существующей. Выбор тура выполняется через «живой» поиск: как только пользователь вводит очередную букву, сразу отправляется запрос по стране или названию отеля, и подходящие варианты выводятся списком. Каждая строка результата имеет вид «Турция (Rixos Premium) — 50 000 руб.». При нажатии на нее запоминается идентификатор тура, а в соответствующие поля подставляются страна и отель. Чтобы подстановка не запускала поиск заново, обработчик на это время отключается. Сохранение новой записи выполняется командой INSERT. Все значения передаются через параметры — это и безопаснее, и позволяет избежать ошибок при работе с датами. Изменение записи работает по той же схеме, но с командой UPDATE; если нужная запись не найдена, пользователь получает предупреждение. Процесс записи нового бронирования в базу данных показан на рисунке 13. Внешний вид формы представлен на рисунках 14 и 15: на рисунке 14 — форма добавления и изменения брони, на рисунке 15 — поиск тура при ее оформлении. Сохранить бронь без выбранного тура или с незаполненными полями невозможно: вместо системной ошибки пользователь увидит понятное пояснение.