You are on page 1of 10

Universidad de la Fuerzas Armadas ESPE

Departamento de Ciencias de la Computación


Programación II

Deber 6:
Menú Programa Parqueadero

Integrantes:
Milton Steven Palacios
Joceline Paulette Parra

NRC:
4187

Profesor:
Ing. Margarita Zambrano

Fecha de entrega:
23/01/2017

Sangolquí-Ecuador
Objetivos:
General
 Realizar un menú de Parqueadero en el que el administrador pueda realizar una
serie de opciones como Registrar la entrada y salida del vehículo, además de
impresión y correcciones por medio de una aplicación en Java para fortalecer
conocimientos prácticos.
Específicos
 Realizar un algoritmo que permita amor un menú de 5 opciones para que el
usuario escoja la opción que desea realizar.
 Lograr que en la opción 1 el ingreso sea de un vehículo en uno.
 Crear en la opción 2 la salida del vehículo simulando que el lugar queda
desocupado.
 Modificar los datos de un usuario debido a un error a través de un menú en la
opción 3.
 Eliminar los datos del sistema a través de un reset total en la opción 4.
 Imprimir los datos de todo un dia en el parqueadero en la opción 5.
 Imprimir la factura de algún cliente en la opción 6.
 Organizar las clases para proceder a la asociación previamente estudiada en clase
y fortalecer conocimientos de aquello.

Marco teórico:
RELACIÓN DE OBJETOS: ASOCIACIÓN

La asociación se podría definir como el momento en que dos objetos se unen para trabajar
juntos y así, alcanzar una meta.

Un punto a tomar muy en cuenta es que ambos objetos son independientes entre sí,
veremos un poco más adelante qué implicación tiene esto. Para validar la asociación, la
frase “Usa un”, debe tener sentido:

 El ingeniero usa una computadora


 El cliente usa tarjeta de crédito.
 El cliente viven en una Dirección.
Principales Códigos Utilizados:

En el menú utilizamos un Switch-Case:

Condicional de selección switch en java.

La instrucción switch es una forma de expresión de un anidamiento múltiple de


instrucciones if ... else. Su uso no puede considerarse, por tanto, estrictamente necesario,
puesto que siempre podrá ser sustituida por el uso de if. No obstante, a veces nos resultará
útil al introducir mayor claridad en el código.

 La sintaxis será:

/* Ejemplo Switch - aprenderaprogramar.com */


switch (expresión) {

case valor1:
instrucciones;
break;

case valor2:
instrucciones;
break;
.
.
.
default:
sentencias;
break;

Para la obtención de datos usamos Getters y Setters ya que necesitábamos manejar


estos datos desde el main y la clase Ticket.

Setters & Getters

Los Setters & Getters son métodos de acceso lo que indica que son siempre declarados
públicos, y nos sirven para dos cosas:

Setters: Del Inglés Set, que significa establecer, pues nos sirve para asignar un valor
inicial a un atributo, pero de forma explícita, además el Setter nunca retorna nada
(Siempre es void), y solo nos permite dar acceso público a ciertos atributos que deseemos
el usuario pueda modificar.

Getters: Del Inglés Get, que significa obtener, pues nos sirve para obtener (recuperar o
acceder) el valor ya asignado a un atributo y utilizarlo para cierto método.
Diagrama UML del Proyecto en Java:

DESARROLLO
Método Menú de Corrección, en la clase Ticket:
Código de programa

public void menuCorreccion(){


int p=1;

while(p==1){
System.out.println("Que desea cambiar: \n Cedula=1 \n nombre=2 \n modelo=3 \n
placa =4 " );
Scanner leer=new Scanner(System.in);
p=leer.nextInt();
switch(p){
case 2:
System.out.println("Su nombre es: (Corrija sin apellido porque no lee espacio,
next Line no funciona Inge");
String nombre;
nombre=leer.next();
usuario.setNombre(nombre);
break;
case 3:
System.out.println("el modelo es:");
String modelo="";
modelo=leer.next();
vehiculo.setModelo(modelo);
break;
case 4:
System.out.println("la placa es:");
String placa="";
placa=leer.next();
vehiculo.setPlaca(placa);
break;
case 1:
System.out.println("Su cedula es:");
long t=0;
t=leer.nextLong();
usuario.setCI(t);
break;
}
System.out.println("necesita cambiar algun dato ingresado");
System.out.println("SI=1 \n NO=0");
p=leer.nextInt();
}
}

En el main:
Menú del programa
Código de programa
package deberparqueaderomenu;
import java.util.Scanner;
/**
*
* @author pc
*/
public class DeberParqueaderoMenu {
public static final int D=6;
public static final String L[]=new String[D];
Ticket ticket=new Ticket();
public static void asigno_objetos(Ticket A[]){
for(int i=0;i<D;i++){
A[i]=new Ticket();
L[i]="Desocupado";
}
}
public static void asigno_cadaV(Ticket A[],int a){
A[a]=new Ticket();
}
public static void ingreso_objetos(Ticket A[],int a){
A[a].ingresar();
int codig=0;
codig++;
A[a].setCodigo(codig);
L[a]="Ocupado";
}
public static void ingreso_salida(Ticket A[],int i){
A[i].IngresarSalida();
L[i]="Desocupado";
}
public static void imprimo_objetos(Ticket A[]){
for(int i=0;i<D;i++){

System.out.println("El lugar "+i+" se encuentra: "+L[i]);


}
}
public static void Corregir(Ticket A[],int a){
A[a].menuCorreccion();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
int opc=0,repetir=1,lugar=0,lugarS,cont=0,code=0;
Ticket ticket[]=new Ticket[D];
asigno_objetos(ticket);
do{
System.out.println("BIENVENIDO ADMINISTRADOR AL MENÚ");
System.out.println("Presione\n 1=Entrada de Vehiculo, 2=Salida del vehiculo\n
3=Eliminacion de datos, 4=Modificacion\n 5=Impresion");
Scanner leer=new Scanner(System.in);
do{
opc=leer.nextInt();
}while(opc<1||opc>5);
switch(opc){
case 1:
System.out.println("Ingrese el lugar a ocupar 0-5");
do{
lugar=leer.nextInt();
}while(lugar>5||lugar<0);
while(L[lugar]=="Ocupado"){
System.out.println("Lugar ocupado, ingrese lugar correcto") ;
do{
lugar=leer.nextInt();
}while(lugar>5||lugar<0);
}
asigno_cadaV(ticket,lugar);
ingreso_objetos(ticket,lugar);
code++;
break;
case 2:
System.out.println("Ingrese el lugar a desocupar 0-5");
do{
lugarS=leer.nextInt();
}while(lugarS>5||lugarS<0);
while(L[lugarS]=="Desocupado"||lugarS>5||lugarS<0){
System.out.println("Lugar vacio, ingrese lugar correcto (0-5)") ;
do{
lugarS=leer.nextInt();
}while(lugarS>5||lugarS<0);
}
ingreso_salida(ticket,lugarS);
break;
case 3:
asigno_objetos(ticket);
break;
case 4:
int corr;
do{
System.out.println("Ingrese el lugar a corregir 0-5");
corr=leer.nextInt();
}while(corr>5||corr<0);

while(L[corr]=="Desocupado"){
System.out.println("Lugar vacio, ingrese lugar correcto (0-5)") ;
do{
System.out.println("Ingrese el lugar a corregir 0-5");
corr=leer.nextInt();
}while(corr>5||corr<0);
}
Corregir(ticket,corr);
break;
case 5:
imprimo_objetos(ticket);
break;
}
System.out.println("DESEA REALIZAR OTRA ACCION-- PRESIONE 1");
repetir=leer.nextInt();
}while(repetir==1);
}
}

Conclusiones:
1. Es de gran importancia generar métodos estaticos en el main ya que se utilizan
varias veces en el menú.
2. Los getters y setters son indispensables y deben usarse de manera correcta.
3. Ser muy específico en lo que se le pide que ingrese el usuario para implementar
el menú ya que esto facilitara la creación del código, por ejemplo si se necesita
modificar algo pedir el número de cedula del usuario para buscar, etc.
4. Es importante primero realizar el diagrama UML para tener una guía de todo lo
que queremos realizar y la cardinalidad
5. existente entre las clases involucradas en nuestro programa/aplicación.
6. Existen relaciones entre objetos que facilitan el uso del código del programa, por
ejemplo la asociación juega un papel importante porque permite trabajar con
clases dentro de otra clase que abarque a muchas.
Web grafía:
 http://www.cristalab.com/tutoriales/programacion-orientada-a-objetos-
asociacion-vs-composicion-c89337l/
 http://www.aprenderaprogramar.com/index.php?option=com_content&view=art
icle&id=483:switch-en-java-condicional-de-seleccion-diagrama-de-flujo-y-
ejemplo-de-aplicacion-ejercicio-cu00637b&catid=68:curso-aprender-
programacion-java-desde-cero&Itemid=188
 http://gl-epn-programacion-ii.blogspot.com/2010/03/setters-getters.html
 http://elvex.ugr.es/decsai/java/pdf/3C-Relaciones.pdf