Автор работы: Пользователь скрыл имя, 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
Списки использованных источников………………
}
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(
}
public boolean addOrder(Order order) throws RemoteException {
return orderService.createOrder(
}
public int countTotalCostTakingIntoDiscou
return orderService.
}
public boolean deleteOrder(Order order){
return orderService.deleteOrder(
}
public List<DishType> selectDishType(){
return dishTypeService.selectDishType
}
public Order getOrderById(int orderId){
return orderService.getOrderById(
}
public String selectDiscount(){
IDiscountDao discountDao = new DiscountDaoImpl();
Продолжение приложения К
XStream xstream = new XStream();
xstream.alias("discount",
String xml = xstream.toXML(discountDao.
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
for(Dish dish : dishList ){
List<DishComposition> productsList = dishDao.
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(
List<DishComposition> productsList
= dishDao.
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.
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/
<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>
</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/
<script type="text/javascript"
src="jsp/countCheck.js"></
</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>
value="${dishComp.
</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(
Листинг 4. DishDaoImpl.java
public DishDaoImpl() {
dbConnection = new DBConnection(); }
public boolean addDish(Dish dish) {
try {
statement = (PreparedStatement) dbConnection.connect().
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().
statement.setInt(1, dishId);
return (statement.executeUpdate() > 0);
} catch (SQLException ex) {
Logger.getLogger(DishDaoImpl.
} }
public boolean editDish(Dish dish) {
try {
statement = (PreparedStatement) dbConnection.connect().
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.
Продолжение приложения Л
null, ex);
return false;
}
}
public List<Dish> selectDishes() {
ResultSet theSet;
List<Dish> dishList = null;
try {
PreparedStatement ps = (PreparedStatement) dbConnection.connect().
prepareStatement(Dish.getMap()
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.
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()
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.
return null;
}
}
public List<DishComposition> selectDishCompositionByDishId(
ResultSet theSet;
List<DishComposition> productsList = new ArrayList<DishComposition>();
try {
PreparedStatement ps = (PreparedStatement)
Продолжение приложения Л
dbConnection.connect().
prepareStatement(Dish.getMap()
ps.setInt(1, dishId);
theSet = ps.executeQuery();
while (theSet.next()) {
DishComposition composition = new DishComposition();
composition.setProductName(
composition.setProductWeight(
productsList.add(composition);
}
} catch (SQLException ex) {
Logger.getLogger(DishDaoImpl.
} 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` (
`
`caloriesComposition` varchar(45) NOT NULL,
`dish_idDish` int(11) NOT NULL,
`product_idProduct` int(11) NOT NULL,
Продолжение приложения М
PRIMARY KEY (`dish_idDish`,`product_
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` (`