Sie sind auf Seite 1von 29

UNIVERSIDAD NACIONAL ABIERTA

VICERRECTORADO ACADMICO
REA: INGENIERA
CARRERA: INGENIERA INDUSTRIAL

TRABAJO PRCTICO

ASIGNATURA: Computacin I
CDIGO: 323
ASESOR: Ing. Anabell Lares
NOMBRE DEL ESTUDIANTE:
CDULA DE IDENTIDAD:
CORREO ELECTRNICO:
CENTRO LOCAL: Monagas 14
CARRERA: 280
FIRMA DEL ESTUDIANTE: _________________________________
FECHA DE ENTREGA:
LAPSO: 2016-1

RESULTADOS DE CORRECCIN
OBJ. N
5
6
7
8
0:NL 1:L

TRABAJO PRCTICO

La coordinacin de trnsito nacional implantar un programa que genere


estadsticas de movimiento vehicular. En tal sentido se cuenta con lo siguiente:
1. Se registrar la siguiente informacin por cada vehculo: placa, nmero de
pasajeros, alcabala, fecha, tipo de vehculo (1: particular, 2: por puesto, 3: taxi,
4: transporte pblico).
2. Las estadsticas se clasifican de la siguiente manera:
a. Estadsticas por alcabalas: vehculos que salen, vehculos que entran por
fechas. En cantidades y porcentajes.
b. Estadsticas por vehculos: nmero de alcabalas transitadas, das
transitados, promedio de pasajeros.
c. Estadsticas por tipo de vehculo: cantidad y porcentaje de vehculos
segn su tipo y por alcabala, cantidad de pasajeros contabilizados por tipo
de vehculo.
Con base en lo planteado, disee un algoritmo en pseudocdigo donde se
muestre el uso correcto de las tcnicas de programacin estructurada o subprogramas
y realice lo siguiente:
1. Presente un men de mantenimiento con las opciones siguientes: Incluir,
Consultar, Modificar, Eliminar, Reporte de estadstica y Salida
2. Registre, con la opcin incluir, los siguientes datos:
3. Placa del vehculo. (Formato vigente XXNNNXX)
4. Tipo de vehculo (1: particular, 2: por puesto, 3: taxi, 4: transporte pblico)
5. Nmero de pasajeros (Validar segn tipo de vehculo)
6. Alcabala
7. Vehculo Entrante o Saliente (E/S)
8. Fecha
9. Nombre de la entidad federal
10. Ordene el registro por fecha y placa del vehculo.
Solucin Analtica del Problema
Registro de informacin para el programa:
1.
2.
3.
4.
5.

Placa
Nmero de pasajeros
Nmero de la alcabala transitada
Fecha
Tipo de vehculo (1: particular, 2: por puesto, 3: taxi, 4: transporte pblico)
2

6. Nmero de alcabala
7. Nombre de la entidad federal
8. Entrada o salida del vehculo (E: entrada, S: salida)
Las estadsticas se clasifican de la siguiente manera:
1. Estadsticas por alcabalas: vehculos que salen, vehculos que entran por
fechas. En cantidades y porcentajes.
2. Estadsticas por vehculos: nmero de alcabalas transitadas, das transitados,
promedio de pasajeros.
3. Estadsticas por tipo de vehculo: cantidad y porcentaje de vehculos segn su
tipo y por alcabala, cantidad de pasajeros contabilizados por tipo de vehculo.
Para la solucin del problema planteado se realizar un programa en pascal
haciendo uso de arreglos de registro que permitir lo siguiente:
1. Disear un men de mantenimiento con las opciones siguientes: Incluir,
Consultar, Modificar, Eliminar, Reportes y estadstica y Salida.
2. Registrar, con la opcin incluir, los siguientes datos:
3. Para las opciones de consulta, modificacin y eliminacin se har uso de los
datos registrado en el mdulo anterior.
4. Se generara reportes generales y estadsticas.
OBJETIVO 5
Aplicacin de la Metodologa MAPS
Las entradas al sistema sern las siguientes:
1.
2.
3.
4.
5.
6.
7.
8.

Placa
Nmero de pasajeros
Nmero de la alcabala transitada
Fecha
Tipo de vehculo (1: particular, 2: por puesto, 3: taxi, 4: transporte pblico)
Nmero de alcabala
Nombre de la entidad federal
Entrada o salida del vehculo (E: entrada, S: salida)

Consultar Vehculo: Ingresar el nmero de placa


Modificar vehculo: Ingresar el nmero de placa
3

Eliminar vehculo: Ingresar el nmero de placa


Los procesos a ejecutarse sern los siguientes:
1. Validar nmero de alcabala
2. Validar tipo de vehculo (1: particular, 2: por puesto, 3: taxi, 4: transporte
pblico)
3. Validar vehculo (E: entrada, S: salida)
4. Validar fecha (das de 1...31, mes de 1...12 y ao de 2015 ...2021)
5. Validar placa del vehculo para los procesos de consulta, eliminacin y
modificacin.
Las salidas sern las siguientes:
1.
2.
3.
4.
5.

Reporte de vehculos registrados


Reporte de vehculos por alcabala
Reporte de vehculos por tipo de vehculo
Reporte de vehculos por entidad
Reporte de vehculos por entrada o salida

Especificaciones del Programa


Pre-condiciones:
1.
2.
3.
4.
5.
6.
7.
8.

Nmero de alcabala / 10 / numrico


Nombre de la entidad federal / 50 / alfanumrico
Nmero de la alcabala / 10 / numrico
Nmero de placa / 7 / alfanumrico
Tipo de vehculo / 2 / numrico
Nmero de pasajero / 5 / numrico
Vehculo /2 / alfanumrico (E/S)
Fecha / 12/numrico(DD/MM/AAAA)

Post-Condiciones:
1. Registro de vehculo transitado y alcabala por nmero placa y nmero de
alcabala respectivamente.
2. Emisin de Reportes y estadsticas

OBJETIVO 6
Diseo del algoritmo en pseudocdigo
Programa alcabala;
Tipo arreglo1 = array[1..5] of string[12];
Arreglo2 = array[1..5] of entero largo;
Arreglo3 = array[1..5] of entero;
Arreglo4 = array[1..5] of caracter;
Variable
Estado, placa : arreglo1;
De, me, ae, tipov, alc, num : arreglo3;
Entrada : arreglo4;
Tecla, ent: caracter;
Tecla1 : entero;
N, m, t: entero;
Np : string;
Procedimiento incluir_vehiculo;
Variable i, j, sw, d, m, a : entero;
Op : caracter;
Np : string[12];
Inicio
Limpiar pantalla;
Posicin(10,10); escribir('indique la cantidad de vehiculos a ingresar: ');
Leer(n);
Hacer i:=1 hasta n
inicio
limpiar pantalla;
posicin(5,5); escribir('
registro de vehiculos');
posicin(5,6);
escribir('_______________________________________________________');
posicin(5,8); escribir('placa: ');
leer(np);
Hacer i:=1 hasta n
si (np=placa[j]) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, ya existe esa placa');
posicin(15,14); escribir('pulse una tecla para continuar');
sw:=1;
tecla:=readkey;
fin

por el contrario
sw:=0;
placa[i]:=np;
si (sw=0) entonces
inicio
posicin(5,10); escribir('tipo de vehiculo [1: particular / 2: po puesto / 3: taxi / 4:
transpote publico]: ');
leer(t);
si (t=1) o (t=2) o (t=3) o (t=4) entonces
tipov[i]:=t
por el contrario
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, solo puede ser 1, 2, 3 o 4');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin;
posicin(5,12); escribir('fecha');
posicin(5,13); escribir('dia: ');
leer(d);
si (d<1) o (d>31) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, el dia debe estar entre 1 y 31');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin
por el contrario
de[i]:=d;
posicin(13,13); escribir('mes: ');
leer(m);
si (m<1) o (m>12) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, el mes debe estar entre 1 y 12');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin
por el contrario
me[i]:=m;
posicin(21,13); escribir('ao: ');
leer(a);
si (a<2015) o (a>2030) entonces
inicio
limpiar pantalla;
6

posicin(15,13); escribir('erro, el ao debe estar entre 1990 y 2010');


posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin
por el contrario
ae[i]:=a;
posicin(5,15); escribir('nmero de pasajeros: ');
leer(num[i]);
posicin(5,17); escribir('entrada o salida [e/s]: ');
leer(ent);
si (ent='e') o (ent='s') entonces
entrada[i]:=ent
por el contrario
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, debe ser e o s');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin;
posicin(5,19); escribir('numero de alcabala: ');
leer(alc[i]);
posicin(5,21); escribir('entidad federal: ');
leer(estado[i]);
fin;
fin;
Fin;
Procedimiento modsi icar_vehiculo;
Variable i, sw, j, d, m, a : entero;
Op : caracter;
Pla : string[12];
Inicio
Sw:=0;
Limpiar pantalla;
Posicin(10,5); escribir('indique el no. De placa a modsi icar: ');
Leer(pla);
Hacer i:=1 hasta n
inicio
si (pla=placa[i]) entonces
inicio
posicin(10,9); escribir('no. Placa: ',placa[i]);
posicin(10,10); escribir('entidad: ',estado[i]);
posicin(10,11); escribir('fecha: ',de[i],'/',me[i],'/',ae[i]);
7

posicin(10,12); escribir('no. Pasajeros: ', num[i]);


posicin(10,13); escribir('alcabala: ',alc[i]);
posicin(10,14); escribir('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
sw:=1;
fin
por el contrario
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, no existe el no. De placa ingresada');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
sw:=0;
fin;
si (sw=1) entonces
inicio
limpiar pantalla;
posicin(10,5);
escribir('modsi ique los datos del vehiculo');
hacer i:=1 hasta n
inicio
si (np=placa[j]) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, ya existe esa placa');
posicin(15,14); escribir('pulse una tecla para continuar');
sw:=1;
tecla:=readkey;
fin
por el contrario
sw:=0;
si (sw=0) entonces
inicio
posicin(5,10); escribir('tipo de vehiculo [1: particular / 2: po puesto / 3: taxi /
4: transpote publico]: ');
leer(t);
si (t=1) o (t=2) o (t=3) o (t=4) entonces
tipov[i]:=t
por el contrario
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, solo puede ser 1, 2, 3 o 4');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin;
8

posicin(5,12); escribir('fecha');
posicin(5,13); escribir('dia: ');
leer(d);
si (d<1) o (d>31) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, el dia debe estar entre 1 y 31');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin
por el contrario
de[i]:=d;
posicin(13,13); escribir('mes: ');
leer(m);
si (m<1) o (m>12) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, el mes debe estar entre 1 y 12');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin
por el contrario
me[i]:=m;
posicin(21,13); escribir('ao: ');
leer(a);
si (a<2015) o (a>2030) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, el ao debe estar entre 1990 y 2010');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin
por el contrario
ae[i]:=a;
posicin(5,15); escribir('numero de pasajeros: ');
leer(num[i]);
posicin(5,17); escribir('entrada o salida [e/s]: ');
leer(ent);
si (ent='e') o (ent='s') entonces
inicio
entrada[i]:=ent;
fin
por el contrario
inicio
limpiar pantalla;
9

posicin(15,13); escribir('erro, debe ser e o s');


posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin;
posicin(5,19); escribir('numero de alcabala: ');
leer(alc[i]);
posicin(5,21); escribir('entidad federal: ');
leer(estado[i]);
fin;
fin;
fin;
fin;
Fin;
Procedimiento eliminar_vehiculo;
Variable i,j : entero;
Pla : string[12];
Op1 : caracter;
Inicio
Limpiar pantalla;
Posicin(10,5); escribir('indique la placa a eliminar: ');
Leer(pla);
Hacer i:=1 hasta n
inicio
si (pla=placa[i]) entonces
inicio
posicin(10,9); escribir('no. Placa: ',placa[i]);
posicin(10,10); escribir('entidad: ',estado[i]);
posicin(10,11); escribir('fecha: ',de[i],'/',me[i],'/',ae[i]);
posicin(10,12); escribir('no. Pasajeros: ', num[i]);
posicin(10,13); escribir('alcabala: ',alc[i]);
posicin(10,14); escribir('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
fin;
posicin(10,18);
escribir('esta seguro que quiere eliminar el vehiculo s/n?');
leer(op1);
si (op1='s') o (op1='s') entonces
inicio
hacer i:=1 hasta n
inicio
si (pla=placa[i]) entonces
inicio
placa[i]:=placa[i+1];
10

estado[i]:=estado[i+1];
de[i]:=de[i+1]; me[i]:=me[i+1]; ae[i]:=ae[i+1];
num[i]:=num[i+1];
alc[i]:=alc[i+1];
tipov[i]:=tipov[i+1];
fin;
fin;
fin;
fin;
Fin;
Procedimiento reporte_vehiculo;
Variable i : entero;
Inicio
Limpiar pantalla;
Posicin(10,5); escribir('reporte de vehiculos');
Fo i:=1 to n do
inicio
limpiar pantalla;
posicin(10,9); escribir('no. Placa: ',placa[i]);
posicin(10,10); escribir('entidad: ',estado[i]);
posicin(10,11); escribir('fecha: ',de[i],'/',me[i],'/',ae[i]);
posicin(10,12); escribir('no. Pasajeros: ', num[i]);
posicin(10,13); escribir('alcabala: ',alc[i]);
posicin(10,14); escribir('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
fin;
Fin;
Procedimiento por_alcabala;
Variable i, al : entero;
Inicio
Limpiar pantalla;
Posicin(10,5); escribir('
reporte de vehiculos por alcabala');
Posicin(10,8);
escribir('_______________________________________________________');
Posicin(10,10);
Escribir('indique la alcabala a buscar: ');
Leer(al);
Hacer i:=1 hasta n
inicio
si (al=alc[i]) entonces
inicio
limpiar pantalla;
posicin(10,9); escribir('no. Placa: ',placa[i]);
11

posicin(10,10); escribir('entidad: ',estado[i]);


posicin(10,11); escribir('fecha: ',de[i],'/',me[i],'/',ae[i]);
posicin(10,12); escribir('no. Pasajeros: ', num[i]);
posicin(10,13); escribir('alcabala: ',alc[i]);
posicin(10,14); escribir('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
fin
por el contrario
inicio
limpiar pantalla;
posicin(10,10);
escribir('no existe vehiculos en esa alcabala');
tecla:=readkey;
fin;
fin;
Fin;

Procedimiento por_entidad;
Variable i : entero;
E : string[12];
Inicio
Limpiar pantalla;
Posicin(10,5); escribir('
reporte de vehiculos po entidad');
Posicin(10,8);
escribir('_______________________________________________________');
Posicin(10,10);
Escribir('indique la entidad a buscar: ');
Leer(e);
Hacer i:=1 hasta n
inicio
si (e=estado[i]) entonces
inicio
limpiar pantalla;
posicin(10,9); escribir('no. Placa: ',placa[i]);
posicin(10,10); escribir('alcabala: ',alc[i]);
posicin(10,11); escribir('fecha: ',de[i],'/',me[i],'/',ae[i]);
posicin(10,12); escribir('no. Pasajeros: ', num[i]);
posicin(10,14); escribir('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
fin
por el contrario
inicio
limpiar pantalla;
12

posicin(10,10);
escribir('no existe vehiculos en esa entidad');
tecla:=readkey;
fin;
fin;
Fin;
Procedimiento por_pasajero;
Variable i, pas : entero;
Inicio
Limpiar pantalla;
Posicin(10,5); escribir('
reporte de vehiculos por pasajeros');
Posicin(10,8);
escribir('_______________________________________________________');
Posicin(10,10);
Escribir('indique la cantidad de pasajeros a buscar: ');
Leer(pas);
Hacer i:=1 hasta n
inicio
si (pas=num[i]) entonces
inicio
limpiar pantalla;
posicin(10,9); escribir('no. Placa: ',placa[i]);
posicin(10,10); escribir('alcabala: ',alc[i]);
posicin(10,11); escribir('fecha: ',de[i],'/',me[i],'/',ae[i]);
posicin(10,12); escribir('entidad: ', estado[i]);
posicin(10,14); escribir('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
fin
por el contrario
inicio
limpiar pantalla;
posicin(10,10);
escribir('no existe vehiculos en esa entidad');
tecla:=readkey;
fin;
fin;
Fin;
Procedimiento por_es;
Variable i : entero;
Es : caracter;
Inicio
Limpiar pantalla;
13

Posicin(10,5); escribir('
reporte de vehiculos entrantes/salientes');
Posicin(10,8);
escribir('_______________________________________________________');
Posicin(10,10);
Escribir('indique la opcion a buscar: ');
Leer(es);
Hacer i:=1 hasta n
inicio
si (es=entrada[i]) entonces
inicio
limpiar pantalla;
posicin(10,9); escribir('no. Placa: ',placa[i]);
posicin(10,10); escribir('alcabala: ',alc[i]);
posicin(10,11); escribir('fecha: ',de[i],'/',me[i],'/',ae[i]);
posicin(10,12); escribir('entidad: ', estado[i]);
posicin(10,14); escribir('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
fin
por el contrario
inicio
limpiar pantalla;
posicin(10,10);
escribir('no existe vehiculos en esa entidad');
tecla:=readkey;
fin;
fin;
Fin;
Procedimiento estadistica;
Variable tecla4 : entero;
Inicio
Repetir
Limpiar pantalla;
Posicin(10,5); escribir('
estadisticas de vehiculos');
Posicin(10,8);
escribir('_______________________________________________________');
Posicin(10,10); escribir('1. Po alcabala');
Posicin(10,12); escribir('2. Po entidad');
Posicin(10,14); escribir('3. Po pasajeros');
Posicin(10,16); escribir('4. Po e/s');
Posicin(10,18); escribir('5. Regresar al menu principal');
Posicin(10,22); escribir('indique la operacin a ejecutar: ');
Leer(tecla4);
Caso tecla4 of
1 : por_alcabala;
14

2 : por_entidad;
3 : por_pasajero;
4 : por_es;
5:;
Por el contrario
inicio
posicin(10,24); escribir('opcion fuera de rango 1..5');
tecla:=readkey;
fin;
Fin;
Hasta (tecla4=5);
Fin;

Inicio
Repetir
Limpiar pantalla;
Posicin(10,5); escribir('
registro de vehiculos');
Posicin(10,8);
escribir('_______________________________________________________');
Posicin(10,10); escribir('1. Incluir datos');
Posicin(10,12); escribir('2. Modificar datos');
Posicin(10,14); escribir('3. Eliminar datos');
Posicin(10,16); escribir('4. Repotte de datos');
Posicin(10,18); escribir('5. Estadisticas');
Posicin(10,20); escribir('6. Salida del sistema');
Posicin(10,22); escribir('indique la operacin a ejecutar: ');
Leer(tecla1);
Caso tecla1 de
1 : incluir_vehiculo;
2 : modificar_vehiculo;
3 : eliminar_vehiculo;
4 : repote_vehiculo;
5 : estadistica;
6:;
Por el contrario
inicio
posicin(10,24); escribir('opcion fuera de rango 1..6');
tecla:=readkey;
fin;
Fin;
Hasta (tecla1=6);
Fin.
15

OBJETIVO 7
Aplicar el concepto de robustez
Validacin de la existencia de la placa del vehculo
Si (np=placa[j]) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, ya existe esa placa');
posicin(15,14); escribir('pulse una tecla para continuar');
sw:=1;
tecla:=readkey;
fin
Validacin del tipo de vehculo
Si (t=1) o (t=2) o (t=3) o (t=4) entonces
tipov[i]:=t
por el contrario
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, solo puede ser 1, 2, 3 o 4');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin;
Validacin del da
Si (d<1) o (d>31) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, el dia debe estar entre 1 y 31');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin
por el contrario
de[i]:=d;
Validacin del mes
Si (m<1) o (m>12) entonces
inicio
limpiar pantalla;
16

posicin(15,13); escribir('erro, el mes debe estar entre 1 y 12');


posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin
por el contrario
me[i]:=m;
Validacin del ao
Si (a<2015) o (a>2030) entonces
inicio
limpiar pantalla;
posicin(15,13); escribir('erro, el ao debe estar entre 1990 y 2010');
posicin(15,14); escribir('pulse cualquier tecla pasa continuar');
tecla:=readkey;
fin
por el contrario
ae[i]:=a;
OBJETIVO 8
Codificacin del algoritmo diseado en el lenguaje de programacin pascal
Program alcabala;
Uses wincrt;
Type arreglo1 = array[1..5] of string[12];
Arreglo2 = array[1..5] of longint;
Arreglo3 = array[1..5] of integer;
Arreglo4 = array[1..5] of char;
Var
Estado, placa : arreglo1;
De, me, ae, tipov, alc, num : arreglo3;
Entrada : arreglo4;
Tecla, ent: char;
Tecla1 : integer;
N, m, t: integer;
Np : string;
Procedure incluir_vehiculo;
Var i, j, sw, d, m, a : integer;
Op : char;
Np : string[12];
Begin
17

Clrscr;
Gotoxy(10,10); write('indique la cantidad de vehiculos a ingresar: ');
Readln(n);
For i:=1 to n do
begin
clrscr;
gotoxy(5,5); write('
registro de vehiculos');
gotoxy(5,6);
write('_______________________________________________________');
gotoxy(5,8); write('placa: ');
readln(np);
for j:=1 to n do
if (np=placa[j]) then
begin
clrscr;
gotoxy(15,13); write('error, ya existe esa placa');
gotoxy(15,14); write('pulse una tecla para continuar');
sw:=1;
tecla:=readkey;
end
else
sw:=0;
placa[i]:=np;
if (sw=0) then
begin
gotoxy(5,10); write('tipo de vehiculo [1: particular / 2: por puesto / 3: taxi / 4:
transporte publico]: ');
readln(t);
if (t=1) or (t=2) or (t=3) or (t=4) then
tipov[i]:=t
else
begin
clrscr;
gotoxy(15,13); write('error, solo puede ser 1, 2, 3 o 4');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
end;
gotoxy(5,12); write('fecha');
gotoxy(5,13); write('dia: ');
readln(d);
if (d<1) or (d>31) then
begin
clrscr;
gotoxy(15,13); write('error, el dia debe estar entre 1 y 31');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
18

tecla:=readkey;
end
else
de[i]:=d;
gotoxy(13,13); write('mes: ');
readln(m);
if (m<1) or (m>12) then
begin
clrscr;
gotoxy(15,13); write('error, el mes debe estar entre 1 y 12');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
end
else
me[i]:=m;
gotoxy(21,13); write('ao: ');
readln(a);
if (a<2015) or (a>2030) then
begin
clrscr;
gotoxy(15,13); write('error, el ao debe estar entre 1990 y 2010');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
end
else
ae[i]:=a;
gotoxy(5,15); write('numero de pasajeros: ');
readln(num[i]);
gotoxy(5,17); write('entrada o salida [e/s]: ');
readln(ent);
if (ent='e') or (ent='s') then
entrada[i]:=ent
else
begin
clrscr;
gotoxy(15,13); write('error, debe ser e o s');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
end;
gotoxy(5,19); write('numero de alcabala: ');
readln(alc[i]);
gotoxy(5,21); write('entidad federal: ');
readln(estado[i]);
end;
end;
19

End;
Procedure modificar_vehiculo;
Var i, sw, j, d, m, a : integer;
Op : char;
Pla : string[12];
Begin
Sw:=0;
Clrscr;
Gotoxy(10,5); write('indique el no. De placa a modificar: ');
Readln(pla);
For i:=1 to n do
begin
if (pla=placa[i]) then
begin
gotoxy(10,9); write('no. Placa: ',placa[i]);
gotoxy(10,10); write('entidad: ',estado[i]);
gotoxy(10,11); write('fecha: ',de[i],'/',me[i],'/',ae[i]);
gotoxy(10,12); write('no. Pasajeros: ', num[i]);
gotoxy(10,13); write('alcabala: ',alc[i]);
gotoxy(10,14); write('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
sw:=1;
end
else
begin
clrscr;
gotoxy(15,13); write('error, no existe el no. De placa ingresada');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
sw:=0;
end;
if (sw=1) then
begin
clrscr;
gotoxy(10,5);
write('modifique los datos del vehiculo');
for j:=1 to n do
begin
if (np=placa[j]) then
begin
clrscr;
gotoxy(15,13); write('error, ya existe esa placa');
20

gotoxy(15,14); write('pulse una tecla para continuar');


sw:=1;
tecla:=readkey;
end
else
sw:=0;
if (sw=0) then
begin
gotoxy(5,10); write('tipo de vehiculo [1: particular / 2: por puesto / 3: taxi / 4:
transporte publico]: ');
readln(t);
if (t=1) or (t=2) or (t=3) or (t=4) then
tipov[i]:=t
else
begin
clrscr;
gotoxy(15,13); write('error, solo puede ser 1, 2, 3 o 4');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
end;
gotoxy(5,12); write('fecha');
gotoxy(5,13); write('dia: ');
readln(d);
if (d<1) or (d>31) then
begin
clrscr;
gotoxy(15,13); write('error, el dia debe estar entre 1 y 31');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
end
else
de[i]:=d;
gotoxy(13,13); write('mes: ');
readln(m);
if (m<1) or (m>12) then
begin
clrscr;
gotoxy(15,13); write('error, el mes debe estar entre 1 y 12');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
end
else
me[i]:=m;
gotoxy(21,13); write('ao: ');
readln(a);
21

if (a<2015) or (a>2030) then


begin
clrscr;
gotoxy(15,13); write('error, el ao debe estar entre 1990 y 2010');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
end
else
ae[i]:=a;
gotoxy(5,15); write('numero de pasajeros: ');
readln(num[i]);
gotoxy(5,17); write('entrada o salida [e/s]: ');
readln(ent);
if (ent='e') or (ent='s') then
begin
entrada[i]:=ent;
end
else
begin
clrscr;
gotoxy(15,13); write('error, debe ser e o s');
gotoxy(15,14); write('pulse cualquier tecla pasa continuar');
tecla:=readkey;
end;
gotoxy(5,19); write('numero de alcabala: ');
readln(alc[i]);
gotoxy(5,21); write('entidad federal: ');
readln(estado[i]);
end;
end;
end;
end;
End;
Procedure eliminar_vehiculo;
Var i,j : integer;
Pla : string[12];
Op1 : char;
Begin
Clrscr;
Gotoxy(10,5); write('indique la placa a eliminar: ');
Readln(pla);
For i:=1 to n do
begin
22

if (pla=placa[i]) then
begin
gotoxy(10,9); write('no. Placa: ',placa[i]);
gotoxy(10,10); write('entidad: ',estado[i]);
gotoxy(10,11); write('fecha: ',de[i],'/',me[i],'/',ae[i]);
gotoxy(10,12); write('no. Pasajeros: ', num[i]);
gotoxy(10,13); write('alcabala: ',alc[i]);
gotoxy(10,14); write('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
end;
gotoxy(10,18);
write('esta seguro que quiere eliminar el vehiculo s/n?');
readln(op1);
if (op1='s') or (op1='s') then
begin
for j:=1 to n do
begin
if (pla=placa[i]) then
begin
placa[i]:=placa[i+1];
estado[i]:=estado[i+1];
de[i]:=de[i+1]; me[i]:=me[i+1]; ae[i]:=ae[i+1];
num[i]:=num[i+1];
alc[i]:=alc[i+1];
tipov[i]:=tipov[i+1];
end;
end;
end;
end;
End;
Procedure reporte_vehiculo;
Var i : integer;
Begin
Clrscr;
Gotoxy(10,5); write('reporte de vehiculos');
For i:=1 to n do
begin
clrscr;
gotoxy(10,9); write('no. Placa: ',placa[i]);
gotoxy(10,10); write('entidad: ',estado[i]);
gotoxy(10,11); write('fecha: ',de[i],'/',me[i],'/',ae[i]);
gotoxy(10,12); write('no. Pasajeros: ', num[i]);
gotoxy(10,13); write('alcabala: ',alc[i]);
gotoxy(10,14); write('tipo de vehiculo: ',tipov[i]);
23

tecla:=readkey;
end;
End;
Procedure por_alcabala;
Var i, al : integer;
Begin
Clrscr;
Gotoxy(10,5); write('
reporte de vehiculos por alcabala');
Gotoxy(10,8);
write('_______________________________________________________');
Gotoxy(10,10);
Write('indique la alcabala a buscar: ');
Readln(al);
For i:=1 to n do
begin
if (al=alc[i]) then
begin
clrscr;
gotoxy(10,9); write('no. Placa: ',placa[i]);
gotoxy(10,10); write('entidad: ',estado[i]);
gotoxy(10,11); write('fecha: ',de[i],'/',me[i],'/',ae[i]);
gotoxy(10,12); write('no. Pasajeros: ', num[i]);
gotoxy(10,13); write('alcabala: ',alc[i]);
gotoxy(10,14); write('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
end
else
begin
clrscr;
gotoxy(10,10);
write('no existe vehiculos en esa alcabala');
tecla:=readkey;
end;
end;
End;

Procedure por_entidad;
Var i : integer;
E : string[12];
Begin
Clrscr;
Gotoxy(10,5); write('

reporte de vehiculos por entidad');


24

Gotoxy(10,8);
write('_______________________________________________________');
Gotoxy(10,10);
Write('indique la entidad a buscar: ');
Readln(e);
For i:=1 to n do
begin
if (e=estado[i]) then
begin
clrscr;
gotoxy(10,9); write('no. Placa: ',placa[i]);
gotoxy(10,10); write('alcabala: ',alc[i]);
gotoxy(10,11); write('fecha: ',de[i],'/',me[i],'/',ae[i]);
gotoxy(10,12); write('no. Pasajeros: ', num[i]);
gotoxy(10,14); write('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
end
else
begin
clrscr;
gotoxy(10,10);
write('no existe vehiculos en esa entidad');
tecla:=readkey;
end;
end;
End;
Procedure por_pasajero;
Var i, pas : integer;
Begin
Clrscr;
Gotoxy(10,5); write('
reporte de vehiculos por pasajeros');
Gotoxy(10,8);
write('_______________________________________________________');
Gotoxy(10,10);
Write('indique la cantidad de pasajeros a buscar: ');
Readln(pas);
For i:=1 to n do
begin
if (pas=num[i]) then
begin
clrscr;
gotoxy(10,9); write('no. Placa: ',placa[i]);
gotoxy(10,10); write('alcabala: ',alc[i]);
25

gotoxy(10,11); write('fecha: ',de[i],'/',me[i],'/',ae[i]);


gotoxy(10,12); write('entidad: ', estado[i]);
gotoxy(10,14); write('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
end
else
begin
clrscr;
gotoxy(10,10);
write('no existe vehiculos en esa entidad');
tecla:=readkey;
end;
end;
End;
Procedure por_es;
Var i : integer;
Es : char;
Begin
Clrscr;
Gotoxy(10,5); write('
reporte de vehiculos entrantes/salientes');
Gotoxy(10,8);
write('_______________________________________________________');
Gotoxy(10,10);
Write('indique la opcion a buscar: ');
Readln(es);
For i:=1 to n do
begin
if (es=entrada[i]) then
begin
clrscr;
gotoxy(10,9); write('no. Placa: ',placa[i]);
gotoxy(10,10); write('alcabala: ',alc[i]);
gotoxy(10,11); write('fecha: ',de[i],'/',me[i],'/',ae[i]);
gotoxy(10,12); write('entidad: ', estado[i]);
gotoxy(10,14); write('tipo de vehiculo: ',tipov[i]);
tecla:=readkey;
end
else
begin
clrscr;
gotoxy(10,10);
write('no existe vehiculos en esa entidad');
tecla:=readkey;
end;
26

end;
End;
Procedure estadistica;
Var tecla4 : integer;
Begin
Repeat
Clrscr;
Gotoxy(10,5); write('
estadisticas de vehiculos');
Gotoxy(10,8);
write('_______________________________________________________');
Gotoxy(10,10); write('1. Por alcabala');
Gotoxy(10,12); write('2. Por entidad');
Gotoxy(10,14); write('3. Por pasajeros');
Gotoxy(10,16); write('4. Por e/s');
Gotoxy(10,18); write('5. Regresar al menu principal');
Gotoxy(10,22); write('indique la operacin a ejecutar: ');
Readln(tecla4);
Case tecla4 of
1 : por_alcabala;
2 : por_entidad;
3 : por_pasajero;
4 : por_es;
5:;
Else
begin
gotoxy(10,24); write('opcion fuera de rango 1..5');
tecla:=readkey;
end;
End;
Until (tecla4=5);
End;

Begin
Repeat
Clrscr;
Gotoxy(10,5); write('
registro de vehiculos');
Gotoxy(10,8);
write('_______________________________________________________');
Gotoxy(10,10); write('1. Incluir datos');
Gotoxy(10,12); write('2. Modificar datos');
Gotoxy(10,14); write('3. Eliminar datos');
27

Gotoxy(10,16); write('4. Reporte de datos');


Gotoxy(10,18); write('5. Estadisticas');
Gotoxy(10,20); write('6. Salida del sistema');
Gotoxy(10,22); write('indique la operacin a ejecutar: ');
Readln(tecla1);
Case tecla1 of
1 : incluir_vehiculo;
2 : modificar_vehiculo;
3 : eliminar_vehiculo;
4 : reporte_vehiculo;
5 : estadistica;
6:;
Else
begin
gotoxy(10,24); write('opcion fuera de rango 1..6');
tecla:=readkey;
end;
End;
Until (tecla1=6);
End.

28

BIBLIOGRAFA

Joyanes Aguilar, L. (1990). Programacin Turbo Pascal. Editorial Mc Graw Hill.


Mxico.
Universidad Nacional Abierta (2008). Computacin I. Caracas

29

Das könnte Ihnen auch gefallen