Integrantes : Jorge Uribe
Stteephany Martin
Keyssi Rivero
verónica guerra
Trayecto I, Trimestre III, Informática
Seccion : 6
Profesora : Marbella Delgado
MINIPROYECTO


Program Baseball;
uses crt;
Type
RegEquipo = record
Id: integer;
Nombre: string;
AFund: string;
end;
PtoEquipo = ^ListaEquipo;
ListaEquipo = record
InfoEquipo: RegEquipo;
SigEquipo: PtoEquipo;
end;

RegJugador = record
Nombre: string;
Edad: integer;
Tlf: string;
Cedula: string;
EquipPlay: String;
IdEquipo: integer;
end;
PtoJugador = ^ListaJugador;
Listajugador = record
InfoJugador : RegJugador;
SigJugador : PtoJugador;
end;

Var
RegEquip: RegEquipo;
RegJug: RegJugador;
opc1, opc2, ContadorId, opc4 : integer;
CabezaE,ColaE, CabezaEl, ColaEl: PtoEquipo;
CabezaJ,ColaJ: PtoJugador;
TempNombre, TempCedula: string;
TempId: integer;
opc3: string[2];


-------------------------Inicializacion de Apuntadores------------------------
Procedure InitApEquip;
Begin
CabezaE:= nil;
ColaE:= cabezaE;
end;

Procedure InitApJug;
Begin
CabezaJ:= nil;
ColaJ:= CabezaJ;
end;
-------------------------Operaciones de los Equipos---------------------------
Function BuscarEquipoName (TempNombre: String): Boolean;
Var
TempPtrEquipo, AntPtrEquipo: PtoEquipo;
Bln: Boolean;
Begin
Bln:= False;
if (cabezaE = nil) then
exit;
AntPtrEquipo:= CabezaE;
TempPtrEquipo:= CabezaE;
While (not bln) and (TempPtrEquipo <> nil) Do
begin
if (TempPtrEquipo^.InfoEquipo.Nombre = TempNombre) then
begin
Bln:= True;
Break;
end;
if (TempPtrEquipo^.SigEquipo^.SigEquipo = nil) then
begin
Bln:= False;
Break;
end;
AntPtrEquipo:= TempPtrEquipo;
TempPtrEquipo:= TempPtrEquipo^.SigEquipo;
end;
Result:= Bln;
end;

Function BuscarEquipoId (TempId: Integer): Boolean;
Var
TempPtrEquipo, AntPtrEquipo: PtoEquipo;
Bln: Boolean;
Begin
Bln:= False;
if (cabezaE = nil) then
exit;
AntPtrEquipo:= CabezaE;
TempPtrEquipo:= CabezaE;
While (not bln) and (TempPtrEquipo <> nil) Do
begin
if (TempPtrEquipo^.InfoEquipo.Id = TempId) then
begin
Bln:= True;
Break;
end;
if (TempPtrEquipo^.SigEquipo^.SigEquipo = nil) then
begin
Bln:= False;
Break;
end;
AntPtrEquipo:= TempPtrEquipo;
TempPtrEquipo:= TempPtrEquipo^.SigEquipo;
end;
Result:= Bln;
end;
Procedure AdicionarEquipo (Equipo: RegEquipo);
Var
Nodo: ListaEquipo;
Begin
Nodo.InfoEquipo := Equipo;
New(Nodo.SigEquipo);
if (CabezaE = nil) then
begin
New(CabezaE);
New(ColaE);
CabezaE^:= Nodo;
end else
Begin
ColaE^.SigEquipo^:= Nodo;
end;
ColaE^:= Nodo
end;

Procedure EraseTeam (Equipo: PtoEquipo; TempId: integer);
Var
Nodo: PtoEquipo;
PtoAux: PtoEquipo;
Begin
New(Nodo);
Nodo:= Equipo;
While (Nodo^.SigEquipo <> nil) Do
begin
if (Nodo^.InfoEquipo.id = TempId) then
begin
ClrScr;
if (Nodo = CabezaE)then
begin
CabezaE:= CabezaE^.SigEquipo;
end else
begin
PtoAux^.SigEquipo:= Nodo^.SigEquipo;
end;
end;
PtoAux:= Nodo;
Nodo:= Nodo^.SigEquipo;
end;
end;
Procedure ModificarEquipo (Equipo: PtoEquipo; TempId: integer);
Var
Nodo: PtoEquipo;
Begin
New(Nodo);
Nodo:= Equipo;
While (Nodo^.SigEquipo <> nil) Do
begin
if (Nodo^.InfoEquipo.id = TempId) then
begin
ClrScr;
writeln('Procederemos a mostrar la informacion del equipo'); readkey;
Writeln('=================');
writeln(Nodo^.InfoEquipo.Nombre);
writeln(Nodo^.InfoEquipo.AFund);
writeln(Nodo^.InfoEquipo.Id);
Writeln('=================');
ReadKey;
ClrScr;
gotoxy(30,1);
writeln('Introduzca los nuevos datos del equipo');
write('Introduzca Nombre: ');
readln(Nodo^.InfoEquipo.Nombre);
write('Introduzca Ano de fundacion');
readln(Nodo^.InfoEquipo.AFund);
end;
Nodo:= Nodo^.SigEquipo;
end;
Writeln('Done Printing');
end;

Procedure MostrarEquipos ( Equipo: PtoEquipo );
Var
Nodo: PtoEquipo;
Begin
New(Nodo);
Nodo:= Equipo;
While (Nodo^.SigEquipo <> Nil) Do
Begin
Writeln('=================');
writeln(Nodo^.InfoEquipo.Nombre);
writeln(Nodo^.InfoEquipo.AFund);
writeln(Nodo^.InfoEquipo.Id);
Writeln('=================');
Nodo := Nodo^.SigEquipo;
end;
Writeln('Done Printing');
end;
Procedure MostrarEquipoPerId(TempId: integer; Equipo: PtoEquipo);
Var
Nodo: PtoEquipo;
Begin
New(Nodo);
Nodo:= Equipo;
While (Nodo^.SigEquipo <> Nil) Do
begin
If (Nodo^.InfoEquipo.Id = TempId) then
Begin
Writeln('=================');
writeln(Nodo^.InfoEquipo.Nombre);
writeln(Nodo^.InfoEquipo.AFund);
Writeln('=================');
end;
Nodo:= Nodo^.SigEquipo;
end;
writeln('Done Printing');
end;
-------------------------Operaciones con jugadores----------------------------
Procedure AdicionarJugador( Jugador: RegJugador);
Var
Nodo: ListaJugador;
Begin
Nodo.InfoJugador := Jugador;
New(Nodo.SigJugador);
if (CabezaJ = nil) then
Begin
New(CabezaJ);
New(ColaJ);
CabezaJ^:= Nodo;
end else
begin
ColaJ^.SigJugador^:= Nodo;
end;
ColaJ^:= Nodo;
end;


Procedure EquipoJugador( Equipo: PtoEquipo; TempId: Integer);
Var
Nodo: PtoEquipo;
Begin
New(Nodo);
Nodo:= Equipo;
While (Nodo^.SigEquipo <> Nil) Do
begin
if (Nodo^.InfoEquipo.Id = TempId) Then
begin
ClrScr;
TempNombre:= Nodo^.InfoEquipo.Nombre;
end;
Nodo:= Nodo^.SigEquipo;
end;
end;
Procedure EraseJugador (Jugador: PtoJugador; TempCedula: string);
Var
Nodo: PtoJugador;
PtoAux: PtoJugador;
Begin
New(Nodo);
Nodo:= Jugador;
While (Nodo^.SigJugador <> nil) Do
begin
if (Nodo^.InfoJugador.Cedula = TempCedula) then
begin
ClrScr;
if (Nodo = CabezaJ)then
begin
CabezaJ:= CabezaJ^.SigJugador;
end else
begin
PtoAux^.SigJugador:= Nodo^.SigJugador;
end;
end;
PtoAux:= Nodo;
Nodo:= Nodo^.SigJugador;
end;
end;
Procedure ModificarJugador (Jugador: PtoJugador; TempCedula: String);
Var
Nodo: PtoJugador;
Begin
New(Nodo);
Nodo:= Jugador;
While (Nodo^.SigJugador <> Nil)Do
begin
if (Nodo^.InfoJugador.Cedula= TempCedula) then
begin
ClrScr;
writeln('Procederemos a mostrar los datos del jugador'); readkey;
Writeln('=================');
writeln(Nodo^.InfoJugador.Nombre);
writeln(Nodo^.InfoJugador.Edad);
writeln(Nodo^.InfoJugador.Cedula);
writeln(Nodo^.InfoJugador.Tlf);
writeln(Nodo^.InfoJugador.EquipPlay);
writeln(Nodo^.InfoJugador.IdEquipo);
Writeln('=================');
readkey;
ClrScr;
gotoxy(30,1);
writeln('Proceda a introducir los nuevos datos del jugador');
write('Introduzca Nombre: ');
readln(Nodo^.InfoJugador.Nombre);
write('Introduzca Edad del Jugador: ');
readln(Nodo^.InfoJugador.Edad);
write('Introduzca la cedula del Jugador: ');
readln(Nodo^.InfoJugador.Cedula);
write('Introduzca el numero de telefono personal del jugador: ');
readln(Nodo^.InfoJugador.Tlf);
end;
Nodo:= Nodo^.SigJugador;
end;
Writeln('=================');
end;

Procedure MostrarJugadores (Jugador: PtoJugador);
Var
Nodo: PtoJugador;
Begin
New(Nodo);
Nodo:= Jugador;
While (Nodo^.SigJugador <> nil) Do
begin
writeln('Procederemos a mostrar los datos de los jugadores'); readkey;
Writeln('=================');
writeln(Nodo^.InfoJugador.Nombre);
writeln(Nodo^.InfoJugador.Edad);
writeln(Nodo^.InfoJugador.Cedula);
writeln(Nodo^.InfoJugador.Tlf);
writeln(Nodo^.InfoJugador.EquipPlay);
writeln(Nodo^.InfoJugador.IdEquipo);
Writeln('=================');
Nodo:= Nodo^.SigJugador;
end;
writeln('Done Printing');
end;

Procedure MostrarJugadorPerCedula (Jugador: PtoJugador; TempCedula: string);
Var
Nodo: PtoJugador;
begin
New(Nodo);
Nodo:= Jugador;
While (Nodo^.SigJugador <> Nil) Do
begin
if (Nodo^.InfoJugador.Cedula = TempCedula) then
begin
Writeln('=================');
writeln(Nodo^.InfoJugador.Nombre);
writeln(Nodo^.InfoJugador.Edad);
writeln(Nodo^.InfoJugador.Cedula);
writeln(Nodo^.InfoJugador.Tlf);
writeln(Nodo^.InfoJugador.EquipPlay);
writeln(Nodo^.InfoJugador.IdEquipo);
Writeln('=================');
end;
Nodo:= Nodo^.SigJugador;
end;
Writeln('Done Printing');
end;

Function BuscarJugadorPerCedula (TempCedula: String): Boolean;
Var
TempPtrJugador, AntPtrJugador: PtoJugador;
Bln: Boolean;
Begin
Bln:= False;
If (CabezaJ = nil) then
exit;
TempPtrJugador:= CabezaJ;
AntPtrJugador:= CabezaJ;
While (Not Bln) and (TempPtrJugador <> nil) Do
begin
if (TempPtrJugador^.InfoJugador.Cedula = TempCedula) then
begin
Bln:= True;
Break;
end;
if (TempPtrJugador^.SigJugador^.SigJugador = nil) then
begin
Bln:= False;
break;
end;
AntPtrJugador:= TempPtrJugador;
TempPtrJugador:= TempPtrJugador^.SigJugador;
end;
Result:= Bln;
end;

-------------------------Determinacion de Menu's------------------------------
Procedure Menu;
Begin
textcolor(CYAN);
ClrScr;
writeln('Menu de Operaciones de la Liga Venezolana de Beisbol'); readkey;
Writeln('Escoja su operacion a realizar');
writeln('1) Realizar operaciones con equipos');
writeln('2) Realizar operaciones con jugadores');
writeln('3) Salir');
readln(opc1);
ClrScr;
end;
Procedure MenuE;
Begin
textcolor(CYAN);
ClrScr;
writeln('Menu de operacion de equipos');
writeln('Escoja su operacion a realizar');
writeln('1) Insertar Equipo');
writeln('2) Modificar Equipo');
writeln('3) Eliminar Equipo');
writeln('4) Mostrar todos los equipos de la LVB');
writeln('5) Mostrar equipos por codigo de identificacion');
writeln('6) Salir');
readln(opc2);
ClrScr;
end;
Procedure MenuJ;
Begin
textcolor(CYAN);
ClrScr;
writeln('Menu de operacion de jugadores');
writeln('Escoja su operacion a realizar');
writeln('1) Insertar Jugador');
writeln('2) Modificar Jugador');
writeln('3) Eliminar Jugador');
writeln('4) Mostrar todos los jugadores');
writeln('5) Mostrar jugador por cedula');
writeln('6)Salir');
readln(opc2);
ClrScr;
end;
-------------------------Presentacion del programa----------------------------
Procedure Portada;
Begin

end;
//-------------------------START PROGRAM----------------------------------------
Begin
ClrScr;
ContadorId:= 0;
InitApEquip;
InitApJug;
Writeln('Bienvenido al servicio de operaciones de La Liga Venezolana de Beisbol');
Menu;
While (opc1 <> 3) Do
begin
if (opc1 = 1) then
begin
MenuE;
While (opc2 <> 6) Do
begin
if (opc2 = 1) then
begin
ContadorId:= contadorId + 1;
gotoxy(30,1);
Writeln('Proceda a insertar los datos del equipo');
Writeln('Introduzca Nombre del equipo');
readln(RegEquip.Nombre);
Writeln('Introduzca Ano de Fundacion del equipo');
readln(RegEquip.AFund);
RegEquip.Id:= contadorId;
If (BuscarEquipoName(RegEquip.Nombre ) = False) then
begin
AdicionarEquipo(RegEquip);
writeln('Su Equipo Ha sido ingresado correctamente');
readkey;
ClrScr;
end else
begin
writeln('El nombre del equipo que usted ingreso ya existe');
writeln('Por favor ingrese otro nombre distinto');
readkey;
ClrScr;
end;
end;
if (opc2 = 2) then
begin
writeln('Introduzca el codigo identificador del equipo que desea modificar');
readln(TempId);
if (BuscarEquipoId(TempId) = false) then
begin
writeln('El codigo identificador que usted ingreso no existe');
readkey;
clrscr;
end else
Begin
writeln('El codigo identificardor ingresado es correcto, se procedera a modificar equipo');
readkey;
ModificarEquipo(CabezaE,TempId);
readkey;
ClrScr;
end;
end;
if (opc2 = 3) then
begin
writeln('Introduzca el codigo identificador del equipo que desea eliminar');
readln(TempId);
if (BuscarEquipoId(TempId) = false) then
begin
writeln('El codigo identificador que usted ingreso no existe');
readkey;
ClrScr;
end else
begin
writeln('El codigo identificador ingresado es correcto');
writeln('¿Desea eliminar el equipo?');
readln(opc3);
if (opc3 = 'si') then
begin
writeln('Procedemos a eliminar equipo');
EraseTeam(CabezaE,TempId);
readkey;
ClrScr;
end else
begin
writeln('Su equipo no sera eliminado');
readkey;
ClrScr;
end;

end;
end;
if (opc2 = 4) then
begin
writeln('Procederemos a mostrar todos los equipos de la LVB');
MostrarEquipos(CabezaE);
readkey;
ClrScr;
end;
if (opc2 = 5) then
begin
writeln('Introduzca el codigo identificador del equipo que desea mostrar');
readln(TempId);
if (BuscarEquipoId(TempId) = False) then
begin
writeln('El codigo identificador ingresado no corresponde con ningun equipo');
writeln('Por favor introduzca el codigo correcto');
readkey;
clrScr;
end else
Begin
writeln('Procederemos a mostrar el equipo');
MostrarEquipoPerId(TempId,CabezaE);
readkey;
ClrScr;
end;
end;
if (Opc2 = 6) then
begin
exit;
end;
MenuE;
end;
end;
if (opc1 = 2) then
begin
MenuJ;
While (opc2 <> 6) Do
Begin
if (opc2 = 1) Then
begin
writeln('Proceda a insertar los datos del jugador');
writeln('Introduzca Nombre del jugador');
readln(RegJug.Nombre);
writeln('Introduzca Edad del jugador');
readln(RegJug.Edad);
writeln('Introduzca Cedula del jugador');
readln(RegJug.Cedula);
writeln('Introduzca Telefono del jugador');
readln(RegJug.Tlf);
readkey;
if (BuscarJugadorPerCedula(RegJug.Cedula) = False) then
begin
ClrScr;
writeln('Procederemos a mostrar la lista de los equipos');
Writeln('Por Favor escoja el codigo de identificacion de su equipo');
readkey;
ClrScr;
MostrarEquipos(CabezaE);
readln(opc4);
if (opc4 > ContadorId) and (opc4 < 1) then
begin
writeln('el codigo de identificacion que usted ha escogido no existe');
writeln('Por favor escoja el codigo de identificacion correcto');
readkey;
ClrScr;
Break;
end else
Begin
EquipoJugador(CabezaE,opc4);
RegJug.IdEquipo:= opc4;
RegJug.EquipPlay:= TempNombre;
AdicionarJugador(RegJug);
end;

end else
Begin
ClrScr;
writeln('La Cedula del jugador que usted ha ingresado ya existe');
writeln('Por favor ingrese los datos correctamente');
readkey;
ClrScr;
end;

end;
if (opc2 = 2) then
begin
writeln('Introduzca la cedula del jugador que desea modificar');
readln(TempCedula);
if (BuscarJugadorPerCedula(TempCedula) = False) then
begin
writeln('La cedula que usted ha ingresado no existe');
writeln('Por favor ingrese un numero de cedula correcto');
readkey;
ClrScr;
end else
Begin
writeln('El numero de cedula que usted ha ingresado es correcto');
writeln('Procederemos a modificar los datos del jugador');
readkey;
ModificarJugador(CabezaJ, TempCedula);
ReadKey;
ClrScr;
end;
end;
if (opc2 = 3) then
begin
writeln('Introduzca la cedula del jugador que desea eliminar');
readln(TempCedula);
if (BuscarJugadorPerCedula(TempCedula) = False) then
begin
ClrScr;
writeln('El numero de cedula ingresado no existe');
writeln('por favor ingrese un numero de cedula correcto');
readkey;
ClrScr;
end else
begin
writeln('El numero de cedula ingresado es correcto');
writeln('¿Desea eliminar el jugador?');
readln(opc3);
If (Opc3 = 'si') then
begin
ClrScr;
writeln('Procederemos a eliminar el jugador');
EraseJugador (CabezaJ, TempCedula);
readkey;
ClrScr;
end else
begin
writeln('El Proceso de eliminacion de jugador ha sido cancelado');
readkey;
ClrScr;
end;
end;

end;
if (Opc2 = 4) then
begin
writeln('Procederemos a mostrar todos los jugadores de la LVB');
MostrarJugadores(CabezaJ);
readkey;
ClrScr;
end;
if (Opc2 = 5) then
begin
writeln('Introduzca la cedula del jugador que desea mostrar');
readln(TempCedula);
if (BuscarJugadorPerCedula(TempCedula) = False) then
begin
writeln('El numero de cedula que usted ha ingresado no existe');
writeln('Por favor ingrese un numero de cedula correcto');
readkey;
ClrScr;
end else
Begin
writeln('Procederemos a mostrar el jugador');
MostrarJugadorPerCedula(CabezaJ, TempCedula);
readkey;
ClrScr;
end;
end;
if (Opc2 = 6) then
begin
exit;
end;
MenuJ;
end;
end;
Menu;
end;


readkey;
end.