Pascal/Turbo Pascal - Ayuda con una practica para un programa que gestione los vehículos de un parking privado

 
Vista:

Ayuda con una practica para un programa que gestione los vehículos de un parking privado

Publicado por elquetepregunto (1 intervención) el 18/12/2016 13:16:15
Estoy haciendo una práctica de pascal sobre ficheros y la verdad es que no tengo mucha idea de ficheros, he logrado hacer algo pero me he quedado bloqueado, si alguien pudiera echarme un cable lo agradeceria mucho.

ESTO ES LO QUE ME PIDEN:

Realizar un programa que gestione los vehículos que pueden acceder a un parking privado
de 100 plazas. De cada vehículo se almacena la siguiente información:
- Matrícula. (Formato 9999XXX, pe: 4321BXC)
- Marca.
- Color.
- Dni (número del documento nacional de identidad) del conductor autorizado.

Como cada vehículo lleva asociado un conductor, se quiere almacenar los datos de los
conductores de forma que si se produce un imprevisto en el vehículo se pueda poner en
contacto con él. Como máximo se van a almacenar los datos de 100 conductores. Un
conductor puede tener varios vehículos autorizados.
La información sobre el conductor es la siguiente:

- Nombre y apellidos

- Teléfono (9 cifras)

- Email

- Dni

Todos estos datos se encuentran almacenados en el sistema de forma apropiada (en arrays
parcialmente llenos). Existe un listado con todos los vehículos autorizados, todos los
vehículos estacionados y todos los conductores autorizados. Este sistema es consultado cada
vez que un vehículo quiere acceder al parking,
de manera que se comprueba si coinciden los
datos del vehículo y conductor y en ese caso se le da acceso. Además de los vehículos
autorizados, se tiene información de los vehículos que se encuentran actualmente dentro del
parking.
El sistema se controla por medio de un menú que presenta las siguientes opciones:

a)Alta vehículo autorizado.

Permite añadir los datos de un nuevo vehículo y el dni
delconductor autorizado de manera que a partir de su alta ya puedan acceder al parking.

Es preciso comprobar que la lista no esté llena y que
la matrícula del vehículo no esté dada de alta previamente. Una vez producida el alta del vehículo, si el dni delconductor no coincide con ninguno de los conductores registrados, deberá procederse a dar de alta al conductor para tener sus datos.

b) Baja vehículo

Permite dar de baja un vehículo de manera que ya no podrá acceder al aparcamiento. La eliminación se hará a través de la matrícula del vehículo y en caso de existir se eliminan dichos datos. No se puede dar de baja un vehículo que se encuentre dentro del aparcamiento. La información del conductor no se verá afectada por esta operación.

c) Listado vehículos autorizados

Muestra por pantalla los datos de los vehículos autorizados ordenado por matrícula.

d) Listado vehículos aparcados.

Muestra por pantalla un listado con los datos de los vehículos que se encuentran dentro del parking ordenados por matrícula.

e) Listado de vehículos de un conductor

Muestra por pantalla todos los vehículos
autorizados que pertenecen (conduce) un conductor con un dni concreto.

f) Alta conductor.

Permite añadir a un conductor dentro del sistema. El dni del
conductor no puede estar repetido y la lista de conductores no puede estar llena.

g) Baja conductor.

Permite dar de baja a un conductor dado un dni. Si el conductor
existe (se encuentra dentro del sistema), entonces procederá a eliminar los datos de
dicho conductor y a dar de baja a todos los vehículos autorizados a su cargo. No se
po drá dar de baja si tiene algún vehículo en el aparcamiento.

h) Listado de conductores autorizados.

Mostrará el listado con los datos de los conductores registrados en el sistema.

i) Acceso vehículo

Lo primero que se debe comprobar es que el parking no esté
completo. Si hay sitio, el sistema nos preguntará la matrícula y dni del conductor y
buscará si se encuentran dichos datos en el fichero. Si no lo encuentra, el vehículo no
podrá acceder al parking, en caso contrario nos presentará por pantalla toda la
información referente a ese vehículo y conductor de modo que el vigilante pueda
comprobar que coinciden el resto de datos. Una vez presentada esta información, el
sistema preguntará si se permite acceder a dicho vehículo al parking. Hay que tener
en cuenta que también es necesario guardar en el sistema los datos de los vehículos
que están dentro del parking.

j) Salida vehículo.

Se solicitará la matrícula del vehículo.
Se debe comprobar que dicha matrícula es de un vehículo que está dentro del parking. Una vez que el vehículo abandona el aparcamiento deberá eliminarse su entrada del registro de
vehículos aparcados.

k) Guardar vehículos autorizados.

Se deben guardar todos los vehículos autorizados
en un archivo binario llamado autoriz.dat.

l) Guardar vehículos que se encuentran en el parking.

Se deben guardar todos los vehículos aparcados
en un archivo binario llamado aparcad.dat.

m) Guardar conductores.

Se deben guardar todos los conductores autorizados en un
archivo binario llamado conduct.dat.

n) Guardar el nombre y apellidos de los conductores

Se deben guardar en un archivo de texto llamado nombres.txt los nombres (y apellidos) de todos los
conductores autorizados (uno en cada línea).

o)Cargar vehículos autorizados.

Se deben poder cargar los datos de todos los
vehículos autorizados. Para ello el sistema preguntará por el nombre del archivo
binario y se procederá a su lectura para cargar los datos en la lista de vehículos
autorizados. Los datos que hubiera en la lista de vehículos autorizados se perderá.

p) Cargar vehículos que se encuentran en el parking

Se deben poder cargar los
datos de todos los vehículos aparcados. Para ello el sistema preguntará por el nombre
del archivo binario y se procederá a su lectura para cargar los datos en la lista de
vehículos aparcados. Los datos que hubiera en la lista de vehículos aparcados se
perderá.

q) Cargar conductores.

Se deben poder cargar los datos de todos los conductores
autorizados. Para ello el sistema preguntará por el nombre del archivo binario y se
procederá a su lectura para cargar los datos en la lista de conductores autorizados.
Los datos que hubiera en la lista de conductores autorizados se perderá.


ESTO ES LO QUE HE CONSEGUIDO HACER:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
PROGRAM  AparcamientoURJC;
 
CONST
	LONGMATRICULA = 7; {longitud matricula}
	NUMCARMARCA = 15; {numero caracteres campo marca}
	NUMCARCOLOR = 20; {numero caracteres campo color}
	LONGTELEFONO = 9; {longitud teléfono}
	LONGDNI = 9; {longitud dni}
	MAXVEHICULOS = 100; {número máximo de vehiculos}
	MAXCONDUCTORES = 100; {número máximo de conductores}
TYPE
	tMatricula = string[LONGMATRICULA];
	tMarca = string[NUMCARMARCA];
	tColor = string[NUMCARCOLOR];
	tDni = string[LONGDNI];
	tTelefono = string[LONGDNI];
	{tipo vehículo}
	tVehiculo = RECORD
		matricula : tMatricula;
		marca : tMarca;
		color : tColor;
		dni : TDni;
 
	END;
	{tipo conductor}
	tConductor = RECORD
		nombreApellidos, email : string;
		telefono : tTelefono;
		dni : TDni;
	END;
	{tipo lista de vehículos}
	tIndiceVehiculos = 1..MAXVEHICULOS;
	tListaVehiculos = ARRAY [tIndiceVehiculos] OF tVehiculo; {Array parcialmente lleno para vehículos autorizados y para vehículos aparcados}
	tVehiculosRegistrados = RECORD
		vehiculos: tListaVehiculos;
		tope : integer;
	END;
	{tipo lista de conductores}
	tIndiceConductores = 1..MAXCONDUCTORES;
	tListaConductores= ARRAY [tIndiceConductores] OF tConductor; {Array parcialmente lleno para conductores autorizados}
	tConductoresRegistrados = RECORD
		conductores: tListaConductores;
		tope : integer;
	END;
{tipo archivo binario}
tArchivoVehiculos = FILE OF tVehiculo;
tArchivoConductores = FILE OF tConductor;
 
VAR
	opcion: char;
	coche:tVehiculo;
	archivoVehiculos:tArchivoVehiculos;
	archivoConductores:tArchivoConductores;
 
PROCEDURE MenuPrincipal;
 
BEGIN
writeln('MENU PRINCIPAL');
writeln('a.- Alta de vehiculo autorizado');
writeln('b.- Baja de vehiculo');
writeln('c.- Listado de vehiculos autorizados');
writeln('d.- Listado de vehiculos aparcados');
writeln('e.- Listado de vehiculos del conductor');
writeln('f.- Alta conductor');
writeln('g.- Baja conductor');
writeln('h.- Listado de conductores autorizados');
writeln('i.- Acceso vehiculo');
writeln('j.- Salida vehiculo');
writeln('k.- Guardar behiculos autorizados');
writeln('l.- Guardar vehiculos que se encuentran en el parking');
writeln('m.- Guardar conductores');
writeln('n.- Guardar nombre y apellido de conductores');
writeln('o.- Cargar vehiculos autorizados');
writeln('p.- Cargar vehiculos que se encuentran en el parking');
writeln('q.- Cargar cinductores');
writeln('t.- Fin');
END;
 
PROCEDURE alta;
 
BEGIN
 
END;
 
BEGIN {Inicio programa principal}
	REPEAT
	MenuPrincipal;
	readln(opcion);
	writeln;
 
		CASE opcion OF
			'a','A': BEGIN
				writeln('Alta de vehiculo autorizado');
				assign(archivoVehiculos,'C:/IP/veihc.dat');
				reset(archivoVehiculos);
				read(archivoVehiculos,coche);
				WITH coche DO BEGIN
					writeln('matricula');
					readln(matricula);
					writeln('marca');
					readln(marca);
					writeln('color');
					readln(color);
					writeln('dni');
					readln(DNI);
				END;
			close(archivoVehiculos)
			END;
		END;
	UNTIL (opcion='t') OR (opcion='T');
 
 
END.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder