Está en la página 1de 26

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO

“TRUJILLO”

COMPUTACIÓN E INFORMÁTICA

INTEGRANTES
 Ellen Zavaleta Elvis
 Ordinola Otero, Milagros

CICLO:VI

DOCENTE: Milagros Bravo

TRUJILLO – PERÚ
2019
DEDICATORIA

A DIOS, por las bendiciones


que tenemos día a día y por
darnos una nueva razón de
lucha en nuestras vidas.

A nuestros padres que, con


su apoyo incondicional, nos
motivan a seguir
impulsándonos en alcanzar
nuestras metas.

A nuestras familias en
general, por la comprensión y
el apoyo que nos brindaron
para que nuestro proyecto se
realice de la mejor manera.
Agradecimiento

A nuestra profesora Milagros


por sus enseñanzas, su
apoyo compresivo y su
aliento que nunca nos falta

Al señor Diego por su


información de su empresa
INTRODUCCIÓN
CAPITULO I: ORGANIZACIÓN EN ESTUDIO
1.1. Nombre de la organización
Restaurante El comedor del Tabo

1.2. Giro de la organización


Es una empresa trujillana dedicada al servicio de menús como desayunos,
almuerzos y cenas.

1.3. Procesos de negocio de la organización

 Compras: el administrador para realizar la adquisición de los productos


para la elaboración de sus menús adquiere suministros como alimentos,
especies, bebidas entre otros, de sus proveedores, lo cual lo realiza de
manera personal o por llamadas telefónica.
 Almacén: después de que los proveedores suministran de los diversos
productos, estos son llevados a la bodega y/o almacén respectivo, de
acuerdo a su naturaleza del producto.
 Ventas: el cliente para adquirir el servicio del restaurante, lo puede
realizar de forma personal: donde se ubica en una mesa, solicita algún
plato y bebida al mozo, recibe su pedido, y finalmente cancela en caja.

1.4. Proceso de negocio a automatizar


Ventas: implementar el servicio de delivery a través de una aplicación móvil

1.5. Impacto de la organización en la sociedad


El restaurante El Comedor del Tabo es una empresa con 20 años de tradición
trujillana, que brinda a los ciudadanos nacionales y extranjeros los platos
tradicionales de Trujillo, manteniendo de esta forma las tradiciones de nuestra
región. Es una empresa que brinda los platos típicos de la región con alimentos
saludables, nutritivos y con precio cómodos. De esta forma se podría decir que
los platos y bebidas de la empresa forma parte de las tradiciones trujillana.
Además cabe señalar que actualmente esta implementando un servicio a delivery
como una forma a contribuir al ahorro del tiempo de los clientes, pues en un
mundo cambiante y donde el tiempo es muy valioso, nace la necesidad de llevar
el restaurante hacia nuestros clientes.
CAPITULO II: PROYECTO INFORMÁTICO
2.1. Título del Proyecto
Delivery Tambo

2.2. Responsables del proyecto


 Ellen Zavaleta, Elvis
 Ordinola Otero, Milagros

2.3. Justificación del Proyecto


El proceso de atención al cliente en un restaurante es habitual que se realice de
forma que no deje satisfecho al cliente, pues en ocasiones se dan las siguientes
situaciones: no encontrar mesa para ser atendido, no disponemos de tiempo para
ir a un restaurante, quejarnos porque tarda demasiado tiempo en ser atendido,
todavía no nos decidimos que vamos a plato vamos a elegir y el mozo ya esta
dispuesto a tomar nuestro pedido.

Al implementar con un sistema móvil el delivery, este automatizara el proceso


de pedidos de los diversos menús. Los beneficios de la aplicación móvil serian:
primero, mejoría la atención al cliente, pues podrá pedir cualquier producto en el
momento que él lo desee sin ningún apuro y sin depender de un mozo. Segundo,
la aplicación gestionaría parte de las ventas, pues cada pago de un pedido será
registrado en el sistema, pudiendo obtener el ingreso por día, semana o mensual.
Tercero, ahorrar en personal, ya que no será necesarios mozos para la atención.
Y por último tener información de las preferencias de nuestros clientes

2.4. Objetivos del Proyecto


 Automatizar la gestión de pedidos de la empresa
 Automatizar la información relacionada a los usuarios registrados.
 Lograr una participación del cliente a la hora de realizar pedidos, consiguiendo
mejorar el tiempo del proceso de gestión de los mismos.
 Manejar información sobre los productos ofrecidos,
 Permitir realizar parte de la facturación de la empresa.
2.5. Características del Producto

La aplicación móvil de delivery tendrá las siguientes características:

 Permitirá conocer los productos que ofrece la empresa: desayunos, almuerzos,


cenas, bebidas entre otros
 Permitirá registrarse a los clientes para solicitar un pedido de sus productos por
delivery
 Permitirá al administrador registrar, actualizar, crear y eliminar productos de la
aplicación
 Permitirá facturar el pedido del cliente
 La aplicación será construida con Android Studio 3.4
 Utilizares el lenguaje java
CAPITULO III: ANÁLISIS Y DISEÑO DEL PROYECTO

3.1. Visión general del proyecto


Nuestro proyecto aplicación móvil “Delivery Tabo”, para el restaurante El
Comedor del Tambo, será una de las aplicaciones más descargada para móviles
Android, la cual brindara una diseño amable y seguro para los clientes, y será más
que una simple aplicación de gestión de pedidos, será una herramienta que no solo
nos brindara a los clientes un servicio, sino que ayudara a mejorar la gestión de su
tiempo, con el servicio a domicilio.
Para la empresa le ayudará a gestionar sus platos ofertados a diario, semanal o
mensual, pues podrá en el futuro obtener un estadístico sobre las preferencias de
los clientes.
Y se espera que en el futuro la aplicación se extienda en otros sistemas de
dispositivo móviles como iOS y Windows Phone:

3.2. Análisis de la aplicación móvil


Nuestro proyecto tiene como objetivo desarrollar un aplicativo móvil capaz de dar
soporte a la gestión de pedidos del restaurante.

Nuestro objetivo abarca desarrollar e implementar un sistema de gestión de pedidos


de restaurantes basado en modelos configurables, que permita automatizar parte del
proceso generado por los clientes, por ejemplo: ordenar su pedido de comida, facturar
el pedido, atender el pedido, entre otros.

La aplicación de gestión de pedidos está diseñada e implementada para contener la


información de los pedidos que realiza el cliente, que se encuentren activos mediante la
utilización de una base de datos. Dentro de cada pedido se sabrá que productos se ha
elegido, y sus características como precio o cantidad.

Así mismo existe la posibilidad de mantener y manejar la información de los productos


ofertados y datos personales de los clientes.

3.2.1. Requisitos de la aplicación móvil

3.2.1.1. Requisitos funcionales


 Los usuarios registrados pueden realizar consultas de sus horarios de
Atención y el menú disponible de la aplicación móvil
 Los usuarios deberán registrarse en la aplicación para solicitar el servicio de
deliveries, accediendo a la carta del restaurante, realizando el pago a través
de una transacción
 Los usuarios podrán registrar donde y cuando se recibirá el pedido
solicitado
 El sistema debe permitir añadir y/o eliminar platos al pedido al usuario.
 El usuario podrá cerrar su pedido cuando haya terminado las operaciones
sobre él.
 El usuario podrá elegir la forma de pago entre las opciones: en efectivo,
pago con tarjeta de crédito o Pay-pal.
 Los empleados podrán registrar, actualizar y/o eliminar los productos del
menú (desayuno, almuerzo, cena, bebidas)
 Los empleados podrán consultar la información del pedido como son
nombres, dirección, teléfono e importe.
 Los empleados podrán consultar la fecha y la hora a la que se realizó cada
pedido.
 El empleado determinado podrá indicar al sistema que un pedido
determinado ha sido entregado y así permitir al cliente realizar un nuevo
pedido
 La aplicación móvil mostrara un menú con botones de almuerzo, desayuno
y cenas
 La aplicación tendrá un menú de opciones en la parte superior derecha:
administración, visitanos y sugerencias. Este ultimo permite ingresar un
mensaje sobre algunas sugerenias.

3.2.1.2. Requisitos no funcionales


 El tiempo de demora para las transacciones del sistema debe ser lo más corto
posible.
 Puede ser utilizado en el sistema operativo de Android Studio
 Podrá ser descargado gratuitamente a cualquier dispositivo móvil
 La interfaz debe ser de fácil accesibilidad para cualquier tipo usuario.
 El sistema de la aplicación móvil debe impedir el acceso a personas no
autorizadas mediante mecanismos de seguridad.

3.2.2. Diagrama de casos de uso de la aplicación móvil

<<include>>
Visitar la pagina web
Cena
Registrarse <<include>>

<<include>>
Plato

Almuerzo
Eligir pedido

CLIENTE Desayuno

Agregar productos al pedido Bebida

Enviar Pedido Eliminar productos al pedido

Finalizar pedido

3.2.3. Especificaciones de requerimientos con casos de uso

Registrar Cliente

Sistema: Delivery Tambo


Caso de uso: Registrar Cliente
HOJA DE ESPECIFICACIÓN DE CASOS DE USO
Autor: cliente
Fecha: 24-11-19
OBJETIVO: Permite registrar a un cliente
PRECONDICIONES
- Usuario tiene acceso a la aplicación.

FLUJO PRINCIPAL
1. La aplicación mostrara dos botones: ingresar y registrarse
2. El cliente elige el botón registrarse
3. El cliente registrara los datos solicitados: nombres, apellidos. Edad, dni. Teléfono, dirección,
sexo, correo y contraseña

Completando el ingreso de datos, el sistema muestra opciones Guardar, Salir)


- Si se selecciona Registrar Datos se ejecuta el sub. -flujo: A1
- Si se selecciona Iniciar Sesion se ejecuta el sub. -flujo: A2

SUB- FLUJO
A1 Se verifica la integridad de los datos y se guarda la información ingresada.
A2 Se cierra la aplicación y se va a la opción ingresar .

Registrar Pedido

Sistema: Delivery Tambo


Caso de uso: Registrar Pedido
HOJA DE ESPECIFICACIÓN DE CASOS DE USO
Autor: cliente
Fecha: 24-11-19
OBJETIVO: Permite al cliente realizar su pedido de acuerdo a la carta actualizada
en el aplicativo.
PRECONDICIONES
- Usuario está registrado en la aplicación, habiendo ingresado su usuario y contraseña.

FLUJO PRINCIPAL
1. El cliente si desea hacer pedido escogerá la opción del menú desplegable en la parte superior
2. Aquí mostrar las categorías que tiene la carta (desayunos, almuerzos, cenas, bebidas).
3. El cliente escogerá cualquiera de las categorías y mostrará la lista de platos
con sus precios respectivos asignados a dicha categoría.
4. El cliente se posicionará en el campo cantidad en el plato que desea pedir,
hay señalara la cantidad que desea pedir y así sucesivamente.
5. En la misma pantalla de la aplicación, en la parte inferior, le muestra el total a pagar de lo que
ha escogido.
6. Luego retorna a la carta donde muestra las categorías, si ya está escogido todos los pedidos
se escogerá entre las opciones:
- Si se selecciona Continuar Pedido.se ejecuta el sub. -flujo: A1
- Si se selecciona Cancelar Pedido se ejecuta el sub. -flujo: A2

SUB- FLUJO
A1 Se verifica la integridad de los datos y se guarda la información ingresada, mostrándose una
nuevo activity: Realizar Delivery
A2 Se cierra la aplicación y se termina caso de uso.

Realizar Delivery

Sistema: Delivery Tambo


Caso de uso: Realizar Delivery
HOJA DE ESPECIFICACIÓN DE CASOS DE USO
Autor: cliente
Fecha: 24-11-19
OBJETIVO: Permite al cliente finalizar su pedido y escoger la forma de pago de acuerdo a la carta
actualizada en el aplicativo.
PRECONDICIONES
- Usuario esta registrado en la aplicación y ya ha finalizado el caso de uso Realizar Pedido

FLUJO PRINCIPAL
1. El sistema mostrara el pedido solicitado así como el monto a cancelar por el servicio de delivery
2. El cliente escogerá entre las opciones de pago Efectivo y Tarjeta de Crédito:
- Si se selecciona Efectivo., ingresa la cantidad con desea pagar (para obtener fácilmente el
vuelto)
- Si se selecciona Tarjeta de Crédito , deberá ingresar número de tarjeta, y marca de tarjeta
3. se mostrara las opciones siguientes:
- Si se selecciona Finalizar.se ejecuta el sub. -flujo: A1
- Si se selecciona Cancelar se ejecuta el sub. -flujo: A2

SUB- FLUJO
A1 Se debe mostrar un mensaje de término del pedido
A2 Se cierra la aplicación y se termina caso de uso.

3.3. Diseño de la Base de Datos del proyecto


3.3.1. Diagrama físico
3.3.2. Diagrama de clases

Proveedor
empleado
id_proveedor
empresa iid_empleado
nombre cargo
direccion nombres
correo correo
telefono telefono

agregar() Agregar()
quitar() Actualizar()
actualizar() Eliminar()
Consultar()
Cliente
Detalle_factura id_cliente
Factura
nombres
id_factura id_factura apellidos
id_articulo id_empleado
Articulo direccion
cantidad id_cliente telefono
id_articulo fecha_hora fecha_factura correo
id_tipoArti precio descripcion
nombre_articulo name2 ruc Registrar()
precio Actualizar()
id_proveedor Eliminar()
descripcion
Tipo_Articulo
Registrar()
Actualizar() id_tipoArti
Eliminar() Nombre
Consultar() Descripcion
Estado

Agregar()
Eliminar()

3.3.3. Diccionario de datos

3.4. Diseño de Ventanas (Activitys) y Menús


CAPÍTULO IV: IMPLEMENTACIÓN
4.1. Codificación de los activitys
MENU
public class MainActivity extends AppCompatActivity implements
View.OnClickListener{
EditText user,pass;
Button btnEntrar, btnRegistrar;
daoUsuario dao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user=(EditText)findViewById(R.id.User);
pass=(EditText)findViewById(R.id.Pass);
btnEntrar=(Button)findViewById(R.id.btnEntrar);
btnRegistrar=(Button)findViewById(R.id.btnRegistrar);

btnEntrar.setOnClickListener(this);
btnRegistrar.setOnClickListener(this);

dao= new daoUsuario(this);


}

public boolean onCreateOptionsMenu(Menu menu) {


getMenuInflater().inflate(R.menu.menuopciones,menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id==R.id.admin) {
Intent i = new Intent(this, administ.class);
startActivity(i);
}
if (id==R.id.visit) {
Intent i = new Intent(this, visita.class);
startActivity(i);
}
if (id==R.id.sali) {
Intent i = new Intent(this, salida.class);
startActivity(i);
}
return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnEntrar:
String u=user.getText().toString();
String p=pass.getText().toString();
if(u.equals("")&&p.equals("")) {
Toast.makeText(this, "ERROR, CASILLAS VACIAS",
Toast.LENGTH_LONG).show();

}else if(dao.login(u,p)==1){
Usuario ux=dao.getUsuario(u,p);

Toast.makeText(this, "DATOS CORRECTOS",


Toast.LENGTH_LONG).show();
Intent i2 = new Intent(MainActivity.this,
comidas.class);
i2.putExtra("Id",ux.getId());
startActivity(i2);
finish();
}else{
Toast.makeText(this, "USUARIO O CONTRASEÑA
INCORRECTAS", Toast.LENGTH_LONG).show();
}

break;
case R.id.btnRegistrar:

Intent i = new Intent(MainActivity.this,


Registrar.class);
startActivity(i);
}
}
}

REGISTRAR

public class Registrar extends AppCompatActivity implements


View.OnClickListener {
EditText us, pas, nom, ap;
Button reg,can;
daoUsuario dao;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registrar);

us=(EditText)findViewById(R.id.RegUser);
pas=(EditText)findViewById(R.id.RegPass);
nom=(EditText)findViewById(R.id.RegNombre);
ap=(EditText)findViewById(R.id.RegApellido);
reg=(Button)findViewById(R.id.btnRegRegistrar);
can=(Button)findViewById(R.id.btnRegCancelar);

reg.setOnClickListener(this);
can.setOnClickListener(this);

dao = new daoUsuario(this);


}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnRegRegistrar:
Usuario u = new Usuario();
u.setUsuario(us.getText().toString());
u.setPassword(pas.getText().toString());
u.setNombre(nom.getText().toString());
u.setApellidos(ap.getText().toString());
if (!u.isNull()) {
Toast.makeText(this, "ERROR, CASILLAS VACIAS",
Toast.LENGTH_LONG).show();

}else if(dao.insertUsuario(u)){
Toast.makeText(this, "REGISTRO EXITOSO",
Toast.LENGTH_LONG).show();
Intent i2 = new Intent(Registrar.this,
MainActivity.class);
startActivity(i2);
finish();

}else{
Toast.makeText(this, "YA ESTA REGISTRADO ANTES",
Toast.LENGTH_LONG).show();
}

break;
case R.id.btnRegCancelar:

Intent i = new Intent(Registrar.this,


MainActivity.class);
startActivity(i);
finish();
break;
}
}

MANTENIMIENTO
public class mantenimiento extends AppCompatActivity {
EditText edtCodigo, edtNombre, edtPrecio;
Button btnAgregar, btnMostrar, btnEditar, btnEliminarr;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mantenimiento);

edtCodigo=(EditText)findViewById(R.id.edtCodigo);
edtNombre=(EditText)findViewById(R.id.edtNombre);
edtPrecio=(EditText)findViewById(R.id.edtPrecio);
btnAgregar=(Button) findViewById(R.id.btnAgregar);
btnMostrar=(Button) findViewById(R.id.btnMostrar);

final AdminSQLiteOpenHelper adminSQLiteOpenHelper= new


AdminSQLiteOpenHelper(getApplicationContext());
btnAgregar.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View v) {
adminSQLiteOpenHelper.agregarAlmuerzos
(edtCodigo.getText().toString(),
edtNombre.getText().toString(),edtPrecio.getText().toString());
Toast.makeText(getApplicationContext(),"SE AGREGO
CORRECTAMENTE",Toast.LENGTH_SHORT).show();
}
});

btnMostrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mostrarAlmuerzos= new
Intent(getApplicationContext(), MainalmuerzoActivity.class);
startActivity(mostrarAlmuerzos);
}
});
}
}

RECYCLE VIEW ADAPTADOR


public class RecyclerViewAdaptador extends
RecyclerView.Adapter<RecyclerViewAdaptador.ViewHolder> {
public static class ViewHolder extends RecyclerView.ViewHolder{
private TextView codigo, almuerzo, precio;
ImageView fotoalmuerzo;

public ViewHolder(@NonNull final View itemView) {


super(itemView);
codigo=(TextView)itemView.findViewById(R.id.tvcodigo);
almuerzo=(TextView)itemView.findViewById(R.id.tvnombre);
precio=(TextView)itemView.findViewById(R.id.tvprecio);
fotoalmuerzo=(ImageView)
itemView.findViewById(R.id.imgceviche);

}
}
public List<AlmuerzoModelo>almuerzoLista;

public RecyclerViewAdaptador(List<AlmuerzoModelo> almuerzoLista) {


this.almuerzoLista = almuerzoLista;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,
int viewType) {
View view=
LayoutInflater.from(parent.getContext()).inflate(R.layout.item_almuerz
o,parent,false);

ViewHolder viewHolder= new ViewHolder(view);

return viewHolder;

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int
position) {

holder.codigo.setText(almuerzoLista.get(position).getCodigo());

holder.almuerzo.setText(almuerzoLista.get(position).getAlmuerzo());

holder.precio.setText(almuerzoLista.get(position).getPrecio());
//
holder.fotoalmuerzo.setImageResource(almuerzoLista.get(position).getIm
galmuerzo());

@Override
public int getItemCount() {
return almuerzoLista.size();
}
}

ADMINSQLITEOPENHELPER
public class AdminSQLiteOpenHelper extends SQLiteOpenHelper {

private static final String NOMBRE_BD="restaurante.bd";


private static final int VERSION_BD=1;
private static final String TABLA_ALMUERZOS="CREATE TABLE
ALMUERZOS(CODIGO TEXT PRIMARY KEY, NOMBRE TEXT, PRECIO TEXT)";

public AdminSQLiteOpenHelper(Context context) {


super(context, NOMBRE_BD, null, VERSION_BD);
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(TABLA_ALMUERZOS);
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase , int i, int
i1) {
sqLiteDatabase.execSQL(" DROP TABLE IF EXISTS CREATE"+
TABLA_ALMUERZOS);
sqLiteDatabase.execSQL(TABLA_ALMUERZOS);
}

public void agregarAlmuerzos(String codigo,String nombre, String


precio){
SQLiteDatabase bd=getWritableDatabase();
if(bd!=null){
bd.execSQL("INSERT INTO ALMUERZOS
VALUES('"+codigo+"','"+nombre+"' ,'"+precio+"')");
bd.close();
}

public List<AlmuerzoModelo> mostrarAmuerzos(){


SQLiteDatabase bd=getReadableDatabase();
Cursor cursor=bd.rawQuery("SELECT *FROM ALMUERZOS", null);
List<AlmuerzoModelo> almuerzos= new ArrayList<>();
if(cursor.moveToFirst()){
do {
almuerzos.add(new AlmuerzoModelo(cursor.getString(0),
cursor.getString(1), cursor.getString(2)));
}while (cursor.moveToNext());

}
return almuerzos;
}

4.2. Ejecución de la aplicación

Pantalla de inicio sesion del ciente

Las tres opciones del menu superior


Opción de meno de administrador

Mantenimiento del almuerzo

Los almuerzos agregados


La opción del menú visitanos

Opción del menú sugerencias

Ahora el botón de registrarse nos muestra


La opción del menú del cliente al ingresar

Ingresa al botón de almuerzo


CONCLUSIONES
 El trabajo en equipo es fundamental, ya que el análisis del sistema de aplicación
móvil es arduo y laborioso. El compañerismo es de suma importancia ya que
aparecen diversa dificultades que uno solo no podría superar.
 Existen diversos métodos y procedimientos para llegar a los mismos objetivos,
por ejemplo teníamos dos métodos para realizar el login, pero a través de la
discusión y análisis, optamos por el mejor se adaptaba a nuestras necesidades
 El diseño de la aplicación, aparentemente es muy simple, pero en realidad es
todo lo contrario, debemos considerar la estética en los colores del texto a si
como también el logo de la empresa

REFERENCIAS BIBLIOGRAFÍCAS

ANEXOS

También podría gustarte