Материал: Сервис электронного кафе

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

`loginadmin`- логин;

`passwordadmin`- пароль.

Рисунок 4.1.2 - Физическая модель системы

.2 Доказательство приведения информационной модели к 3-ей нормальной форме

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


Рисунок 4.2.1 - Первая нормальная форма

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

Если модель находиться в первой нормальной форме, отсутствуют не ключевые атрибуты, зависящие от первичного ключа, то можно говорить, что модель находиться во второй нормальной форме. А так же, если сущность имеет первичный ключ и находится в первой нормальной форме, то можно говорить, что данная модель находиться во второй нормальной форме (рисунок 4.2.2).

Рисунок 4.2.2 - Вторая нормальная форма

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

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

Для приведения сущности к третьей нормальной форме необходимо:

выделить атрибуты, которые функционально зависят от одного и того же не ключевого атрибута;

поместить их в новую сущность;

установить с новой сущностью связь типа «один ко многим»;

повторить указанные выше операции, если это необходимо.

Проанализировав данную систему, можно сказать, что данная модель находится в третьей нормальной форме, т.к. есть такие сущности, как на рисунке 4.2.3.

Рисунок 4.2.3 - Третья нормальная форма

5. ОБОСНОВАНИЕ ОРИГИНАЛЬНЫХ РЕШЕНИЙ ПО ИСПОЛЬЗОВАНИЮ ТЕХНИЧЕСКИХ И ПРОГРАММНЫХ СРЕДСТВ

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

Использование шаблона MVC (Model-View-Controller),

реализация, которого позволила чётко и структурировано разграничить части программы, что способствует удобной и быстрой расширяемости[1].

Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента:

Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя своё состояние.

Представление (View). Отвечает за отображение информации (пользовательский интерфейс).

Поведение (Controller). Интерпретирует данные, введённые пользователем, и информирует модель и представление о необходимости соответствующей реакции.

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

Использование порождающего шаблона SingleTon, который

удобен тем, что класс контролирует наличие единственного экземпляра, и он же предоставляет при необходимости к нему доступ[1].

Использование шаблона DAO (Data Access Object), реализация

которого удобна для абстрагирования и инкапсулирования доступа к источнику данных. Он представляет собой объект, который предоставляет абстрактный интерфейс к какому-либо типу базы данных или механизму хранения. Определённые возможности предоставляются независимо от того, какой механизм хранения используется и без необходимости специальным образом соответствовать этому механизму хранения.

Использование библиотеки JSTL (стандартная библиотека тегов). Она является альтернативой такому виду встроенной в JSP логики, как скриптлеты, то есть прямые вставки Java кода. Использование стандартизованного множества тегов предпочтительнее, поскольку получаемый код легче поддерживать и проще отделять бизнес-логику от логики отображения.

Использование шаблона Command, реализация которого

позволила легко обрабатывать и разграничивать запросы, приходящие от котроллера. Позволяет создать структуру, в которой класс-отправитель и класс-получатель не зависят друг от друга напрямую. Организация обратного вызова к классу, который включает в себя класс-отправитель[1].

Использование пула соединений с базой данных, что позволяет

контролировать количество соединений и с лёгкостью управлять соединениями (добавлять новое, удалять все).

Использование сессий позволило обеспечить хранение данных во время нескольких запросов от клиента[1].

6. ОПИСАНИЕ АЛГОРИТМОВ РЕАЛИЗУЮЩИХ БИЗНЕС-ЛОГИКУ СЕРВЕРНОЙ ЧАСТИ ПРОЕКТИРУЕМОЙ СИСТЕМЫ

Бизнес-логика данного проекта, как было написано в требованиях, сосредоточена в серверной части. Там реализованы такие операции, как соединение с базой данных, добавление данных в базу, удаление записей из неё, чтение и редактирование данных. Когда пользователь выбирает определенную операцию, клиент вызывает соответствующие методы rmi-интерфейса, передавая в качестве параметров необходимые данные. После того, как клиент вызвал метод, сервер получит информацию, он обрабатывает данный запрос, связывается с базой данных, если ему это требуется, и посылает клиенту результат его работы.

.1 Добавление заказа в базу данных

Для того чтобы наглядно отобразить алгоритм, реализующий бизнес-логику северной части системы «Сервис электронного кафе», я рассмотрю пример добавления заказа в базу данных, блок-схема которого представлена в Приложении И на рисунке И.2, а листинг в Приложении Л.

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

Затем вызывается метод из уровня сервисов, который вызывает метод дабавления заказа из уровня dao. Для того, чтобы создать заказ необходимо соединиться с базой данных, через пул коннэкшионов.

6.2 Считывание списка блюд из базы данных

Считывание списка блюд из базы данных необходимо, когда пользователь захочет просмотреть меню по категориям блюд. Тогда будет вызван метод getDishesByDishType(String dishType), который вызовет метод из уровня сервисов. Данный метод вызывает метод selectDishesByDishType(String dishType) из dao-уровня, также в цикле вызывает метод selectDishCompositionByDishId(int dishId), который для каждого блюда возьмёт из базы данных его состав.Блок-схема представлена в Приложении И на рисунке И.1, а листинг в Приложении Л.

7. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

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

Рисунок 7.1 - Главная страница

Данная страница является главной для пользователей-клиентов данного приложения. Пользователь может просмотреть меню, совершить поиск по названию блюда и просмотреть свою корзину.

Для того, чтобы просмотреть меню по категориям, необходимо нажать на кнопку выбранной категории блюд, что позволит вам просмотреть список всех продуктов по выбранной категории , допустим ‘Салаты’(рисунок 7.2).

Рисунок 7.2 - Просмотр меню по категории ‘Салаты’

Для того, чтобы добавить блюдо в корзину, необходимо выделить его на checkbox, а также, если необходимо, ввести требуемое количество. Добавим ‘Салат из ростбифа’ в количестве 1 штука и нажать на кнопку ‘Добавить в корзину’(рисунок 7.3).

Рисунок 7.3 - Выбор блюда из списка

При нажатии кнопки ‘Добавить в корзину’, вы перейдёте на страницу, которая отобразит вам вашу корзину (рисунок 7.4).

Рисунок 7.4 - Корзина клиента

Также клиент может очистить содержимое своей корзины, нажав на кнопку ‘Удалить’.

Если клиент хочет оформить заказ, то ему необходимо нажать на кнопку ‘Оформить заказ’, что переведёт его на страницу оформления заказа(рисунок 7.5), где ему будет необходимо ввести свои данные, и где он может просмотреть сумму заказа общую , и сумму с учётом скидки и упаковки.

Рисунок 7.5 - Оформление заказа

Далее необходимо нажать на кнопку ‘Оформить’, что переведёт вас на следующую страницу с информацией (рисунок 7.6).

Рисунок 7.6 - Страница информации после совершения заказа

Клиент может осуществить поиск по меню, введя название блюда в поле под надписью ‘Поиск по меню’, нажав на кнопку ‘Найти’, пользователю будет предоставлена информация по данному запросу. Введём слово ‘курица’ в поле ввода, нажмём на кнопку ‘Найти’ и увидем информацию, предоставленную на рисунке 7.7.

Рисунок 7.7 - Результаты поиска по меню

Если пользователь является администратором, то для того, чтобы войти в систему, ему необходимо нажать на кнопку ‘Войти’ , что переведёт его на страницу логинации(рисунок 7.8). Введём логин -admin, пароль - admin.

Рисунок 7.8 - Вход в систему

После того, как администратор верно ввёл данные, он переходит на страницу ‘Админка’, на которой ему доступны следующие действия (рисунок 7.9):

удалить блюдо;

редактировать информацию о блюде;

добавить новое блюдо;

просмотреть список заказов;

а также все действия , доступные пользователю - клиенту .

Рисунок 7.9 - Администраторская деятельность

Для того, чтобы удалить блюдо, администратор должен нажать на кнопку ‘Удалить’, расположенную рядом с выбранным блюдом.

Для того, чтобы отредактировать блюдо. Необходимо нажать на кнопку ‘Редактировать’ рядом с блюдом, которое вы хотите отредактировать.Нажав, вы перейдёте на страницу редактирования, где сможете ввести и сохранить изменённые данные(рисунок 7.10).

Рисунок 7.10 - Редактирование блюда

Для того, чтобы добавить новое блюдо, администратору необходимо нажать на кнопку ‘Добавить блюдо’. Нажав, вы перейдёте на страницу добавления блюда, где будет необходимо ввести данные о блюде (рисунок 7.11).

Рисунок 7.11 - Добавление блюда

Также администратор может просмотреть список заказов и удалить определённый заказ. Для того, чтобы просмотреть все заказы, администратор должен нажать на кнопку ‘Просмотреть заказы ‘, после чего он перейдёт на страницу заказов, где можетудалить определённые заказы (рисунок 7.12).

Рисунок 7.12 - Просмотр заказов

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

8. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ РАЗРАБОТАННОЙ СИСТЕМЫ И ОЦЕНКА ВЫПОЛНЕНИЯ ЗАДАЧ

Все основные моменты исполнения данного проекта были показаны в разделе 7 Руководство пользователя.

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

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

На рисунке 8.1 представлены результаты тестирования некоторых методов.

Рисунок 8.1 - Тестирование методов

Также в программе существуют проверки на ввод корректных данных, например при вводе данных, в поле ввода для поиска. Человек должен ввести не мене 3 символов и не более 10 (рисунок 8.2).

Рисунок 8.2 - Проверка вводимых данных при поиске блюд

ВЫВОДЫ И ЗАКЛЮЧЕНИЯ

В данной курсовой работе было разработано приложение, реализованное в архитектуре клиент - сервер, с использованием базы данных и доступом к ней через JDBC и драйвером поставщика базы данных на тему “Сервис электронного кафе”.

Приложение разработано как для пользователей-клиентов, так и пользователей-администраторов, что намного расширяет возможности приложений такого типа.

Были соблюдены все требования, предъявляемые к данному курсовому проекту, а также все задачи, которые были поставлены для разработки данной системы. электронное кафе тестирование программный

Была создана информационная и функциональная модель, приведённые выше, которые в полной мере позволяют оценить данное приложение и понять, как с точки зрения разработчика, так и с точки зрения пользователя.

Одним из достоинств разработанной системы является стильный и удобный для пользователя интерфейс. Таким образом, любой пользователь (работник ресторана, просто пользователь), когда-либо работавший в Internet, без труда сможет работать и с этой системой.

Для создания данного проекта был использован язык программирования Java, сервлеты, паттерны создания Singleton и Commnad.

Также использовался шаблон MVC, который позволил структурировать архитектуру приложения и сделать его удобным для расширяемости.

Также использовались шаблоны проектирования (Information Expert, Low Coupling, High Cohesion), которые позволяют построить правильную, легко модифицируемую систему.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

[1] Блинов, Е.Н. , Романчик, В.С, Промышленное программирование - Мн.:УниверсалПресс, 2007. - 704 c.

[2] Леоненков, А. В. Самоучитель UML/ А. В. Леоненков - СПб. : BHV, 2002. - 304 с.

[3] Маркин, А. В. Построение запросов и программирование на SQL / А. В. Маркин - М. : Диалог-МИФИ, 2008. - 320 с.

[4] Ноутон, П. Java 2 / П. Ноутон, Г.Шилдт - СПб. : БХВ-Петербург, 2008. - 1072 с.