Курсовая работа: Разработка программы подбора туристической путевки

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Требования к программе

Разработка программы подбора туристической путевки.

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

Индивидуальное задание: вывести все путевки требуемого типа (вводится с клавиатуры) стоимостью менее x в порядке убывания стоимости.

Общее для всех вариантов задание: реализовать авторизацию для входа в систему (без регистрации!), функционал администратора и функционал пользователя, как минимум три вида поиска, как минимум три вида сортировки (см. более подробно - в общих требованиях к курсовой работе).

Исходные требования к курсовой работе

разработка программа алгоритм

Язык программирования С++.

Среда разработки Microsoft Visual Studio версии 2010 и выше.

Вид приложения - консольное.

Парадигма программирования - объектно-ориентированная.

Способ организации данных - поля соответствующих классов.

Способ хранения данных - файл типа txt.

Каждая логически завершенная задача программы должна быть реализована в виде метода.

Функциональные требования к курсовой работе

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

login;

password;

role (данное поле служит для разделения в правах администраторов и пользователей).

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

Если база данных с учетными записями пользователей не существует, то необходимо её программно создать и записать учетные данные администратора.

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

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

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

Модуль администратора включает следующие подмодули (с указанием функциональных возможностей) :

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

Просмотр всех аккаунтов;

Добавление нового аккаунта;

Редактирование данных аккаунта;

Удаление аккаунта;

Назад.

Работа с файлом данных:

Создание файла данных;

Открытие файла данных;

Удаление файла данных;

Назад.

Работа с данными:

Просмотр всех путевок;

Удаление путевки;

Добавление путевки;

Редактирование информации путевки;

Поиск путевки:

Тип путевки;

Страна пребывания;

Стоимость.

Сортировка:

Тип путевки;

Страна пребывания;

Стоимость.

Поиск рейсов с указанным типом путевки;

Назад.

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

Просмотреть все расписание;

Покатать все рейсы с прибытием не позднее чем за 12 часов до указанного времени;

Поиск:

Номер рейса;

Тип автобуса;

Пункт назначения.

Сортировк:

Номер рейса;

Тип автобуса;

Пункт назначения.

Для реализации перечисленных модулей/подмодулей необходимо создавать меню с соответствующими пунктами.

Предусмотреть:

обработку исключительных ситуаций:

имя пользователя или пароль не верны;

запись с указанным идентификатором не найдена;

пользователь с таким именем уже существует;

ведённые данные не соответствуют формату поля;

возможность возврата назад (навигация) ;

запрос на подтверждение удаления вида «Вы действительно хотите удалить файл (запись)?»;

вывод сообщения об успешности создания/редактирования/удаления файла/записи.

Требования к программной реализации

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

Имена функций должны быть осмысленными и строится по принципу «глагол + существительное». Если функция выполняет какую-либо проверку и возвращает результат типа bool, то ее название должно начинаться с глагола is (например, isFileExist, isUnicLogin).

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

Код необходимо комментировать (как минимум в части нетривиальной логики).

Код не должен дублироваться - для этого существуют методы и функции.

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

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

Конструирование программы

Реализация программы будет осуществляться на языке С++ в IDE-среде Microsoft Visual Studio 2017. Программа будет компилироваться и использоваться в операционных системах семейства Microsoft Windows версии 7 и выше.

Разработка структуры программы

Согласно требованиям к программе, необходимо наличие исполняемой программы, которая работает с базой пользователей программы и базой путевок. Следовательно, с точки зрения верхней архитектуры программы, можно выделить два основных модуля: модуль работы с базой пользователей и модуль работы с базой путевок. На рисунке 1 показаны основные модули программы.

Рисунок 1 - Основные модули программы

Функция аутентификации пользователя заключается в проверке существования данных пользователей введённого логина и соответствующего ему пароля. Авторизация пользователя подразумевает получение его роли из файла данных и предоставление ему соответствующих привилегий. Задачи аутентификации пользователя и запрос его роли можно реализовать в отдельном модуле либо непосредственно в модуле управления данными пользователей.

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

Программа подразумевает наличие консольного пользовательского интерфейса. Для организации связи слоёв интерфейса пользователя, логики и доменной модели выбран паттерн «MVC» (Model-View-Controller). В качестве модели (Model) здесь выступают модули управления данными.

Связь сессий пользователей с модулями управления данными будут осуществляться через контроллеры (Controller). Так, для сессии администратора требуется доступ к контроллеру базы пользователей и к контроллеру базы справочной автовокзала, а сессии пользователя - только к контроллеру базы справочной автовокзала.

На рисунке 2 показаны взаимосвязи основных классов программы.

Рисунок 2 - UML-диаграмма основных классов

Выбор способа организации данных

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

Для представления в программе объекта Рейс вводится класс Flights, содержащий: номер рейса, тип автобуса, пункт назначения, время отправления, время прибытия в конечный пункт.

class Flights

{

public:

Flights () ;

~Flights () ;

struct flight {

string typeTour;

string hostCountry;

string typeTransport;

int amountDays;

string food;

int cost;

};

}

В качестве БД был выбран текстовый файл.

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

Схема базы данных пользователей

Для базы данных пользователей требуется хранить имя пользователя (login), пароль (password) и прот пользователя (role). Схема базы данных пользователей показана на рисунке 3.

login

password

role

root

root

admin

Рисунок 3- Схема базы данных пользователей

Схема базы путевок

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

Тип путевки;

Страна пребывания;

Вид транспорта;

Количество дней пребывания;

Питания;

Стоимость.

Схема базы данных показана на рисунке 4.

typeTour

hostCountry

typeTransport

amountDays

food

const

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

Ниже приведено описание публичных интерфейсов всех основных классов.

class Flights

{

public:

Flights () ;

~Flights () ;

struct flight {

string typeTour;

string hostCountry;

string typeTransport;

int amountDays;

string food;

int cost;

};

}

class Accounts

{

public:

Accounts () ;

~Accounts () ;

struct account {

string login;

string password;

string role;

};

}

Разработка алгоритмов работы программы

Алгоритм функции main

Функция main является точкой входа в программу, вызывает основные функции инициализации, создаёт объект класс Application и передаёт ему управление. На рисунке 5 показана блок-схема алгоритма функции main.

Рисунок 5 - Блок-схема алгоритма функции main

Алгоритм функции Accounts: : accounts

Метод accounts класса Accounts проверяет наличие БД пользователей и создает новую БД вместе с 1 пользователем при ее отсутствии (рисунок 6).

Рисунок 6 - Блок-схема алгоритма метода Application: : StartAndWaitExit

Алгоритм функции Flights: : editTour

Редактирование выбранной записи путевки. Из предложенного списка путевок выбирается конкретная запись с последующим изменением ее значений.

Алгоритм метода editTour класса Flights показан на рисунке 7.

Рисунок 7 - Блок-схема алгоритма метода editFlight

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

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

Поиск и создание файла базы данных пользователей производится в текущей директории программы. Имя файла прописано в коде программы: «accounts. txt».

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

Рисунок 8 - Создание базы данных пользователей при запуске программы

Авторизация

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

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

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

Источник: https://otherreferats.allbest.ru/download/1153537/