Sei sulla pagina 1di 23

INDICE

CAPITULO 1: INTRODUCCION Y OBJETIVOS


1.1 Introduccin...3
1.2 Objetivos
1.21 Objetivo general...4
1.22 Objetivo especifico...5
CAPITULO 2: DESARROLLO
2.1Desarrollo terico
2.11Interfaz...
2.12 Dise!o de clases..1"
2.13 #elaciones11
2.2Desarrollo practico
2.21 $digo de la aplicacin %ic&et 'us (ervidor...15
2.22 Cdigo Fuente de la aplicacin Ticket Bus Estacin de trabajo.....................1)
2.23$digo *uente de la aplicacin %ic&et 'us $liente...22
2.24 Interfaz final..25
CAPITULO 3: Anexos
$onclusiones.2
'ibliograf+a...2,
**** CAPITULO 1 ****
Introduccin
-l siste.a /ue se desarrollara surgi co.o un pro0ecto a corto plazo para la .ateria
de 1rogra.acin $oncurrente 0 tiene co.o finalidad la creacin de un siste.a en el
lenguaje de progra.acin 2343 /ue .aneje una %er.inal de autobuses.
-ste siste.a pretende /ue cual/uier usuario pueda .anejarlo por lo /ue tiene /ue
ser sencillo5 0 gozar de una buena interfase. -n el apartado de objetivos se 6ar7 .encin de
los logros /ue se pretende conseguir con la realizacin de dic6o siste.a.
Objetivo general
(e persigue pri.ordial.ente el fin de realizar un soft8are de 9%er.inal de
autobuses: /ue sea .anejable para cual/uier usuario5 sin i.portar edad5 se;o o status social
0 /ue tenga el co.etido de per.itir /ue el usuario consulte de entre una base de datos un
destino deseado5 en esa consulta debe aparecer el precio del boleto 0 el siste.a debe de ser
capaz de venderlo5 ade.7s de per.itir /ue el usuario escoja un asiento.
Objetivos espec+ficos
<uestro siste.a tiene co.o objetivos espec+ficos los siguientes=
-l siste.a debe .anejar 1" destinos distintos5 especificados por un color.
-l siste.a debe .anejar 4 salas de espera 0 .andar a los usuarios a ella antes de
abordar el ca.in de su destino.
>os usuarios /ue aborden un ca.in desaparecer7n de la sala de espera 0 sus
lugares en ella ser7n reasignados a nuevos usuarios.
?n usuario ira a la sala de espera /ue seg@n se indi/ue en su destino co.o sur5
norte5 este u oeste.
-l siste.a debe gozar de una interfase sencilla 0 practica para evitar /ue alg@n
usuario se desespere por su funciona.iento.
-l siste.a debe ser capaz de per.itir la venta de boletos a usuarios 0 evitar /ue dos
usuarios /uieran acceder a la .is.a infor.acin a la vez para evitar un traslape de
lugares en el autob@s o una posible sobrecarga de boletos.
**** CAPITULO 2 ****
1ri.era Interfaz propuesta
-n la figura nu.ero 1 se .uestra la interfaz principal del siste.a /ue consta de
infor.acin sobre la disponibilidad de cupo en las salas /ue se dividieron en 45 una para los
destinos del sur A%abasco 0 Oa;acaB5 otra para los destinos del norte AConterre05
Duadalajara 0 %ijuanaB5 otra para los destinos del este A4eracruz 0 %la;calaB 0 final.ente
una para los destinos del oeste ADuerrero 0 $oli.aB.
$ada destino fue .arcado con un color de la .anera siguiente=
3s+5 se ubicaran los lugares en la sala de for.a aleatoria 0 seg@n el color se sabr7 el
destino al /ue pertenece.
1osterior.ente e;isten dos opciones5 la de consulta 0 la de $o.prar boleto5
si se da clic en consulta aparece del lado derec6o una ventana de infor.acin en donde el
usuario elegir7 de la lista el destino a elegir5 a continuacin aparecer7 infor.acin co.o las
6oras de salida de los ca.iones 0 el precio del boleto5 junto con una pe/ue!a i.agen del
destino.
>a figura 1 se .uestra a continuacin=
36ora5 si el usuario se decide 0 /uiere co.prar su boleto usara la opcin de
9co.prar boleto: /ue despliega una nueva ventana /ue se .uestra en la figura 2.
-n esta nueva ventana el usuario elegir7 el destino al /ue desea ir 0 se .ostrara el
precio del boleto5 junto con los lugares disponibles en el autob@s.
(i el usuario se decide podr7 ver /ue lugares de los /ue est7n disponibles5 para ello
se .aneja una pe/ue!a i.agen /ue si.ula los asientos del autob@s 0 /ue utiliza dos
s+.bolos para indicar si el asiento esta disponible u ocupado5 estos signos son=
(i el asiento escogido esta .arcado de verde no podr7 usarlo5 pero si esta .arcado
de rojo si podr7 usarlo.
(i ca.bia de opinin o tuvo alg@n error 0 no /uiere viajar si.ple.ente da la opcin
9cancelar:.
>a figura nu.ero 2 es la siguiente=
Relac!n "s"a#o $ %ole&o'
Relac!n "s"a#o $ clen&e'
Relac!n "s"a#o $a"&o%(s'
Relacones'
Usuarios = Cliente
1 Cliente =1 Boleto = 1 Autobs
1 Boleto = 1 Asiento = 1 Autobs
Cdigo Fuente de la aplicacin Ticket Bus Servidor
import javaa!t"#
import javanet"#
import javas$l"#
import javaio"#
import javaa!tevent"#
import javautil%ector#
public class tb&erver e'tends Frame(
&erver&ocket s# ))el socket de la cone'ion
int clientes# )) cantidad de clientes concectados
int lugares*+# ))lugares reservados
Te'tArea entrada# ))area de escritura de mensajes
Connection cntn# )),anejador para -.BC /cone'ion con acces0
&tatement stmt# ))1ara maejar las consultas
2esult&et rslt# ))tabla de resultados
tb&erver/0(
))"""""""""""".EC3A2AC4-5E& 1A2A 3A BA&E .E .AT-&
"""""""""""""""
tr6(
Class7or5ame/8sunjdbcodbc9dbc-dbc.river80# ))para
ocupar los -.BC de la ma$uina
cntn = .river,anagergetConnection/8jdbc:odbc:Base.atos80#
))para accesar a la base de datos
stmt = cntncreate&tatement/0# ))para crear una inter7a; con la B.
< catc= /E'ception e0 (<#
))"""""""""""".EC3A2AC4-5E& 1A2A E3 F2A,E &E2%4.-2
""""""""""""""
lugares=ne! int*>+# ))un arreglo de > lugares
setTitle/8&ervidor de TicketBus80# ))titulo de la ventana
setBackground/Colorblue0# ))color del 7ondo /no se ve0
set&i;e/>>?@A>?0# ))tamaBo del 7rame
entrada=ne! Te'tArea/C?@D?0# ))area de te'to
entradasetEditable/7alse0# ))no se puede modi7icar
add/entrada0#
addEindo!3istener/ne! Cerrar/00# ))para cuando se cierra la ventana
set%isible/true0#
clientes=?#
<
class Cerrar e'tends Eindo!Adapter(
public void !indo!Closing/Eindo!Event e0(
tr6(stmtclose/0# ))cierra el statement
cntnclose/0#< ))cierra la cone'ion con -.BC
catc= /E'ception e'0 (<#
dispose/0#
&6steme'it/?0#
<
<
public void aBadir/&tring te'to0(
entradaappend/te'to0#
<
void lan;ar&ervidor/0(
&tring cadena#
tr6(
s=ne! &erver&ocket/>???@>?0# ))crea el socket servidor en puerto
>???@ con un ma'imo de >? clientes
!=ile/true0(
ne! 5uevoCliente/saccept/0@t=is@clientesFF0start/0# ))acepta las
peticiones de cone'ion
<
< catc=/4-E'ception e0 (<#
<
void reservar/&tring destino@&tring =ora@&tring nombre@int cantidadA0( ))para cuando
deseo
reservar un lugar
&tring inst=84nsert into Autobus values
/G8FnombreF8G@G8FdestinoF8G@G8F=oraF8G@G8FcantidadAF8G08# ))instruccion &H3 para
aBadir a la
B. los datos $ue le mando
tr6(
stmte'ecuteUpdate/inst0# ))ejecuto la inserccion en la B.
aBadir/8&e =an reservado 8FcantidadAF8 lugares masIn80# ))escribe un
mensaje en el servidor
< catc=/E'ception e0 (<#
<
boolean consultar/&tring destino@&tring =ora@int cantidadA0( ))para saber si =a6 o no
lugares disponibles
int suma=?#
tr6(
aBadir/82eali;ando ConsultaIn80#
rslt = stmte'ecuteHuer6/8&E3ECT " F2-, Autobus !=ere 2uta like
G8FdestinoF8G and Jora like G8F=oraF8G80# ))instruccion &H3 para consultar en B. los
registros
para un autobus determinado
aBadir/8consulta terminada@ =a6 a la 7ec=a: 80#
!=ile /rsltne't/00( ))mientras =a6a mas registros de respuesta
int temp=rsltget4nt/8CantidadA280# ))obtiene la cantidad de
asientos reservados para cada uno
suma=sumaFtemp# ))6 los suma
<
))aBadir/4ntegerto&tring/suma0F8 lugares apartadosIn80#
i7 //sumaFcantidadA0KD>0( ))si aun =a6 lugares disponibles
return true# ))regresa verdadero
<
else
return 7alse# )) o 7also de lo contrario
< catc= /E'ception e0 (aBadir/8E22-2L C-5&U3TA 45%A34.ALIn80#<#
return 7alse#
<
&tring buscar/&tring nombre0( ))para saber si alguien 6a =a reservado
%ector au'=ne! %ector/0#
tr6(
rslt = stmte'ecuteHuer6/8&E3ECT " F2-, Autobus EJE2E 5ombre
34ME G8FnombreF8G80# ))consulta &H3 en base al nombre
!=ile/rsltne't/00( ))mientras =a6a registros $ue coincidan
&tring a6uda=rsltget&tring/82uta80F8 8Frsltget&tring/8Jora80F8
8Frsltget&tring/8CantidadA280F8N8# ))obtiene los datos de cada regitro 6 los guarda en
una
cadena
aBadir/a6udaF8In80#
au'addElement/a6uda0# ))la cadena la aBade a un vector
<
<catc= /E'ception e0 (<#
return au'to&tring/0# ))regrea el vector en 7orma de cadena
<
public static void main/&tring args*+0(
tb&erver &ervidor=ne! tb&erver/0#
&ervidorlan;ar&ervidor/0#
<
<
class 5uevoCliente e'tends T=read(
&ocket cone'ion#
tb&erver serv#
int cliente#
.ata4nput&tream entrada# ))7lujo de entrada de datos
.ata-utput salida# ))7lujo de salida de datos
5uevoCliente/&ocket c@tb&erver s@int numero0(
cone'ion=c#
serv=s#
cliente=numero#
tr6(
entrada=ne! .ata4nput&tream/cone'ionget4nput&tream/00#
salida=ne! .ata-utput&tream/cone'ionget-utput&tream/00#
< catc= /4-E'ception e0 (<#
<
public void run/0(
boolean &alir=7alse#
!=ile/L&alir0( ))mientras no de la instruccion salir en la terminal
tr6(
&tring destino=entradareadUTF/0# ))lee una cadena en
teoria@ la ruta de viaje
i7 /destinoe$uals/8&alir800 ))si el te'to es el de salir@
termina la ejecucion
&alir=true#
else(
i7
/destinoe$uals/8Terminal80OOdestinoe$uals/8&tation800 ))si dice Terminal o &tation@ lo
conecta 6 se
prepara para lo $ue sigue
servaBadir/8Conectando 8FdestinoF8In80#
else(
i7 /destinoc=arAt/?0==GPG0 ))si el te'to
comien;a con P /es de la tele7onista0
(
destino=destinosubstring/10#
))borra del destino el caracter P
&tring =ora=entradareadUTF/0#
))lee la =ora
&tring
nombre=entradareadUTF/0# ))lee el nombre del registro
int
casientos=4ntegerparse4nt/entradareadUTF/00# ))lee la cantidad de asientos $ue desean
reservar
servaBadir/84ntentando reservar
un pasaje 8FdestinoF8 8F=oraF8In80#
i7/servconsultar/destino@=ora@casientos00( ))si aun =a6 asientos
salida!riteUTF/82eservacion completada 80# ))dice $ue 6a reservo
servreservar/destino@=ora@nombre@casientos0# ))reserva
<
else
salida!riteUTF/85o =a6
3ugares .isponibles80# ))si no@ dice $ue 6a no =a6 lugares
<
else( ))si el te'to no comien;a con P
&tring datos=servbuscar/destino0#
))busca los datos de los $ue reservaron a ese nombre
salida!riteUTF/datos0# ))los envia
a la station
<
<
<
< catc= /4-E'ception e0 (<#
<
servaBadir/83a terminal =a sido desconectadaIn80#
tr6(
cone'ionclose/0# ))cierra la cone'ion
< catc= /4-E'ception e0 (<#
<
<
Cdigo Fuente de la aplicacin Ticket Bus Estacin
de trabajo
import javaa!t"#
import javanet"#
import javaio"#
import javautil&tringTokeni;er#
import javaa!tevent"#
class tb&tation e'tends Frame implements Action3istener(
&ocket cone'ion#
.ata-utput&tream salida#
.ata4nput&tream entrada#
1anel panel#
Button consulta@conectar@desconectar#
Te'tArea estado#
Te'tField nombre@casientos@opcion%iaje@opcionJora#
tb&tation/0(
super/8TicketBus Estacin Central80# ))titulo de la ventana
)) setBackground/Color34QJTRQ2AS0# ))colores
setBackground/Colorblack0# ))colores
setForeground/Colorred0#
set&i;e/A??@DT?0#
panel=ne! 1anel/0#
nombre=ne! Te'tField/C>0#
estado=ne! Te'tArea/1>@A>0#
nombresetEnabled/true0#
estadosetEnabled/7alse0#
consulta=ne! Button/8Consultar80#
consultasetEnabled/7alse0#
conectar=ne! Button/8Conectar80#
desconectar=ne! Button/8.esconectar80#
desconectarsetEnabled/7alse0#
paneladd/ne! 3abel/8 C-5&U3TA .E 2E&E2%AC4-5 800#
paneladd/ne! 3abel/85-,B2E .E 2EQ4&T-: 800#
paneladd/nombre0#
paneladd/consulta0#
paneladd/estado0#
paneladd/ne! 3abel/8-1C4-5E& .E C-5EU4-5800#
paneladd/conectar0#
paneladd/desconectar0#
consultaaddAction3istener/t=is0# ))escuc=a para el boton consulta
conectaraddAction3istener/t=is0# ))escuc=a para el boton conectar
desconectaraddAction3istener/t=is0# )) 8 8 8 8 desconectar
addEindo!3istener/ne! Cerrar/00#
add/panel0#
set%isible/true0#
<
public void action1er7ormed/ActionEvent e0(
&tring com=egetActionCommand/0#
i7/come$uals/8Consultar800( ))si el boton presionado es el de Consultar
tr6 (
salida!riteUTF/nombregetTe't/00# ))escribe en el servidor
el nombre
&tring datos=entradareadUTF/0# ))lee los registros $ue le
manda el servidor /un vector en 7orma de cadena0
&tringTokeni;er cad=ne! &tringTokeni;er/datos@8*+@N80#
))lo separa en base a los caracteres del vector 6 un caracter prede7inido
!=ile /cad=as,oreTokens/00( ))mientras =a6a tokens
estadoappend/cadne'tToken/0F8In80# ))los escribe
<
nombresetTe't/880# ))borra el nombre consultado
< catc=/4-E'ception e'cepcion0 (<#
<
else
i7 /come$uals/8Conectar800( ))si el boton es el de conectar
tr6(
cone'ion=ne! &ocket/4netAddressget3ocalJost/0@>???0#
))obtiene el servidor
salida=ne!
.ata-utput&tream/cone'ionget-utput&tream/00# ))crea las cone'iones
entrada=ne!
.ata4nput&tream/cone'ionget4nput&tream/00#
salida!riteUTF/8&tation80# ))escribe en el servidor &tation
para identi7icarlo
conectarsetEnabled/7alse0# ))cambia las propiedades de los
botones
consultasetEnabled/true0#
desconectarsetEnabled/true0#
< catc= /4-E'ception e'cepcion0 (<#
<
else
tr6(
salida!riteUTF/8&alir80# ))si no@ /es el de salir0
cone'ionclose/0# ))cierra la cone'ion
conectarsetEnabled/true0# ))cambia las propiedades de los botones
desconectarsetEnabled/7alse0#
conectarsetEnabled/7alse0#
< catc=/4-E'ception e'cepcion0 (<#
<
class Cerrar e'tends Eindo!Adapter(
public void !indo!Closing/Eindo!Event e0(
dispose/0#
&6steme'it/?0#
<
<
public static void main/&tring args*+0(
ne! tb&tation/0#
<
<
Cdigo Fuente de la aplicacin Ticket Bus Cliente
import javaa!t"#
import javanet"#
import javaio"#
import javaa!tevent"#
class tbClient e'tends Frame implements Action3istener(
&ocket cone'ion#
C=oice opcion%iaje@ opcionJora#
.ata-utput&tream salida# ))bu77er de salida
.ata4nput&tream entrada# ))bu77er de entrada
1anel panel#
Button reservar@conectar@desconectar#
Te'tField estado@nombre@ casientos#
tbClient/0( ))creacion de la ventana /para mas datos@ c=acar las otras clases0
super/8TicketBus Telep=onical Center80#
setBackground/ne! Color /C>>@1VC@1CA00#
setForeground/Colorblack0#
set&i;e/CC?@A>?0#
panel=ne! 1anel/0#
nombre=ne! Te'tField/C>0#
estado=ne! Te'tField/C>0#
casientos=ne! Te'tField/1?0#
nombresetEnabled/true0#
estadosetEnabled/7alse0#
opcion%iaje=ne! C=oice/0#
opcionJora=ne! C=oice/0#
opcion%iajeadd/81uebla WP %eracru;80#
opcion%iajeadd/81uebla WP ,e'ico80#
opcion%iajeadd/81uebla WP Tla'cala80#
opcion%iajeadd/81uebla WP -a'aca80#
opcion%iajeadd/81uebla WP Jidalgo80#
opcion%iajesetEnabled/7alse0#
opcionJoraadd/8X:?? =rs80#
opcionJoraadd/8Y:?? =rs80#
opcionJoraadd/811:?? =rs80#
opcionJoraadd/81A:?? =rs80#
opcionJoraadd/81>:?? =rs80#
opcionJoraadd/81X:?? =rs80#
opcionJoraadd/81Y:?? =rs80#
opcionJorasetEnabled/7alse0#
reservar=ne! Button/82eservar80#
reservarsetEnabled/7alse0#
conectar=ne! Button/8Conectar80#
desconectar=ne! Button/8.esconectar80#
desconectarsetEnabled/7alse0#
paneladd/ne! 3abel/82UTA .E %4A9E800#
paneladd/opcion%iaje0#
paneladd/opcionJora0#
paneladd/ne! 3abel/85-,B2E .E 2EQ4&T2-: 800#
paneladd/nombre0#
paneladd/ne! 3abel/8CA5T4.A. .E A&4E5T-&: 800#
paneladd/casientos0#
paneladd/reservar0#
paneladd/ne! 3abel/8-1C4-5E& .E C-5EU4-5800#
paneladd/conectar0#
paneladd/desconectar0#
paneladd/estado0#
reservaraddAction3istener/t=is0#
conectaraddAction3istener/t=is0#
desconectaraddAction3istener/t=is0#
addEindo!3istener/ne! Cerrar/00#
add/panel0#
set%isible/true0#
<
public void action1er7ormed/ActionEvent e0(
&tring com=egetActionCommand/0#
i7/come$uals/82eservar800( ))si se presiona el boton reservar
tr6 (
salida!riteUTF/8P8Fopcion%iajeget4tem/opcion%iajeget&elected4nde'/000# ))escribe en
el servidor la ruta del viaje con un P al principio
salida!riteUTF/opcionJoraget4tem/opcionJoraget&elected4nde'/000# ))escribe la =ora
salida!riteUTF/nombregetTe't/00# ))escribe al servidor el
nombre
salida!riteUTF/casientosgetTe't/00# ))escribe la antidad
de asientos
&tring lugares=entradareadUTF/0# ))lee la descricion de si
=a6 o no lugares disponibles
estadosetEnabled/true0#
estadosetTe't/lugares0#
estadosetEnabled/7alse0#
< catc=/4-E'ception e'cepcion0 (<#
<
else
i7 /come$uals/8Conectar800( ))si presionan el boton Conectar
tr6(
cone'ion=ne! &ocket/4netAddressget3ocalJost/0@>???0#
))crea el socket 6 busca la cone'ion con el servidor local
salida=ne!
.ata-utput&tream/cone'ionget-utput&tream/00# ))abre los 7lujos de entrada)salida
entrada=ne!
.ata4nput&tream/cone'ionget4nput&tream/00#
salida!riteUTF/8Terminal80# ))escribe al servidor
Terminal para identi7icarse
conectarsetEnabled/7alse0#))cambia las propiedades de los
botones
desconectarsetEnabled/true0#
reservarsetEnabled/true0#
opcion%iajesetEnabled/true0#
opcionJorasetEnabled/true0#
< catc= /4-E'ception e'cepcion0 (<#
<
else
tr6(
salida!riteUTF/8&alir80# ))para salir@ cerrar la cone'ion@ etc
cone'ionclose/0#
conectarsetEnabled/true0#
desconectarsetEnabled/7alse0#
reservarsetEnabled/7alse0#
opcion%iajesetEnabled/7alse0#
opcionJorasetEnabled/7alse0#
< catc=/4-E'ception e'cepcion0 (<#
<
class Cerrar e'tends Eindo!Adapter(
public void !indo!Closing/Eindo!Event e0(
dispose/0#
&6steme'it/?0#
<
<
public static void main/&tring args*+0(
ne! tbClient/0#
<
<
Interfaz final
4nter7aces de las aplicaciones antes mencionadas
E 4nter7a; cliente
E 4nter7a; Estacin
E 4nter7a; &ervidor
**** CAPITULO 3 ****
Anexos
Concl"sones
$on lo abordado en el presente trabajo se puede decir /ue el analizar el proble.a
antes de llevarlo a la practica es su.a.ente i.portancia5 pues gracias a ello se pudo
conte.plar las posibles soluciones a los proble.as /ue podr+a.os tener .as adelante 0
a6orrarnos .uc6os pasos innecesarios a la 6ora de la codificacin5 al principio fue .as
tardado pero nos a0udo .uc6o.
3prendi.os el uso de los t6reads 0 reafir.a.os conoci.ientos ad/uiridos tanto en
el curso co.o en otros cursos. Desarrollar un siste.a de %er.inal de autobuses no fue una
tarea sencilla 0 confor.e se iba avanzando surg+an .as preguntas 0 /uer+a.os buscar
.aneras de solucionarlas5 pero se aco.plejaba el siste.a.
-n fin5 pode.os concluir /ue se lograron los objetivos planeados en un inicio 0
nuestro siste.a cubri las e;pectativas del grupo.
B%lo)#a*+a
2ava 1ara -studiantes
'ell5 Doug5 1)44F
CG;ico5 D.*. = 1earson -ducation5 c2""3.
1rogra.acin Cultit6read -n 2ava
>e8is5 'il.
Cadrid = 1earson -ducation 5 2""3.
-structuras De Datos H 3lgorit.os -n 2avaI' Cic6ael Doodric65 #oberto
%a.assia.
Doodric65 Cic6ael %.
Ce;ico = $-$(35 c2""2.
%eac6 Hourself 2ava 1.1 1rogra..ing In 24 Jours.
$aden6ead5 #ogers.
CG;ico= 1renticeFJall Jispanoa.ericana5 1)),.

Potrebbero piacerti anche