Автор: Пользователь скрыл имя, 18 Декабря 2012 в 17:28, курсовая работа
Целью данного курсового проекта является создание сервиса кулинарной книги с возможностью поиска блюд по ингредиентам. Для достижения данной цели необходимо решить следующие задачи:
1) изучить и проанализировать особенности процесса создания кулинарной книги;
2) описать модели, определить основные требования к разрабатываемой системе;
3) разработать сервис кулинарной книги с возможностью поиска блюд по ингредиентам.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1) Астахова И.Ф. SQL в примерах и задачах. М.: «Новое знание».-2002.
2) Басс Л., Клементс П.,
Кацман Р. Архитектура
3) Верников Г. Методологии
организационного
4) http://www.finances-analysis.
5) http://www.mavriz.ru/articles/
6) http://www.cis2000.ru/
ПРИЛОЖЕНИЕ А
Блок-схема обобщенного алгоритма
ПРИЛОЖЕНИЕ Б
БЛОК-СХЕМА ПРОГРАММНОГО МОДУЛЯ
(удаление данных о категории)
ЛИСТИНГ
SQL-скрипт
CREATE TABLE dima.Bludo (
id INTEGER DEFAULT AUTOINCREMENT,
name CHAR(150),
recept CHAR(1150),
PRIMARY KEY (id)
);
CREATE TABLE dima.Ingredient (
id INTEGER DEFAULT AUTOINCREMENT,
name CHAR(150),
PRIMARY KEY (id)
);
CREATE TABLE dima.BludoIngredient(
id INTEGER DEFAULT AUTOINCREMENT,
PRIMARY KEY (id)
);
CREATE TABLE dima.Category (
id INTEGER DEFAULT AUTOINCREMENT,
name CHAR(150),
PRIMARY KEY (id)
);
ALTER TABLE dima.Bludo ADD FK_B
FOREIGN KEY(categoryId) REFERENCES dima.Category(id)
ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE dima.BludoIngredient ADD FK_BI
FOREIGN KEY(bludoId) REFERENCES dima.Bludo(id)
ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE dima.BludoIngredient ADD FK_B
FOREIGN KEY(ingredientId) REFERENCES dima.Ingredient(id)
ON UPDATE CASCADE ON DELETE CASCADE;
Фрагмент программного кода
package ent;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.
import javax.persistence.
@Stateless
public class KulinarFacadeBean implements KulinarFacadeLocal {
@PersistenceContext
private EntityManager em;
public void createBludo(Bludo obj) {
em.persist(obj);
}
public void editBludo(Bludo obj) {
em.merge(obj);
}
public void removeBludo(Bludo obj) {
em.remove(em.merge(obj));
}
public Bludo findBludo(Object id) {
return em.find(ent.Bludo.class, id);
}
public List<Bludo> findAllBludo(int id) {
List<Bludo> cust =(List<Bludo>) em.createQuery("SELECT c FROM Bludo c WHERE c.categoryId.id=:cust_id")
.setParameter("cust_id", id).getResultList();
return cust;
}
public void createBludoIngredient(
em.persist(obj);
}
public void editBludoIngredient(BludoIngre
em.merge(obj);
}
public void removeBludoIngredient(
em.remove(em.merge(obj));
}
public BludoIngredient findBIngredient(Object id) {
return em.find(ent.BludoIngredient.
}
public List<BludoIngredient> findAllBludoIngredient(int id) {
List<BludoIngredient> cust =(List<BludoIngredient>) em.createQuery("SELECT c FROM BludoIngredient c WHERE c.bludoId.id=:cust_id")
.setParameter("cust_id", id).getResultList();
return cust;
}
public List<BludoIngredient> findBludoIngredient(int id) {
List<BludoIngredient> cust =(List<BludoIngredient>) em.createQuery("SELECT c FROM BludoIngredient c WHERE c.ingredientId.id=:cust_id")
.setParameter("cust_id", id).getResultList();
return cust;
}
public void createIngredient(Ingredient obj) {
em.persist(obj);
}
public void editIngredient(Ingredient obj) {
em.merge(obj);
}
public void removeIngredient(Ingredient obj) {
em.remove(em.merge(obj));
}
public Ingredient findIngredient(Object id) {
return em.find(ent.Ingredient.class, id);
}
public List<Ingredient> findAllIngredient() {
List<Ingredient> cust =(List<Ingredient>) em.createQuery("SELECT c FROM Ingredient c ")
.getResultList();
return cust;
}
public void createCategory(Category obj) {
em.persist(obj);
}
public void editCategory(Category obj) {
em.merge(obj);
}
public void removeCategory(Category obj) {
em.remove(em.merge(obj));
}
public Category findCategory(Object id) {
return em.find(ent.Category.class, id);
}
public List<Category> findAllCategory() {
List<Category> cust =(List<Category>) em.createQuery("SELECT c FROM Category c ")
.getResultList();
return cust;
}
public Ingredient findIngrByName(String l) {
try{ Ingredient cust = (Ingredient) em.createQuery("SELECT c FROM Ingredient c WHERE c.name=:l ").setParameter("l", l).getSingleResult();
return cust;
} catch(Exception e){
return null;
}
}
// Add business logic below. (Right-click in editor and choose
// "EJB Methods > Add Business Method" or "Web Service > Add Operation")
}
package del;
import com.sun.org.apache.xerces.
import ent.Bludo;
import ent.BludoIngredient;
import ent.Category;
import ent.Ingredient;
import ent.KulinarFacadeLocal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import javax.activation.DataHandler;
import javax.activation.
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.parsers.DocumentBuil
import javax.xml.parsers.
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@WebService
@Stateless
public class KulinarDelegateBean implements KulinarDelegateLocal {
@EJB
KulinarFacadeLocal loc;
private final static String PATH = "d:\\xsl\\";
public XmlXsl getXSL(String xslName) {
FileDataSource sourceXSL = new FileDataSource(PATH + xslName);
XmlXsl partMesXSL = new XmlXsl();
try {
DataHandler dhXSL = new DataHandler(sourceXSL);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.
DocumentBuilder builder = dbFactory.newDocumentBuilder()
org.w3c.dom.Document docXSL = builder.parse(dhXSL.
org.w3c.dom.Element el = docXSL.getDocumentElement();
partMesXSL.part = el;
} catch (Exception ex) {
ex.printStackTrace();
}
return partMesXSL;
}
@WebMethod(operationName = "findBludoIngredient")
public ServerResponse findBludoIngredient(int id) {
long start = System.currentTimeMillis();
Document doc = new DocumentImpl();
Element rootEl = doc.createElement("message");
doc.appendChild(rootEl);
List<BludoIngredient> list = loc.findAllBludoIngredient(id)
for (BludoIngredient giv : list) {
Element userEl = doc.createElement("ingr");
userEl.setAttribute("id", giv.getId().toString());
userEl.setAttribute("name",
giv.getIngredientId().getName(
rootEl.appendChild(userEl);
}
long end = System.currentTimeMillis();
Long res = end - start;
Element el = doc.createElement("res");
el.setAttribute("name", res.toString());
rootEl.appendChild(el);
ServerResponse xmlMes = new ServerResponse();
XmlXsl partMesXML = new XmlXsl();
partMesXML.part = doc.getDocumentElement();
xmlMes.setXml(partMesXML);
xmlMes.setXsl(getXSL("bingr.
return xmlMes;
}
@WebMethod(operationName = "findAllBludo")
public ServerResponse findAllBludo(int id) {
long start = System.currentTimeMillis();
Document doc = new DocumentImpl();
Element rootEl = doc.createElement("message");
doc.appendChild(rootEl);
List<Bludo> list = loc.findAllBludo(id);
for (Bludo giv : list) {
Element userEl = doc.createElement("bl");
userEl.setAttribute("id", giv.getId().toString());
userEl.setAttribute("name", giv.getName());
userEl.setAttribute("recept", giv.getRecept());
rootEl.appendChild(userEl);
}
long end = System.currentTimeMillis();
Long res = end - start;
Element el = doc.createElement("res");
el.setAttribute("name", res.toString());
rootEl.appendChild(el);
ServerResponse xmlMes = new ServerResponse();
XmlXsl partMesXML = new XmlXsl();
partMesXML.part = doc.getDocumentElement();
xmlMes.setXml(partMesXML);
xmlMes.setXsl(getXSL("bludo.
return xmlMes;
}
@WebMethod(operationName = "addBludo")
public ServerResponse addBludo() {
Document doc = new DocumentImpl();
Element rootEl = doc.createElement("message");
doc.appendChild(rootEl);
List<Category> list = loc.findAllCategory();
for (Category giv : list) {
Element el = doc.createElement("cat");
el.setAttribute("id", giv.getId().toString());
el.setAttribute("name", giv.getName());
rootEl.appendChild(el);
}
ServerResponse xmlMes = new ServerResponse();
XmlXsl partMesXML = new XmlXsl();
partMesXML.part = doc.getDocumentElement();
xmlMes.setXml(partMesXML);
xmlMes.setXsl(getXSL("
return xmlMes;
}
@WebMethod(operationName = "editBludo")
public ServerResponse editBludo(int id) {
Document doc = new DocumentImpl();
Element rootEl = doc.createElement("message");
doc.appendChild(rootEl);
Bludo g = loc.findBludo(id);
Element userEl = doc.createElement("bl");
userEl.setAttribute("id", g.getId().toString());
userEl.setAttribute("name", g.getName());
userEl.setAttribute("recept", g.getRecept());
rootEl.appendChild(userEl);
List<Category> list = loc.findAllCategory();
for (Category giv : list) {
Element el = doc.createElement("cat");
el.setAttribute("id", giv.getId().toString());
el.setAttribute("name", giv.getName());
rootEl.appendChild(el);
}
ServerResponse xmlMes = new ServerResponse();
XmlXsl partMesXML = new XmlXsl();
partMesXML.part = doc.getDocumentElement();
xmlMes.setXml(partMesXML);
xmlMes.setXsl(getXSL("
return xmlMes;
}
@WebMethod(operationName = "saveBludo")
@Oneway
public void saveBludo(ServerResponse msg) {
Element el = msg.xml.part;
Element user = ((Element) el.getElementsByTagName("bl").
String id = user.getAttribute("id");
String name = user.getAttribute("name");
String rec = user.getAttribute("rec");
String cid = user.getAttribute("cid");
Category c=new Category();
c.setId(Integer.valueOf(cid));
Bludo g = new Bludo();
g.setName(name);
g.setRecept(rec);
g.setCategoryId(c);
if (!"0".equals(id)) {
g.setId(Integer.valueOf(id));
loc.editBludo(g);
} else {
loc.createBludo(g);
}
}
@WebMethod(operationName = "deleteBludo")
@Oneway
public void deleteBludo(int id) {
loc.removeBludo(loc.findBludo(
}