Aquí dejo el ejercicio:
Disponemos de tres ficheros binarios,uno de clientes (CLIENTES.DAT),otro de artículos y el fichero de facturas. Los artículos que pertenezcan a la misma factura tendrán el mismo número de facturas, por tanto, habrá tantos registros con el mismo Nº de Factura como artículos tenga una factura.
struct cli{ //Registro de clientes
int Cod_Cli; //Código del artículo
char nombre[25];
char ciudad[25];
}vcli;
struct art{ //Registro de artículos
int Cod_Art; //Código del cliente
char nom_Art[25];
int precio;
int existencias;
}vart;
struct fact{
int N_Fact; //Nº de Factura
int Cod_Art; //Código del artículo
int Cod_Cli; //Código del cliente
int Can_Art; //Cantidad de artículos
}vfact;
struct nodo{
fact factura;
nodo *sig;
}*list;
Utilizando la Programación Orientada a Objetos, se pide:
- Cargar el fichero de facturas y de artículos si no existen.
- Método para dar altas en el fichero de facturas.
- Métodos para crear una lista enlazada, para lo cual leemos los datos del fichero de facturas y los pasamos a la lista, insertándolos ordenados por el Nº de Factura.
- Consultar facturas en la lista enlazada entrando el Nº de Factura. Nótese que la lista está ordenada por el Nº de Factura y que cada artículo que pertenece a la factura tiene un nodo con el mismo Nº de Factura. Los datos del cliente habrá que ir a buscarlos al fichero de clientes y se localizarán por el código del cliente que está en la factura. Lo mismo ocurrirá con los datos del artículo.
El programa debe presentar aproximadamente en el centro de la pantalla el siguiente menú:
APLICACIÓN DE FACTURAS
X- CARGAR ARTÍCULOS Y CLIENTES
A- ALTAS DE FACTURAS
L- CREAR LA LISTA ENLAZADA DE FACTURAS
C- CONSULTA POR EL Nº DE FACTURA
-No se puede dar de alta a una factura que no exista el artículo o el cliente.
-Utilizar la programación orientada a objetos.
-Validar los datos de entrada.
-Utilizar transferencia de parámetros en las funciones. Evitar utilizar variables globales si no está justificado.
PD: Casi que me va la vida en este ejercicio. Si no lo podeis resolver escribidme un mail , diciendome otro foro o e alguien que si me lo pueda resolver.
De corazón GRACIAS.




