0% encontró este documento útil (0 votos)
42 vistas15 páginas

Converted 1718067708762

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas15 páginas

Converted 1718067708762

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Universidad “Mayor de San Andrés”

CIENCIAS PURAS Y NATURALES

SISTEMA DE RESERVAS Y GESTION DE COLAS


PARA RESTAURANTES

Universitario(s): Bilbao Mallea Rafael.


Quispe Torrico Jersson Mirko.
Salinas Condori Ian Ezequiel.

Carrera: INFORMÁTICA.
Docente: MARCELO ARUQUIPA.
Paralelo: INF- 121.
Fecha: 24 DE MAYO DE 2024.

La Paz - Bolivia
SISTEMA DE RESERVAS Y GESTION DE COLAS PARA
RESTAURANTES
Para nuestro informe necesitamos conocer todo lo necesario y así poder desarrollar
el trabajo.

ESTRUCURA DE DATOS
Las estructuras de datos son aquellas en las que se pueden organizar y almacenar
los datos necesarios para un trabajo. Se puede clasificar de dos formas:
 Estructuras Lineales.- Estos se caracterizan por tener un antecesor
y un sucesor.
 Estructuras No Lineales.- Pueden tener una cantidad extensa de
antecesores y de sucesores.
COLAS
Presenta una estructura de datos lineales, se pueden realizar operaciones como
ser las eliminaciones por el extremo frente y las adiciones por el extremo final. Al
igual que las pilas presenta un concepto pero a diferencia del LIFO, este se lo
conoce como FIFO (FIRST INPUT, FIRST OTPUT) o en español (PRIMERO EN
INGRESAR, PRIMERO EN SALIR).
Existen dos tipos de Colas las cuales son:
 COLA SIMPLE.- La cola simple es aquella en la que se puede
adicionar, eliminar, llenar y vaciar
 COLA CIRCULAR.- Presenta una estructura de datos lineal, esta
mantiene los concepto de la cola simple, además que posee un espacio libre y
el siguiente elemento del último es el primero.
LISTAS ENLAZADAS

El concepto de las listas enlazadas en Java se basa en una estructura de datos que
consta de nodos, donde cada nodo contiene un elemento de datos y una referencia
al siguiente nodo en la secuencia. Estos nodos se "enlazan" entre sí mediante
estas referencias, creando así una secuencia lineal. La lista enlazada comienza
con un nodo inicial llamado "cabeza" (head), y el último nodo de la lista apunta a
null para indicar el final.

En Java, las listas enlazadas se implementan típicamente mediante clases que


representan los nodos y la lista en sí. La clase del nodo generalmente contiene dos
campos: uno para almacenar el dato y otro para la referencia al siguiente nodo. La
clase de la lista enlazada contiene al menos un campo para el nodo inicial (la
cabeza), y métodos para realizar diversas operaciones como insertar elementos,
eliminar elementos, buscar elementos, recorrer la lista, entre otros.

El uso de listas enlazadas en Java es útil cuando necesitas una estructura de datos
que pueda crecer o reducirse dinámicamente, ya que los nodos pueden ser
agregados o eliminados fácilmente en cualquier posición de la lista. Sin embargo,
debido a la naturaleza secuencial de las listas enlazadas, el acceso aleatorio a los
elementos puede ser menos eficiente que en otras estructuras de datos como los
arrays.

En resumen, las listas enlazadas en Java ofrecen una forma flexible y dinámica de
almacenar y manipular datos, especialmente cuando la inserción y eliminación
frecuentes de elementos son requeridas y no se necesita un acceso aleatorio
eficiente.

ANALISIS DEL CONTEXTO EN NUESTRA SOCIEDAD.


Un restaurante, ubicado en la Ciudad de La Paz en Bolivia, a diario presenta
problemas, mientras llegan los clientes comienza a llenarse el restaurante y por
este motivo es que no se puede encontrar un orden exacto, para pedir la comida
que el cliente quiere y para la entrega de pedidos. Además este no es el único
problema, sino que mientras se va llenando el establecimiento se van acabando las
mesas y los diferentes platos de comida.
El propósito de este tema es poder encontrar soluciones a los problemas comunes que se
tienen en la vida cotidiana. Es por eso que aquí nosotros planteamos la solución al típico
problema de las personas cuando van a degustar un plato de comida a una pensión o
restaurante. El problema siempre es el tiempo de espera para recibir el producto a
consumir, así mismo se sabe que el problema para las personas que atienden en el
restaurante es el orden en el que las personas llegan al restaurante y hacer el pedido
correspondiente.
Notemos también que uno de los problemas es el espacio que se tiene dentro del
establecimiento en el que se va a consumir los alimentos, hay momentos en los que no hay
espacio para ningún cliente ya llegado a su límite, o también el típico problema en los que
la persona al momento de entregar los pedidos, se equivoca, y dejan los pedidos en una
mesa a la que no le corresponde siendo un motivo por el que los clientes se molestan.
Estos, entre otros problemas son los más comunes en nuestra vida cotidiana al momento
de ir a algún restaurante a pedir algo para comer.
Es por eso que en este trabajo nos encargaremos de poder neutralizar los problemas que el
cliente está acostumbrado a sobrellevar.
De esta forma, ya conociendo en análisis
A continuación presentaremos el diagrama de clases en el que nos estamos basando para
poder realizar la respectiva solución de los problemas que se nos dará a continuación.

DIAGRAMA DE CLASES:

PROBLEMAS A RESOLVER:
 LISTAR LAS CUENTAS CON SALDOS PENDIENTES DE LOS CLIENTES
Con este problema ya resuelto veremos que clientes tienen una cuenta por pagar, y así
facilitar a nosotros el conteo de clientes con deuda o saldo pendiente, en nuestro
restaurante, y ser más selectivos a la hora de atender a los clientes dependiendo de si
tienen una deuda o saldo que pagar.
 ORDENAR EL MENU DE ACUERDO A LOS PLATOS MAS VENDIDOS
Aquí mostraremos los platos más comprados por los clientes, ya que cada plato puede
variar en sabor o tamaño, pero los más recomendables o más comprados serán los que se
muestren al inicio del menú, y así el cliente pueda tomar una decisión más acertada de lo
que va a pedir.

 MOSTRAR EL CLIENTE MÁS FRECUENTE


Aquí vamos a conocer al cliente que llega al restaurante de forma más frecuente y de esta
forma ya poder interpretar lo que el cliente llegaria a pedir.

 CONOCER EL PROMEDIO DE LAS EDADES DE LOS CLIENTES POR DIA


Aqui observaremos el promedio de las edades de las personas que llegaran a nuestro
restaurante un una fechaterminada y asi verificaremos las edades de las personas mas
frecuentes en el restaurante segun su edad.

 OBTENER EL PROMEDIO DE LAS SILLAS OCUPADAS EN EL RESTAURANTE


Verificaremos en fechas determinadas cuantas sillas han sido ocupadas dentro del
restaurante, para de esta forma tener un promedio exacto de las sillas que se utilizaron en
determinada fecha

CÓDIGO EN JAVA:
NOTA: Aqui enseñaremos en código principal, ademas de los metodos, funciones que se
utilizaron para la corrida en modo consola.
PRINCIPAL:

SOLUCION PRIMER PREGUNTA:


//Primera pregunta

static void ListaCuentas(Mp_ColaSimpleMesa a, Menu menu, LS_CircularCuenta lcc) {


for (int i = 1; i <= [Link](); i++) {
ColaSimpleMesa aux = new ColaSimpleMesa();
while (![Link](i)) {
Mesa mx = [Link](i);
[Link](mx);
ColaCircularPedido cp = [Link]();
float saldo = saldoTotal(menu, cp);// enlaze 1
if (existeCuenta([Link]().getCi(), lcc)) {//enlaze dos
NodoCuenta R = [Link]();
while ([Link]() != [Link]()) {
if ([Link]() == [Link]().getCi()) {
saldo = saldo + [Link]();
[Link](saldo);
}
R = [Link]();

}
if ([Link]() == [Link]().getCi()) {
saldo = saldo + [Link]();
[Link](saldo);
}
} else {
[Link]([Link]().getCi(), saldo);
}
}
[Link](i, aux);
}
}

//este es el enlaze dos


static boolean existeCuenta(int cix, LS_CircularCuenta a) {
boolean sw = false;
if ([Link]()) {
return sw;
} else {
NodoCuenta R = [Link]();
while ([Link]() != [Link]()) {
if ([Link]() == cix) {
sw = true;
}
R = [Link]();
}
if ([Link]() == cix) {
sw = true;
}
}
return sw;
}
//este es el enlaze uno

static float saldoTotal(Menu menu, ColaCircularPedido cp) {


float saldo = 0;
ColaCircularPedido aux = new ColaCircularPedido();
while (![Link]()) {
Pedido px = [Link]();
[Link](px);
NodoPlato R1 = [Link]().getP();
NodoBebida R2 = [Link]().getP();
if ([Link]() != null) {
while (R1 != null) {
if ([Link]().getCodigo() == [Link]().getCodigo()) {
saldo = saldo + [Link]();
}
R1 = [Link]();
}
}
if ([Link]() != null) {
while (R2 != null) {
if ([Link]().getCodigo() == [Link]().getCodigo()) {
saldo = saldo + [Link]();
}
R2 = [Link]();
}
}
}
[Link](aux);
return saldo;
}
//fin de primera pregunta

SOLUCION SEGUNDA PREGUNTA:


//Segunda pregunta
static void mostrarPlatosDia(Mp_ColaSimpleMesa a, Menu menu) {
LS_NormalPlato lsp = [Link]();
LS_NormalPlato auxP1 = new LS_NormalPlato();
LS_NormalPlato auxP2 = new LS_NormalPlato();
for (int i = 0; i < [Link](); i++) {
int codx = Mayor(lsp, a);
while (![Link]()) {
NodoPlato npx = [Link]();
if ([Link]().getCodigo() != codx) {
[Link]([Link](), [Link]());
} else {
[Link]([Link](), [Link]());
}
}
[Link]([Link]());
[Link](null);
}
NodoPlato R = [Link]();
while([Link]() != null){
R = [Link]();
}
[Link]([Link]());
[Link](null);
}

static int Mayor(LS_NormalPlato lsp, Mp_ColaSimpleMesa a) {


NodoPlato R1 = [Link]();
int codx = [Link]().getCodigo();
int may = 0;
while (R1 != null) {
int cont = 0;
int cod = [Link]().getCodigo();
for (int i = 1; i <= [Link](); i++) {
ColaSimpleMesa aux = new ColaSimpleMesa();
while (![Link](i)) {
Mesa mx = [Link](i);
[Link](mx);
ColaCircularPedido cp = [Link]();
cont = cont + cantidadPedido(cod, cp);
}
[Link](i, aux);
}
if (may < cont) {
may = cont;
codx = cod;
}
R1 = [Link]();
}
return codx;
}

static int cantidadPedido(int codx, ColaCircularPedido a) {


int cantidad = 0;
ColaCircularPedido aux = new ColaCircularPedido();
while (![Link]()) {
Pedido px = [Link]();
[Link](px);
if ([Link]().getCodigo() == codx) {
cantidad++;
}
}
[Link](aux);
return cantidad;
}
//fin de segunda pregunta

SOLUCION TERCER PREGUNTA:


//Tercera pregunta:
private static void mostrarCliente(Mp_ColaSimpleMesa a) {
Cliente cl = null;
int mayor = 0;
for (int i = 1; i <= [Link](); i++) {

for (int j = 1; j <= [Link](i); j++) {


Mesa m = [Link](i);
[Link](i, m);
Cliente c = [Link]();
int x = buscarVecesVisita(a, c);
if (x > mayor) {
cl = c;
mayor = x;
}
}
}
[Link]("\t " + [Link]());
}
//buscando numero de visitas

private static int buscarVecesVisita(Mp_ColaSimpleMesa a, Cliente c) {


int cont = 0;
for (int i = 1; i <= [Link](); i++) {
for (int j = 1; j <= [Link](i); j++) {
Mesa m = [Link](i);
[Link](i, m);
Cliente x = [Link]();
if ([Link]() == [Link]()) {
cont++;
}
}
}
return cont;
}
//Fin de tercera pregunta

SOLUCION CUARTA PREGUNTA:


//cuarta pregunta:
private static void promedioEdades(Mp_ColaSimpleMesa a) {
for (int i = 1; i <= [Link](); i++) {
int p = 0;
int n = 0;
ColaSimpleMesa aux = new ColaSimpleMesa();
while (![Link](i)) {
Mesa m = [Link](i);
[Link](m);
Cliente c = [Link]();
p = p + [Link](); n+
+;
}
[Link](i, aux);
int promedio = p / n;
[Link]("\t fecha : " + i + " /04/2024:"+ promedio);
}
}
//Fin Cuarta Pregunta

SOLUCION QUINTA PREGUNTA:


//quinta pregunta

private static void promedioSillas(Mp_ColaSimpleMesa a) {


for (int i = 1; i <= [Link](); i++) {
int p = 0;
int n = 0;
for (int j = 1; j <= [Link](i); j++) {
Mesa m = [Link](i);
[Link](i, m);
p = p + [Link]();
n++;
}
int promedio = p / n;
[Link]("\t fecha : " + i + " /04/2024:");
[Link]("\t " + promedio);
}
}
//fin de quinta pregunta
SOLUCION POR CONSOLA Y FORMA GRÁFICA
NOTA: Aqui mostraremos la corrida mediante consola y la forma gráfica que se realizó en el
proyecto
SOLUCION MEDIANTE CONSOLA:
PRINCIPAL Y MENU:
< terminated> Princip al (2) [Java Applic ation] C:\U serf\59170\. p 2\ pa oI\pIug ins\ [Link] [Link] [Link] [Link] 3 2.x86 64 17.0.9.v20231028-l

Fecha: 2/85/2024

.Nro. de Mesa 1
Nro de sillas
2
Nombre del cliente que realizo la reserva: Cliente [mombre=Iam Ezequiel Salinas, ci=13694034, edad=29]
:Pedidos
.Cliente 13694034
’Plato [Plato=Silpamcho, codigo=100]
.Cliente 13694034
,Plato [Plato=Broster, codigo=101]

Nro . de i•1esa 3
Nro de sillas 5
:Nombre del cliente que realizo la reserva: Cliente [mombre=Rafael, ci=14189090, edad=65]
Pedidos
, Cliente 14189090
Plato [Plato=Broster, codigo=10l]

Fecha: 3/05/2024

Nro. de ›9esa 1
:Nro de sillas 2
,Nombre del cliente que realizo la reserva: Cliente [rombre=Iam Ezequiel Salinas, ci=13694034, edad=29]
’Pedidos
.Cliente 13694034
,Plato [Plato=Silpamcho, codigo=100]
.Cliente 13694034
Plato [P1ato=Broster, codigo=181]

: fora . de ales a 4
.Nro de sillas 6
!Nombre del cliemte que realizo la reserva: Cliemte [mombre=Yerko, ci=14l89091, edad=55]
Pedidos
;Cliemte 141B9091

Console @=- ù or,so!e X


:< terminated› principaI (I) [Java Applic atio n] C:\U sers\3917C.p2\pool\[Link] [Link].
.Cliente 14189B91
.Plato [Plato=Spiedo, codigo=118]
/Bebida [Bebida=Coca-Cola, codigo=ll1]

.Nro. de Mesa : 5
,Nro de sillas 3
.Nombre del cliente que realizo Ía reserva ! Cliente [nombre=Karina, ci=7628B715, edad=35]
.Pedidos
.Cliente 76288715
.Plato [Plato=Pescado, codigo=1BBB]
,Bebida [Bebida=Paceña, codigo=illB]
,Cliente 76288715
Plato [Plato=Pescado, codigo=lB0B]
Bebida [Bebida=Fanta, codigo=1BB1]

Fecha : 4/65/2B2S

: I4 r a . de i‘1e sa 6
. or a de slidas 1
' I4 a+nb r e del c die nte que realiza 1 a reser va .' CAi ent e [ nornb r e=tiard a , c1——45342277, e dad=29 ]
Pe didos
: CI ien te 45342277
PM ato [ Plato=Ar roz Chaufa , co digo=11ee]
' Bebid a [ Bebida=Peps i, codi go=1616]

Fecha ! 5/65/2 B24

üro. de Mesa ' 7


.Nro de sillas 3
, Nombre del cliente que realizo la reserva ! Cliente [nombre=Carmen, ci=56123345, edad=59]
'Pedidos
:Cliente 56123345
:Plato [Plato-Sajta, codigo=IlB1 ]
.Bebida Bebida=Pepsi, codigo=1BLB]
'Cliente 56123345
’Plato [Plato=Silpaocho, codigo=lBB]
.Cliente 56123345
,Plato [Plato=Silpaocho, codigo=l0B]
:Bebida [Bebida=Coca-Cola, codigo=ll1]
Console Nor,so'e
< terminated> Principal (2) [Java Applicatio n] C:\Users\ 591 71. p2\[Link] [Link]. [Link] [Link]
e


Nr b de e c1i eni i°' que r e ali o 1 a r ese r va .• CL i ent e [ nombre=Lucy, ci=Z618234,3 edad= 25 ]
: Pedidos
: C1i ent e 16182343
, Plato [ Plato=B rost er, ca digo=161 ]
. Bebida [ Beb ida=Seb ada , ca digo=1611 ]

Fe cha : 6/ 65/ 2624

R r o . de i‘tes a • 9
’Nro de sillas 7
/Nombre del cliente que realizo la reserva: Cliente [nombre=Tobias, ci=L5188B93, edad=5B]
,Pedidos
Cliente 15lBBB93
Plato [Plato=Broster, codigo=1BL]
SOLUCION PRIMER PREGUNTA:

SOLUCION SEGUNDA PREGUNTA:


SOLUCION TERCER PREGUNTA:
SOLUCION CUARTA Y QUINTA PREGUNTA :

También podría gustarte