parcial ciencias de la computación

Upload: hilda-ana

Post on 29-Feb-2016

216 views

Category:

Documents


0 download

DESCRIPTION

Parcial ciencias de la computación

TRANSCRIPT

  • 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)