Está en la página 1de 121

QTY213.

,#ss UNIVERSIDAD NACIONAL ABIERTA


ÁREA DE INGENIERÍA
CARRERA INGENIERÍA DE SISTEMAS/INGENIERIA INDUSTRIAL
CENTRO LOCAL BARINAS '' <> []

TRABAJO PRÁCTICO: TABLA DE ASIGNACION DE BECAS


ESTUDIANTILES EN INSTITUCION EDUCATIVA

ASIGNATURA: COMPUTACIÓN I

CÓDIGO: 323

NOMBRE DEL ESTUDIANTE: SIMON ABOURAS

CÉDULA DE IDENTIDAD: V-22.685.047

CENTRO LOCAL: BARINAS CARRERA: 236/280

NÚMERO DE ORIGINALES:

FIRMA DEL ESTUDIANTE:

LAPSO: 2.017/2
Especificaciones:
Una institución educativa quiere implementar un proyecto para
estimular el rendimiento estudiantil. El proyecto consiste en
asignar becas estudiantiles, las cuales serán asignadas
dependiendo del promedio obtenido en cada uno de los lapsos (3
Lapsos), tal como se muestra en la Cuadro 1.<

Grado Promedio/lapso Monto Beca Bs


1er Grado 18 ≤ Promedio ≤ 20 55000
1er Grado 16 ≤ Promedio < 18 35000
2do Grado 18 ≤ Promedio ≤ 20 60000
2do Grado 16 ≤ Promedio < 18 40000
3er Grado 18 ≤ Promedio ≤ 20 65000
3er Grado 16 ≤ Promedio < 18 45000
4to Grado 18 ≤ Promedio ≤ 20 70000
4to Grado 16 ≤ Promedio < 18 50000
5to Grado 18 ≤ Promedio ≤ 20 75000
5to Grado 16 ≤ Promedio < 18 55000
6to Grado 18 ≤ Promedio ≤ 20 80000
6to Grado 16 ≤ Promedio < 18 60000

Para obtener el promedio de notas es importante considerar el


número total de materias por grado como se muestra en el cuadro
2.

Grado Materias por


Grado
1er Grado 5
2do Grado 5
3er Grado 5
4to Grado 6
5to Grado 6
6to Grado 6
Para llevar a cabo este proyecto la junta directiva de la
institución se apoyará de un programa en Pascal, que, haciendo
uso de arreglos, permita:
A partir de la lectura de los estudiantes por grado y sus
respectivas notas por lapso, calcule el promedio de notas para
dicho lapso y muestre el monto de la beca correspondiente, tal
como se muestra en el ejemplo siguiente.

Nro. Alumnos

Alumno Nro. Apellido y Nombre Pérez Juan

Grado

Lapso

Notas

Materia 1
Materia 2
Materia 3
Materia 5
Materia 4

Promedio de notas

Monto Beca (Bs.) 45000


Generar un reporte impreso que presente la siguiente información:
_ Total de Alumnos por c/u de los Grados y Lapsos que tengan promedio
entre 18 ≤ Promedio ≤ 20. Además, el monto total a pagar por Beca. Ver
Formato R1.

Total de alumnos entre 18 ≤ promedio ≤ 20


Apellido y nombre Grado Lapso Promedio Monto beca Bs

Total de
becados Total a pagar

FORMATO R1

_ Total, de Alumnos por c/u de los Grados y Lapsos que tengan promedio
entre 16 ≤ Promedio ≤ 18. Además, el monto total a pagar por Beca. Ver
Formato R2.

Total de alumnos entre 16 ≤ promedio ≤ 18


Apellido y nombre Grado Lapso Promedio Monto beca Bs

Total de
becados Total a pagar

FORMATO R2
Desarrollo del Informe
· El estudiante deberá entregar, para tal fin un Informe contentivo de:
_ La solución analítica del problema planteado.
_ La solución del problema planteado utilizando la Metodología MAPS.
_ El diseño del algoritmo del problema planteado en Pseudocódigo, haciendo
uso de las técnicas de programación estructurada y/o subprogramas.
_ El algoritmo haciendo uso del concepto de Robustez.
_ El algoritmo codificado de manera estructurada en lenguaje Pascal.
_ Un CD contentivo del Programa en Pascal.
· Este trabajo será revisado y evaluado por el Asesor de su Centro Local, a
fin de verificar el dominio de los temas involucrados, y forma parte importante
de la evaluación de la asignatura. Se le sugiere seguir el orden de las
actividades a realizar correspondientes a los objetivos 5, 6,7 y 8, a fin de
llevar una mejor bitácora de solución:

Objetivo 5
- Resuelva el problema planteado algorítmicamente usando la metodología
MAPS, a fin de facilitar la conceptualización, diseño, planificación, ejecución
del problema planteado.

Objetivo 6
- Después de haber aplicado cada una de las etapas de la metodología
MAPS en el objetivo 5, diseñe un algoritmo usando técnicas de programación
estructurada, que cumplan con las especificaciones dadas; tenga especial
cuidado de hacer una buena declaración de datos y sus tipos.

Objetivo 7
- Pruebe el algoritmo diseñado en el Objetivo 6 usando el concepto de
Robustez; se requiere que Ud. exponga en el informe del trabajo, cuál era el
algoritmo original, y cuál quedó después de aplicarle la definición de la
propiedad algorítmica mencionada.

Objetivo 8
- Codifique el algoritmo obtenido a lenguaje PASCAL, a fin de obtener un
programa estructurado que cumpla con los requerimientos especificados,
aplicando tipo de datos y/o procedimientos y funciones y/o métodos de
archivos.

Criterio de Corrección:
Para considerar logrado los objetivos el estudiante debe:
- Haber utilizado correctamente la Metodología MAPS para resolver el
problema planteado.
- Presentar el diseño del Algoritmo donde se muestre el uso correcto de las
técnicas de programación estructurada.
- El Algoritmo debe cumplir con todos los requerimientos solicitados.
- Haber usado el concepto de Robustez para probar el Algoritmo.
- Haber codificado correctamente el algoritmo al lenguaje Pascal.
Desarrollo del trabajo

OBJETIVO 5 MAPS

Algoritmo: TABLA DE ASIGNACION DE BECAS ESTUDIANTILES


EN INSTITUCION EDUCATIVA PARA ESTIMULAR EL
RENDIMIENTO ESTUDIANTIL

5.1 EL DIÀLOGO: Lo primero que debe entenderse es que la institución


educativa desea asignar becas estudiantiles a los alumnos para estimular el
rendimiento estudiantil, dichas becas serán asignadas dependiendo del
promedio de notas de cada lapso y por cada uno de los seis grados. Para
optar a una beca cada alumno debe obtener un promedio de notas de
16≤promedio<18 o 18≤promedio≤20 tal como se muestra en el siguiente
cuadro:

Grado Promedio/lapso Monto Beca Bs


1er Grado 18 ≤ Promedio ≤ 20 55000
1er Grado 16 ≤ Promedio < 18 35000
2do Grado 18 ≤ Promedio ≤ 20 60000
2do Grado 16 ≤ Promedio < 18 40000
3er Grado 18 ≤ Promedio ≤ 20 65000
3er Grado 16 ≤ Promedio < 18 45000
4to Grado 18 ≤ Promedio ≤ 20 70000
4to Grado 16 ≤ Promedio < 18 50000
5to Grado 18 ≤ Promedio ≤ 20 75000
5to Grado 16 ≤ Promedio < 18 55000
6to Grado 18 ≤ Promedio ≤ 20 80000
6to Grado 16 ≤ Promedio < 18 60000

De acuerdo con esto un alumno con un promedio ≤ a 15.99 no opta a


ninguna beca. Para obtener el promedio de notas se debe tomar en cuenta el
número total de materias por grado el cual es de 5 materias para el 1er, 2do
y 3er grado, y de 6 materias para los grados 4to, 5to y 6to como se muestra a
continuación:
Grado Materias por
Grado
1er Grado 5
2do Grado 5
3er Grado 5
4to Grado 6
5to Grado 6
6to Grado 6

El programa contará con un menú principal que permita ingresar en un


formulario los datos de cada estudiante, dentro de este formulario contará
con un botón calcular y un botón registrar, al presionar el botón calcular este
se asegura que hayan sido llenadas todas las cajas de texto referentes a las
notas y el grado, así calcula el promedio de notas, monto de la beca y el
rango que permitirá tabular los datos según clasifique a una tabla, luego de
esto se debe presionar el botón registrar, este al asegurarse que fueron
llenados todos los campos referentes al código y nombre y apellido hará un
registro de los datos en un archivo de datos de tipo IniFiles. Para el cálculo
del promedio de notas de cada estudiante y el monto correspondiente de la
beca se ingresarán por teclado los siguientes datos: notas correspondientes
a los tres lapsos para cada una de las materias. El programa contará con dos
opciones para el registro de los datos opción INGRESAR 1 para los
estudiantes de 1er, 2do y 3er grado, y la opción INGRESAR 2 para los
grados 4to, 5to y 6to grado tal como se muestra en los siguientes cuadros.
Nro. Alumnos

Alumno Nro. Apellido y Nombre Pérez Juan

Grado

Lapso 1
materias Mat 1 Mat 2 Mat 3 Mat 4 Mat 5 promedio
notas

Monto de la beca

Lapso 2
materias Total Total Total Total promedio

Monto de la beca

Lapso 3
materias Total Total Total Total promedio

Monto de la beca

Calcular Guardar

Y para la opción ingresar 2 :


Nro. Alumnos

Alumno Nro. Apellido y Nombre Pérez Juan

Grado

Lapso
Mat 1 Mat 2 Mat 3 Mat 4 Mat 5 Mat 6 promedio
notas

Monto de la beca
Promedio

Lapso
Mat 1 Total Materia 3 Total Mat 6
notas Materia 4

Monto de la beca Promedio

Lapso
materias Total Total Total Total promedio

Monto de la beca Promedio

c Calcular Guardar

A partir de los datos registrados de cada estudiante el programa debe


generar un reporte impreso en el que se muestre:
Total, de Alumnos por c/u de los Grados y Lapsos que tengan promedio
entre 18 ≤ Promedio ≤ 20. Además, el monto total a pagar por Beca. Ver
Formato R1.

Total de alumnos entre 18 ≤ promedio ≤ 20


Apellido y nombre Grado Lapso Promedio Monto beca Bs

Total
becados Total a pagar

Como se tienen 6 grados y tres lapsos el programa debe generar 18 tablas


con el formato R1

_ Total, de Alumnos por c/u de los Grados y Lapsos que tengan promedio
entre 16 ≤ Promedio ≤ 18. Además, el monto total a pagar por Beca. Ver
Formato R2.

Total de alumnos entre 16 ≤ promedio < 18


Apellido y nombre Grado Lapso Promedio Monto beca Bs

Total
becados Total a pagar

Como se tienen 6 grados y tres lapsos el programa debe generar 18 tablas


con el formato R1. Lo mismo para las tablas con el formato R2 serán en total
36 tablas. Dicho reporte se generará al ir ingresando estudiantes que
cumplan los requisitos establecidos en el algoritmo para que sean mostrados
en sus respectivas tablas. El listado debe presentarse ordenado
primeramente por rango de promedio es decir primero se mostrará la lista
correspondiente a la OPCION INGRESAR 1 y luego la OPCION INGRESAR
2.
Para entender mejor esto se crearán tablas con el formato R1, R2
nombradas de la siguiente manera: rango de promedio, grado y lapso. Un
ejemplo de la primera es P1G1L1 que indica rango de promedio entre 18 a
20 puntos ambos inclusive, grado 1, lapso 1. Así en total serian 6 grados por
3 lapsos = 18 tablas, por 2 rango de promedio = 36 tablas. Las tablas se
listarán así:

P1G1L

P1G1L2

P1G1L3

P1G2L1

P1G2L2

P1G2L3

P1G3L1

P1G3L2

P1G3L3

P1G4L1

P1G4L2

P1G4L3

P1G5L1

P1G5L2

P1G5L3

P1G6L1
P1G6L2

P1G6L3

P2G1L1

P2G1L2

P2G1L3

P2G2L1

P2G2L2

P2G2L3

P2G3L1

P2G3L2

P2G3L3

P2G4L1

P2G4L2

P2G4L3

P2G5L1

P2G5L2

P2G5L3

P2G6L1

P2G6L2

P2G6L3

El ingreso de los datos se realizará por teclado siguiendo la secuencia del


programa de la siguiente forma:
1) El nombre y apellido del estudiante es un arreglo de tipo cadena,
deben ser ingresados al programa uno seguido del otro separado por
un espacio hasta un máximo de treinta caracteres.
2) El número de alumno o de registro debe ser una variable de tipo
entero positiva y debe comenzar por un numero distinto de cero.
3) El grado es una variable de tipo entero positiva comprendida entre 1 y
6.
4) El lapso es un dato entero positivo comprendido entre 1 y 3.
5) Las notas son una variable entera positiva mayor que 0 y ≤ 20.
6) El número de registro está comprendido desde 1 hasta n.

Los datos de salida promedio de notas, monto de la beca, total de alumnos


registrados, total de alumnos becados y el monto total a pagar.

1) El promedio de notas en un entero positivo mayor que 0 y ≤ 20.


2) El monto de la beca en bs en un entero positivo de 5 dígitos
comprendido entre 35000 y 80000.
3) El total de alumnos becados en un entero positivo mayor que cero y
menor o igual que el número de alumnos registrados.
4) El monto total a pagar de beca en un entero positivo mayor que 35000
5) El rango es un entero comprendido entre 1 y 36. Este se generará
según el promedio, el lapso y el grado del estudiante y el mismo
indicará al sistema en que tabla debe ser posicionado un alumno si
aplica a una beca. Sino aplica a una beca el rango será 0,00.

5.2 LAS ESPECIFICACIONES

5.2.1 Las precondiciones

Datos de entrada

Nombre y apellido

Número de registro

Lapso

Grado
Calificaciones o

(apeynom1, apeynom2, … , apeynomn) ʌ n > 0 ʌ I  є {1…n} : apeynomi є {cadena


de caracteres c1 … cn}

(numreg1, numreg2, … , numregn) ʌ n > 0 ʌ I  є {1…n} : numregi є {1…n}

(lapso1, lapso2,…, lapson) ʌ n > 0 ʌ I  є {1…3}

(grado1, grado2,…, gradon) ʌ n > 0 ʌ I  є {1…6}

(calificacion1, calificacion2,…, calificacionn) ʌ n > 0 ʌ I  є {1…20}

5.2.2 Las postcondiciones

Nombre y apellido, lapso, grado, código.

(pronotas1, pronotas2,…, pronotasn) ʌ n > 0 ʌ I  є {1…20}

(mtobeca1, mtobeca 2,…, mtobeca n) ʌ n > 0 ʌ I  є {35000…80000}

(totalmtobeca1, totalmtobeca 2,…, totalmtobeca n) ʌ n > 0 ʌ I  є {35000…n}

Número de alumnos registrados, numero de becados y monto total a pagar por cada
rango/grado/lapso

Preguntar en que parte se enuncian las variables.

5.3 LA PARTICIÒN

Este problema se puede plantear a través de las siguientes rutinas:

1. Mostrar Menú Principal.

2. Seleccionar Opción del menú.

3. Ingresar los datos del estudiante

4. Calcular el promedio de notas, monto de la beca y monto total a pagar.

5. Ordenar registros.

6. Generar reporte del listado.


Cada una de las rutinas anteriores se puede dividir en las siguientes
subrutinas:

1. Mostrar Menú Principal:

• Mostrar menú OPCION INGRESAR 1

Muestra el formulario con las opciones opción calcular y guardar

• Mostrar menú OPCION INGRESAR 2

Muestra el formulario con las opciones opción calcular y guardar.

• Mostrar menú Modificar.

Muestra el formulario solicitando el código del estudiante.

• Mostrar menú Eliminar.

Muestra el formulario solicitando el código del estudiante.

2. Seleccionar Opción del menú:

• Leer opción.

3. Ingresar los datos del estudiante. Si la opción fue ingresar estudiante n:

1) Ingresar el nombre y apellido


2.1 Leer nombre y apellido
2) Ingresar el número de lapso
1.1 Leer lapso
3) Ingresar número de registro
3.1 Leer número de registro
4) Ingresar las notas
4.1 Leer las notas
5) Calcular los promedios de notas y monto de beca si aplica.
5. Guardar los datos. Al realizar esta acción los datos son guardados en un
archivo y van siendo mostrados en un alista genera ubicada en la pantalla
principal.

5.4 DEFINICIÒN DE ABSTRACCIONES

En la solución de muchos problemas algorítmicos es posible definir varias


abstracciones útiles. En primer lugar, se consideran los procedimientos de
lectura y escritura de datos que son comunes y que están incluidas dentro
del programa. Una de las rutinas a utilizar es la de lectura de datos, para ello
dentro se implementarán funciones para obtener los datos desde las cajas de
texto ubicadas en el formulario.
Function obtener<nombre_de_la_variable> : tipo de variable;
Un ejemplo sería: function obtenerNombre; String;
Al presionar las teclas CTRL+SHIFT+C, se obtiene lo siguiente:
function T<nombre_del_formulario>. obtenerNombre: String;
begin
Result: = e_nombre_y_apellido.Text;
end;
Donde ‘'e_nombre_y_apellido'' es el nombre de la caja de texto y Text es la
propiedad que extrae el valor escrito allí. De la misma forma se usa esta
función para obtener el grado, lapso, notas, promedio y monto de la beca.
function T<nombre_del_formulario>. obtenerGrado: String;
begin
Result: = cb_grado.Text;
end;
function T<nombre_del_formulario>. obtenerFisica_1: String;
begin
Result: = f11.Text;
end;
Dentro del formulario de registro se tienen también procedimientos para
calcular los promedios y el monto de la beca, asignar el rango, registrar los
datos y para limpiar las cajas de texto luego de hacer un registro. Para ellos
se declara el procedimiento en la sección TYPE del código del formulario de
ingreso de datos.

procedure calcular(Sender: TObject);

procedure registrarEstudiante1(Sender: TObject);

procedure limpiar;

Obsérvense entonces estos tres procedimientos:

1) Procedimiento para calcular:

procedure TFRegistro.calcular11(Sender: TObject);

begin

if (f11.Caption >= '1' ) and (f12.Caption >= '1' ) and (f13.Caption >= '1' ) and

(q11.Caption >= '1' ) and (q12.Caption >= '1' ) and (q13.Caption >= '1' )
………… …………………………….. Then { aquí el programa se asegura de que
todas las cajas de texto estén llenas }

begin

{ tomar los numeros de las cajas de texto }

F1 := f11.Value;

Q1 := q11.Value;

B1 := b11.Value;

S1 := s11.Value;
H1 := h11.Value;

….

….

…..;

{ calcular el promedio }

PRO1 := (F1 + Q1 + B1 + S1 + H1) / 5;

PRO2 := (F2 + Q2 + B2 + S2 + H2) / 5;

PRO3 := (F3 + Q3 + B3 + S3 + H3) / 5;

{ Mostrar el promedio }

pro11.Caption := FloatToStr(PRO1);

pro12.Caption := FloatToStr(PRO2);

pro13.Caption := FloatToStr(PRO3);

{ Asignacion de beca }

if ((pro11.Text >= '18.00' ) or (pro11.Text <= '20.00')) and (cb_grado.Text = '1ro') then

begin

monto11.Caption := FloatToStr(55000);

r1.Caption := FloatToStr(1);

end
else

if ((pro11.Text >= '16.00 ') or (pro11.Text <= '17.99') ) and (cb_grado.Text = '1ro') then

begin

monto11.Caption := FloatToStr(35000);

r1.Caption := FloatToStr(2);

end

else

if ((pro11.Text >= '1') or (pro11.Text <= '15.99')) and (cb_grado.Text = '1ro') then

begin

monto11.Caption := FloatToStr(0.00);

r1.Caption := FloatToStr(65);

En esta parte del código se tiene de forma abstracta que si el promedio en el


lapso 1 está comprendido entre 18 y 20 puntos ambos inclusive y si el grado
es 1ro entonces el monto de la beca es 55000. Del mismo modo el algoritmo
va cambiando para el segundo y tercer lapso y según el grado. Asimismo, va
asignando el valor del rango en el que se clasifica el estudiante. Por ejemplo,
si el promedio es mayor que dieciocho y el grado es primero y el lapso es
primero entonces muestra en la caja de texto r1 el valor 1 el cual envía los
datos del estudiante a la tabla con la nomenclatura P1G1L1.

2) Procedimiento para registrar un estudiante.

procedure TFRegistro.registrarEstudiante1(Sender: TObject);

begin
if (e_nombre_y_apellido.Text<>'' ) and (e_codigo.Text<>'' ) and
(cb_grado.Text<>'' )

and (pro11.Text<>'' ) and (pro12.Text<>'' ) and (pro13.Text<>'' ) then

{ para que al presionar la Tecla registrar el algoritmo se asegura que todos los campos
están llenos y que se ha presionado el botón calcular. No se incluyen las cajas de texto
referente a los montos de las becas porque estos se autocompletan al presionar calcular}

begin

bHizoRegistro := True;

Close;

end

else

begin

MessageDlg('Informacion','Por favor llene todos los campos referentes a


las notas,código, nombre y apellido y grado, luego presione calcular',
mtWarning, [mbYes], 0);

end;

end;

3) Procedimiento para limpiar las cajas de texto:

procedure TFRegistro.limpiar;

begin

e_codigo.Text:= ' ';


e_nombre_y_apellido.Text:=' ';

cb_grado.Text:=' ';

f11.Text:=' '; Donde ' ' indica al programa que limpie las cajas de texto.
Para que ocurra esto se debe llamar al procedimiento limpiar en el formulario
del menú principal, dentro de la opción INGRESAR, una vez que el programa
comprueba que se hizo el registro cierra el formulario y limpia las cajas de
texto.

Dentro del menú principal se tienen las opciones para ingresar el registro de
los estudiantes dependiendo de si cursan los grados 1ro, 2do y 3ro o si
cursan 4to, 5to y 6to. Para ello se tiene el siguiente procedimiento:

procedure TFPrincipal.registrarestudiante_2(Sender: TObject);

var

cant : Integer;

begin

FRegistro_2.bHizoRegistro := False;

FRegistro.limpiar;

FRegistro_2.ShowModal;

if FRegistro.bHizoRegistro then

begin

{ guarde los datos}

cant := archivoEstudiantes.ReadInteger('Datos','Cantidad',0);

Inc(cant);
archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Nombre',FRegistro_2.obtenerNombre);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Codigo',FRegistro_2.obtenerCodigo);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Grado',FRegistro_2.obtenerGrado);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Fisica_1',FRegistro_2.obtenerFisica_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Quimica_1',FRegistro_2.obtenerQuimica_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Biologia_1',FRegistro_2.obtenerBiologia_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Salud_1',FRegistro_2.obtenerSalud_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Historia_1',FRegistro_2.obtenerHistoria_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Geografia_1',FRegistro_2.obtenerGeografia_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),
'Promedio_1',FRegistro_2.obtenerPromedio_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Monto_beca_1',FRegistro_2.obtenerMonto_beca_1);

Lo que hace este procedimiento es que luego de llamar la opción de registro


si se cierra el formulario no pasa nada, sino entonces este toma los datos de
las cajas de texto los guarda en el archivo de estudiantes, le asigna un valor
identificador, este dato se obtiene mediante la función
obtener<nombre_de_la_variable> en el formulario de registro.

ShowMessage('Estudiante registrado con exito');

archivoEstudiantes.WriteInteger('Datos','Cantidad',cant);

lv_lista.Items.Clear;

ListView1.Items.Clear;

leerBaseDatosEstudiantes;

end;

end;

Luego de esto muestra el mensaje de registro exitoso, limpia los registros


que se muestran en las listas como la lv_lista . Para que luego mediante el
procedimiento de leer la base de datos este los tome y los muestre en la lista
como sigue:

procedure TFPrincipal.leerBaseDatosEstudiantes;

var
cant, i, contador, total_becados, total_a_pagar : Integer;

nombre, codigo, grado, f1, q1, b1, s1, h1, g1, pro1, monto1, f2, q2, b2, s2,
h2, g2,

pro2, monto2, f3, q3, b3, s3, h3, g3, pro3, monto3 : String;

begin

cant := archivoEstudiantes.ReadInteger('Datos','Cantidad',0);

for i := 1 to cant do

begin

codigo := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Codigo', '');

nombre := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Nombre', '');

grado := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Grado', '');

f1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Fisica_1', '');

q1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr
(i), 'Quimica_1', '');

b1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Biologia_1', '');

s1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Salud_1', '');

h1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Historia_1', '');

g1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Geografia_1', '');

pro1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Promedio_1', '');

monto1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Monto_beca_1', ''); { luego de esto el programa procede a asignar


los datos a las distintas tablas }

with lv_lista.Items.Add do

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);
SubItems.Add(grado);

SubItems.Add(f1);

SubItems.Add(q1);

SubItems.Add(b1);

SubItems.Add(s1);

SubItems.Add(h1);

SubItems.Add(g1);

SubItems.Add(pro1);

SubItems.Add(monto1);

SubItems.Add(f2);

SubItems.Add(q2);

SubItems.Add(b2);

SubItems.Add(s2);

SubItems.Add(h2);

SubItems.Add(g2);

SubItems.Add(pro2);

SubItems.Add(monto2);

SubItems.Add(f3);

SubItems.Add(q3);

SubItems.Add(b3);
SubItems.Add(s3);

SubItems.Add(h3);

SubItems.Add(g3);

SubItems.Add(pro3);

SubItems.Add(monto3);

end; { aquí muestra los datos en la tabla principal}

para que muestre los datos en una tabla P1G1L1 seria de la siguiente forma,
primero se inicializan las variables contador, total_becados y total_a_pagar a
cero:

contador := 0;

total_becados := 0;

total_a_pagar := 0; Luego:

with ListView1.Items.Add do

IF Rango = IntToStr(1) then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);
Edit2.Text := IntToStr(total_a_pagar);

Edit3.Text := IntToStr(contador);

end;

De esta forma al leer el rango que es igual a 1 envía los datos del estudiante
a la tabla P1G1L1 y agrega los valores del ID, código, nombre y apellido,
grado, promedio, monto de la beca y en los cuadros de texto de la tabla
muestra el total de becados y el total a pagar.
OBJETIVO 6 PROGRAMACIÒN ESTRUCTURADA PSEUDOCÒDIGO

El algoritmo en pseudocódigo

Este problema algorítmico cuenta con tres formularios, el primero pertenece


al menú principal, el segundo y tercero corresponden a los formularios para
el registro de los estudiantes de 1ro, 2do, 3ro y 4to, 5to y 6to
respectivamente. Los mismos son expuestos en el orden mencionado.
unit f_principal;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,

ComCtrls, StdCtrls, u_registro1, u_registro2, IniFiles;

type

{ TFPrincipal }

TFPrincipal = class(TForm)

Edit1: TEdit;

Edit10: TEdit;

Edit11: TEdit;

Edit12: TEdit;

Edit13: TEdit;
Edit14: TEdit;

Edit15: TEdit;

Edit16: TEdit;

Edit17: TEdit;

Edit18: TEdit;

Edit19: TEdit;

Edit2: TEdit;

Edit20: TEdit;

Edit21: TEdit;

Edit22: TEdit;

Edit23: TEdit;

Edit24: TEdit;

Edit25: TEdit;

Edit26: TEdit;

Edit27: TEdit;

Edit28: TEdit;

Edit29: TEdit;

Edit3: TEdit;

Edit30: TEdit;

Edit31: TEdit;

Edit32: TEdit;

Edit33: TEdit;

Edit34: TEdit;

Edit35: TEdit;

Edit36: TEdit;

Edit37: TEdit;
Edit38: TEdit;

Edit39: TEdit;

Edit4: TEdit;

Edit40: TEdit;

Edit41: TEdit;

Edit42: TEdit;

Edit43: TEdit;

Edit44: TEdit;

Edit45: TEdit;

Edit46: TEdit;

Edit47: TEdit;

Edit48: TEdit;

Edit49: TEdit;

Edit5: TEdit;

Edit50: TEdit;

Edit51: TEdit;

Edit52: TEdit;

Edit53: TEdit;

Edit54: TEdit;

Edit55: TEdit;

Edit56: TEdit;

Edit57: TEdit;

Edit58: TEdit;

Edit59: TEdit;

Edit6: TEdit;

Edit60: TEdit;
Edit61: TEdit;

Edit62: TEdit;

Edit63: TEdit;

Edit64: TEdit;

Edit65: TEdit;

Edit66: TEdit;

Edit67: TEdit;

Edit68: TEdit;

Edit69: TEdit;

Edit7: TEdit;

Edit70: TEdit;

Edit71: TEdit;

Edit72: TEdit;

Edit8: TEdit;

Edit9: TEdit;

ListView1: TListView;

ListView10: TListView;

ListView11: TListView;

ListView12: TListView;

ListView13: TListView;

ListView14: TListView;

ListView15: TListView;

ListView16: TListView;

ListView17: TListView;

ListView18: TListView;

ListView19: TListView;
ListView2: TListView;

ListView20: TListView;

ListView21: TListView;

ListView22: TListView;

ListView23: TListView;

ListView24: TListView;

ListView25: TListView;

ListView26: TListView;

ListView27: TListView;

ListView28: TListView;

ListView29: TListView;

ListView3: TListView;

ListView30: TListView;

ListView31: TListView;

ListView32: TListView;

ListView33: TListView;

ListView34: TListView;

ListView35: TListView;

ListView36: TListView;

ListView4: TListView;

ListView5: TListView;

ListView6: TListView;

ListView7: TListView;

ListView8: TListView;

ListView9: TListView;

lv_lista: TListView;
MainMenu1: TMainMenu;

MenuItem1: TMenuItem;

REGISTRO1: TMenuItem;

REGISTRO2: TMenuItem;

PageControl1: TPageControl;

TabSheet0: TTabSheet;

TabSheet1: TTabSheet;

TabSheet10: TTabSheet;

TabSheet11: TTabSheet;

TabSheet12: TTabSheet;

TabSheet13: TTabSheet;

TabSheet14: TTabSheet;

TabSheet15: TTabSheet;

TabSheet16: TTabSheet;

TabSheet17: TTabSheet;

TabSheet18: TTabSheet;

TabSheet19: TTabSheet;

TabSheet2: TTabSheet;

TabSheet20: TTabSheet;

TabSheet21: TTabSheet;

TabSheet22: TTabSheet;

TabSheet23: TTabSheet;

TabSheet24: TTabSheet;

TabSheet25: TTabSheet;

TabSheet26: TTabSheet;

TabSheet27: TTabSheet;
TabSheet28: TTabSheet;

TabSheet29: TTabSheet;

TabSheet3: TTabSheet;

TabSheet30: TTabSheet;

TabSheet31: TTabSheet;

TabSheet32: TTabSheet;

TabSheet33: TTabSheet;

TabSheet34: TTabSheet;

TabSheet35: TTabSheet;

TabSheet36: TTabSheet;

TabSheet4: TTabSheet;

TabSheet5: TTabSheet;

TabSheet6: TTabSheet;

TabSheet7: TTabSheet;

TabSheet8: TTabSheet;

TabSheet9: TTabSheet;

procedure FormCreate(Sender: TObject);

procedure REGISTRO1Click(Sender: TObject);

procedure REGISTRO2Click(Sender: TObject);

procedure PageControl1Change(Sender: TObject);

private

public

procedure leerbasedatosestudiantes;

end;
var

FPrincipal: TFPrincipal;

archivoEstudiantes : TIniFile;

implementation

{$R *.lfm}

{ TFPrincipal }

procedure TFPrincipal.PageControl1Change(Sender: TObject);

begin

end;

procedure TFPrincipal.REGISTRO1Click(Sender: TObject);

var

cant : Integer;

begin

FRegistro.bregistro1 := False;

FRegistro.limpiar;

FRegistro.ShowModal;

if FRegistro.bregistro1 then
begin

{ guarde los datos}

cant := archivoEstudiantes.ReadInteger('Datos','Cantidad',0);

Inc(cant);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Nombre',FRegistro.obtenerNombre);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Codigo_1',FRegistro.obtenerCodigo_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Grado',FRegistro.obtenerGrado);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Fisica_1',FRegistro.obtenerFisica_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Quimica_1',FRegistro.obtenerQuimica_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Biologia_1',FRegistro.obtenerBiologia_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Salud_1',FRegistro.obtenerSalud_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Historia_1',FRegistro.obtenerHistoria_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Promedio_1',FRegistro.obtenerPromedio_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Monto_beca_1',FRegistro.obtenerMonto_beca_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),
'Rango_1',FRegistro.obtenerRango_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Fisica_2',FRegistro.obtenerFisica_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Quimica_2',FRegistro.obtenerQuimica_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Biologia_2',FRegistro.obtenerBiologia_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Salud_2',FRegistro.obtenerSalud_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Historia_2',FRegistro.obtenerHistoria_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Promedio_2',FRegistro.obtenerPromedio_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Monto_beca_2',FRegistro.obtenerMonto_beca_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Rango_2',FRegistro.obtenerRango_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Fisica_3',FRegistro.obtenerFisica_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Quimica_3',FRegistro.obtenerQuimica_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Biologia_3',FRegistro.obtenerBiologia_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Salud_3',FRegistro.obtenerSalud_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),
'Historia_3',FRegistro.obtenerHistoria_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Promedio_3',FRegistro.obtenerPromedio_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Monto_beca_3',FRegistro.obtenerMonto_beca_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Rango_3',FRegistro.obtenerRango_3);

ShowMessage('Estudiante registrado con exito');

{ PARA QUE INCREMENTE CANT Y GUARDE MAS DATOS EN EL ARCHIVO}

archivoEstudiantes.WriteInteger('Datos','Cantidad',cant);

{ PARA QUE ACTUALICE LA LISTA }

lv_lista.Items.Clear;

leerBaseDatosEstudiantes;

end;

end;

procedure TFPrincipal.FormCreate(Sender: TObject);

begin

archivoEstudiantes := TIniFile.Create('estudiantes.txt' );

leerbasedatosestudiantes;

end;
procedure TFPrincipal.REGISTRO2Click(Sender: TObject);

var

cant : integer;

begin

FRegistro_2.bregistro2:=False;

FRegistro_2.limpiar;

FRegistro_2.ShowModal;

if FRegistro_2.bregistro2 then

begin

{ guarde los datos}

cant := archivoEstudiantes.ReadInteger('Datos','Cantidad',0);

Inc(cant);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Nombre',FRegistro_2.obtenerNombre);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Codigo_1',FRegistro_2.obtenerCodigo_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Grado',FRegistro_2.obtenerGrado);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Fisica_1',FRegistro_2.obtenerFisica_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Quimica_1',FRegistro_2.obtenerQuimica_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Biologia_1',FRegistro_2.obtenerBiologia_1);
archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Salud_1',FRegistro_2.obtenerSalud_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Historia_1',FRegistro_2.obtenerHistoria_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Geografia_1',FRegistro_2.obtenerGeografia_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Promedio_1',FRegistro_2.obtenerPromedio_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Monto_beca_1',FRegistro_2.obtenerMonto_beca_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Rango_1',FRegistro_2.obtenerRango_1);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Fisica_2',FRegistro_2.obtenerFisica_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Quimica_2',FRegistro_2.obtenerQuimica_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Biologia_2',FRegistro_2.obtenerBiologia_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Salud_2',FRegistro_2.obtenerSalud_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Historia_2',FRegistro_2.obtenerHistoria_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Geografia_2',FRegistro_2.obtenerGeografia_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Promedio_2',FRegistro_2.obtenerPromedio_2);
archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Monto_beca_2',FRegistro_2.obtenerMonto_beca_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Rango_2',FRegistro_2.obtenerRango_2);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Fisica_3',FRegistro_2.obtenerFisica_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Quimica_3',FRegistro_2.obtenerQuimica_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Biologia_3',FRegistro_2.obtenerBiologia_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Salud_3',FRegistro_2.obtenerSalud_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Historia_3',FRegistro_2.obtenerHistoria_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Geografia_3',FRegistro_2.obtenerGeografia_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Promedio_3',FRegistro_2.obtenerPromedio_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Monto_beca_3',FRegistro_2.obtenerMonto_beca_3);

archivoEstudiantes.WriteString('Estudiante'+IntToStr(cant),

'Rango_3',FRegistro_2.obtenerRango_3);

ShowMessage('Estudiante registrado con exito');

archivoEstudiantes.WriteInteger('Datos','Cantidad',cant);

lv_lista.Items.Clear;
leerBaseDatosEstudiantes;

end;

end;

{ PARA QUE MUESTRE LOS DATOS EN LA LISTA }

procedure TFPrincipal.leerbasedatosestudiantes;

var

cant, i, cn1, cn2, cn3, cn4, cn5, cn6, cn7, cn8, cn9, cn10, cn11, cn12, cn13,

cn14, cn15, cn16, cn17, cn18, cn19, cn20, cn21, cn22, cn23, cn24, cn25, cn26,

cn27, cn28, cn29, cn30, cn31, cn32, cn33, cn34, cn35, cn36, tb1, tb2, tb3, tb4, tb5,

tb6, tb7, tb8, tb9, tb10, tb11, tb12, tb13, tb14, tb15, tb16, tb17, tb18, tb19, tb20,

tb21, tb22, tb23, tb24, tb25, tb26, tb27, tb28, tb29, tb30, tb31, tb32, tb33, tb34,

tb35, tb36, tp1, tp2, tp3, tp4, tp5, tp6, tp7, tp8, tp9, tp10, tp11, tp12, tp13, tp14,

tp15, tp16, tp17, tp18, tp19, tp20, tp21, tp22, tp23, tp24, tp25, tp26, tp27, tp28,

tp29, tp30, tp31, tp32, tp33, tp34, tp35, tp36: Integer;

nombre, codigo, grado, f1, q1, b1, s1, h1, g1, pro1, monto1, f2, q2, b2, s2, h2, g2,

pro2, monto2, f3, q3, b3, s3, h3, g3, pro3, monto3, r1, r2, r3: String;

begin

cant := archivoEstudiantes.ReadInteger('Datos','Cantidad',0);

for i := 1 to cant do

begin

codigo := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Codigo_1', '');

nombre := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Nombre', '');


grado := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Grado', '');

f1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Fisica_1', '');

q1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Quimica_1', '');

b1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Biologia_1', '');

s1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Salud_1', '');

h1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Historia_1', '');

g1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Geografia_1', '');

pro1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Promedio_1', '');

monto1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Monto_beca_1', '');

r1 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Rango_1', '');

f2 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Fisica_2', '');

q2 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Quimica_2', '');

b2 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Biologia_2', '');


s2 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Salud_2', '');

h2 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Historia_2', '');

g2 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Geografia_2', '');

pro2 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Promedio_2', '');

monto2 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Monto_beca_2', '');

r2 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Rango_2', '');

f3 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Fisica_3', '');

q3 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Quimica_3', '');

b3 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Biologia_3', '');

s3 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Salud_3', '');

h3 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Historia_3', '');

g3 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Geografia_3', '');

pro3 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Promedio_3', '');


monto3 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Monto_beca_3', '');

r3 := archivoEstudiantes.ReadString('Estudiante' +IntToStr

(i), 'Rango_3', '');

{ para que lea en el archivo y vaya calculando la cantidad de becados

y el total a pagar en cada tabla}

while codigo = ('1') do

begin

cn1 := cn1 + 1;

tb1 := (cn1);

tp1 := 35000*cn1;

end;

while r2 = '3' do

begin

cn2 := cn2 + 1;

tb2 := (cn2);

tp2 := 35000*cn2;

end;

while r3 = '5' do

begin

cn3 := cn3 + 1;

tb3 := cn3;
tp3 := 35000*cn3;

end;

while r1 = '7' do

begin

cn4 := cn4 + 1;

tb4 := cn4;

tp4 := 35000*cn4;

end;

while r2 = '9' do

begin

cn5 := cn5 + 1;

tb5 := cn5;

tp5 := 35000*cn5;

end;

while r3 = '11' do

begin

cn6 := cn6 + 1;

tb6 := cn6;

tp6 := 35000*cn6;

end;

while r1 = '13' do

begin
cn7 := cn7 + 1;

tb7 := cn7;

tp7 := 35000*cn7;

end;

while r2 = '15' do

begin

cn8 := cn8 + 1;

tb8 := cn8;

tp8 := 35000*cn8;

end;

while r3 = '17' do

begin

cn9 := cn9 + 1;

tb9 := cn9;

tp10 := 35000*cn10;

end;

while r1 = '19' do

begin

cn10 := cn10 + 1;

tb10 := cn10;

tp10 := 35000*cn10;

end;
while r2 = '21' do

begin

cn11:= cn11 + 1;

tb11 := cn11;

tp11 := 35000*cn11;

end;

while r3 = '23' do

begin

cn12 := cn12 + 1;

tb12 := cn12;

tp12 := 35000*cn12;

end;

while r1 = '25' do

begin

cn13 := cn13 + 1;

tb13 := cn13;

tp13 := 35000*cn13;

end;

while r2 = '27' do

begin

cn14 := cn14 + 1;

tb14 := cn14;

tp14 := 35000*cn14;
end;

while r3 = '29' do

begin

cn15 := cn15 + 1;

tb15 := cn15;

tp15 := 35000*cn15;

end;

while r1 = '31' do

begin

cn16 := cn16 + 1;

tb16 := cn16;

tp16 := 35000*cn16;

end;

while r2 = '33' do

begin

cn17 := cn17 + 1;

tb17 := cn17;

tp17 := 35000*cn17;

end;

while r3 = '35' do

begin

cn18 := cn18 + 1;
tb18 := cn18;

tp18 := 35000*cn18;

end;

while r1 = '2' do

begin

cn19 := cn19 + 1;

tb19 := cn19;

tp19 := 35000*cn19;

end;

while r2 = '4' do

begin

cn20 := cn20 + 1;

tb20 := cn20;

tp20 := 35000*cn20;

end;

while r3 = '6' do

begin

cn21 := cn21 + 1;

tb21 := cn21;

tp21 := 35000*cn21;

end;

while r1 = '8' do
begin

cn22 := cn22 + 1;

tb22 := cn22;

tp22 := 35000*cn22;

end;

while r2 = '10' do

begin

cn23 := cn23 + 1;

tb23 := cn23;

tp23 := 35000*cn23;

end;

while r3 = '12' do

begin

cn24 := cn24 + 1;

tb24 := cn24;

tp24 := 35000*cn24;

end;

while r1 = '14' do

begin

cn25 := cn25 + 1;

tb25 := cn25;
tp25 := 35000*cn25;

end;

while r2 = '16' do

begin

cn26 := cn26 + 1;

tb26 := cn26;

tp26 := 35000*cn26;

end;

while r3 = '18' do

begin

cn27 := cn27 + 1;

tb27 := cn27;

tp27 := 35000*cn27;

end;

while r1 = '20' do

begin

cn28 := cn28 + 1;

tb28 := cn28;

tp28 := 35000*cn28;

end;

while r2 = '22' do

begin
cn29 := cn29 + 1;

tb29 := cn29;

tp29 := 35000*cn29;

end;

while r3 = '24' do

begin

cn30 := cn30 + 1;

tb30 := cn30;

tp30 := 35000*cn30;

end;

while r1 = '26' do

begin

cn31 := cn31 + 1;

tb31 := cn31;

tp31 := 35000*cn31;

end;

while r2 = '28' do

begin

cn32 := cn32 + 1;

tb32 := cn32;

tp32 := 35000*cn32;

end;
while r3 = '30' do

begin

cn33 := cn3 + 1;

tb33 := cn33;

tp33 := 35000*cn33;

end;

while r1 = '32' do

begin

cn34 := cn34 + 1;

tb34 := cn34;

tp34 := 35000*cn34;

end;

while r2 = '34' do

begin

cn35 := cn35 + 1;

tb35 := cn35;

tp35 := 35000*cn35;

end;

while r3 = '36' do

begin

cn36 := cn36 + 1;

tb36 := cn36;

tp36 := 35000*cn36;
end;

{MUESTRA TODOS LOS ESTUDIANTES EN LA LISTA PRINCIPAL}

with lv_lista.Items.Add do

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(f1);

SubItems.Add(q1);

SubItems.Add(b1);

SubItems.Add(s1);

SubItems.Add(h1);

SubItems.Add(g1);

SubItems.Add(pro1);

SubItems.Add(monto1);

SubItems.Add(r1);

SubItems.Add(f2);

SubItems.Add(q2);

SubItems.Add(b2);

SubItems.Add(s2);

SubItems.Add(h2);

SubItems.Add(g2);

SubItems.Add(pro2);

SubItems.Add(monto2);
SubItems.Add(r2);

SubItems.Add(f3);

SubItems.Add(q3);

SubItems.Add(b3);

SubItems.Add(s3);

SubItems.Add(h3);

SubItems.Add(g3);

SubItems.Add(pro3);

SubItems.Add(monto3);

SubItems.Add(r3);

end;

{ MUESTRA LOS ESTUDIANTES EN LAS TABLAS DEL TIPO R1 Y R2}

with ListView1.Items.Add do

IF r1 = IntToStr(1) then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit1.Text := IntToStr(tp1);

Edit2.Text := IntToStr(cn1);

end;
with ListView2.Items.Add do

IF r2 = IntToStr(3) then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit3.Text := IntToStr(tp2);

Edit4.Text := IntToStr(cn2);

end;

with ListView3.Items.Add do

IF r3 = IntToStr(5) then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit5.Text := IntToStr(tp3);

Edit6.Text := IntToStr(cn3);

end;
with ListView4.Items.Add do

IF r1 = IntToStr(7) then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit7.Text := IntToStr(tp4);

Edit8.Text := IntToStr(cn4);

end;

with ListView5.Items.Add do

IF r2 = IntToStr(9) then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit9.Text := IntToStr(tp5);

Edit10.Text := IntToStr(cn5);

end;
with ListView6.Items.Add do

IF r3 = IntToStr(11) then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit11.Text := IntToStr(tp6);

Edit12.Text := IntToStr(cn6);

end;

with ListView7.Items.Add do

if r1 = IntToStr(13) then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit13.Text := IntToStr(tp7);

Edit14.Text := IntToStr(cn7);

end;
with ListView8.Items.Add do

while r2 = '15' do

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit15.Text := IntToStr(tp8);

Edit16.Text := IntToStr(cn8);

end;

with ListView9.Items.Add do

IF r3 = '17' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit17.Text := IntToStr(tp9);

Edit18.Text := IntToStr(cn9);

end;
with ListView10.Items.Add do

IF r1 = '19' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit19.Text := IntToStr(tp10);

Edit20.Text := IntToStr(cn10);

end;

with ListView11.Items.Add do

IF r2 = '21' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit21.Text := IntToStr(tp11);

Edit22.Text := IntToStr(cn11);

end;
with ListView12.Items.Add do

IF r3 = '23' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit23.Text := IntToStr(tp12);

Edit24.Text := IntToStr(cn12);

end;

with ListView13.Items.Add do

IF r1 = '25' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit25.Text := IntToStr(tp13);

Edit26.Text := IntToStr(cn13);

end;
with ListView14.Items.Add do

IF r2 = '27' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit27.Text := IntToStr(tp14);

Edit28.Text := IntToStr(cn14);

end;

with ListView15.Items.Add do

IF r3 = '29' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit29.Text := IntToStr(tp15);

Edit30.Text := IntToStr(cn15);

end;
with ListView16.Items.Add do

IF r1 = '31' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit31.Text := IntToStr(tp16);

Edit32.Text := IntToStr(cn16);

end;

with ListView17.Items.Add do

IF r2 = '33' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit33.Text := IntToStr(tp17);

Edit34.Text := IntToStr(cn17);

end;
with ListView18.Items.Add do

IF r3 = '35' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit35.Text := IntToStr(tp18);

Edit36.Text := IntToStr(cn18);

end;

with ListView19.Items.Add do

IF r1 = '2' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit37.Text := IntToStr(tp19);

Edit38.Text := IntToStr(cn19);

end;
with ListView20.Items.Add do

IF r2 = '4' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit39.Text := IntToStr(tp20);

Edit40.Text := IntToStr(cn20);

end;

with ListView21.Items.Add do

IF r3 = '6' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit41.Text := IntToStr(tp21);

Edit42.Text := IntToStr(cn21);

end;
with ListView22.Items.Add do

IF r1 = '8' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit43.Text := IntToStr(tp22);

Edit44.Text := IntToStr(cn22);

end;

with ListView23.Items.Add do

IF r2 = '10' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit45.Text := IntToStr(tp23);

Edit46.Text := IntToStr(cn23);

end;
with ListView24.Items.Add do

IF r3 = '12' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit47.Text := IntToStr(tp24);

Edit48.Text := IntToStr(cn24);

end;

with ListView25.Items.Add do

IF r1 = '14' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit49.Text := IntToStr(tp25);

Edit50.Text := IntToStr(cn25);

end;
with ListView26.Items.Add do

IF r2 = '16' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit51.Text := IntToStr(tp26);

Edit52.Text := IntToStr(cn26);

end;

with ListView27.Items.Add do

IF r3 = '18' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit53.Text := IntToStr(tp27);

Edit54.Text := IntToStr(cn27);

end;
with ListView28.Items.Add do

IF r1 = '20' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit55.Text := IntToStr(tp28);

Edit56.Text := IntToStr(cn28);

end;

with ListView29.Items.Add do

IF r2 = '22' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit57.Text := IntToStr(tp29);

Edit58.Text := IntToStr(cn29);

end;
with ListView30.Items.Add do

IF r3 = '24' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit59.Text := IntToStr(tp30);

Edit60.Text := IntToStr(cn30);

end;

with ListView31.Items.Add do

IF r1 = '26' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit61.Text := IntToStr(tp31);

Edit62.Text := IntToStr(cn31);

end;
with ListView32.Items.Add do

IF r2 = '28' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit63.Text := IntToStr(tp32);

Edit64.Text := IntToStr(cn32);

end;

with ListView33.Items.Add do

IF r3 = '30' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit65.Text := IntToStr(tp33);

Edit66.Text := IntToStr(cn33);

end;
with ListView34.Items.Add do

IF r1 = '32' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit67.Text := IntToStr(tp34);

Edit68.Text := IntToStr(cn34);

end;

with ListView35.Items.Add do

IF r2 = '34' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit69.Text := IntToStr(tp35);

Edit70.Text := IntToStr(cn35);

end;
with ListView36.Items.Add do

IF r3 = '36' then

begin

SubItems.Add(IntToStr(i));

SubItems.Add(codigo);

SubItems.Add(nombre);

SubItems.Add(grado);

SubItems.Add(pro1);

SubItems.Add(monto1);

Edit71.Text := IntToStr(tp36);

Edit72.Text := IntToStr(cn36);

end;

end;

end;

end.

Formulario de registro 1
unit u_registro1;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,

Spin;
type

{ TFRegistro }

TFRegistro = class(TForm)

b11: TFloatSpinEdit;

b12: TFloatSpinEdit;

b13: TFloatSpinEdit;

b_calcular_1: TButton;

b_registrar_1: TButton;

cb_grado: TComboBox;

e_codigo: TEdit;

e_nombre_y_apellido: TEdit;

f11: TFloatSpinEdit;

f12: TFloatSpinEdit;

f13: TFloatSpinEdit;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

GroupBox4: TGroupBox;

GroupBox5: TGroupBox;

GroupBox6: TGroupBox;

GroupBox7: TGroupBox;

GroupBox8: TGroupBox;

GroupBox9: TGroupBox;

h11: TFloatSpinEdit;
h12: TFloatSpinEdit;

h13: TFloatSpinEdit;

Label1: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label2: TLabel;

Label24: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

monto11: TFloatSpinEdit;

monto12: TFloatSpinEdit;

monto13: TFloatSpinEdit;

pro11: TFloatSpinEdit;

pro12: TFloatSpinEdit;

pro13: TFloatSpinEdit;

q11: TFloatSpinEdit;

q12: TFloatSpinEdit;

q13: TFloatSpinEdit;

r1: TEdit;

r2: TFloatSpinEdit;
r3: TFloatSpinEdit;

s11: TFloatSpinEdit;

s12: TFloatSpinEdit;

s13: TFloatSpinEdit;

procedure b_calcular_1Click(Sender: TObject);

procedure b_registrar_1Click(Sender: TObject);

private

public

bregistro1 : boolean;

function obtenerNombre : String;

function obtenerCodigo_1 : String;

function obtenerGrado : String;

function obtenerFisica_1 : String;

function obtenerQuimica_1 : String;

function obtenerBiologia_1 : String;

function obtenerSalud_1 : String;

function obtenerHistoria_1 : String;

function obtenerPromedio_1 : String;

function obtenerMonto_beca_1 : String;

function obtenerRango_1 : String;

function obtenerFisica_2 : String;

function obtenerQuimica_2 : String;

function obtenerBiologia_2 : String;

function obtenerSalud_2 : String;


function obtenerHistoria_2 : String;

function obtenerPromedio_2 : String;

function obtenerMonto_beca_2 : String;

function obtenerRango_2 : String;

function obtenerFisica_3 : String;

function obtenerQuimica_3 : String;

function obtenerBiologia_3 : String;

function obtenerSalud_3 : String;

function obtenerHistoria_3 : String;

function obtenerPromedio_3 : String;

function obtenerMonto_beca_3 : String;

function obtenerRango_3 : String;

procedure limpiar;

end;

var

FRegistro: TFRegistro;

F1, F2, F3, Q1, Q2, Q3, B1, B2, B3, S1, S2, S3, H1, H2, H3, PRO1, PRO2, PRO3 : Real;

monto11, monto12, monto13, cb_grado : Integer;

implementation

{$R *.lfm}

{ TFRegistro }

function TFRegistro.obtenerNombre: String;

begin

Result := e_nombre_y_apellido.Text;
end;

function TFRegistro.obtenerCodigo_1: String;

begin

Result := e_codigo.Text;

end;

function TFRegistro.obtenerGrado: String;

begin

Result := cb_grado.Text;

end;

function TFRegistro.obtenerFisica_1: String;

begin

Result := f11.Text;

end;

function TFRegistro.obtenerQuimica_1: String;

begin

Result := q11.Text;

end;

function TFRegistro.obtenerBiologia_1: String;

begin

Result := b11.Text;

end;
function TFRegistro.obtenerSalud_1: String;

begin

Result := s11.Text;

end;

function TFRegistro.obtenerHistoria_1: String;

begin

Result := h11.Text;

end;

function TFRegistro.obtenerPromedio_1: String;

begin

Result := pro11.Text;

end;

function TFRegistro.obtenerMonto_beca_1: String;

begin

Result := monto11.Text;

end;

function TFRegistro.obtenerRango_1: String;

begin

Result := r1.Text;

end;
function TFRegistro.obtenerFisica_2: String;

begin

Result := f12.Text;

end;

function TFRegistro.obtenerQuimica_2: String;

begin

Result := q12.Text;

end;

function TFRegistro.obtenerBiologia_2: String;

begin

Result := b12.Text;

end;

function TFRegistro.obtenerSalud_2: String;

begin

Result := s12.Text;

end;

function TFRegistro.obtenerHistoria_2: String;

begin

Result := h12.Text;

end;

function TFRegistro.obtenerPromedio_2: String;


begin

Result := pro12.Text;

end;

function TFRegistro.obtenerMonto_beca_2: String;

begin

Result := monto12.Text;

end;

function TFRegistro.obtenerRango_2: String;

begin

Result := r2.Text;

end;

function TFRegistro.obtenerFisica_3: String;

begin

Result := f13.Text;

end;

function TFRegistro.obtenerQuimica_3: String;

begin

Result := q13.Text;

end;

function TFRegistro.obtenerBiologia_3: String;

begin
Result := b13.Text;

end;

function TFRegistro.obtenerSalud_3: String;

begin

Result := s13.Text;

end;

function TFRegistro.obtenerHistoria_3: String;

begin

Result := h13.Text;

end;

function TFRegistro.obtenerPromedio_3: String;

begin

Result := pro13.Text;

end;

function TFRegistro.obtenerMonto_beca_3: String;

begin

Result := monto13.Text;

end;

function TFRegistro.obtenerRango_3: String;

begin

Result := r3.Text;
end;

procedure TFRegistro.limpiar;

begin

e_codigo.Text:='';

e_nombre_y_apellido.Text:='';

cb_grado.Text:='';

f11.Text:='';

q11.Text:='';

b11.Text:='';

s11.Text:='';

h11.Text:='';

pro11.Text:='';

monto11.Text:='';

r1.Text:='';

f12.Text:='';

q12.Text:='';

b12.Text:='';

s12.Text:='';

h12.Text:='';

pro12.Text:='';

monto12.Text:='';

r2.Text:='';

f13.Text:='';

q13.Text:='';

b13.Text:='';
s13.Text:='';

h13.Text:='';

pro13.Text:='';

monto13.Text:='';

r3.Text:='';

end;

procedure TFRegistro.b_registrar_1Click(Sender: TObject);

begin

if (e_nombre_y_apellido.Text<>'' ) and (e_codigo.Text<>'' ) and (cb_grado.Text<>'' )

and (pro11.Text<>'0,00' ) and (pro12.Text<>'0,00' ) and (pro13.Text<>'0,00' ) then

begin

{ TFRegistro }

bregistro1 := True;

Close;

end

else

begin

MessageDlg('Informacion','Por favor llene todos los campos referentes a las notas,código, nombre y
apellido y grado, luego presione calcular', mtWarning, [mbYes], 0);

end;

end;

procedure TFRegistro.b_calcular_1Click(Sender: TObject);

begin

if (f11.Caption >= '1' ) and (f12.Caption >= '1' ) and (f13.Caption >= '1' ) and
(q11.Caption >= '1' ) and (q12.Caption >= '1' ) and (q13.Caption >= '1' ) and

(b11.Caption >= '1' ) and (b12.Caption >= '1' ) and (b13.Caption >= '1' ) and

(s11.Caption >= '1' ) and (s12.Caption >= '1' ) and (s13.Caption >= '1' ) and

(h11.Caption >= '1' ) and (h12.Caption >= '1' ) and (h13.Caption >= '1' ) and

(cb_grado.Text<>'' ) then

begin

{ tomar los numeros de las cajas de texto }

F1 := f11.Value;

Q1 := q11.Value;

B1 := b11.Value;

S1 := s11.Value;

H1 := h11.Value;

F2 := f12.Value;

Q2 := q12.Value;

B2 := b12.Value;

S2 := s12.Value;

H2 := h12.Value;

F3 := f13.Value;

Q3 := q13.Value;

B3 := b13.Value;

S3 := s13.Value;

H3 := h13.Value;

{ b_calcular_1 el promedio }

PRO1 := (F1 + Q1 + B1 + S1 + H1) / 5;

PRO2 := (F2 + Q2 + B2 + S2 + H2) / 5;


PRO3 := (F3 + Q3 + B3 + S3 + H3) / 5;

{ Mostrar el promedio }

pro11.Caption := FloatToStr(PRO1);

pro12.Caption := FloatToStr(PRO2);

pro13.Caption := FloatToStr(PRO3);

{ Asignacion de beca }

if ((pro11.Text >= '18.00' ) or (pro11.Text <= '20.00')) and (cb_grado.Text = '1ro') then

begin

monto11.Caption := FloatToStr(55000);

r1.Caption := FloatToStr(1);

end

else

if ((pro11.Text >= '16.00 ') or (pro11.Text <= '17.99') ) and (cb_grado.Text = '1ro') then

begin

monto11.Caption := FloatToStr(35000);

r1.Caption := FloatToStr(2);

end

else

if ((pro11.Text >= '1') or (pro11.Text <= '15.99')) and (cb_grado.Text = '1ro') then

begin

monto11.Caption := FloatToStr(0.00);

r1.Caption := FloatToStr(65);

end;
if ((pro12.Text >= '18.00 ') or (pro12.Text <= '20.00 ')) and (cb_grado.Text = '1ro') THEN

begin

monto12.Caption := FloatToStr(55000);

r2.Caption := FloatToStr(3);

end

else

if ((pro12.Text >= '16.00 ') or (pro12.Text <= '17.99')) and (cb_grado.Text = '1ro') THEN

begin

monto12.Caption := FloatToStr(35000);

r2.Caption := FloatToStr(4);

end

else

if ((pro12.Text >= '1') or (pro12.Text <= '15.99' )) and (cb_grado.Text = '1ro') THEN

begin

monto12.Caption := FloatToStr(0.00);

r2.Caption := FloatToStr(65);

end;

if ((pro13.Text >= '18.00 ') or (pro13.Text <= '20.00 ')) and (cb_grado.Text = '1ro') THEN

begin

monto13.Caption := FloatToStr(55000);

r3.Caption := FloatToStr(5);

end
else

if ((pro13.Text >= '16.00 ') or (pro13.Text <= '17.99')) and (cb_grado.Text = '1ro') THEN

begin

monto13.Caption := FloatToStr(35000);

r3.Caption := FloatToStr(6);

end

else

if ((pro13.Text >= '1') or (pro13.Text <= '15.99')) and (cb_grado.Text = '1ro') THEN

begin

monto13.Caption := FloatToStr(0.00);

r3.Caption := FloatToStr(65);

end

else

if ((pro11.Text >= '18.00 ') or (pro11.Text <= '20.00 ')) and (cb_grado.Text = '2do') THEN

begin

monto11.Caption := FloatToStr(60000);

r1.Caption := FloatToStr(7);

end

else

if ((pro11.Text >= '16.00 ') or (pro11.Text <= '17.99') ) and (cb_grado.Text = '2do') THEN

begin

monto11.Caption := FloatToStr(40000);

r1.Caption := FloatToStr(8);

end
else

if ((pro11.Text >= '1') or (pro11.Text <= '15.99')) and (cb_grado.Text = '2do') THEN

begin

monto11.Caption := FloatToStr(0.00);

r1.Caption := FloatToStr(65);

end;

if ((pro12.Text >= '18.00 ') or (pro12.Text <= '20')) and (cb_grado.Text = '2do') THEN

begin

monto12.Caption := FloatToStr(60000);

r2.Caption := FloatToStr(9);

end

else

if ((pro12.Text >= '16.00 ') or (pro12.Text <= '17.99')) and (cb_grado.Text = '2do') THEN

begin

monto12.Caption := FloatToStr(40000);

r2.Caption := FloatToStr(10);

end

else

if ((pro12.Text >= '1') or (pro12.Text <= '15.99' )) and (cb_grado.Text = '2do') THEN

begin

monto12.Caption := FloatToStr(0.00);

r2.Caption := FloatToStr(65);

end;

if ((pro13.Text >= '18.00 ') or (pro13.Text <= '20.00 '))and (cb_grado.Text = '2do') THEN
begin

monto13.Caption := FloatToStr(60000);

r3.Caption := FloatToStr(11);

end

else

if ((pro13.Text >= '16.00 ') or (pro13.Text <= '17.99')) and (cb_grado.Text = '2do') THEN

begin

monto13.Caption := FloatToStr(40000);

r3.Caption := FloatToStr(12);

end

else

if ((pro13.Text >= '1') or (pro13.Text <= '15.99')) and (cb_grado.Text = '2do') THEN

begin

monto13.Caption := FloatToStr(0.00);

r3.Caption := FloatToStr(65);

end

else

if ((pro11.Text >= '18.00 ' ) or (pro11.Text <= '20.00 ')) and (cb_grado.Text = '3ro') THEN

begin

monto11.Caption := FloatToStr(65000);

r1.Caption := FloatToStr(13);

end

else

if ((pro11.Text >= '16.00 ') or (pro11.Text <= '17.99') ) and (cb_grado.Text = '3ro') THEN
begin

monto11.Caption := FloatToStr(45000);

r1.Caption := FloatToStr(14);

end

else

if ((pro11.Text >= '1') or (pro11.Text <= '15.99')) and (cb_grado.Text = '3ro') THEN

begin

monto11.Caption := FloatToStr(0.00);

r1.Caption := FloatToStr(65);

end;

if ((pro12.Text >= '18.00 ') or (pro12.Text <= '20.00 ')) and (cb_grado.Text = '3ro') THEN

begin

monto12.Caption := FloatToStr(65000);

r2.Caption := FloatToStr(15);

end

else

if ((pro12.Text >= '16.00 ') or (pro12.Text <= '17.99')) and (cb_grado.Text = '3ro') THEN

begin

monto12.Caption := FloatToStr(45000);

r2.Caption := FloatToStr(16);

end

else

if ((pro12.Text >= '1') or (pro12.Text <= '15.99' )) and (cb_grado.Text = '3ro') THEN

begin

monto12.Caption := FloatToStr(0.00);
r2.Caption := FloatToStr(65);

end;

if ((pro13.Text >= '18.00 ') or (pro13.Text <= '20.00 ')) and (cb_grado.Text = '3ro') THEN

begin

monto13.Caption := FloatToStr(65000);

r3.Caption := FloatToStr(17);

end

else

if ((pro13.Text >= '16.00 ') or (pro13.Text <= '17.99')) and (cb_grado.Text = '3ro') THEN

begin

monto13.Caption := FloatToStr(45000);

r3.Caption := FloatToStr(18);

end

else

if ((pro13.Text >= '1') or (pro13.Text <= '15.99')) and (cb_grado.Text = '3ro') THEN

begin

monto13.Caption := FloatToStr(0.00);

r3.Caption := FloatToStr(65);

end

end

else

begin

MessageDlg('Informacion',

'Por favor llene todos los campos referentes a las notas en el panel ESTUDIANTE y seleccione el
grado, luego presione calcular.', mtWarning, [mbYes], 0);
end ;

end;

end.

Formulario de registro 2
unit u_registro2;

{$mode objfpc}{$H+}

Interface

uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,

Spin;

type

{ TFRegistro_2 }

TFRegistro_2 = class(TForm)

b21: TFloatSpinEdit;

b22: TFloatSpinEdit;

b23: TFloatSpinEdit;

b_calcular_2: TButton;

b_registrar_2: TButton;

cb_grado: TComboBox;

e_codigo: TEdit;

e_nombre1: TEdit;

f21: TFloatSpinEdit;

f22: TFloatSpinEdit;

f23: TFloatSpinEdit;
g21: TFloatSpinEdit;

g22: TFloatSpinEdit;

g23: TFloatSpinEdit;

GroupBox10: TGroupBox;

GroupBox11: TGroupBox;

GroupBox12: TGroupBox;

GroupBox13: TGroupBox;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

GroupBox4: TGroupBox;

GroupBox9: TGroupBox;

h21: TFloatSpinEdit;

h22: TFloatSpinEdit;

h23: TFloatSpinEdit;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;
Label24: TLabel;

monto21: TFloatSpinEdit;

monto22: TFloatSpinEdit;

monto23: TFloatSpinEdit;

pro21: TFloatSpinEdit;

pro22: TFloatSpinEdit;

pro23: TFloatSpinEdit;

q21: TFloatSpinEdit;

q22: TFloatSpinEdit;

q23: TFloatSpinEdit;

r1: TFloatSpinEdit;

r2: TFloatSpinEdit;

r3: TFloatSpinEdit;

s21: TFloatSpinEdit;

s22: TFloatSpinEdit;

s23: TFloatSpinEdit;

procedure b_calcular_2Click(Sender: TObject);

procedure b_registrar_2Click(Sender: TObject);

private

public

bregistro2 : boolean;

function obtenerNombre : String;

function obtenerCodigo_1 : String;

function obtenerGrado : String;


function obtenerFisica_1 : String;

function obtenerQuimica_1 : String;

function obtenerBiologia_1 : String;

function obtenerSalud_1 : String;

function obtenerHistoria_1 : String;

function obtenerGeografia_1 : String;

function obtenerPromedio_1 : String;

function obtenerMonto_beca_1 : String;

function obtenerRango_1 : String;

function obtenerFisica_2 : String;

function obtenerQuimica_2 : String;

function obtenerBiologia_2 : String;

function obtenerSalud_2 : String;

function obtenerHistoria_2 : String;

function obtenerGeografia_2 : String;

function obtenerPromedio_2 : String;

function obtenerMonto_beca_2 : String;

function obtenerRango_2 : String;

function obtenerFisica_3 : String;

function obtenerQuimica_3 : String;

function obtenerBiologia_3 : String;

function obtenerSalud_3 : String;

function obtenerHistoria_3 : String;

function obtenerGeografia_3 : String;

function obtenerPromedio_3 : String;

function obtenerMonto_beca_3 : String;


function obtenerRango_3 : String;

procedure limpiar;

end;

var

FRegistro_2: TFRegistro_2;

F1, F2, F3, Q1, Q2, Q3, B1, B2, B3, S1, S2, S3, H1, H2, H3, G1, G2,

G3, PRO1, PRO2, PRO3 : Real;

monto21, monto22, monto23, cb_grado : Integer;

implementation

{$R *.lfm}

{ TFRegistro_2 }

function TFRegistro_2.obtenerNombre: String;

begin

Result := e_nombre1.Text;

end;

function TFRegistro_2.obtenerCodigo_1: String;

begin

Result := e_codigo.Text;

end;

function TFRegistro_2.obtenerGrado: String;

begin

Result := cb_grado.Text;

end;

function TFRegistro_2.obtenerFisica_1: String;

begin

Result := f21.Text;
end;

function TFRegistro_2.obtenerQuimica_1: String;

begin

Result := q21.Text;

end;

function TFRegistro_2.obtenerBiologia_1: String;

begin

Result := b21.Text;

end;

function TFRegistro_2.obtenerSalud_1: String;

begin

Result := s21.Text;

end;

function TFRegistro_2.obtenerHistoria_1: String;

begin

Result := h21.Text;

end;

function TFRegistro_2.obtenerGeografia_1: String;

begin

Result := g21.Text;

end;

function TFRegistro_2.obtenerPromedio_1: String;

begin

Result := pro21.Text;

end;

function TFRegistro_2.obtenerMonto_beca_1: String;


begin

Result := monto21.Text;

end;

function TFRegistro_2.obtenerRango_1: String;

begin

Result := r1.Text;

end;

function TFRegistro_2.obtenerFisica_2: String;

begin

Result := f22.Text;

end;

function TFRegistro_2.obtenerQuimica_2: String;

begin

Result := q22.Text;

end;

function TFRegistro_2.obtenerBiologia_2: String;

begin

Result := b22.Text;

end;

function TFRegistro_2.obtenerSalud_2: String;

begin

Result := s22.Text;

end;

function TFRegistro_2.obtenerHistoria_2: String;

begin

Result := h22.Text;
end;

function TFRegistro_2.obtenerGeografia_2: String;

begin

Result := g22.Text;

end;

function TFRegistro_2.obtenerPromedio_2: String;

begin

Result := pro22.Text;

end;

function TFRegistro_2.obtenerMonto_beca_2: String;

begin

Result := monto22.Text;

end;

function TFRegistro_2.obtenerRango_2: String;

begin

Result := r2.Text;

end;

function TFRegistro_2.obtenerFisica_3: String;

begin

Result := f23.Text;

end;

function TFRegistro_2.obtenerQuimica_3: String;

begin

Result := q23.Text;

end;

function TFRegistro_2.obtenerBiologia_3: String;


begin

Result := b23.Text;

end;

function TFRegistro_2.obtenerSalud_3: String;

begin

Result := s23.Text;

end;

function TFRegistro_2.obtenerHistoria_3: String;

begin

Result := h23.Text;

end;

function TFRegistro_2.obtenerGeografia_3: String;

begin

Result := g23.Text;

end;

function TFRegistro_2.obtenerPromedio_3: String;

begin

Result := pro23.Text;

end;

function TFRegistro_2.obtenerMonto_beca_3: String;

begin

Result := monto23.Text;

end;

function TFRegistro_2.obtenerRango_3: String;

begin

Result := r3.Text
end;

procedure TFRegistro_2.limpiar;

begin

e_nombre1.Text:= '';

e_codigo.Text:= '';

cb_grado.Text:= '';

f21.Text:='';

q21.Text:='';

b21.Text:='';

s21.Text:='';

h21.Text:='';

g21.Text:='';

pro21.Text:='';

monto21.Text:='';

r1.Text:='';

f22.Text:='';

q22.Text:='';

b22.Text:='';

s22.Text:='';

h22.Text:='';

g22.Text:='';

pro22.Text:='';

monto22.Text:='';

r2.Text:='';

f23.Text:='';

q23.Text:='';
b23.Text:='';

s23.Text:='';

h23.Text:='';

g23.Text:='';

pro23.Text:='';

monto23.Text:='';

r3.Text:='';

end;

procedure TFRegistro_2.b_registrar_2Click(Sender: TObject);

begin

if (e_nombre1.Text<>'' ) and (e_codigo.Text<>'' ) and (cb_grado.Text<>'' )

and (pro21.Text<>'0,00' ) and (pro22.Text<>'0,00' ) and (pro23.Text<>'0,00' ) then

begin

{ TFRegistro_2 }

bregistro2 := True;

Close;

end

else

begin

MessageDlg('Informacion','Por favor llene todos los campos referentes a las notas,código, nombre y
apellido y grado, luego presione calcular', mtWarning, [mbYes], 0);

end;

end;

procedure TFRegistro_2.b_calcular_2Click(Sender: TObject);

begin
if (f21.Caption >= '1' ) and (f22.Caption >= '1' ) and (f23.Caption >= '1' ) and

(q21.Caption >= '1' ) and (q22.Caption >= '1' ) and (q23.Caption >= '1' ) and

(b21.Caption >= '1' ) and (b22.Caption >= '1' ) and (b23.Caption >= '1' ) and

(s21.Caption >= '1' ) and (s22.Caption >= '1' ) and (s23.Caption >= '1' ) and

(h21.Caption >= '1' ) and (h22.Caption >= '1' ) and (h23.Caption >= '1' ) and

(g21.Caption >= '1' ) and (g22.Caption >= '1' ) and (g23.Caption >= '1' )

and (cb_grado.Text<>'' ) then

begin

{ tomar los numeros de las cajas de texto }

F1 := f21.Value;

Q1 := q21.Value;

B1 := b21.Value;

S1 := s21.Value;

H1 := h21.Value;

G1 := g21.Value;

F2 := f22.Value;

Q2 := q22.Value;

B2 := b22.Value;

S2 := s22.Value;

H2 := h22.Value;

G2 := g22.Value;

F3 := f23.Value;

Q3 := q23.Value;

B3 := b23.Value;

S3 := s23.Value;

H3 := h23.Value;
G3 := g23.Value;

{ calcular_11 el promedio }

PRO1 := (F1 + Q1 + B1 + S1 + H1 + G1) / 6;

PRO2 := (F2 + Q2 + B2 + S2 + H2 + G2) / 6;

PRO3 := (F3 + Q3 + B3 + S3 + H3 + G3) / 6;

{ Mostrar el promedio }

pro21.Caption := FloatToStr(PRO1);

pro22.Caption := FloatToStr(PRO2);

pro23.Caption := FloatToStr(PRO3);

{ Asignacion de beca }

if ((pro21.Text >= '18' ) or (pro21.Text <= '20')) and (cb_grado.Text = '4to') then

begin

monto21.Caption := FloatToStr(70000);

r1.Caption := FloatToStr(19);

end

else

if ((pro21.Text >= '16') or (pro21.Text <= '17.99') )and (cb_grado.Text = '4to') THEN

begin

monto21.Caption := FloatToStr(75000);

r1.Caption := FloatToStr(20);

end

else

if ((pro21.Text >= '1') or (pro21.Text <= '15.99')) and (cb_grado.Text = '4to') then

begin

monto21.Caption := FloatToStr(0.00);

r1.Caption := FloatToStr(65);
end;

if ((pro22.Text >= '18') or (pro22.Text <= '20')) and (cb_grado.Text = '4to') THEN

begin

monto22.Caption := FloatToStr(70000);

r2.Caption := FloatToStr(21);

end

else

if ((pro22.Text >= '16') or (pro22.Text <= '17.99')) and (cb_grado.Text = '4to') THEN

begin

monto22.Caption := FloatToStr(50000);

r2.Caption := FloatToStr(22);

end

else

if ((pro22.Text >= '1') or (pro22.Text <= '15.99' )) and (cb_grado.Text = '4to') THEN

begin

monto22.Caption := FloatToStr(0.00);

r2.Caption := FloatToStr(65);

end;

if ((pro23.Text >= '18') or (pro23.Text <= '20')) and (cb_grado.Text = '4to') THEN

begin

monto23.Caption := FloatToStr(70000);

r3.Caption := FloatToStr(23);

end

else

if ((pro23.Text >= '16') or (pro23.Text <= '17.99')) and (cb_grado.Text = '4to') THEN

begin
monto23.Caption := FloatToStr(50000);

r3.Caption := FloatToStr(24);

end

else

if ((pro23.Text >= '1') or (pro23.Text <= '15.99')) and (cb_grado.Text = '4to') THEN

begin

monto23.Caption := FloatToStr(0.00);

r2.Caption := FloatToStr(65);

end

else

if ((pro21.Text >= '18' ) or (pro21.Text <= '20')) and (cb_grado.Text = '5to') then

begin

monto21.Caption := FloatToStr(70000);

r1.Caption := FloatToStr(25);

end

else

if ((pro21.Text >= '16') or (pro21.Text <= '17.99') )and (cb_grado.Text = '5to') THEN

begin

monto21.Caption := FloatToStr(75000);

r1.Caption := FloatToStr(26);

end

else

if ((pro21.Text >= '1') or (pro21.Text <= '15.99')) and (cb_grado.Text = '5to') then
begin

monto21.Caption: = FloatToStr (0.00);

r1.Caption := FloatToStr(65);

end;

if ((pro22.Text >= '18') or (pro22.Text <= '20')) and (cb_grado.Text = '5to') THEN

begin

monto22.Caption := FloatToStr(75000);

r2.Caption := FloatToStr(27);

end

else

if ((pro22.Text >= '16') or (pro22.Text <= '17.99')) and (cb_grado.Text = '5to') THEN

begin

monto22.Caption := FloatToStr(55000);

r2.Caption := FloatToStr(28);

end

else

if ((pro22.Text >= '1') or (pro22.Text <= '15.99')) and (cb_grado.Text = '5to') THEN

begin

monto22.Caption := FloatToStr(0.00);

r2.Caption := FloatToStr(65);

end;

if ((pro23.Text >= '18') or (pro23.Text <= '20')) and (cb_grado.Text = '5to') THEN

begin

monto23.Caption := FloatToStr(75000);
r3.Caption := FloatToStr(29);

end

else

if ((pro23.Text >= '16') or (pro23.Text <= '17.99')) and (cb_grado.Text = '5to') THEN

begin

monto23.Caption := FloatToStr(55000);

r3.Caption := FloatToStr(30);

end

else

if ((pro23.Text >= '1') or (pro23.Text <= '15.99')) and (cb_grado.Text = '5to') THEN

begin

monto23.Caption := FloatToStr(0.00);

r3.Caption := FloatToStr(65);

end

else

if ((pro21.Text >= '18') or (pro21.Text <= '20')) and (cb_grado.Text = '6to') THEN

begin

monto21.Caption := FloatToStr(70000);

r1.Caption := FloatToStr(31);

end

else

if ((pro21.Text >= '16') or (pro21.Text <= '17.99')) and (cb_grado.Text = '6to') THEN

begin

monto21.Caption := FloatToStr(50000);
r1.Caption := FloatToStr(32);

end

else

if ((pro21.Text >= '1') or (pro21.Text <= '15.99' )) and (cb_grado.Text = '6to') THEN

begin

monto21.Caption := FloatToStr(0);

r1.Caption := FloatToStr(65);

end ;

if ((pro22.Text >= '18') or (pro22.Text <= '20')) and (cb_grado.Text = '6to') THEN

begin

monto22.Caption := FloatToStr(70000);

r2.Caption := FloatToStr(33);

end

else

if ((pro22.Text >= '16') or (pro22.Text <= '17.99')) and (cb_grado.Text = '6to') THEN

begin

monto22.Caption := FloatToStr(50000);

r2.Caption := FloatToStr(34);

end

else

if ((pro22.Text >= '1') or (pro22.Text <= '15.99' )) and (cb_grado.Text = '6to') THEN

begin

monto22.Caption := FloatToStr(0);

r2.Caption := FloatToStr(65);

end;
if ((pro23.Text >= '18') or (pro23.Text <= '20')) and (cb_grado.Text = '6to') THEN

begin

monto23.Caption := FloatToStr(70000);

r3.Caption := FloatToStr(35);

end

else

if ((pro23.Text >= '16') or (pro23.Text <= '17.99')) and (cb_grado.Text = '6to') THEN

begin

monto23.Caption := FloatToStr(50000);

r3.Caption := FloatToStr(36);

end

else

if ((pro23.Text >= '1') or (pro23.Text <= '15.99')) and (cb_grado.Text = '6to') THEN

begin

monto23.Caption := FloatToStr(0);

r3.Caption := FloatToStr(65);

end;

end

else

begin

MessageDlg ('Informacion','Por favor llene todos los campos referentes a las notas en el panel
ESTUDIANTE y seleccione el grado, luego presione calcular.', mtWarning, [mbYes], 0);

end;

end;

end.
Procedimientos consulta, modificar y eliminar datos.3

Para las opciones de modificar y eliminar datos se tiene que abrir el archivo
IniFile para lectura y recorrerlo a fin de encontrar el registro deseado o el fin
del archivo. La función fda (id_arch) detectara el final del archivo con la
lectura de su ultimo registro y se utilizara la función definida por el ususario
igual(clavebus, persona) en la comparación del campo
persona.nombre_campo1 con la clave introducida desde teclado. Para esta
opción se encuentra el registro mediante el campo nombre_campo1

Algoritmo (listado unatec)

Tipo

registro: datos_personales

<tipo_dato_1>: nombre_campo1

…………………………………………

fin_registro

archivos_de datos_personales: arch

Var

Arch: f

Datos_personales: persona

<tipo_dato_1> : clavebus

lógico : encontrado;

Inicio

abrir (f,1 “PERSONAL”)

encontrado ← falso;

Leer (clavebus)
Mientras no encontrado y no fda(f) hacer

Llamar_a leer_f_reg (f, persona)

Si igual( clavebus, persona ) entonces

encontrado ← Verdad

Fin_si

Fin_mientras

Si no encontrado entonces

Escribir (“NO EXISTE”)

Si_no

Llamar_a escribir_reg(persona)

Fin_si

Cerrar (f)

Fin .

Procedimiento para eliminar un registro.

Para realizar la baja de un registro es necesario crear un archivo auxiliar,


también secuencial. Se lee del archivo inicial registro a registro, escribiendo
todos ellos en el auxiliar, excepto el que se desea dar de baja el cual no se
copiará.

Algoritmo (listado unatec)

Tipo

registro: datos_personales

<tipo_dato_1>: nombre_campo1

…………………………………………

fin_registro
archivos_de datos_personales: arch

Var

Arch: f, faux;

Datos_personales: persona, personaaux;

lógico : encontrado;

Inicio

abrir (f,1, “PERSONAL”)

crear (faux, “nuevo”)

abrir (faux, e, “nuevo”)

leer (personaaux.nombre:campo1)

encontrado ← falso;

Mientras no fda(f) hacer

Llamar_a leer_f_reg (f, persona)

si (personaaux.nombre:campo1) = (persona.nombre:campo1) entonces

encontrado ← Verdad

si_no

llamar_a escribir_f_reg(faux, persona)

fin_si

Fin_mientras

Si no encontrado entonces

Escribir (“NO EXISTE”)

Fin_si

Cerrar(f, faux)
Borrar (“PERSONAL”)

Renombrar (“nuevo”, “PERSONAL O ESTUDIANTES.TXT”)

Fin .

Procedimiento para la modificación de datos

Puesto que no es posible abrir un archivo IniFile simultáneamente para


lectura y escritura el procedimiento para modificar la información almacenada
en un determinado registro del archivo ESTUDIANTES.TXT resultará al
desarrollado para la eliminación. Se necesita también un archivo auxiliar y
cuando se encuantre el registro a modificar, en lugar de no incluirlo, se
escribirá en dicho archivo auxiliar después de modificarlo.

Algoritmo (listado unatec)

Tipo

registro: datos_personales

<tipo_dato_1>: nombre_campo1

…………………………………………

fin_registro

archivos_de datos_personales: arch

Var

Arch: f, faux;

Datos_personales: persona, personaaux;

lógico : encontrado;

Inicio

abrir (f,1, “PERSONAL”)

crear (faux, “nuevo”)

abrir (faux, e, “nuevo”)


leer (personaaux.nombre_campo1)

encontrado ← falso;

Mientras no fda(f) hacer

Llamar_a leer_f_reg (f, persona)

si (personaaux.nombre:campo1) = (persona.nombre:campo1) entonces

encontrado ← Verdad

llamar_a modificar (persona)

fin_si

llamar_a escribir_f_reg(faux, persona)

Fin_mientras

Si no encontrado entonces

Escribir (“NO EXISTE”)

Fin_si

Cerrar(f, faux)

Borrar (“PERSONAL”)

Renombrar (“nuevo”, “PERSONAL O ESTGUDIANTES.TXT”)

Fin ;

Procedimiento modificar (E/S datos_personales: persona)

var

carácter : opción

entero : n

inicio

escribir (“R. –Registro completo”)


escribir (“C.- Registro individual”)

escribir (“Elija opción ”)

leer (opción )

según_sea opción hacer

“R”:

Escribir_reg (persona)

leer_reg (persona)

“C”

Escribir_reg (persona)

// Muestre por pantalla el registro campo a campo y numerados

Leer (n)

//Numero del campo a modificar

Introducir_campo(n, persona)

Fin_segun

Fin_procedimiento

También podría gustarte