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

Автор работы: Пользователь скрыл имя, 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 Мб (Скачать файл)

    }

    public boolean editDish(Dish dish) throws RemoteException {

        return dishService.editDish(dish);  

}

    public boolean addDish(Dish dish) throws RemoteException {

        return dishService.addDish(dish);

    }

 

    public boolean addClient(Client client) throws RemoteException{

        return clientService.addClient(client);

    }

 

    public boolean addOrder(Order order) throws RemoteException {

        return orderService.createOrder(order);

    }

   

    public int countTotalCostTakingIntoDiscount(int totalCost) throws RemoteException{

        return orderService.countTotalCostTakingIntoDiscount(totalCost);

    }

    public boolean deleteOrder(Order order){

        return orderService.deleteOrder(order);

    }

 

    public List<DishType> selectDishType(){

        return dishTypeService.selectDishTypes();

    }

 

    public Order getOrderById(int orderId){

        return orderService.getOrderById(orderId);

    }

 

    public String selectDiscount(){

        IDiscountDao discountDao = new DiscountDaoImpl();

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

 

XStream xstream = new XStream();

        xstream.alias("discount",Discount.class);

        String xml = xstream.toXML(discountDao.selectAll());

        return xml;

    }}

 

Листинг 3.  DishService.java

 

public class DishService {

    IDishDao dishDao;

 

    public DishService(){

        dishDao = new DishDaoImpl();

    }

 

    public ArrayList<DishDO> getDishByDishType(String dishType){

        ArrayList<DishDO> dishDoList = new ArrayList<DishDO>();

        ArrayList<Dish> dishList = dishDao.selectDishesByDishType(dishType);

         for(Dish dish : dishList ){

            List<DishComposition> productsList = dishDao.selectDishCompositionByDishId(dish.getId());

            dishDoList.add(new DishDO(dish, productsList));

         }

         return dishDoList;

   }

 

    public List<DishDO> findDishesByName(String dishName){

        List<DishDO> dishList = new ArrayList<DishDO>();

        for(Dish dish : dishDao.selectDishes()){

            if(dish.getName().toLowerCase().contains(dishName.toLowerCase())){

              List<DishComposition> productsList = dishDao.selectDishCompositionByDishId(dish.getId());

              dishList.add(new DishDO(dish, productsList));

            }        }

        return dishList;    }

    public List<DishDO> selectAllDishes(){

        ArrayList<DishDO> dishDoList = new ArrayList<DishDO>();

        List<Dish> dishList = dishDao.selectDishes();

         for(Dish dish : dishList ){

            List<DishComposition> productsList = dishDao.selectDishCompositionByDishId(dish.getId());

            dishDoList.add(new DishDO(dish, productsList));

         }         return dishDoList;    }

    public boolean deleteDishById(int dishId){

        return dishDao.deleteDish(dishId);

    }    public boolean editDish(Dish dish){

        return dishDao.editDish(dish);

    }    public boolean addDish(Dish dish){

        return dishDao.addDish(dish);    }}

 

Приложение Л

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

 

Листинг основных элементов программы

 

Листинг 1.  Discount.xsl

 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/">

        <html>

            <body>

                <p >Наша компания может предложить вам следующую систему скидок:</p>

                <table border="1"  align="left">

                    <tr>

                        <td>Сумма*</td>

                        <td>Процент</td>

                    </tr>

                    <xsl:for-each select="list">

                        <xsl:for-each select="discount">

                            <tr>

                                <td>

                                    <xsl:value-of select="amount"/>

                                </td>

                                <td>

                                    <xsl:value-of select="percent"/>

                                </td>

                            </tr>

                        </xsl:for-each>

                    </xsl:for-each>

                </table>

                <p >* - сумма, после которой начинает  действовать скидка</p>

            </body>

        </html>

    </xsl:template>

</xsl:stylesheet>

 

Листинг 2. Dish.jsp

 

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>Сервис  онлайн кафе</title>

    <link rel="stylesheet" type="text/css" href="main.css" />

    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

    <script type="text/javascript"  src="jsp/countCheck.js"></script>

    </head>

<body>

 

 

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

 

<div class="container">

<jsp:include page = "mainPages/header.jsp" flush = "true"/>

<jsp:include page = "mainPages/left.jsp" flush = "true"/>

<jsp:include page = "mainPages/right.jsp" flush = "true"/>

<div class="content">

                    <form action="Controller" method="post" >

                    <table  style="border-color: tomato;background-color: #ffffff; font-size: medium;" >

                        <c:if test = "${dish_data != 'Sorry, information was not found'}">

                            <c:forEach var = "dishDO" items = "${dish_data}">

                                <tr >

                                    <td><input type="checkbox" name="checkBox${dishDO.dish.name}"/><br/>

                                        <input type="text" maxlength="3" size="1" onmouseout="return check(count${dishDO.dish.name})" name="count${dishDO.dish.name}" value="1" />

                                    </td>

                                    <td align="center">

                                        <img alt="не найдено"  src="${dishDO.dish.imagePath}"/>

                                    </td>

                                    <td align="center" style="color: chocolate">

                                        <c:out value="${dishDO.dish.name}"/>

                                    </td>

                                    <td align="center">

                                        <c:out value="${dishDO.dish.weight}"/>

                                    </td>

                                    <td align="center">

                                        <c:out value="${dishDO.dish.price}"/>

                                    </td>

                                    <td align="center">

                                        <c:forEach var = "dishComp" items = "${dishDO.composition}">

                                                <c:out value="${dishComp.productName}"/>

                                                <c:out

value="${dishComp.productWeight}"/><br/>

                                        </c:forEach>

                                    </td>

                                </tr>

                            </c:forEach>

                        </c:if>

                    </table>

                        <input type="submit" value="Добавить  в корзину"/>

                        <input type="hidden" name="command" value="addToBasket"/>

                    </form>

                </div>

             <jsp:include page = "mainPages/footer.jsp" flush = "true"/>

</div> </body>   </html>

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

 

Листинг 3. IDishDao.java

 

public interface IDishDao {

    public boolean addDish(Dish dish); // метод создаёт идобавляет в БД новое блюдо

    public boolean deleteDish(int dishId); //метод удаляет блюдо из БД по его номеру

    public boolean editDish(Dish dish); // метод обновлиет информацию о блюде в бд

   public List<Dish> selectDishes(); // метод находит все блюда

    public ArrayList<Dish> selectDishesByDishType(String dishType);

    public List<DishComposition> selectDishCompositionByDishId(int dishId);}

 

Листинг 4. DishDaoImpl.java

 

    public DishDaoImpl() {

        dbConnection = new DBConnection(); }

    public boolean addDish(Dish dish) {

        try {

            statement = (PreparedStatement) dbConnection.connect().prepareStatement(Dish.getMap().get("addDish"));

            statement.setInt(1, dish.getId());

            statement.setString(2, dish.getName());

            statement.setDouble(3, dish.getWeight());

            statement.setDouble(4, dish.getPrice());

            statement.setLong(5, dish.getType().getId());

            return (statement.executeUpdate() > 0);

        } catch (SQLException e) {

            e.printStackTrace();

            return false;

        }    }

    public boolean deleteDish(int dishId) {

        try {

            statement = (PreparedStatement) dbConnection.connect().prepareStatement(Dish.getMap().get("deleteDish"));

            statement.setInt(1, dishId);

            return (statement.executeUpdate() > 0);

        } catch (SQLException ex) {

            Logger.getLogger(DishDaoImpl.class.getName()).log(Level.SEVERE, null, ex);            return false;

        } }

    public boolean editDish(Dish dish) {

        try {            statement = (PreparedStatement) dbConnection.connect().prepareStatement(Dish.getMap().get("updateDish"));

            statement.setString(1, dish.getName());

            statement.setDouble(2, dish.getWeight());

            statement.setDouble(3, dish.getPrice());

            statement.setInt(4, dish.getId());

            return (statement.executeUpdate() > 0);

        } catch (SQLException ex) {

            Logger.getLogger(DishDaoImpl.class.getName()).log(Level.SEVERE,

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

null, ex);

            return false;

        }

    }

    public List<Dish> selectDishes() {

        ResultSet theSet;

        List<Dish> dishList = null;

        try {

            PreparedStatement ps = (PreparedStatement) dbConnection.connect().

                    prepareStatement(Dish.getMap().get("selectAll"));

            theSet = ps.executeQuery();

            dishList = new ArrayList<Dish>();

            while (theSet.next()) {

                Dish dish = new Dish();

                setDish(dish, theSet);

                dishList.add(dish);

            }

            return dishList;

        } catch (SQLException ex) {

            Logger.getLogger(DishDaoImpl.class.getName()).log(Level.SEVERE, null, ex);

            return null;

        }

    }

 

    public ArrayList<Dish> selectDishesByDishType(String dishType) {

        ResultSet theSet;

        ArrayList<Dish> dishList = new ArrayList<Dish>();

        try {

            PreparedStatement ps = (PreparedStatement) dbConnection.connect().

                    prepareStatement(Dish.getMap().get("selectByType"));

            ps.setString(1, dishType);

            theSet = ps.executeQuery();

            while (theSet.next()) {

                Dish dish = new Dish();

                setDish(dish, theSet);

                dishList.add(dish);

            }

            return dishList;

        } catch (SQLException ex) {

            Logger.getLogger(DishDaoImpl.class.getName()).log(Level.SEVERE, null, ex);

            return null;

}

    }

 

    public List<DishComposition> selectDishCompositionByDishId(int dishId) {

        ResultSet theSet;

        List<DishComposition> productsList = new ArrayList<DishComposition>();

        try {

            PreparedStatement ps = (PreparedStatement)

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

 

dbConnection.connect().

                    prepareStatement(Dish.getMap().get("selectCompositionByDishId"));

            ps.setInt(1, dishId);

            theSet = ps.executeQuery();

            while (theSet.next()) {

                DishComposition composition = new DishComposition();

                composition.setProductName(theSet.getString("nameProduct"));

                composition.setProductWeight(theSet.getInt("productWieghtInDishComposition"));

                productsList.add(composition);

            }

        } catch (SQLException ex) {

            Logger.getLogger(DishDaoImpl.class.getName()).log(Level.SEVERE, null, ex);

        }       return productsList;    }}

 

Приложение М

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

 

Листинг скрипта генерации базы данных

 

CREATE DATABASE IF NOT EXISTS `restaurant`

CREATE TABLE IF NOT EXISTS `admin` (

  `idadmin` int(11) NOT NULL AUTO_INCREMENT,

  `loginadmin` varchar(45) NOT NULL,

  `passwordadmin` int(11) NOT NULL,

  PRIMARY KEY (`idadmin`),

  UNIQUE KEY `loginAdmin_UNIQUE` (`loginadmin`),

  UNIQUE KEY `idadmin_UNIQUE` (`idadmin`)

) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

 

INSERT INTO `admin` (`idadmin`, `loginadmin`, `passwordadmin`) VALUES (1, 'admin', 92668751), (7, 'olya', 1450575459), (8, 'kostya', 1508416), (9, 'kolya', 1824529005);

 

CREATE TABLE IF NOT EXISTS `basket` (

  `dishCountBasket` int(11) NOT NULL,

  `dish_idDish` int(11) NOT NULL,

  `order_idOrder` int(11) NOT NULL,

  PRIMARY KEY (`dish_idDish`,`order_idOrder`),

  KEY `fk_basket_order1` (`order_idOrder`),

  CONSTRAINT `fk_basket_dish` FOREIGN KEY (`dish_idDish`) REFERENCES `dish` (`idDish`) ON DELETE NO ACTION ON UPDATE NO ACTION,

  CONSTRAINT `fk_basket_order1` FOREIGN KEY (`order_idOrder`) REFERENCES `order` (`idOrder`) ON DELETE NO ACTION ON UPDATE NO ACTION

 

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

CREATE TABLE IF NOT EXISTS `client` (

  `idClient` int(11) NOT NULL AUTO_INCREMENT,

  `lastnameClient` varchar(45) NOT NULL,

  `firstnameClient` varchar(45) NOT NULL,

  `addressClient` varchar(45) NOT NULL,

  `phoneClient` varchar(45) NOT NULL,

  PRIMARY KEY (`idClient`),

  UNIQUE KEY `idClient_UNIQUE` (`idClient`)

) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;

 

INSERT INTO `client` (`idClient`, `lastnameClient`, `firstnameClient`, `addressClient`, `phoneClient`) VALUES (1, 'Страх', 'Ольга', 'Городецкая 58-110', '3070330'), (10, 'Страх', 'Наталья', 'Воронянского 23-89', '2456791'), (11, 'Сторук', 'Алексей', 'Кижевского 23-90', '1243546'), (13, 'Кожевников', 'Слава', 'Коренцова 34-123', '1234565'), (22, 'Дановский', 'Костя', 'Родная 7', '2345645');

 

CREATE TABLE IF NOT EXISTS `composition` (

  `productWieghtInDishComposition` int(11) NOT NULL,

  `caloriesComposition` varchar(45) NOT NULL,

  `dish_idDish` int(11) NOT NULL,

  `product_idProduct` int(11) NOT NULL,

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

 

PRIMARY KEY (`dish_idDish`,`product_idProduct`),

  KEY `fk_composition_product1` (`product_idProduct`),

  CONSTRAINT `fk_composition_dish1` FOREIGN KEY (`dish_idDish`) REFERENCES `dish` (`idDish`) ON DELETE NO ACTION ON UPDATE NO ACTION,

  CONSTRAINT `fk_composition_product1` FOREIGN KEY (`product_idProduct`) REFERENCES `product` (`idProduct`) ON DELETE NO

 

ACTION ON UPDATE NO ACTION

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

INSERT INTO `composition` (`productWieghtInDishComposition`, `caloriesComposition`, `dish_idDish`, `product_idProduct`) VALUES (230, '50', 1, 1), (137, '345', 1, 2), (30, '120', 2, 3), (212, '234', 2, 4), (123, '234', 3, 1), (23, '32', 3, 2), (234, '43', 3, 4), (34, '23', 4, 1), (23, '234', 4, 4), (23, '24', 5, 2);

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