Escolar Documentos
Profissional Documentos
Cultura Documentos
SÃO PAULO-SP
2016
BRENO VIEIRA - TADS RA: 8410119227
IGOR CESAR – TADS RA: 9902005834
MAILANE FERNANDES - TADS RA: 1299274012
WALLACE VIEIRA – TADS RA: 8409152923
SÃO PAULO-SP
2016
RESUMO
Este projeto teve como objetivo a implantação de dois aplicativos um sendo de realização de
pedidos e outro para gerenciar pedidos e cardápio de uma determinada pizzaria. Para conhecer
a fundo este “universo”, este projeto mostra como se deu o surgimento da pizza e das pizzarias.
Foram realizadas entrevistas com estabelecimentos para conhecer o funcionamento de uma
pizzaria. Para a documentação do projeto, envolveu-se a utilização de técnicas de análise
estruturada, como: fluxogramas, casos de uso e diagrama de classes. Ainda na documentação
desse projeto será mostrado parte dos códigos criado dos aplicativos utilizando a linguagem
mobile Android.
This project aimed at the implementation of two applications: one of them is to make orders
and the other is to manage orders and menu of a particular pizzeria. To fully understand the
background of this "universe", this design shows how the emergence of pizza and pizzerias
ocurred. Interviews were conducted with some establishments in order to comprehend the
functioning of a pizzeria. For the project documentation, it was involved the use of structured
analysis techniques, such as flow charts, use cases and class diagram. In the same
documentation of this project it will be shown some part of the codes of the applications created
using the Android mobile language.
BD – Banco de dados
HQ – História em quadrinhos
ID – Identificação
RF – Requisito funcional
1. INTRODUÇÃO ................................................................................................................ 10
1.1. Tema .......................................................................................................................... 10
1.2. Problemática .............................................................................................................. 11
1.3. Hipóteses .................................................................................................................... 11
1.4. Objetivo do Projeto .................................................................................................... 12
1.4.1. Objetivo específicos do Projeto .......................................................................... 12
1.5. Justificativa e Relevância ........................................................................................... 13
1.6. Metodologia ............................................................................................................... 13
2. REFERENCIAL TEÓRICO ............................................................................................. 14
2.1. Conhecendo o ramo de pizzaria ................................................................................. 14
2.2. Sobre Pizza e Pizzarias .............................................................................................. 15
2.2.1. Como surgiu a pizza e de onde ela vem ............................................................. 15
2.2.2. O porquê do significado do nome ‘pizza’ .......................................................... 16
2.2.3. Como surgiram as pizzarias................................................................................ 17
2.2.4. Curiosidades sobre pizza/pizzarias ..................................................................... 17
2.3. Definição da linguagem de programação .................................................................. 18
3. DESENVOLVIMENTO ................................................................................................... 20
3.1. Análise ....................................................................................................................... 20
3.1.1. Entrevista ............................................................................................................ 20
3.1.2. Descrição da necessidade do cliente ................................................................... 22
3.1.3. Levantamento de requisitos ................................................................................ 22
3.1.3.1. Requisitos Funcionais ................................................................................. 23
3.1.3.2. Requisitos não funcionais............................................................................ 24
3.2. Desenho do sistema ................................................................................................... 25
3.2.1. Divisão em dois aplicativos ................................................................................ 25
3.2.2. Fluxogramas ....................................................................................................... 25
3.2.2.1. Fluxogramas do aplicativo de pedidos ........................................................ 26
3.2.2.2. Fluxograma do aplicativo de Gerencia do estabelecimento ........................ 30
3.2.3. Diagramas de caso de uso................................................................................... 34
3.2.3.1. Casos de uso do aplicativo de pedidos ........................................................ 34
3.2.3.2. Casos de uso do aplicativo de gerência ....................................................... 36
3.2.3.3. Caso de uso geral......................................................................................... 37
3.2.4. Diagrama de classes............................................................................................ 38
3.2.4.1. Diagrama aplicativo de pedidos .................................................................. 39
3.2.4.2. Diagrama aplicativo de gerencia ................................................................. 39
3.3. Banco de dados .......................................................................................................... 39
3.3.1. Modelo lógico de dados ...................................................................................... 40
3.3.2. Criação do banco de dados e suas tabelas .......................................................... 41
3.3.2.1. Banco de dados interno (aplicativo de pedidos).......................................... 41
3.3.2.2. Banco de dados externo (ambos os aplicativos).......................................... 43
3.4. Modelagem da arquitetura do sistema ....................................................................... 44
3.4.1. Conexão com o banco de dados ......................................................................... 44
3.4.2. Desenvolvimento da interface ............................................................................ 46
3.4.2.1. Interface: Aplicativo de pedidos ................................................................. 47
3.4.2.2. Interface: Aplicativo de gerência ................................................................ 50
3.4.3. Desenvolvimento do sistema .............................................................................. 54
3.4.3.1. Códigos Java e XML: Aplicativo de pedidos.............................................. 55
3.4.3.2. Códigos Java e XML: Aplicativo de gerência ............................................ 63
4. CONCLUSÃO .................................................................................................................. 68
4.1. Respostas das hipóteses ............................................................................................. 68
4.2. Considerações finais .................................................................................................. 69
4.3. Trabalhos futuros ....................................................................................................... 69
REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................................... 70
APÊNDICE A – Aplicativo de gerencia .................................................................................. 71
APÊNDICE B – Diagrama de classe Aplicativo pedidos ........................................................ 73
APÊNDICE C – Diagrama de classe Aplicativo de gerência .................................................. 74
APÊNDICE D – Guia de funcionamento Aplicativo de pedidos (Delivery) ........................... 75
APÊNDICE E – Guia de funcionamento aplicativo de gerência ............................................. 91
10
1. INTRODUÇÃO
Este projeto contém 4 capítulos. O primeiro capítulo irá abordar escolha do tema, a
problemática, objetivo principal e específicos, bem como demonstrar a metodologia que será
utilizada para a resolução do problema. O segundo é referente a abordar o ambiente de uma
pizzaria, seu funcionamento baseado em pesquisas com diversos estabelecimentos. Também
abordará as origens das pizzas e pizzarias, sobre como se originou esse termo “pizza” e da
linguagem de programação utilizada para a criação do aplicativo de pedidos. O terceiro capítulo
se refere ao desenvolvimento prático, isto é, as técnicas para se fazer a análise estruturada,
enfim, todo o levantamento da documentação e o desenvolvimento do aplicativo em si. O quarto
e último capítulo se referem a verificar se as hipóteses de certa foram de certa forma,
respondidas. Também possuindo as considerações finais e os trabalhos futuros que serão
desenvolvidos.
1.1. Tema
1.2. Problemática
1.3. Hipóteses
Informatizar o processo de pedidos de uma pizzaria. Sendo que esse objetivo será
atingindo através dos específicos a seguir.
Eliminar a figura do atendente: Este objetivo, visa a economia em despesas com salários e/ou
acumulo de funções, eliminar o atendente pode ser uma boa economia. Em estabelecimentos
que não são exclusivamente delivery, o responsável pelo atendimento muitas vezes tinha outras
funções além desta. Enfim, eliminação de cargos, e por consequência economia.
O cliente ser responsável pelos dados de entrega (endereço): O cliente irá definir os produtos,
endereço de entrega. Eventuais erros e equívocos, serão unicamente erro dele, eximindo o
estabelecimento.
O cliente ter acesso ao cardápio atualizado (os panfletos não seriam mais tão necessários): Hoje
em dia não adianta guardar panfletos e ligar, sendo que valores e produtos mudam,
constantemente. O cardápio será acessado pelo app e o cliente terá acesso a valores e produtos
atualizados.
13
O estudo desse trabalho tem como proposta ajudar um empreendedor, dono de uma
pizzaria, a trazer eficácia para seu comércio a fim de melhorar o atendimento para sua clientela,
através de dispositivos móveis. Com o estudo de mercado, observou-se o quão importante é ter
o cliente satisfeito com o produto e saber da qualidade do mesmo. Confiamos neste projeto
porque, primeiramente, também somos clientes e podemos notar quando algo possui qualidade.
Sempre estaremos receptivos a novos produtos de determinado comércio.
Por mais que a criação de apenas um novo software possa não ser algo visto como
novidades pelos clientes, sabemos que isso dará qualidade e agilidade aos olhos do proprietário
da pizzaria. Com isso, a demanda de pedidos pode aumentar e isso poderá trazer bons frutos
para ele e gratificação ao cliente em ser mais bem atendido e ter a qualidade de ter seu produto
entregue com muita confiança. (JOBS, 2005) “A única forma de estar verdadeiramente
satisfeito é fazer o que você acredita que seja um bom trabalho”.
1.6. Metodologia
2. REFERENCIAL TEÓRICO
Uma pesquisa de mercado tem como objetivo prover uma base para ajudar na
tomada de decisões de um empreendedor, que anseia abrir seu negócio. Isto significa que a
pesquisa deve ser aplicada somente quando os seus resultados contribuírem para diminuir a
incerteza e/ou influenciar decisões.
Neste tópico será abordado a origem das pizzas e pizzarias, como surgiu o termo
“pizza”, além de curiosidades diversas sobre a mesma.
A difusão da pizza ocorreu na Itália, onde ela foi acrescida com outros ingredientes,
como o tomate, em que sua base na Itália a autora Carol Helstosky (HELSTOSKY, 2008, p.
22) reitera que na antiga Roma, onde era somente uma fruta simples pouca usada em seus
alimentos, alguns vendedores experimentaram colocar queijo em cima da massa e do molho
feito da base de tomate. Com isso, surgiu a tradicional pizza de mussarela, bastante conhecida
ao redor do mundo. Grande parte do sucesso da pizza hoje se deve aos povos mais necessitados
da Itália no século 18, onde era uma receita simples e que muitas famílias necessitadas comiam
para se alimentar de algo durante os dias. Em suma, podemos dizer que a pizza ganhou destaque
na Itália. Entretanto, ideias de povos distintos contribuíram para o surgimento desse alimento
tão conhecido e apreciado hoje em dia.
Há ainda outras definições para esse termo. Alguns afirmam que vem do grego
“pita” (pão achatado). Outros dizem que veio da antiga palavra alemã “bizzopizzo”, que no
alemão de hoje seria “bissen”, de onde é derivado um dos verbos em inglês “to bite” (morder).
Já na cidade de Gaeta, a palavra “pizzo” referia-se ao pão pita. Enfim, são muitas
as definições, o que não se sabe ao certo qual delas está correta. O que sabemos é que hoje a
chamamos de pizza napolitana.
Em 1954 foi aberta a primeira rede da famosa pizzaria que hoje tem milhares de
franquias no mundo inteiro, a “Pizza Hut”, fundada pelos irmãos Kansas, Dan e Frank Caney.
Pizza também faz parte da infância de muita gente, não só por ser extremamente
saborosa, mas por poder ser apreciada com a leitura e outras formas de entretenimento, como
jogos e filmes. “As tartarugas ninjas”, nas histórias em quadrinhos, suas aventuras se passam
em Nova York, onde é a cidade em que mais se aprecia pizza ao redor do mundo.
Pizza tem costumes diferentes ao redor do mundo. A pizza mexicana, por exemplo;
em algumas localidades do país é feita em cima da famosa “tortilha”. Na Turquia e na Armênia,
ela tem um nome totalmente diferente: “lahmacun”, e no Japão ela é denominada como um tipo
de panqueca chamada “Okonomiyaki”.
Em 2005, a Google desejava lançar serviços de localização para usuários das suas
tecnologias, entretanto em virtude de não ter plataforma para isso adquiriu em julho do mesmo
ano uma empresa da Califórnia a Android Inc que já possuía o sistema operacional também
chamado Android, porém em fase de desenvolvimento.
Segundo (PAUL DEITEL, 2012, p. 4), em 2007 a Google articulou uma aliança
comercial “a Open Handset Alliance - um consórcio composto inicialmente de 34 empresas e
agora contando com 81 “. O objetivo da união dessas grandes empresas era utilizar essa
plataforma em dispositivos móveis para melhorar a experiência com os usuários e reduzir custos
impulsionando a inovação da tecnologia.
19
Uma das grandes vantagens do Android é possuir plataforma livre e código aberto,
possibilitando que cada fabricante realize suas próprias alterações no código-fonte para
personalizar os seus produtos e ainda sem a necessidade de compartilhar tais informações. Além
disso, a plataforma Android é totalmente gratuita, o que torna um sistema amplamente acessível
a diversas classes sociais (LECHETTA, 2013, p. 24).
A vantagem de possuir código aberto contribui ainda para que tal plataforma seja
aperfeiçoada, pois vários desenvolvedores podem inserir novas funcionalidades e até mesmo
corrigir falhas. É de conhecimento geral que o Android se tornou uma das plataformas mais
usadas no mundo, e que suas funcionalidades são aperfeiçoadas constantemente.
20
3. DESENVOLVIMENTO
3.1. Análise
3.1.1. Entrevista
Uma pesquisa de mercado tem como objetivo prover uma base para ajudar na
tomada de decisões de um empreendedor, que anseia abrir seu negócio. Isto significa que a
pesquisa deve ser aplicada somente quando os seus resultados contribuírem para diminuir a
incerteza e/ou influenciar decisões. Com isso fizemos algumas entrevistas com vários
estabelecimentos do ramo e consultamos os criadores do site “Fórum de Pizzas” em prol de
sanar algumas dúvidas sobre pizzarias e saber a necessidade tecnologia que esses
estabelecimentos necessitam.
21
Por meio desse estudo foi notado que a pizzaria não possuía sequer um sistema.
Assim, para sanar tais problemas, houve a necessidade da criação de um software capaz de
elaborar o cadastro de pedidos com eficiência, onde o cliente terá total controle do seu pedido.
Nesta seção serão mostrado os passos do desenho do sistema, por meio da utilização
de diagramas de caso de uso, de classe e fluxogramas.
3.2.2. Fluxogramas
Fluxograma tem como base uma representação de um processo que utiliza símbolos
gráficos para descrever passo a passo a natureza e o fluxo deste processo. Será mostrado como
ambos os aplicativos funcionarão, com base nos fluxogramas criados.
26
Nesta seção será mostrado a definição dos bancos de dados a serem utilizados nas
duas aplicações. Modelo lógico, criação do banco. Haverá banco de dados externos e interno
(armazenado no aparelho).
40
A tabela endereço será utilizada para armazenamento dos 5 endereços que o cliente
poderá utilizar, e que, deverá ser escolhido apenas um deles para um eventual pedido.
A tabela ‘histPedidos’ serve para o cliente verificar o status de seu pedido, com o
registro dessa tabela, o mesmo poderá verificar o status do pedido efetuado. |uma vez que a
aplicação não fará cadastro em locais externos
43
Nesta seção será mostrado as tabelas do banco de dados externo, que, será utilizado
pelas duas aplicações.
A tabela pedidos, armazena os pedidos feitos, por todos que possuem a aplicação
instalada no dispositivo móvel. A aplicação so busca o pedido registrado no Banco histPedidos
44
As duas aplicações acessarão um banco de dados externo, para tanto, é necessário utilizar
webservice. WebServices são muito utilizados para integrar aplicações, porém, não possui uma
api nativa para o android, sendo necessário, a utilização de uma biblioteca ksoap2, no caso é
bastante leve para utilização em dispositivos móveis para consumir webservices. (LECHETTA,
2013, p. 599). Neste webservice foi utilizado a seguinte conexão com o banco.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//Atualizando um registro
UPDATE tbl_cardapio SET categoria = ?, produto = ?, descricao = ?,
preco_unit = ? WHERE id = ?
//Buscando um registro por id
SELECT * FROM tbl_cardapio WHERE id = ?
//Excluindo um registro por id
DELETE FROM tbl_cardapio WHERE id = ?
//Excluindo um registro por id
Nesta seção serão mostradas as telas dos futuros aplicativos. As telas são dos
layouts finalizados.
Para mais telas, e detalhes de funcionamento das interfaces dos dois aplicativos,
verificar o apêndice D e E.
Nesta seção, serão mostradas algumas das principais telas do aplicativo em sua
codificação em linguagem Android. Entretanto, como a aplicação tem inúmeras linhas de
código, grande parte do código será disponibilizado em CD e disponibilizado no encarte desse
documento.
55
Serão mostrados nesta seção, algumas das respectivas codificações das telas
mostradas na seção anterior, sendo que, serão mostrados o código xml do layout e o código
java.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/lbl_main_projeto"
android:paddingTop="25sp"
android:paddingBottom="25sp"
android:id="@+id/textView24"
android:layout_gravity="center_horizontal" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/lbl_main_meu_cadastro"
android:id="@+id/btnMeuCadastro" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/lbl_main_meus_ends"
android:id="@+id/btnMeusEnderecos"
android:layout_gravity="center_horizontal" />
<Button
android:id="@+id/btnNovoPedido"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/lbl_main_novo_pedido" />
<Button
56
android:id="@+id/btnMeusPedidos"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/lbl_main_meus_pedidos" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/lbl_main_nm_projeto"
android:paddingTop="30sp"
android:id="@+id/textView26"
android:layout_gravity="center_horizontal" />
</LinearLayout>
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ClipData;
import android.content.Context;
import android.content.Intent;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Toast;
import java.util.ArrayList;
import br.com.bggimw.delivery.dominio.RepositorioEndereco;
import br.com.bggimw.delivery.dominio.RepositorioUsuario;
import br.com.bggimw.delivery.entidades.ItemPedido;
import br.com.bggimw.delivery.entidades.Pedido;
import br.com.bggimw.delivery.localdb.BdDelivery;
import br.com.bggimw.delivery.util.AlertDialogUtil;
import br.com.bggimw.delivery.webservice.CardapioDAO;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tela_menu_delivery);
btnMeuCadastro.setOnClickListener(this);
btnMeusEnderecos.setOnClickListener(this);
btnNovoPedido.setOnClickListener(this);
btnMeusPedidos.setOnClickListener(this);
try{
bdDelivery = new BdDelivery(this);
conn = bdDelivery.getWritableDatabase();
repositorioEndereco = new RepositorioEndereco(conn);
}catch (SQLException ex){
AlertDialogUtil.show(this, "ERRO", "Erro ao criar o banco");
ex.printStackTrace();
}
@Override
protected void onDestroy() {
super.onDestroy();
if(conn != null){
conn.close();
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if( v == btnMeuCadastro){
Intent it = new Intent(TelaMenuDelivery.this,
TelaCadastroNome.class);
startActivity(it);
}
else if(v == btnMeusEnderecos){
Intent it = new Intent(TelaMenuDelivery.this,
TelaMeusEnderecos.class);
startActivity(it);
}
else if(v==btnNovoPedido){
if(repositorioEndereco.pegaNumeroDeLinhas() > 0) {
CardapioDAO dao = new CardapioDAO();
String status = dao.verificarStatus();
if (status.equals("Aberta")) {
Intent it = new Intent(TelaMenuDelivery.this,
TelaPedido_01.class);
startActivity(it);
} else {
AlertDialogUtil.show(this, "ATENÇÃO", "O
estabelecimento encontra-se fechado!");
}
}
else{
AlertDialogUtil.show(this,"ALerta","Cadastre ao menos um
endereço.");
}
}
else if(v==btnMeusPedidos){
Intent it = new Intent(TelaMenuDelivery.this,
TelaHistoricoPedidos.class);
startActivity(it);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.main_menu_delivery, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
59
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/lbl_listaend_meus_ends"
android:id="@+id/textView7"
android:layout_weight="1" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ibtnAddEnd"
android:layout_weight="1"
android:src="@android:drawable/ic_input_add" />
</LinearLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lstMeusEnderecos"
android:dividerHeight="1sp"
android:divider="#0000ff"
android:layout_gravity="center_horizontal" />
</LinearLayout>
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.*;
import br.com.bggimw.delivery.customadapters.AdapterEnderecoLst;
import br.com.bggimw.delivery.dominio.RepositorioEndereco;
import br.com.bggimw.delivery.entidades.Endereco;
import br.com.bggimw.delivery.localdb.BdDelivery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tela_meus_enderecos);
ibtnAddEnd = (ImageButton) findViewById(R.id.ibtnAddEnd);
lstMeusEnderecos = (ListView)
findViewById(R.id.lstMeusEnderecos);
try{
bdDelivery = new BdDelivery(this);
conn = bdDelivery.getWritableDatabase();
lstMeusEnderecos.setOnItemClickListener(this);
lstMeusEnderecos.setAdapter(adpEnderecos);
Log.i(TelaMenuDelivery.BGGIMW,"Exibiu corretamente");
}catch(SQLException ex){
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setMessage("Erro ao criar o banco");
dlg.setNeutralButton("OK", null);
dlg.show();
ex.printStackTrace();
}
ibtnAddEnd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(repositorioEndereco.pegaNumeroDeLinhas() <5) {
62
@Override
protected void onDestroy() {
super.onDestroy();
if(conn != null){
conn.close();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
adpEnderecos = repositorioEndereco.buscaEnderecos(this);
lstMeusEnderecos.setAdapter(adpEnderecos);
Log.i(TelaMenuDelivery.BGGIMW,"Atualizado corretamente -
activityForResult");
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int
position, long id) {
Endereco endereco = adpEnderecos.getItem(position);
Assim como na seção anterior será mostrada, código xml do layout e código java,
de algumas das telas exibidas na seção anterior.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15sp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/lbl_tela_login_usuario"
android:id="@+id/textView23" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:background="@drawable/styles_edit_text"
android:ems="10"
android:id="@+id/edtLoginUser"
android:hint="Maximo de 10 caracteres" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15sp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/lbl_tela_login_senha"
android:id="@+id/textView25" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
64
android:background="@drawable/styles_edit_text"
android:ems="10"
android:id="@+id/edtLoginSenha"
android:hint="Maximo de 10 caracteres" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15sp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/lbl_tela_login_tipo"
android:id="@+id/textView490" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spnNivelAcesso" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25sp">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/lbl_tela_login_logar"
android:id="@+id/btnLoginSistema"
android:layout_weight="1" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/lbl_tela_login_alterar"
android:id="@+id/btnAlterarSenha"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.*;
import br.com.bggimw.cardapioadmin.webservice.LoginDAO;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tela_login_cardapio_admin);
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
edtLoginUser.setText("");
edtLoginSenha.setText("");
Log.i(TelaCardapioAdmin.BGGIMW,"campos limpos,
activityForResult");
}
@Override
public void onClick(View v) {
if(v==btnLoginSistema) {
String user, pass, nivel;
user = edtLoginUser.getText().toString();
pass = edtLoginSenha.getText().toString();
nivel = spnNivelAcesso.getSelectedItem().toString();
LoginDAO dao = new LoginDAO();
TelaCardapioAdmin.tipoUser = nivel;
TelaCardapioAdmin.b = dao.logarSistema(user, pass, nivel);
if (TelaCardapioAdmin.b) {
66
finish();
} else {
Toast.makeText(this, "Erro no login",
Toast.LENGTH_SHORT).show();
}
}
else if(v==btnAlterarSenha){
Intent it = new Intent(TelaLoginCardapioAdmin.this,
TelaLoginAlterarSenha.class);
startActivityForResult(it, 0);
}
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int
position, long id) {
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lstCardapio"
android:layout_gravity="end" />
</LinearLayout>
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import br.com.bggimw.cardapioadmin.customadapters.AdapterCardapioLst;
import br.com.bggimw.cardapioadmin.webservice.CardapioDAO;
import br.com.bggimw.cardapioadmin.entidades.Cardapio;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tela_gerencia_cardapio);
lstCardapio = (ListView) findViewById(R.id.lstCardapio);
cardapioDAO = new CardapioDAO();
adpCdp = cardapioDAO.buscarListaCardapio(this);
lstCardapio.setAdapter(adpCdp);
lstCardapio.setOnItemClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.menu_tela_gerencia_cardapio,
menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.mn_gerencia_cardapio_add) {
Intent it = new Intent (TelaGerenciaCardapio.this,
TelaInserirProduto.class);
startActivityForResult(it, 0);
return true;
}
return super.onOptionsItemSelected(item);
}
68
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
adpCdp = cardapioDAO.buscarListaCardapio(this);
lstCardapio.setAdapter(adpCdp);
Log.i(TelaCardapioAdmin.BGGIMW,"Atualizado corretamente -
activityForResult");
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int
position, long id) {
Cardapio cardapio = adpCdp.getItem(position);
Log.i(TelaCardapioAdmin.BGGIMW, "Objeto: "+cardapio.toString()+"
este id ->"+cardapio.get_id());
4. CONCLUSÃO
Este capítulo visa responder as hipóteses levantadas ao longo deste projeto, a parte
disso, temos as considerações finais acerca do projeto. E os seus trabalhos futuros, que deverão
ser executados, para se chegar nos objetivos relatados na introdução deste projeto. No momento
este projeto se encontra em desenvolvimento.
REFERÊNCIAS BIBLIOGRÁFICAS
HELSTOSKY, C. Pizza - A Global History. 1a. ed. Londres: Reaktion Books Ltd, 2008.
Requisitos funcionais
O botão “Meu cadastro” direciona pra tela em que se insere o nome e telefone. O botão
“Meus endereços” direciona para a tela de endereços cadastrados; o ‘Novo pedido” vai para a
tela onde o cliente vai inserir nome, telefone e um endereço previamente cadastrado para que
76
seja realizado um novo pedido já o “Meus pedidos” direciona para a tela de visualização de
todos os pedidos realizados.
Caso a aplicação não consiga se conectar ao webservice, somente as opções “Meu cadastro” e
“Meus endereços” ficarão disponíveis no menu.
A figura 28 exibe a tela de cadastro, no caso de ser a primeira vez que o usuário acessa, o
botão “Inserir novo” estará disponível e o botão “alterar existente” está inativo. Havendo
cadastro existente a situação se inverte e só é possível modificar o existente, bastando editar
os dois campos e tocar no botão “Alterar existente”.
A figura 29 mostra todos os endereços cadastrados. Tocando em um item irá para outra tela de
edição de endereço.
78
O botão com o símbolo de “+” em verde serve que um novo endereço seja adicionado.
A figura 32 mostra a tela para cadastro de pedidos, onde o usuário deverá selecionar um
endereço, nome e telefone já são preenchidos automaticamente e não podem ser alterados por
esta tela e sim “meu cadastro”.
No botão “Acessar cardápio” vai para a lista do cardápio contendo todos os produtos
disponíveis.
A opção “Sair do cadastro” presente no menu do canto superior da tela irá sair do cadastro e
assim, irá aparecer uma janela de diálogo perguntando se o usuário deseja ou não cancelar o
pedido. No caso positivo o pedido será cancelado.
81
A figura 33 mostra os itens cadastrados no cardápio, o filtrar será usado para exibir na tela
somente o sabor de pizza que contenha o nome digitado.
Exemplo: digitando a palavra “Atum” serão exibidos somente os itens iniciados com a
respectiva palavra.
A opção “Ver meus itens” do menu servirá para mostrar todos os itens escolhidos; a
“Retornar pro cadastro” será utilizada para retornar ao cadastro e editar dados desejados, já a
“Cancelar pedido” apagará todos os dados do pedido.
82
A figura 34 mostra a tela que será exibida quando se toca um ícone do cardápio, além de pedir
a quantidade de itens a serem comprados.
83
A figura 35 mostra a quantidade de itens escolhidos, assim como o valor total do pedido.
No menu do canto superior da tela a opção “Ir para conclusão do pedido” será utilizada para
visualizar o valor total da compra, assim como, escolher a forma de pagamento e adicionar
observações sobre o pedido.
A figura 37 demostra a confirmação da compra, onde o usuário poderá visualizar o valor total
do pedido, escolher a forma de pagamento e confirmar a compra.
No menu do canto superior da tela a opção” voltar para os meus itens” servirá para retornar a
tela dos itens do cardápio.
86
A figura 38 exibe os pedidos efetuados pelo usuário e pode se filtrar um pedido especifico
através do id.
87
A figura 39 mostra todos os dados do pedido, como o status (efetuado, cancelado, etc.) além
do endereço para entrega e valor total da compra.
A opção “Mais detalhes” presente no menu direciona para a tela de visualização de alguns
dados do cliente e pedido. Já a segunda opção “Itens desse pedido” servirá para visualizar os
itens escolhidos.
88
A figura 42 exibe uma alerta ao usuário perguntando se ele deseja prosseguir com o
cancelamento do pedido.
91
A figura 43 refere-se ao menu do aplicativo de gerenciamento ele possui três botões “Efetuar
login”, “Gerenciar Cardápio” e “Gerenciar Pedidos”. Estes dois últimos ficarão inativos
enquanto não houver login no sistema.
Na parte inferior da figura, poderá ser visualizado o status de funcionamento da pizzaria.
No menu do canto superior da tela encontra-se a opção “Encerrar App”, ela encerrará a
aplicação.
Assim que o usuário admin realizar login, serão ativados os botões “Gerenciar Cardápio onde
itens poderão ser exclusos, inclusos e ditados, e o “Gerenciar Pedido”, que será utilizado para
alterar o status do pedido, como mostra a figura 44.
A figura 45 mostra o login de um funcionário comum. Para esse tipo de acesso, apenas umbotão
estará disponibilizado, o “Gerenciar pedidos”, para que o status do pedido seja alterado.
94
A figura 46 mostra os campos a serem preenchidos para login, nome e senha com limite de 10
caracteres, o nível de acesso e os botões de logar e alterar a senha da aplicação.
95
A figura 47 mostra a função de alterar a senha do aplicativo onde primeiro deverá ser inserido
o tipo de login do usuário (administrador ou comum) em seguida a senha atual e por fim inserir
a senha ela poderá alterar para a nova senha que ela deseja colocar.
96
A figura 48 mostra todos os itens cadastrados. No menu está presente a opção “Adicionar item”,
que direciona para a tela de adição de novos itens.
97
A figura 49 mostra a adição de determinado produto ao menu da pizzaria contendo seu nome,
o tipo de produto, ingredientes e valor.
Após a inclusão do item ele será salvo através da opção “Salvar produto” presente no menu.
98
Ao clicar em um produto do cardápio o usuário será direcionado para a tela de edição e exclusão
de itens, como mostra a figura 50. Assim a função” Editar produto” serve para edição e a
“Excluir este produto” para exclusão do item selecionado, caso o usuário escolha excluir,
receberá um alerta de que tal item será descartado.
99
A figura 51 mostra como um item do cardápio poderá ser alterado, com os campos editáveis
preço, escolha da categoria, nome do produto e descrição.
100
A figura 52 mostra os dados já alterados e ao clicar na opção do menu “Salvar produto” o item
editado poderá ser salvo. Há ainda a opção “Cancelar edição” para que a alteração feita seja
cancelada.
101
A figura 53 mostra a lista de pedidos já efetuados. Os mesmos poderão ser pesquisados através
do ID.
102
A figura 54 mostra os dados da compra contendo nome, telefone e endereço do cliente, assim
como o ID e status do pedido. O status informa se o pedido foi recusado (pizzaria não entrega
em determinados endereços), recebido, está em processo ou partiu para entrega.
No menu do canto superior a opção, “Mais informações” possibilita a visualização de mais
detalhes referentes ao pedido, a “Ver itens” demostra os itens solicitados na compra, e por fim,
a opção “Fechar esta tela” que finaliza a gerencia do pedido.
103