Электронное кафе

Автор работы: Пользователь скрыл имя, 20 Декабря 2014 в 03:28, курсовая работа

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

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

Содержание работы

Введение…………………………………………………………………………...4
1Описание сервиса электронного кафе и определение требований к системе……………………………………………………...……………………...5
Описание сервиса электронного кафе…………………..………………...5
Определение требований к системе…………………….…………..........6
2 Постановка задачи и обзор методов её решения……………………………...7
3 Модели представления системы и их описание………………………………8
3.1 Модель вариантов использования………….……………………………8
3.2 Модель состояний …………………..……………………………………8
3.3 Модель последовательности …………………….……………………...9
3.4 Модель классов…………………….………………………………..........9
3.5 Модель компонентов……………………………………………………....9
3.6 Модель развертывания…………………………………………………….9
4 Информационная модель системы и ее описание…………………………...10
4.1 Информационная модель………………………………………….……...10
4.2 Доказательство приведения информационной модели к 3-ей нормальной форме…….…………………………………………………………12
5 Обоснование оригинальных решений по использованию технических и программных средств……………………………………………………………15
6 Описание алгоритмов реализующих бизнес-логику серверной части……..17
7 Руководство пользователя…………………………………………………….18
8 Результаты тестирования разработанной системы и оценка выполнения задач………………………………………………………………………………24
Выводы и заключения…………………………………………………………...25
Списки использованных источников………………

Файлы: 1 файл

Poyasnitelnaya_zapiska.doc

— 5.73 Мб (Скачать файл)

 

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 с.

 

 

 

 

ПРИЛОЖЕНИЕ А

(обязательное)

 

Функциональная модель сервиса электронного кафе

 

 

Рисунок А.1 -  Контекстная диаграмма функциональной модели

 

 

Рисунок А.2 – Общее функционирование системы

Продолжение приложения А

 

 

Рисунок А.3 - Декомпозиция создания меню

 

 

Рисунок А.4 – Декомпозиция обработки запросов клиента

 

Продолжение приложения А

 

 

Рисунок А.5 - Декомпозиция создания заказа

 

ПРИЛОЖЕНИЕ Б

(обязательное)

 

Диаграмма вариантов использования

 

 

Рисунок Б.1 - Диаграмма вариантов использования пользователь

 

Продолжение приложения И

 

 

Рисунок Б.2 - Диаграмма вариантов использования пользователь

 

ПРИЛОЖЕНИЕ В

(обязательное)

 

Диаграмма состояний

 

 

Рисунок В.1 – Диаграмма состояний

 

ПРИЛОЖЕНИЕ Г

(обязательное)

 

Диаграмма последовательностей

 

 

Рисунок Г.1 - Диаграмма последовательностей

 

 ПРИЛОЖЕНИЕ Д

(обязательное)

 

Диаграмма классов

 

 

Рисунок Д.1 - Диаграмма классов иерархии rmi-service-dao

 

 ПРИЛОЖЕНИЕ Е

(обязательное)

 

Диаграмма компонентов

 

 

Рисунок Е.1 - Диаграмма компонентов клиентской части

 

 

Рисунок Е.2 - Диаграмма компонентов серверной части

 

ПРИЛОЖЕНИЕ Ж

(обязательное)

 

Диаграмма развёртывания

 

 

Рисунок Ж.1 - Диаграмма развёртывания

 

ПРИЛОЖЕНИЕ И

(обязательное)

 

Блок-схемы работы приложения

 

 

Рисунок И.1 – Блок-схема алгоритма выборки блюд по категориям  
Продолжение приложения И

 

 

Рисунок И.2 – Блок-схема алгоритма добавления блюда в корзину

 

ПРИЛОЖЕНИЕ К

(обязательное)

 

Листинг алгоритмов, реализующих бизнес-логику

 

Листинг 1. Удалённые методы RMI-интерфейса

 

public interface IRmiForAdmin extends Remote {

    public Admin getAdminByLogin(String login) throws RemoteException;

    public ArrayList<DishDO> getDishesByDishType(String dishType) throws RemoteException;

    public List<DishDO> findDishesByName(String dishName) throws RemoteException;

    public List<DishDO> selectAllDishes() throws RemoteException;

    public boolean deleteDishById(int dishId) throws RemoteException;

    public boolean editDish(Dish dish) throws RemoteException;

    public boolean addDish(Dish dish) throws RemoteException;

    public boolean addClient(Client client) throws RemoteException;

    public boolean addOrder(Order order) throws RemoteException;

    public int countTotalCostTakingIntoDiscount(int totalCost) throws RemoteException;

    public int getClientMaxId() throws RemoteException;

    public List<Order> selectOrders() throws RemoteException;

    public boolean deleteOrder(Order order) throws RemoteException;

    public Client getClientById(int clientId) throws RemoteException;

    public List<DishType> selectDishType() throws RemoteException;

    public Order getOrderById(int orderId) throws RemoteException;

    public String selectDiscount() throws RemoteException;

}

 

Листинг 2. Реализация удалённых методов

 

public class RmiForAdminImpl extends UnicastRemoteObject implements IRmiForAdmin{

    private AdminService adminService;

    private DishService dishService;

    private DishTypeService dishTypeService;

    private ClientService clientService;

    private OrderService orderService;

 

    public RmiForAdminImpl () throws RemoteException {

        adminService = new AdminService();

 

        dishService = new DishService();

        clientService = new ClientService();

        orderService = new OrderService();

        dishTypeService = new DishTypeService();

    }

 

    // метод ищет по логину и возвращает экземпляр класса Admin

    public Admin getAdminByLogin(String login)throws RemoteException {

Продолжение приложения К

       

return adminService.getAdminByLogin(login);

    }

    // метод ищет и составляет список блюд по типу блюда и возвращает его 

    public ArrayList<DishDO> getDishesByDishType(String dishType) throws RemoteException {

       return dishService.getDishByDishType(dishType);

    }

 

    public List<DishDO> findDishesByName(String dishName) throws RemoteException {

        return dishService.findDishesByName(dishName);

    }

 

    public List<DishDO> selectAllDishes() throws RemoteException {

        return dishService.selectAllDishes();

    }

    public boolean deleteDishById(int dishId) throws RemoteException {

        return dishService.deleteDishById(dishId);

Информация о работе Электронное кафе