Anda di halaman 1dari 32

323 - Computacin 1 Lapso 2013-2

Pgina 0 de 32

323 - Computacin 1 Lapso 2013-2

Pgina 1 de 32

1.- SOLUCIN ANALTICA DEL PROBLEMA PLANTEADO


Para plantear el problema se procede inicialmente a definir la entrada de datos requeridos, la
cual constituye un conjunto de informacin que es necesaria por el sistema para luego ser procesada
y formar parte de decisiones o clculos que realiza el sistema y por ltimo obtener los resultados
deseados como fase de salida con base en un mtodo determinado.
El Programa de Estadsticas de Alcabalas tiene como finalidad producir reportes de trnsito
terrestre en el perodo vacacional, a fin de que la Coordinacin de Trnsito Nacional pueda
visualizar rpida y cmodamente el trfico vehicular.
En tal sentido, se necesita disear un sistema automatizado que permita tener a tiempo la
informacin requerida, contando con los siguientes requerimientos:
Placa del vehculo
Nmeros de pasajeros
Nombres de la alcabala
Tipo de acceso a la alcabala (Entrada o Salida)
Fecha
Tipo de vehculo
2.) METODOLOGA MAPS:
2.- SOLUCIN PLANTEADA POR METODOLOGIA MAPS
ETAPAS DE LA METODOLOGIA MAPS
ETAPA I: DIALOGO
El problema consiste en elaborar un sistema automatizado que permita llevar el control de las
entradas y salidas a las alcabalas del territorio nacional. Tiene como finalidad producir varios
informes para calcular el trfico vehicular, tomando en cuenta las siguientes consideraciones:
Presentar un men de mantenimiento con las opciones siguientes: Incluir, Consultar, Modificar,
Eliminar, Reporte de estadstica y Salida.
Registrar, con la opcin incluir, los datos de los vehculos ya descritos.
Ordenar el registro de vehculos por fecha y placa.
Muestre por pantalla, cuando realice una consulta de un vehculo toda la informacin pertinente.
Generar tres reportes de estadsticas: 1) por alcabala ordenado por fecha de menor a mayor, 2) por
vehculo ordenad por placa, 3) por alcabala ordenado por tipo de vehculo.
Datos de Entrada:
- Introduccin de los datos correspondientes del vehculo y la alcabala
- Validar los datos en forma directa
Datos de Proceso:
- Ordenar los registros por alcabala y fecha.
- Ordenar los registros por placa del vehculo.
- Ordenar los registros por alcabala y tipo de vehuclo.

323 - Computacin 1 Lapso 2013-2

Pgina 2 de 32

Datos de Salida:
- Buscar un vehculo determinado mediante la placa del mismo y presente por medio de la
pantalla toda la informacin relativa a ese vehculo.
- Generar por medio de la opcin Reporte los siguientes diseos:

323 - Computacin 1 Lapso 2013-2

Pgina 3 de 32

Estructura de la Automatizacin del Proceso de Estadsticas de Trnsito para la Coordinacin de


Trnsito Nacional:
** COORDINACIN DE TRNSITO TERRESTRE**
*MENU PRINICIPAL*
1.
2.
3.
4.
5.
6.

INCLUIR
CONSULTAR
MODIFICAR
ELIMINAR
REPORTE
SALIDA
OPCIN: _____

ENTRADAS
Placa del vehculo
Nmeros de pasajeros
Nombres de la alcabala
Tipo de acceso a la alcabala
Fecha
Tipo de vehculo

SALIDAS
- Datos del Vehculo y la alcabala
- Cantidad y porcentaje de vehculos que salen y
entran
- Nmero de alcabalas
- Das transitados
- Promedio de pasajeros

ETAPA II: LAS ESPECIFICACIONES


Las Especificaciones: Comprendido el paso anterior se procede a definir las
especificaciones a partir de las entradas y salidas identificadas. Este proceso tiene como fin predecir
las pre y postcondiciones expresadas como predicados, que en un futuro permitirn evaluar la
consistencia del algoritmo ya sea utilizndolas como estados iniciales, intermedios o finales. Se debe
tener conocimiento previo de lgica matemtica para lograr especificaciones claras de las pre y
postcondiciones. Escribir pre y post condiciones que sean completas y consistentes. Es decir
asegurarse de que las precondiciones cubren todas las posibles entradas, que las postcondiciones
definen la salida para todas las posibles entradas, y que tanto las precondiciones como las
postcondiciones son interna y mutuamente consistente. Hay que considerar que para generar los
reportes debe hacerse el ordenamiento en base a las alcabalas, fechas, placas de los vehculos y tipos
de vehculos.

323 - Computacin 1 Lapso 2013-2

Pgina 4 de 32

ETAPA III: LA PARTICIN

Inicializar
Variables y Arreglos

Incluir

Consultar

Modificar

Eliminar

Reporte

El problema en cuestin se puede elaborar en 5 rutinas principales a saber:


1.- Incluir
2.- Consultar
3.- Modificar
4.- Eliminar
5.- Reporte
Cada una de las rutinas antes sealadas se pueden dividir en las siguientes subrutinas:
1. Incluir
1.1 Introducir los datos correspondientes del vehculo
1.2 Validar los datos
1.3 Cargar datos en todos los vectores
2. Consultar
2.1 Buscar la placa del vehculo
2.2 Cargar los datos del vehculo
2.3 Generar reporte individual de datos de un vehculo
3. Modificar
3.1 Verificar los datos del vehculo
3.2 Cambiar la Informacin
4. Eliminar
4.1 Verificar los datos del vehculo
4.2 Cambiar el Registro de Status indicando que ha sido eliminado
5. Reporte
5.1 Ordenar los vectores segn las alcabalas y las fechas
5.2 Generar reporte de alcabalas y fechas
5.3 Ordenar los vectores segn las placas de los vehculos
5.4 Generar reporte de vehculos segn su placa
5.5 Ordenar los vectores segn las alcabalas y los tipos de vehculo
5.6 Generar reporte de alcabalas y tipos de vehculo

323 - Computacin 1 Lapso 2013-2

Pgina 5 de 32

ETAPA IV: ABSTRACCIN


Se usarn rutinas ya existentes mediante el mtodo de adaptacin, tales como: Incluir, Modificar,
Eliminar, Reporte, Men de Opciones, etc.
ETAPA V: CODIFICACIN
ALGORITMO: NIVEL 1
Inicio
Nombre y definicin de programa y variables
Men principal
Mostrar: * Men principal *
Opciones
Entrada de Seleccin
Case of Seleccin
Fin
FIN
PROCEDURE INCLUIR
Inicio
Leer placa vehculo
Leer datos
Guardar datos
Fin
PROCEDURE CONSULTAR
Inicio
Leer placa
Mostrar todos los datos del registro
FIN
PROCEDURE MODIFICAR
Inicio
Leer placa
Modificar datos
FIN
PROCEDURE ELIMINAR
Inicio
Leer placa
Mostrar cada dato del registro
Eliminar registro
FIN
PROCEDURE REPORTE
Inicio
Reporte 1: Alcabala y Fecha

323 - Computacin 1 Lapso 2013-2

Pgina 6 de 32

Ir a Ordenar por alcabala y fecha


Encabezamiento
Escribir una pgina por alcabala
Reporte 2: Placa
Ir a Ordenar por placa
Encabezamiento
Escribir totales generales
Reporte 3: Alcabala y tipo de vehculo
Ir a Ordenar por alcabala y tipo de vehculo
Encabezamiento
Escribir una pgina por alcabala
FIN
PROCEDURE ORDENAR 1
Inicio
Hacer ordenamiento de burbujas
Intercambiar datos de cada vector
FIN
PROCEDURE ORDENAR 2
Inicio
Hacer ordenamiento de burbujas
Intercambiar datos de cada vector
FIN
PROCEDURE ORDENAR 3
Inicio
Hacer ordenamiento de burbujas
Intercambiar datos de cada vector
FIN
ALGORITMO: NIVEL 2
Inicio
Nombre y definicin de programa y variables
Men principal
Mostrar: * Men principal *
Opciones
Incluir
Modificar
Consultar
Eliminar
Reporte
Salida
Entrada de Seleccin
Case of Seleccin
1: Rutina: Incluir
2: Rutina: Consultar

323 - Computacin 1 Lapso 2013-2

3: Rutina: Modificar
4: Rutina: Eliminar
5: Rutina: Reporte
6: Rutina: Salida
Fin
FIN
PROCEDURE INCLUIR
Inicio
Leer placa vehculo
Leer nmero de pasajeros
Leer Alcabala
Leer Tipo de Trnsito
Leer Fecha
Leer Tipo de vehculo
Guardar datos
Fin
PROCEDURE CONSULTAR
Inicio
Leer placa
Mostrar todos los datos del registro
FIN
PROCEDURE MODIFICAR
Inicio
Leer placa
Mostrar cada dato del registro
Pedir datos para modificar o ENTER para dejar igual
FIN
PROCEDURE ELIMINAR
Inicio
Leer placa
Mostrar cada dato del registro
Eliminar registro
FIN
PROCEDURE REPORTE
Inicio
Reporte 1: Alcabala y Fecha
Ir a Ordenar por alcabala y fecha
Encabezamiento
Ciclo de leer Archivo ordenado por alcabala y fecha
Escribir una pgina por alcabala
Fin de ciclo de lectura del archivo
Escribir totales generales
Reporte 2: Placa

Pgina 7 de 32

323 - Computacin 1 Lapso 2013-2

Ir a Ordenar por placa


Encabezamiento
Ciclo de leer Archivo ordenado por placa
Contar y efectuar clculos de fechas
Fin de ciclo de lectura del archivo
Escribir totales generales
Reporte 3: Alcabala y tipo de vehculo
Ir a Ordenar por alcabala y tipo de vehculo
Encabezamiento
Ciclo de leer Archivo ordenado por alcabala y tipo de vehculo
Escribir una pgina por alcabala
Fin de ciclo de lectura del archivo
Escribir totales generales
FIN
PROCEDURE ORDENAR 1
Inicio
Hacer ordenamiento de burbujas
Ciclo descendente del archivo
Ciclo ascendente del archivo
Crear dato compuesto de alcabala y fecha
Intercambiar datos de cada vector
Fin ciclo ascendente
Fin ciclo descendente
FIN
PROCEDURE ORDENAR 2
Inicio
Hacer ordenamiento de burbujas
Ciclo descendente del archivo
Ciclo ascendente del archivo
Intercambiar datos de cada vector
Fin ciclo ascendente
Fin ciclo descendente
FIN
PROCEDURE ORDENAR 3
Inicio
Hacer ordenamiento de burbujas
Ciclo descendente del archivo
Ciclo ascendente del archivo
Crear dato compuesto de alcabala y tipo de vehculo
Intercambiar datos de cada vector
Fin ciclo ascendente
Fin ciclo descendente
FIN

Pgina 8 de 32

323 - Computacin 1 Lapso 2013-2

Pgina 9 de 32

ALGORITMO: NIVEL 3
Inicio
Nombre y definicin de programa y variables
Men principal
Mostrar: * Men principal *
Opciones
Incluir
Modificar
Consultar
Eliminar
Reporte
Salida
Entrada de Seleccin
Validar: Procedure Nmero
Si Valida = Falso
Mensaje Error en la opcin seleccionada
Salir del programa
Fin Si
Case of Seleccin
1: Rutina: Incluir
2: Rutina: Consultar
3: Rutina: Modificar
4: Rutina: Eliminar
5: Rutina: Reporte
6: Rutina: Salida
Fin
FIN
PROCEDURE INCLUIR
Inicio
Leer placa vehculo
Validar: Placa
Aceptar mximo 7 dgitos
Si Placa =
Salir al men de opciones
Fin Si
Leer nmero de pasajeros
Validar: aceptar solo un nmero
Leer Alcabala
Validar: aceptar hasta 20 caracteres
Leer Tipo de Trnsito
Validar: aceptar solo S o E
Leer Fecha
Validar: aceptar solo 8 dgitos

323 - Computacin 1 Lapso 2013-2

Leer Tipo de vehculo


Validar: aceptar solo 1 2 3 4
Guardar datos
Fin
PROCEDURE CONSULTAR
Inicio
Leer placa
Validar: si no existe
Escribir vehculo no existente
De lo contrario
Mostrar todos los datos del registro
Fin de validar
FIN
PROCEDURE MODIFICAR
Inicio
Leer placa
Validar: si no existe
Escribir vehculo no existente
De lo contrario
Mostrar cada dato del registro
Pedir datos para modificar o ENTER para dejar igual
Fin de validar
FIN
PROCEDURE ELIMINAR
Inicio
Leer placa
Validar: si no existe
Escribir vehculo no existente
De lo contrario
Mostrar cada dato del registro
Eliminar registro
Fin de validar
FIN
PROCEDURE REPORTE
Inicio
Reporte 1: Alcabala y Fecha
Ir a Ordenar por alcabala y fecha
Encabezamiento
Ciclo de leer Archivo ordenado por alcabala y fecha
Escribir una pgina por alcabala
Contar y efectuar clculos de fechas
Escribir los resultados totales por alcabala
Fin de ciclo de lectura del archivo
Escribir totales generales

Pgina 10 de 32

323 - Computacin 1 Lapso 2013-2

Reporte 2: Placa
Ir a Ordenar por placa
Encabezamiento
Ciclo de leer Archivo ordenado por placa
Contar y efectuar clculos de fechas
Fin de ciclo de lectura del archivo
Escribir totales generales
Reporte 3: Alcabala y tipo de vehculo
Ir a Ordenar por alcabala y tipo de vehculo
Encabezamiento
Ciclo de leer Archivo ordenado por alcabala y tipo de vehculo
Escribir una pgina por alcabala
Contar y efectuar clculos de fechas
Escribir los resultados totales por alcabala
Fin de ciclo de lectura del archivo
Escribir totales generales
FIN
PROCEDURE ORDENAR 1
Inicio
Hacer ordenamiento de burbujas
Ciclo descendente del archivo
Ciclo ascendente del archivo
Crear dato compuesto de alcabala y fecha
Comparar cada registro con el siguiente
Si el siguiente es mayor que el actual
Intercambiar datos de cada vector
Fin Si
Fin ciclo ascendente
Fin ciclo descendente
FIN
PROCEDURE ORDENAR 2
Inicio
Hacer ordenamiento de burbujas
Ciclo descendente del archivo
Ciclo ascendente del archivo
Comparar placa del registro con el siguiente
Si el siguiente es mayor que el actual
Intercambiar datos de cada vector
Fin Si
Fin ciclo ascendente
Fin ciclo descendente
FIN
PROCEDURE ORDENAR 3
Inicio
Hacer ordenamiento de burbujas

Pgina 11 de 32

323 - Computacin 1 Lapso 2013-2

Pgina 12 de 32

Ciclo descendente del archivo


Ciclo ascendente del archivo
Crear dato compuesto de alcabala y tipo de vehculo
Comparar cada registro con el siguiente
Si el siguiente es mayor que el actual
Intercambiar datos de cada vector
Fin Si
Fin ciclo ascendente
Fin ciclo descendente
FIN

PROGRAMA EN PASCAL
PROGRAM ALCABALA;
uses crt,dos;
VAR
MENU:integer;
{VARIABLES PARA OBTENER EL DIA, MES Y ANYO}
dia: word;
mes: word;
anyo: word;
diasem:word;
{Declaracion de los arreglos o vectores}
PlaVeh: array [1..100] of string[7];
NumPas: array [1..100] of integer;
Alcaba: array [1..100] of string[20];
TipTra: array [1..100] of string[1];
FechaF: array [1..100] of string[8];
TipVeh: array [1..100] of string[1];
{Variables auxiliares para la inclusion y modificacion}
AuxPlaVeh:string[7];
AuxNumPas:integer;
AuxAlcaba:string[20];
AuxTipTra:string[1];
AuxFechaF:string[8];
AuxTipVeh:string[1];
N,I,K:integer;
A:STRING[1];
SWITCH:boolean;
{SWITCH QUE INDICA EXISTENCIA DE UN REGISTRO}

323 - Computacin 1 Lapso 2013-2

Pgina 13 de 32

{PROCEDIMIENTO PARA INCLUIR REGISTROS}


PROCEDURE INCLUIR;
BEGIN
clrscr;
N:=N+1;
IF N<1 THEN N:=1;
IF N>100 THEN N:=1;
clrscr;
writeln(' REGISTRO: ',N);
writeln;
repeat
AuxPlaVeh:='';
write(' PLACA DE VEHICULO (hasta 7 digitos) : '); readln(AuxPlaVeh);
until AuxPlaVeh <> '';
WRITELN;
repeat
write(' NUMERO DE PASAJEROS (1 A 5)
: '); readln(AuxNumPas);
until (AuxNumPas > 0) and (AuxNumPas < 6);
WRITELN;
repeat
write(' NOMBRE ALCABALA (hasta 20 digitos) : '); readln(AuxAlcaba);
until AuxAlcaba <> '';
WRITELN;
repeat
write(' TIPO TRANSITO (E=ENTRADA S=SALIDA) : '); readln(AuxTipTra);
until (AuxTipTra = 'E') or (AuxTipTra = 'S') or (AuxTipTra = 'e') or (AuxTipTra = 's');
WRITELN;
repeat
WRITE(' FECHA (DDMMAAAA) (8 digitos)
: '); readln(AuxFechaF);
until length(AuxFechaF) = 8;
WRITELN;
repeat
WRITE(' TIPO (1=part 2=pues 3=taxi 4=publ) : '); readln(AuxTipVeh);
until (AuxTipVeh = '1') or (AuxTipVeh = '2') or (AuxTipVeh = '3') or (AuxTipVeh = '4');
WRITELN;
{GUARDA EL REGISTRO EN LOS VECTORES}
PlaVeh[N]:=AuxPlaVeh;
NumPas[N]:=AuxNumPas;
Alcaba[N]:=AuxAlcaba;
TipTra[N]:=AuxTipTra;
FechaF[N]:=AuxFechaF;
TipVeh[N]:=AuxTipVeh;
END;

323 - Computacin 1 Lapso 2013-2

Pgina 14 de 32

{PROCEDIMIENTO PARA HACER LA CONSULTA DE REGISTROS POR PLACA DEL


VEHICULO}
PROCEDURE CONSULTAR;
BEGIN
CLRSCR;
WRITELN;
write('PLACA DEL VEHICULO: ');readln(AuxPlaVeh);
SWITCH:=false;
K:=0;
while (K<N+1) and (SWITCH<>true) do
begin
K:=K+1;
if (PlaVeh[K]=AuxPlaVeh) and (PlaVeh[K]<>'ELIM') then
begin
SWITCH:=true;
GOTOXY(1,5);
writeln('---------------------------------------------------');
writeln('REGISTRO NO.
: ',k);
writeln('No. PASAJEROS
: ',NumPas[K]);
writeln('ALCABALA
: ',Alcaba[K]);
writeln('ENTRADA O SALIDA : ',TipTra[K]);
writeln('FECHA
: ',FechaF[K]);
writeln('TIPO DE VEHICULO
: ',TipVeh[K]);
if TipVeh[k]='1' then writeln('Para Particulares');
if TipVeh[k]='2' then writeln('Para Por Puesto');
if TipVeh[k]='3' then writeln('Para Taxi');
if TipVeh[k]='4' then writeln('Para Transporte Pblico');
writeln('---------------------------------------------------');
writeln('Cualquier tecla para continuar');
readln(a);
end;
end;
END;
{PROCEDIMIENTO PARA HACER MODIFICACIONES DE DATOS}
PROCEDURE MODIFICAR;
BEGIN
CLRSCR;
WRITELN;
write('PLACA DEL VEHICULO: ');readln(AuxPlaVeh);
SWITCH:=false;
K:=0;
while (K<N+1) and (SWITCH<>true) do
begin
K:=K+1;
if (PlaVeh[K]=AuxPlaVeh) and (PlaVeh[K]<>'ELIM') then
begin

323 - Computacin 1 Lapso 2013-2

SWITCH:=true;
GOTOXY(1,5);
writeln('---------------------------------------------------');
writeln('REGISTRO NO.
: ',k);
writeln('No. PASAJEROS
: ',NumPas[K]);
writeln('ALCABALA
: ',Alcaba[K]);
writeln('ENTRADA O SALIDA : ',TipTra[K]);
writeln('FECHA
: ',FechaF[K]);
writeln('TIPO DE VEHICULO
: ',TipVeh[K]);
if TipVeh[k]='1' then writeln('Para Particulares');
if TipVeh[k]='2' then writeln('Para Por Puesto');
if TipVeh[k]='3' then writeln('Para Taxi');
if TipVeh[k]='4' then writeln('Para Transporte Pblico');
writeln('---------------------------------------------------');
AuxNumPas:=0;
AuxAlcaba:='';
AuxTipTra:='';
AuxFechaF:='';
AuxTipVeh:='';
GOTOXY(50,7);readln(AuxNumPas);
GOTOXY(50,8);readln(AuxAlcaba);
GOTOXY(50,9);readln(AuxTipTra);
GOTOXY(50,10);readln(AuxFechaF);
GOTOXY(50,11);readln(AuxTipVeh);
if AuxNumPas<>0 then NumPas[K]:=AuxNumPas;
if AuxAlcaba<>'' then Alcaba[K]:=AuxAlcaba;
if AuxTipTra<>'' then TipTra[K]:=AuxTipTra;
if AuxFechaF<>'' then FechaF[K]:=AuxFechaF;
if AuxTipVeh<>'' then TipVeh[K]:=AuxTipVeh;
writeln('Cualquier tecla para continuar');
readln(a);
end;
end;
END;
{PROCEDIMIENTO PARA ELIMINAR REGISTROS}
PROCEDURE ELIMINAR;
BEGIN
CLRSCR;
WRITELN;
write('PLACA DEL VEHICULO: ');readln(AuxPlaVeh);
SWITCH:=false;
K:=0;
while (K<N+1) and (SWITCH<>true) do

Pgina 15 de 32

323 - Computacin 1 Lapso 2013-2

Pgina 16 de 32

begin
K:=K+1;
if (PlaVeh[K]=AuxPlaVeh) and (PlaVeh[K]<>'ELIM') then
begin
SWITCH:=true;
GOTOXY(1,5);
writeln('---------------------------------------------------');
writeln('REGISTRO NO.
: ',k);
writeln('No. PASAJEROS
: ',NumPas[K]);
writeln('ALCABALA
: ',Alcaba[K]);
writeln('ENTRADA O SALIDA : ',TipTra[K]);
writeln('FECHA
: ',FechaF[K]);
writeln('TIPO DE VEHICULO
: ',TipVeh[K]);
if TipVeh[k]='1' then writeln('Para Particulares');
if TipVeh[k]='2' then writeln('Para Por Puesto');
if TipVeh[k]='3' then writeln('Para Taxi');
if TipVeh[k]='4' then writeln('Para Transporte Pblico');
writeln('---------------------------------------------------');
write('DESEA ELIMINAR ESTE REGISTRO? (S/N)');readln(A);
{ELIMINACION LOGICA MARCANDO EL REGISTRO CON LA PALABRA ELIM}
if (A='S') OR (A='s') then PlaVeh[K]:='ELIM';
end;
end;
END;
{PROCEDIMIENTO PARA HACER EL ORDENAMIENTO POR ALCABALA Y FECHA}
PROCEDURE ORDEN1;
VAR
I,J:INTEGER;
AUX1,AUX2:STRING[28]; {VARIABLES PARA DATO COMPUESTO DE ALCABALA Y
FECHA}
BEGIN
FOR I:=N DOWNTO 1 DO
BEGIN
FOR J:= 1 TO I-1 DO
BEGIN
AUX1:=Alcaba[J]+COPY(FechaF[J],5,4)+COPY(FechaF[J],3,2)+COPY(FechaF[J],1,2);
AUX2:=Alcaba[J+1]+COPY(FechaF[J+1],5,4)+COPY(FechaF[J+1],3,2)+COPY(FechaF[J+1],1,2);
IF AUX1 > AUX2 THEN
BEGIN
{INTERCAMBIO DE DATOS ENTRE UN REGISTRO Y EL SIGUIENTE}
AuxPlaVeh:=PlaVeh[J];PlaVeh[J]:=PlaVeh[J+1];PlaVeh[J+1]:=AuxPlaVeh;
AuxNumPas:=NumPas[J];NumPas[J]:=NumPas[J+1];NumPas[J+1]:=AuxNumPas;
AuxAlcaba:=Alcaba[J];Alcaba[J]:=Alcaba[J+1];Alcaba[J+1]:=AuxAlcaba;
AuxTipTra:=TipTra[J];TipTra[J]:=TipTra[J+1];TipTra[J+1]:=AuxTipTra;

323 - Computacin 1 Lapso 2013-2

Pgina 17 de 32

AuxFechaF:=FechaF[J];FechaF[J]:=FechaF[J+1];FechaF[J+1]:=AuxFechaF;
AuxTipVeh:=TipVeh[J];TipVeh[J]:=TipVeh[J+1];TipVeh[J+1]:=AuxTipVeh;
END;
END;
END;
END;
{PROCEDIMIENTO PARA HACER EL ORDENAMIENTO POR PLACA DE VEHICULO}
PROCEDURE ORDEN2;
VAR
I,J:INTEGER;
BEGIN
FOR I:=N DOWNTO 1 DO
BEGIN
FOR J:= 1 TO I-1 DO
BEGIN
IF PlaVeh[J] > PlaVeh[J+1] THEN
BEGIN
{INTERCAMBIO DE DATOS ENTRE UN REGISTRO Y EL SIGUIENTE}
AuxPlaVeh:=PlaVeh[J];PlaVeh[J]:=PlaVeh[J+1];PlaVeh[J+1]:=AuxPlaVeh;
AuxNumPas:=NumPas[J];NumPas[J]:=NumPas[J+1];NumPas[J+1]:=AuxNumPas;
AuxAlcaba:=Alcaba[J];Alcaba[J]:=Alcaba[J+1];Alcaba[J+1]:=AuxAlcaba;
AuxTipTra:=TipTra[J];TipTra[J]:=TipTra[J+1];TipTra[J+1]:=AuxTipTra;
AuxFechaF:=FechaF[J];FechaF[J]:=FechaF[J+1];FechaF[J+1]:=AuxFechaF;
AuxTipVeh:=TipVeh[J];TipVeh[J]:=TipVeh[J+1];TipVeh[J+1]:=AuxTipVeh;
END;
END;
END;
END;
{PROCEDIMIENTO PARA HACER EL ORDENAMIENTO POR ALCABALA Y YIPO DE
VEHICULO}
PROCEDURE ORDEN3;
VAR
I,J:INTEGER;
AUX1,AUX2:STRING[21]; {VARIABLES PARA DATO COMPUESTO DE ALCABALA Y TIPO
DE VEHICULO}
BEGIN
FOR I:=N DOWNTO 1 DO
BEGIN
FOR J:= 1 TO I-1 DO
BEGIN
AUX1:=Alcaba[J]+TipVeh[J];
AUX2:=Alcaba[J+1]+TipVeh[J+1];
IF AUX1 > AUX2 THEN
BEGIN

323 - Computacin 1 Lapso 2013-2

Pgina 18 de 32

{INTERCAMBIO DE DATOS ENTRE UN REGISTRO Y EL SIGUIENTE}


AuxPlaVeh:=PlaVeh[J];PlaVeh[J]:=PlaVeh[J+1];PlaVeh[J+1]:=AuxPlaVeh;
AuxNumPas:=NumPas[J];NumPas[J]:=NumPas[J+1];NumPas[J+1]:=AuxNumPas;
AuxAlcaba:=Alcaba[J];Alcaba[J]:=Alcaba[J+1];Alcaba[J+1]:=AuxAlcaba;
AuxTipTra:=TipTra[J];TipTra[J]:=TipTra[J+1];TipTra[J+1]:=AuxTipTra;
AuxFechaF:=FechaF[J];FechaF[J]:=FechaF[J+1];FechaF[J+1]:=AuxFechaF;
AuxTipVeh:=TipVeh[J];TipVeh[J]:=TipVeh[J+1];TipVeh[J+1]:=AuxTipVeh;
END;
END;
END;
END;
PROCEDURE REPORTE;
var
T,Z,pag,DIA,MES,AYO:integer;
X:string;
Entran,Salen,TotEntran,TotSalen,PorEntran,PorSalen:integer;
ToTFechas:integer;
FechaP:string[8];
FechaT:string[10];
AlcabaP:string[20];
ToTVehiculos:integer;
PlaVehP:string[7];
Fecha1,Fecha2:string[8];
NumAlc,DiaTra,TotPas,Dias1,Dias2,ProPas:integer;
TipVehP:string[1];
TipVehT:string[20];
CanVeh,PorVeh,PasCon:integer;
BEGIN
{INICIO REPORTE 1: ALCABALA Y FECHA}
ORDEN1;
k:=1;pag:=1;T:=0;Entran:=0;Salen:=0;TotEntran:=0;TotSalen:=0;TotFechas:=0;
while (K<N+1) AND (N>0) do {Ciclo de lectura de los registros}
begin
if PlaVeh[K]<>'ELIM' then {Omitir los marcados como eliminados}
begin
T:=T+1;
if (T>1) and (FechaP<>FechaF[k]) then {Viene otra fecha, debe imprimir}
begin
FechaT:=COPY(FechaP,1,2)+'/'+COPY(FechaP,3,2)+'/'+COPY(FechaP,5,4);
PorEntran:=Round(Entran*100/(Entran+Salen));
PorSalen:=Round(Salen*100/(Entran+Salen));

323 - Computacin 1 Lapso 2013-2

Pgina 19 de 32

i:=i+1;
gotoxy(2,i);
writeln(FechaT);
gotoxy(20,i);
writeln(Salen:5);
gotoxy(30,i);
writeln(Entran:5);
gotoxy(50,i);
writeln(PorSalen:5);
gotoxy(60,i);
writeln(PorEntran:5);
TotFechas:=TotFechas+1;
TotEntran:=TotEntran+Entran;TotSalen:=TotSalen+Salen;
Entran:=0;Salen:=0;
end;
if (T>1) and (AlcabaP<>Alcaba[k]) then {Viene otra alcabala, debe imprimir totales}
begin
writeln('**************************************************************************
*****');
writeln(' Total de Fechas Procesadas: ',TotFechas:5);
readln(a);
TotFechas:=0;T:=0;pag:=pag+1;
end;
if T<2 then {Encabezado con cada alcabala}
begin
clrscr;
i:=2;
gotoxy(1,i);
writeln('Coordinacion de Transito Nacional
Pag.',pag);
writeln('
** ESTADISTICA POR ALCABALA **');
writeln('ALCABALA: ',Alcaba[k]);
writeln(' Fecha
Cantidad de vehiculos
Porcentaje de vehiculos');
writeln('
Salen Entran
Salen Entran');
writeln('**************************************************************************
*****');
i:=7;
end;
FechaP:=FechaF[k];
AlcabaP:=Alcaba[k];
{Contadores}
if (TipTra[k]='E') or (TipTra[k]='e') then Entran:=Entran+1;
if (TipTra[k]='S') or (TipTra[k]='s') then Salen:=Salen+1;
end;

323 - Computacin 1 Lapso 2013-2

Pgina 20 de 32

K:=K+1;
end;
writeln;
{FINAL DE LECTURA DE LOS VECTORES}
if T<2 then {Encabezado con cada alcabala}
begin
clrscr;
i:=2;
gotoxy(1,i);
writeln('Coordinacion de Transito Nacional
Pag.',pag);
writeln('
** ESTADISTICA POR ALCABALA **');
writeln('ALCABALA: ',AlcabaP);
writeln(' Fecha
Cantidad de vehiculos
Porcentaje de vehiculos');
writeln('
Salen Entran
Salen Entran');
writeln('**************************************************************************
*****');
i:=7;
end;
FechaT:=COPY(FechaP,1,2)+'/'+COPY(FechaP,3,2)+'/'+COPY(FechaP,5,4);
PorEntran:=Round(Entran*100/(Entran+Salen));
PorSalen:=Round(Salen*100/(Entran+Salen));
i:=i+1;
gotoxy(2,i);
writeln(FechaT);
gotoxy(20,i);
writeln(Salen:5);
gotoxy(30,i);
writeln(Entran:5);
gotoxy(50,i);
writeln(PorSalen:5);
gotoxy(60,i);
writeln(PorEntran:5);
TotFechas:=TotFechas+1;
TotEntran:=TotEntran+Entran;TotSalen:=TotSalen+Salen;
Entran:=0;Salen:=0;
writeln('**************************************************************************
*****');
writeln(' Total de Fechas Procesadas: ',TotFechas:5);
readln(a);
{FIN REPORTE 1: ALCABALA Y FECHA}
{INICIO REPORTE 2: PLACA DE VEHICULO}
ORDEN2;

323 - Computacin 1 Lapso 2013-2

Pgina 21 de 32

k:=1;pag:=1;T:=0;Fecha1:='31121999';Fecha2:='31121999';NumAlc:=0;TotPas:=0;ToTVehiculos:=0
;
while (K<N+1) AND (N>0) do {Ciclo de lectura de los registros}
begin
if PlaVeh[K]<>'ELIM' then {Omitir los marcados como eliminados}
begin
T:=T+1;
if (T>1) and (PlaVehP<>PlaVeh[k]) then {Viene otra placa de vehiculo, debe imprimir}
begin
ProPas:=Round(TotPas/NumAlc);
Z:=1;
X:=Fecha1[1]+Fecha1[2];VAL(X,DIA,Z);
X:=Fecha1[3]+Fecha1[4];VAL(X,MES,Z);
X:=Fecha1[5]+Fecha1[6]+Fecha1[7]+Fecha1[8];VAL(X,AYO,Z);
Dias1:=DIA+MES*30+AYO*360;
X:=Fecha2[1]+Fecha2[2];VAL(X,DIA,Z);
X:=Fecha2[3]+Fecha2[4];VAL(X,MES,Z);
X:=Fecha2[5]+Fecha2[6]+Fecha2[7]+Fecha2[8];VAL(X,AYO,Z);
Dias2:=DIA+MES*30+AYO*360;
DiaTra:=Dias2-Dias1;
if DiaTra<0 then DiaTra:=0;
i:=i+1;
gotoxy(3,i);
writeln(PlaVehP);
gotoxy(20,i);
writeln(NumAlc:5);
gotoxy(40,i);
writeln(DiaTra:5);
gotoxy(60,i);
writeln(ProPas:5);
ToTVehiculos:=ToTVehiculos+1;
NumAlc:=0;TotPas:=0;
end;
if T<2 then {Encabezado con cada placa de vechiculo}
begin
clrscr;
i:=2;
gotoxy(1,i);
writeln('Coordinacion de Transito Nacional
Pag.',pag);
writeln('
** ESTADISTICA POR VEHICULO **');
writeln;
writeln(' Placa
NUMERO DE
DIAS
PROMEDIO DE');
writeln('
ALCABALAS
TRANSITADOS
PASAJEROS');

323 - Computacin 1 Lapso 2013-2

Pgina 22 de 32

writeln('**************************************************************************
*****');
i:=7;
end;
PlaVehP:=PlaVeh[k];
{Contadores}
NumAlc:=NumAlc+1;
TotPas:=TotPas+NumPas[k];
if (TipTra[k]='E') or (TipTra[k]='e') then {Calculos para entrada a alcabala}
begin
if Fecha1='31121999' then Fecha1:=FechaF[k];
Z:=1;
X:=Fecha1[1]+Fecha1[2];VAL(X,DIA,Z);
X:=Fecha1[3]+Fecha1[4];VAL(X,MES,Z);
X:=Fecha1[5]+Fecha1[6]+Fecha1[7]+Fecha1[8];VAL(X,AYO,Z);
Dias1:=DIA+MES*30+AYO*360;
X:=FechaF[K,1]+FechaF[K,2];VAL(X,DIA,Z);
X:=FechaF[K,3]+FechaF[K,4];VAL(X,MES,Z);
X:=FechaF[K,5]+FechaF[K,6]+FechaF[K,7]+FechaF[K,8];VAL(X,AYO,Z);
Dias2:=DIA+MES*30+AYO*360;
if Dias2<Dias1 then Fecha1:=FechaF[k];
end;
if (TipTra[k]='S') or (TipTra[k]='s') then {Calculos para salida de alcabala}
begin
if Fecha2='31121999' then Fecha2:=FechaF[k];
Z:=1;
X:=Fecha2[1]+Fecha2[2];VAL(X,DIA,Z);
X:=Fecha2[3]+Fecha2[4];VAL(X,MES,Z);
X:=Fecha2[5]+Fecha2[6]+Fecha2[7]+Fecha2[8];VAL(X,AYO,Z);
Dias1:=DIA+MES*30+AYO*360;
X:=FechaF[K,1]+FechaF[K,2];VAL(X,DIA,Z);
X:=FechaF[K,3]+FechaF[K,4];VAL(X,MES,Z);
X:=FechaF[K,5]+FechaF[K,6]+FechaF[K,7]+FechaF[K,8];VAL(X,AYO,Z);
Dias2:=DIA+MES*30+AYO*360;
if Dias2>Dias1 then Fecha2:=FechaF[k];
end;
end;
K:=K+1;
end;
writeln;
{FINAL DE LECTURA DE LOS VECTORES}
if T<2 then {Encabezado con cada placa de vechiculo}
begin
clrscr;
i:=2;
gotoxy(1,i);

323 - Computacin 1 Lapso 2013-2

Pgina 23 de 32

writeln('Coordinacion de Transito Nacional


Pag.',pag);
writeln('
** ESTADISTICA POR VEHICULO **');
writeln;
writeln(' Placa
NUMERO DE
DIAS
PROMEDIO DE');
writeln('
ALCABALAS
TRANSITADOS
PASAJEROS');
writeln('**************************************************************************
*****');
i:=7;
end;
ProPas:=Round(TotPas/NumAlc);
Z:=1;
X:=Fecha1[1]+Fecha1[2];VAL(X,DIA,Z);
X:=Fecha1[3]+Fecha1[4];VAL(X,MES,Z);
X:=Fecha1[5]+Fecha1[6]+Fecha1[7]+Fecha1[8];VAL(X,AYO,Z);
Dias1:=DIA+MES*30+AYO*360;
X:=Fecha2[1]+Fecha2[2];VAL(X,DIA,Z);
X:=Fecha2[3]+Fecha2[4];VAL(X,MES,Z);
X:=Fecha2[5]+Fecha2[6]+Fecha2[7]+Fecha2[8];VAL(X,AYO,Z);
Dias2:=DIA+MES*30+AYO*360;
DiaTra:=Dias2-Dias1;
if DiaTra<0 then DiaTra:=0;
i:=i+1;
gotoxy(3,i);
writeln(PlaVehP);
gotoxy(20,i);
writeln(NumAlc:5);
gotoxy(40,i);
writeln(DiaTra:5);
gotoxy(60,i);
writeln(ProPas:5);
ToTVehiculos:=ToTVehiculos+1;
writeln('**************************************************************************
*****');
writeln(' Total de Vehiculos Procesados: ',TotVehiculos:5);
readln(a);
{FIN REPORTE 2: PLACA DE VEHICULO}
{INICIO REPORTE 3: ALCABALA Y TIPO DE VEHICULO}
ORDEN3;
k:=1;pag:=1;T:=0;TotVehiculos:=0;CanVeh:=0;PorVeh:=0;PasCon:=0;ProPas:=0;
while (K<N+1) AND (N>0) do {Ciclo de lectura de los registros}
begin
if PlaVeh[K]<>'ELIM' then {Omitir los marcados como eliminados}
begin

323 - Computacin 1 Lapso 2013-2

Pgina 24 de 32

T:=T+1;
if (T>1) and (TipVehP<>TipVeh[k]) then {Viene otro tipo de vehiculo, debe imprimir}
begin
if TipVehP='1' then TipVehT:='Particulares';
if TipVehP='2' then TipVehT:='Por Puesto';
if TipVehP='3' then TipVehT:='Taxi';
if TipVehP='4' then TipVehT:='Transporte Publico';
PorVeh:=Round(CanVeh*100/N);
ProPas:=Round(PasCon/CanVeh);
i:=i+1;
gotoxy(2,i);
writeln(TipVehT);
gotoxy(30,i);
writeln(CanVeh:5);
gotoxy(40,i);
writeln(PorVeh:5);
gotoxy(60,i);
writeln(ProPas:5);
CanVeh:=0;PasCon:=0;
end;
if (T>1) and (AlcabaP<>Alcaba[k]) then {Viene otra alcabala, debe imprimir totales}
begin
writeln('**************************************************************************
*****');
writeln(' Total de Vehiculos Procesados: ',TotVehiculos:5);
readln(a);
TotVehiculos:=0;T:=0;pag:=pag+1;
end;
if T<2 then {Encabezado con cada alcabala}
begin
clrscr;
i:=2;
gotoxy(1,i);
writeln('Coordinacion de Transito Nacional
Pag.',pag);
writeln('
** ESTADISTICA POR ALCABALA **');
writeln('ALCABALA: ',Alcaba[k]);
writeln(' TIPO DE
VEHICULOS
PASAJEROS');
writeln(' VEHICULO
CANTIDAD PORCENTAJE
CONTABILIZADOS');
writeln('**************************************************************************
*****');
i:=7;
end;

323 - Computacin 1 Lapso 2013-2

Pgina 25 de 32

TipVehP:=TipVeh[k];
AlcabaP:=Alcaba[k];
{Contadores}
CanVeh:=Canveh+1;
PasCon:=PasCon+NumPas[k];
TotVehiculos:=TotVehiculos+1;
end;
K:=K+1;
end;
writeln;
{FINAL DE LECTURA DE LOS VECTORES}
if T<2 then {Encabezado con cada alcabala}
begin
clrscr;
i:=2;
gotoxy(1,i);
writeln('Coordinacion de Transito Nacional
Pag.',pag);
writeln('
** ESTADISTICA POR ALCABALA **');
writeln('ALCABALA: ',AlcabaP);
writeln(' TIPO DE
VEHICULOS
PASAJEROS');
writeln(' VEHICULO
CANTIDAD PORCENTAJE
CONTABILIZADOS');
writeln('**************************************************************************
*****');
i:=7;
end;
if TipVehP='1' then TipVehT:='Particulares';
if TipVehP='2' then TipVehT:='Por Puesto';
if TipVehP='3' then TipVehT:='Taxi';
if TipVehP='4' then TipVehT:='Transporte Publico';
PorVeh:=Round(CanVeh*100/N);
ProPas:=Round(PasCon/CanVeh);
i:=i+1;
gotoxy(2,i);
writeln(TipVehT);
gotoxy(30,i);
writeln(CanVeh:5);
gotoxy(40,i);
writeln(PorVeh:5);
gotoxy(60,i);
writeln(ProPas:5);
writeln('**************************************************************************
*****');
writeln(' Total de Vehiculos Procesados: ',TotVehiculos:5);

323 - Computacin 1 Lapso 2013-2

readln(a);
{FIN REPORTE 3: ALCABALA Y TIPO DE VEHICULO}
END;

BEGIN (* PRINCIPAL *)
textcolor(lightgreen);
textbackground(black);
GetDate(anyo, mes, dia, diasem);
repeat
repeat
clrscr;
WRITELN;
writeln('
COORDINACION DE TRANSITO NACIONAL');
writeln('
*********************************');
WRITELN('
',dia,'/',mes,'/',anyo);
writeln('
MENU DE OPCIONES');
writeln('
****************');
WRITELN;
writeln('
1.- I N C L U I R');WRITELN;
writeln('
2.- C O N S U L T A R');WRITELN;
writeln('
3.- M O D I F I C A R');WRITELN;
writeln('
4.- E L I M I N A R');WRITELN;
writeln('
5.- R E P O R T E S');WRITELN;
writeln('
6.- S A L I D A');WRITELN;
writeln;
write('OPCION : ');readLN(MENU);
until (MENU>0) and (MENU<7);
case MENU of
1:INCLUIR;
2:CONSULTAR;
3:MODIFICAR;
4:ELIMINAR;
5:REPORTE;
end;
until MENU=6;
END.

Pgina 26 de 32

323 - Computacin 1 Lapso 2013-2

Pgina 27 de 32

ETAPA VI: PRUEBA Y VERIFICACIN


ROBUSTEZ
Correccin:
El algoritmo es correcto en la medida en que ejecuta sus procesos segn el enunciado del
problema, es decir, sin errores de clculo o de programacin. En nuestro caso se puede ver que el
algoritmo realiza correctamente sus procesos, como por ejemplo los clculos de los das transitados,
cantidad y porcentaje de vehculos, nmero de alcabalas, promedios de pasajeros, etc. Adems, el
programa se puede compilar y ejecutar con turbo pascal.
Robustez:
Adems de ser correcto, esta caracterstica efecta la filtracin de datos inaceptables, de modo
que el programa no admite la mala operacin del usuario. Tal es el caso, en nuestro algoritmo, de la
validacin de la seleccin de la opcin en el men principal; si se ingresa un nmero menor a 1 o
mayor a 6, el programa no lo admite, igualmente sucede con la placa cuyo valor no puede ser nulo.
Tambin se valida el tipo de vehculo, admitiendo solo los nmeros 1 al 4 para representar cada uno
de los cuatro tipos que se procesan.
Amigabilidad:
Un algoritmo amigable no interrumpe la ejecucin del programa, sino que emite mensajes de
error mediante la validacin de datos y da la oportunidad al usuario de hacer las correcciones
necesarias. En nuestro algoritmo se controlan entradas de datos que no estn registrados, siendo que
ese debera ser el caso, y el programa los detecta, emite mensajes al usuario y le brinda la
oportunidad de continuar en l. Tal es el caso cuando se emite un reporte de estadstica, se le permite
al usuario visualizar la informacin tanto tiempo como desee, antes de pasar a la siguiente pantalla
mediante teclear alguna tecla despus de leer el mensaje cualquier tecla para continuar.

323 - Computacin 1 Lapso 2013-2

ETAPA VII: PRESENTACIN


Men de opciones:

Opcin Incluir:

Pgina 28 de 32

323 - Computacin 1 Lapso 2013-2

Opcin Consultar:

Opcin Modificar:

Pgina 29 de 32

323 - Computacin 1 Lapso 2013-2

Opcin Eliminar:

Opcin Reporte 1:

Pgina 30 de 32

323 - Computacin 1 Lapso 2013-2

Opcin Reporte 2:

Opcin Reporte 3:

Pgina 31 de 32

Anda mungkin juga menyukai