Upload
hilda-ana
View
216
Download
0
Embed Size (px)
DESCRIPTION
Parcial ciencias de la computación
Citation preview
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
Facultad de Ciencias Matemticas
Primera Parcial de CC-II
Apellidos y nombres:
A.-Programa para facturar clientes de un hotel.
Realizar un programa que nos permita facturar a los clientes de un hotel que se
encuentren pendientes de facturacin y actualizar los datos de un fichero binario
(clientes.dat). El fichero contiene informacin de clientes a los que se les ha enviado la factura
y otros que se encuentran pendientes de facturacin.
El fichero de datos clientes.dat, una copia de seguridad del fichero de datos
clientesbu.dat, un programa para visualizar su contenido MostrarClientes.exe los ficheros
clientes.dat, clientesbak.dat y los programas examen.c pp y MostrarClientes.cpp (que nos
permite visualizar el contenido del fichero en cualquier momento de la ejecucin de
nuestro trabajo). Si se produce algn problema con el fichero de datos, ste se
puede recuperar a partir del fichero clientesbak.dat que contiene la misma informacin
que el fichero clientes.dat.
Estructura: struct fecha
{ int dia;
int mes;
int anio;
}T_FECHA;
struct cliente
{ char nombre[N];
long int dni;
int num_habitacion;
T_FECHA f_entrada;
T_FECHA f_salida;
char facturado;
}T_CLIENTE;
Datos: *** FICHERO CLIENTES HOTEL TODOS VUELVEN ***
Nombre dni num_hab fecha entrada fecha salida fact.
--------------- -------- ------- ------------- ------------ -----
Alejandro Sanz 11111111 37 3/ 1/2004 6/ 1/2004 n
Ana Torroja 22222222 55 22/ 2/2004 26/ 2/2004 s
Luis Cobos 33333333 14 25/ 2/2004 4/ 3/2004 n
Paco de Lucia 44444444 62 14/ 3/2004 15/ 3/2004 s
Sergio Dalma 55555555 33 27/ 4/2004 7/ 5/2004 n
Hay 3 clientes sin facturar
Presione una tecla para continuar . . .
Se trata de realizar un programa en C++ para presentar en pantalla la factura
del hotel a los clientes en los que figura una n en el campo facturado sabiendo que el
importe diario de la habitacin es de S/.100 ms IGV (18%). Las facturas aparecern una a una
separadas por un mensaje de Presione una tecla para continuar ... ms un borrado de
pantalla. Cada factura que presentemos en pantalla llevar implcita la actualizacin del fichero
clientes.dat en el sentido de cambiar la n por s en el campo facturado.
Si ejecutamos nuestro programa con los datos del fichero, obtendremos:
HOTEL TODOS VUELVEN RUC-XX.XXXXXXXX
==========================================================
Cliente: Alejandro Sanz DNI: 11111111
Habitacion: 37
Fecha de entrada: Sabado, 3 de enero de 2004
Fecha de salida: Martes, 6 de enero de 2004
Total dias: 3
Importe: S/.300.00 Nuevos soles
IGV: 54.00 Nuevos soles Total factura: 354.00 Nuevos soles
Presione una tecla para continuar ...
El fichero clientes.dat despus de la facturacin debe quedar sin registros por facturar, es
decir, su contenido final visualizado con el programa MostrarClientes.exe ser:
*** FICHERO CLIENTES HOTEL TODOS VUELVEN ***
Nombre dni num_hab fecha entrada fecha salida fact.
--------------- -------- ------- ------------- ------------ -----
Alejandro Sanz 11111111 37 3/ 1/2004 6/ 1/2004 s
Ana Torroja 22222222 55 22/ 2/2004 26/ 2/2004 s
Luis Cobos 33333333 14 25/ 2/2004 4/ 3/2004 s
Paco de Lucia 44444444 62 14/ 3/2004 15/ 3/2004 s
Sergio Dalma 55555555 33 27/ 4/2004 7/ 5/2004 s
Terminated with return code 0 Observar: Todos los registros
Press any key to continue ...
tienen s en el campo facturado.
Se pide realizar el siguiente proceso:
a) Codificar una funcin void Dia_de_la_semana (T_FECHA fecha, char dia_semana[]);
que reciba el da, mes y ao de una fecha vlida cualquiera (cliente.f_entrada por ejemplo) y
nos devuelva en la cadena de caracteres dia_semana, el da de la semana al que
se corresponde (Lunes, Martes, Miercoles, ... , Sabado o Domindo). Esta
funcin debe basar su funcionamiento en una llamada a una funcin que recibe un mes y un
ao vlidos y nos calcula el da de la semana que es el dia 1 de dicho mes. Esta funcin ya
est codificada en el fichero examen.c y devuelve el valor 1 se trata de un Lunes, un 2 es
Martes y as sucesivamente hasta el valor 7 que se refiere a un Domingo. El prototipo de la
funcin es:
int Dia_comienzo (int mes, int anio);.
b) Codificar una funcin int Dias_mes (int mes, int anio); que reciba el mes y el ao de una
determinada fecha y nos devuelva el nmero total de das que tiene dicho mes.
Recordar que febrero tiene 28 das excepto los aos bisiestos que tiene 29. Un
ao es bisiesto si es mltiplo de 4 excepto si es mltiplo de 100 no sindolo de 400.
c) Codificar una funcin int Dias_entre (T_FECHA entrada, T_FECHA salida); que reciba dos
fechas tipo T_FECHA y nos devuelva el nmero de das transcurridos entre mbas.
Es probable que esta funcin necesite realizar una llamada a la funcin anterior.
IMPORTANTE: Supondremos que las estancias en el hotel son siempre inferiores a un mes.
d) Codificar una funcin void Mes (int mes, char mes_en_letra[]); que reciba el valor de un
mes en nmero (cliente.f_entrada.mes por ejemplo) y nos devuelva en la cadena
de caracteres mes_en_letra, el mes al que se corresponde (enero, febrero,
marzo, abril,... , noviembre, diciembre).
e) Codificar un programa principal (int main (void)) que realice la facturacin
y la actualizacin indicadas a partir del fichero clientes.dat.
Se valorar:
El funcionamiento correcto del programa. (2 puntos )
El buen estilo en la codificacin y documentacin del programa. ( 1 punto )
El mximo control de las situaciones de error que se puedan presentar. Por ejemplo: al
abrir el fichero, al cerrarlo, al leer registros, etc. ( 1 punto )
Creacion de archivo (4 puntos)
Reporte de clientes (4 puntos)
Reporte de factura por cliente (4 puntos)
La siguiente pregunta (4 puntos)