jueves, 14 de julio de 2011

Auto-generacion de codigo

Bueno primero que nada solo de las clases hechas con la herramienta CASE solo agrege las mismas que logre hacer debido al poco tiempo, las clases con las que trabaje son Empleados,Habitaciones y la base de datos. Que cambio a comparacion del codigo generado por la herramienta? Primero que nada tenia 2 clases una llamada Habitacion y la otra Habitaciones al ir codificando me di cuenta de que no habia necesidad de tener estas dos clases separadas ya que estaban muy relacionadas y dependian una de la otra y termino siendo una sola clase. En la base de datos en el diagrama no tenia bien definido todo lo que se hiba a hacer, en el codigo ya toda la estructura tomo forma para tener todos los metodos que nos sirven para almacenar toda la informacion que necesitamos. Otro cambio notable puede ser los nombres de los metodos y atibutos muchos si cambiaron por cuestiones de tener muchas cosas parecidas decidi ser mas especifico con los nombres entonces se vieron modificados algunos, algunos otros si fueron respetados del diagrama original. En cuanto a la reserva tenia pensado implementarla pero tambien por cuestiones de tiempo ya no me fue posible pero mas o menos pienso que tambien hubiera estado en la clase habitacion siendo solo otro estado de disponibilidad no es necesario tener otra clase. Otra cosa que veo que cambio son los tipos que maneje en el diagrama ya que al momento de hacerlo no estaba muy seguro de como hiba a funcionar y al momento de codificar ya te das cuenta de realmente que tipo necesitan sea String,int o alguno otro. Eso seria todo los cambios mas notable que noto entre los codigos.




Este es el codigo generado con Umbrello la herramiento CASE que yo utlice


public class Empleados {
private String Altas;
private String Bajas;
private String Informacion;

public Empleados () { };//Constructor
private void setAltas ( String newVar ) {
Altas = newVar;
}
private String getAltas ( ) {
return Altas;
}
private void setBajas ( String newVar ) {
Bajas = newVar;
}
private String getBajas ( ) {
return Bajas;
}
private void setInformacion ( String newVar ) {
Informacion = newVar;
}
private String getInformacion ( ) {
return Informacion;
}

public String ObtenerDatos( )
{
}//Fin obtenerdatos
public String Eliminar( )
{
}// Fin Eliminar
public String VerInformacion( )
{
}//Fin Verinformacion
}//Fin clase Empleados

public class Habitacion {

private int Disponibilidad;

public Habitacion () { };

private void setDisponibilidad ( int newVar ) {
Disponibilidad = newVar;
}//Fin setDisponiblidad

private int getDisponibilidad ( ) {
return Disponibilidad;
}//Fin getDisponibilidad

public void CheckIn( )
{
}//Fin CheckIn

public String CheckOut( )
{
}//Fin CheckOut

public void Reservar( )
{
}//Fin Reservar


}//Fin clase Habitacion

public Habitaciones () { };//Constructor

private void setDisponibilidad ( int newVar ) {
Disponibilidad = newVar;
}

private int getDisponibilidad ( ) {
return Disponibilidad;
}

public int MuestraDisponible( )
{
}//Fin MuestraDisponible

public int Muestra_Ocupado( )
{
}//Fin MuestraOcupado

public int MuestraReservada( )
{
}//Fin MuestraReservada

}//Fin Habitaciones


import java.util.*;


public class BaseDatos {

public BaseDatos () { };



}


Este es el codigo que realice yo
Para la base de datos:


import java.sql.*;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.ResultSet;


public class basedatos// Inicia Clase basedatos//
{
MysqlDataSource datasource;
private Connection basedatos;
private Statement st;
String estado= "Conexion Satisfactoria";

public basedatos()//Constructor con datos para conectar a la base de datos//
{
datasource = new MysqlDataSource();//Conexion a la base de datos de nombre Hotel//
datasource.setUser("root");
datasource.setPassword("68952043");
datasource.setDatabaseName("Hotel");
datasource.setServerName("localhost");
try{
basedatos = datasource.getConnection();
st= basedatos.createStatement();
}catch(Exception e){
System.out.println("No se pudo conectar a la base de datos");//En caso de no conectarse manda la siguiente excepcion//
}
}//fin de constructor(BaseDatos)

public void agregar(String NombreE,int Edad,String Puesto)//Metodo para agregar un empleado//
{
try{
st.executeUpdate("INSERT INTO Empleados(Nombre,Edad,Puesto) VALUES('"+NombreE+"','"+Edad+"','"+Puesto+"')");
}catch(SQLException ex){
estado = ex.getMessage();
}
}//Fin agregar//
public ResultSet buscar(String search)//Metodo para buscar un empleado//
{
ResultSet resultado = null;
try{
resultado = st.executeQuery("Select * from Empleados Where Nombre = '"+search+"'");
}catch(SQLException ex){
estado = ex.getMessage();
}
return resultado;
}//fin buscar//
public void Modificar(String NombreMod,String NombreM,int EdadM,String PuestoM)//Metodo para Modificar la informacion del empleado//
{
try {
st.executeUpdate("UPDATE Empleados SET Nombre='"+NombreM+"',Edad='"+EdadM+"', Puesto='"+PuestoM+"' WHERE Nombre='"+NombreMod+"'");
} catch (SQLException ex) {
estado=ex.getMessage();
}
}//Fin Modificar//
public void Eliminar(String Elim)//Metodo para eliminar empleados//
{
try{
st.executeUpdate("DELETE FROM Empleados WHERE Nombre='"+Elim+"'");
}catch(SQLException ex){
estado = ex.getMessage();
}
}//Fin Eliminar//

public void VerEmpleados(){//Metodo para ver todos los empleados//
try{
ResultSet rs = st.executeQuery("SELECT * FROM Empleados");
while(rs.next()){

System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3));
}
}catch(Exception e){
System.out.println("Error al realizar la consulta");
}
}//Fin VerEmpleados//

public void VerHabitaciones(){//Metodo para ver todas las habitaciones con su estado//
try{
ResultSet rs = st.executeQuery("SELECT * FROM Habitaciones");
while(rs.next()){

System.out.println(rs.getString("Numero")+" "+rs.getString("Estado")+" "+rs.getString("Costo"));
}
}catch(Exception e){
System.out.println("Error al realizar la consulta");
}

}//Fin VerHabitaciones//


public ResultSet Asignacion(int Prec){// Metodo para asignar una habitacion al cliente//
ResultSet pre=null;
try{
pre=st.executeQuery("Select * from Habitaciones Where Estado='Vacia' AND Costo="+Prec);

}catch(SQLException ex){
System.out.println(ex.getMessage());
}
return pre;

}//Fin Asignacion

public void Cam(String Num,String NomC,int Dias){//Metodo para cambiar el estado de la habitacion//

try{
st.executeUpdate("UPDATE Habitaciones SET Estado='Ocupada', Dias='"+Dias+"',Nombre='"+NomC+"' WHERE Numero='"+Num+"' ");

}catch(SQLException ex){
System.out.println(ex.getMessage());
}


}//Fin Cam//


public ResultSet Ocupada(int num){// Metodo para buscar una habitacion ocupada//
ResultSet nm=null;
try{
nm=st.executeQuery("Select * from Habitaciones Where Estado='Ocupada' AND Numero="+num);

}catch(SQLException ex){
System.out.println(ex.getMessage());
}
return nm;

}//Fin Asignacion
public void Salida(String nume,String nom){//Metodo para cambiar el estado de la habitacion//

try{
st.executeUpdate("UPDATE Habitaciones SET Estado='Vacia', Dias='0',Nombre='' WHERE Numero='"+nume+"' AND Nombre='"+nom+"' ");

}catch(SQLException ex){
System.out.println(ex.getMessage());
}


}//Fin Salida//





}//Fin Clase BaseDatos//



Para Habitacion y Empleados:


import java.io.*;
import java.sql.ResultSet;
import java.util.*;
public class Hotel{
public static void main(String[] args)throws Exception{//MAIN//
Scanner Lectura= new Scanner(System.in);//Declaracion de Lector//
basedatos con = new basedatos();
basedatos bdm = new basedatos();

int opci=0;
do{
System.out.println("\nMenu\n1.Archivo de Empleados\n2.Habitaciones\n3.Salir");
opci = Integer.parseInt(Lectura.nextLine());
switch(opci){
case 1:
int opcion=0;
do{
imprime("\nMenu Empleados");//Menu Empleados//
imprime("1.-Agregar Empleado");
imprime("2.-Buscar Empleado");
imprime("3.-Modificar Informacion de Empleado");
imprime("4.-Dar de baja Empleado");
imprime("5.-Ver Todos los Empleados");
imprime("6.-Volver al Menu principal");
opcion= Integer.parseInt(Lectura.nextLine());
switch(opcion)
{
case 1: //caso 1 Agregar Empleado//
imprime("Ingrese la siguiente informacion");
imprime("\nNombre: ");

String NombreE = Lectura.nextLine();
imprime("Edad: ");

int Edad = Integer.parseInt(Lectura.nextLine());

imprime("Puesto: ");
String Puesto = Lectura.nextLine();
con.agregar(NombreE,Edad,Puesto);
break;

case 2://caso 2 Buscar Empleado //
imprime("\nIngrese el nombre del Empleado a buscar: ");
String search = Lectura.nextLine();
ResultSet resultado=con.buscar(search);
if(resultado.next())
{
imprime("\nNombre: "+resultado.getString("Nombre"));
imprime("Edad: "+resultado.getString("Edad"));
imprime("Puesto: \n"+resultado.getString("Puesto"));
}else
imprime("Empleado no encontrado verifique la informacion");
imprime(con.estado);
break;

case 3://caso 3 Modificacion//
imprime("\nIngrese el Nombre del Empleado cuya informacion desea Modificar: ");
String NombreMod =Lectura.nextLine();
ResultSet res=con.buscar(NombreMod);
if(res.next())
{
imprime("\nIngrese la nueva informacion");
imprime("Nombre: ");
String NombreM=Lectura.nextLine();
imprime("Edad: ");
int EdadM= Integer.parseInt(Lectura.nextLine());
imprime("Puesto: \n");
String PuestoM=Lectura.nextLine();
con.Modificar(NombreMod,NombreM,EdadM,PuestoM);
}else
imprime("Empleado no encontrado verifique la informacion");
imprime(con.estado);
break;

case 4://caso 4 Eliminar//
imprime("\nIngrese el nombre del Empleado a eliminar: ");
String Elim = Lectura.nextLine();
ResultSet resu= con.buscar(Elim);
if(resu.next())
{
con.Eliminar(Elim);
}else
imprime("Empleado no encontrado verifique la informacion");
break;
case 5://caso 5 VerEmpleados//
imprime("\n");
bdm.VerEmpleados();
break;
}//Fin Switch

}while(opcion!=6);//Fin Do while//
break;


case 2:
int opcion2=0;
do
{
imprime("\nMenu Habitacion");//Menu Habitacion//
imprime("1.-Check In");
imprime("2.-Check Out");
imprime("3.-Ver Todas las Habitaciones");
imprime("4.-Volver al Menu principal");
opcion2= Integer.parseInt(Lectura.nextLine());
switch(opcion2)
{
case 1: //Check In//
imprime("Ingrese la siguiente informacion");
imprime("Ingrese el numero de la habitacion deseada\nTipo de Habitacion\n1.-Sencilla $100\n2.-Doble $300\n3.-Suite $600");
int Prec = Integer.parseInt(Lectura.nextLine());
if(Prec==1){
Prec=100;

}
if(Prec==2){
Prec=300;

}
if(Prec==3){

Prec=600;
}
ResultSet Tipo=con.Asignacion(Prec);
if(Tipo.next())
{

imprime("Habitacion Disponible");
imprime("\nCuarto: "+Tipo.getString("Numero"));
String Num=Tipo.getString("Numero");
imprime("Estado: "+Tipo.getString("Estado"));
imprime("Precio:"+Tipo.getString("Costo"));
imprime("\nNombre del cliente");
String NomC=Lectura.nextLine();
imprime("Ingrese los dias de estancia");
int Dias= Integer.parseInt(Lectura.nextLine());
int Total=Prec*Dias;
imprime("El total a pagar es de $"+Total);
con.Cam(Num,NomC,Dias);


}else imprime("No hay cuartos de ese tipo disponible");

break;

case 2://Check Out//
imprime("Ingrese el numero de la habitacion de la cual sale el cliente");
int num=Integer.parseInt(Lectura.nextLine());
ResultSet oc=con.Ocupada(num);
if(oc.next())
{
imprime("Informacion de Habitacion a dar de baja");
imprime("\nCuarto: "+oc.getString("Numero"));
String nume=oc.getString("Numero");
imprime("Estado: "+oc.getString("Estado"));
imprime("Nombre:"+oc.getString("Nombre"));
String nom=oc.getString("Nombre");

con.Salida(nume,nom);
}else imprime("Esa habitacion no esta ocupada");
break;

case 3://caso 3 VerHabitacion//
imprime("\n");
bdm.VerHabitaciones();
break;
}//Fin Switch

}while(opcion2!=4);//Fin Do while//
break;

}//Fin Switch//

}while(opci!=3);//Fin Do while//
}//Fin Main











public static void imprime(String imprime)//Metodo para ahorrar codigo a la hora de Imprimir//
{
System.out.println(imprime);
}//fin de Impresor//




}//Fin clase Hotel

No hay comentarios:

Publicar un comentario