Sunteți pe pagina 1din 3

Tema 4 (30 puntos).

Para administrar el alquiler y reserva de una cancha deportiva privada,


se requiere escribir programa que permita registrar las horas reservadas dentro de una
semana, que cumpla con el men siguiente:
1. Registro de Cliente: solicita el nombre, cedula y telfono del
cliente y le asigna un nmero de cliente, llenando una tabla de
clientes.
2. Reserva de horario: El cliente seleccionar el horario para
uso de la cancha proporcionando la hora, da y su nmero de
cliente, con lo que registra la reserva en una matriz de Horarios.
No se puede reservar un horario que ya est ocupado.
3. Mostrar bloque horario. Muestra el estado de alquiler y
reserva de horarios. Los libres se muestran con cero.
4. Mostrar Clientes: Lista los datos de los clientes que han
reservado horas en la cancha.
5. Mejor cliente: muestra cul es el cliente que ha realizado ms
reservas durante la semana.
6. Salir
Nota: Los horarios se pueden reservar de lunes a domingo desde las 7h00 a las
22h00

cliente=struct('numero',0,'nombre','','cedula','','telefono',0);
%se inicializa la estructura con todos los datos q va a llevar y en
comillas y q
%tipo de datos sera si son numeros el 0 si son cadenas se pone comillas,
la
%cedula yo siempre la pongo con comillas por que si la pongo con numero
no
%sale el cero inicial
horario=zeros(16,7);
v=[];
%en el caso 2 explico para que se usara v
%se inicializa la matriz de los horarios 16 porque va de 7 a 22 mirar el
%ejemplo
n=0;
opc=0;
%n me cuenta los registros y opc me dice la opcion
while opc~=6
%se pone opc distito del numero de opcion salir
disp('1 registrar cliente');
disp('2 reserva de horario');
disp('3 rostrar bloque horario');

disp('4 mostrar cliente');


disp('5 mejor cliente');
disp('6 salir');
opc=input('elija opcion');
switch opc
%se presentan todas las opciones con disp y luego se pide que
%ingrese la opcion que quiere y se pone switch para hacer la
accion
%que indique el numero ingresado
case 1
%pido los datos y pregunto si esta repetido en caso de
estarlo
%no lo agrego y muestro un mensaje diciendo cliente ya
%registrado.
clc
Nombre=input('ingrese nombre','s');
Cedula=input('ingrese cedula','s');
Telefono=input('ingrese telefono');
b=0;
for i=1:n
if strcmp(Cedula,cliente(i).cedula)==1
b=1;
end
end
%verifique que el numero de cedula no este repetido uso la
%funcion strcmp porque lo ingrese como cadena si esta
repetido b=1
if b==0
n=n+1;
cliente(n).numero=n;
cliente(n).nombre=Nombre;
cliente(n).cedula=Cedula;
cliente(n).telefono=Telefono;
disp('el numero asignado al cliente es:');
disp(n);
else
disp('cliente ya asignado');
end
%la manera de agregar datos a la estructura es poniendo el
%nombre de la estructura luego en parentesis el numero de la
%fila seguido por un punto y el nombre del campo. la n se
suma
%uno porq como especifique antes n cuenta la cantidad de
%registro originalmente 0 pero cada q agrego un registro debe
%sumar uno y en n tendre la fila en la que estoy trabajando.
case 2
%se pide los datos y se verifica que este vacio ese horario
%se guardara en un vector los clientes que han pedido horas
%para hacer mas facil el caso 4
clc
hora=input('ingrese la hora');
dia=input('ingrese el dia');
if horario(hora-6,dia)==0
Numero=input('ingrese numero de cliente');
horario(hora-6,dia)=Numero;
%a la hora se le resta 6 porque empieza en 7
if ismember(Numero,v)==0

v=[v,Numero];
end

else

mayor

disp('horario ocupado');
end
case 3
clc
%solo se muestra la matriz de los horarios
disp(horario);
case 4
clc
%se muestran todos los datos de los clientes que estan en v
m=length(v);
for i=1:m
disp(cliente(v(i)));
end
case 5
clc
%se cuentan las veces que han pedido la cancha cada cliente y
%se muestra el que mas la ha pedido
w=zeros(1,n);
%en w estan las veces que cada cliente reservo la cancha
for i=1:16
for j=1:7
if horario(i,j)~=0
w(horario(i,j))=w(horario(i,j))+1;
end
end
end
%el mejor cliente es el que reservo mas veces es decir el
%de w
[m,p]=max(w);
disp(p);
case 6
clc
disp('gracias por usar el servicio');

end

end

S-ar putea să vă placă și