Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <wchar.h>
- #include <locale.h> //librerias necesarias para imprimir caracteres especiales
- #define max_clientes 20
- #define max_viajes 50
- int n,i;
- char nom_archivo[15];
- FILE *archivo;
- /************************************** STRUCTS **********************************************/
- struct cliente{
- char dni[9]; //Habrá un if para comprobar que el DNI introducido es único
- char nombre[20];
- char apellidos[80];
- char direccion[150];
- }clientes[max_clientes]; //Asumimos que habra un maximo de 10 clientes
- struct viaje{
- char identifiicador[20]; //identificador recoge el DNI, una id, diaf
- char ciudad[20];
- char hotel[15];
- char transporte[6];
- int numeroNoches[4];
- int precioAlojamiento[6];
- int precioDesplazamiento[6];
- }viajes[50]; //Asumimos que habra un maximo de 50 viajes disponibles
- /************************************** FUNCIONES VARIAS **********************************************/
- void ftiempo(){
- time_t tiempo = time(0);
- struct tm *tlocal = localtime(&tiempo);
- char output[128];
- strftime(output,128,"%d/%m/%y %H:%M:%S",tlocal);
- printf("\t\t\t\t\t\t\t\t\t\t\tHora actual: %s\n",output);
- }
- void cliente_n(int n)
- {
- clientes[n].dni[0]='\0';
- clientes[n].nombre[0]='\0';
- clientes[n].apellidos[0]='\0';
- clientes[n].direccion[0]='\0';
- return;
- }
- void viaje_m(int m)
- {
- viajes[m].identifiicador[0]='\0';
- viajes[m].ciudad[0]='\0';
- viajes[m].hotel[0]='\0';
- viajes[m].transporte[0]='\0';
- viajes[m].numeroNoches[0]='\0';
- viajes[m].precioAlojamiento[0]='\0';
- viajes[m].precioDesplazamiento[0]='\0';
- return;
- }
- /************************************** FUNCION PARA AÑADIR CLIENTES **********************************************/
- void aniadirCliente()
- {
- if(clientes[n].dni[0]=='\0'){
- printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
- gets(nom_archivo);
- fflush(stdin);
- //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
- archivo=fopen(nom_archivo,"rw");
- if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
- fprintf(stderr, "\n\nEl archivo no existe.");
- system("cls"); //En windows limpia pantalla
- }else
- {
- int i;
- printf("\n\nArchivo cargado correctamente.|\n");
- for(i=0; i<max_clientes;i++){
- fscanf(archivo,"\n %s %s %s %s",clientes[i].dni,clientes[i].nombre,clientes[i].apellidos,clientes[i].direccion);
- }
- for(i=0;i<max_clientes;i++)
- {
- if(clientes[i].dni[0]=='\0')
- {
- //Crear un nuevo cliente, lo mismo que antes los espacios con _
- puts("DNI:");
- scanf("%s", &clientes[i].dni);
- fprintf(archivo, "%s", clientes[i].dni);
- puts("Nombre:");
- scanf("%s", &clientes[i].nombre);
- fprintf(archivo, "%s", &clientes[i].nombre);
- puts("Apellidos:");
- scanf("%s", &clientes[i].apellidos);
- fprintf(archivo, "%s", &clientes[i].apellidos);
- puts("Direccion:");
- scanf("%s", &clientes[i].direccion);
- fprintf(archivo, "%s", &clientes[i].direccion);
- break;
- }
- }
- }
- }
- fclose(archivo);
- system("cls");
- }
- /************************************** FUNCION PARA AÑADIR VIAJES **********************************************/
- void nuevoViaje(){
- if(viajes[n].identifiicador[0]=='\0'){
- printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
- gets(nom_archivo);
- fflush(stdin);
- //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
- archivo=fopen(nom_archivo,"rw");
- if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
- fprintf(stderr, "\n\nEl archivo no existe.");
- system("cls"); //En windows limpia pantalla
- }else{
- int y;
- printf("\n\nArchivo cargado correctamente.\n");
- for(y=0; y<max_viajes;y++){
- fscanf(archivo,"\n %s %s %s %s %s %s %s",viajes[y].identifiicador,viajes[y].ciudad,viajes[y].hotel,viajes[y].transporte,viajes[y].numeroNoches,viajes[y].precioAlojamiento,viajes[y].precioDesplazamiento);
- }
- for(y=0;y<max_viajes;y++){
- if(viajes[y].identifiicador[0]=='\0'){
- //Crear un nuevo cliente, lo mismo que antes los espacios con _
- puts("Identificador:");
- scanf("%s", &viajes[y].identifiicador);
- fprintf(archivo, "%s \n", viajes[y].identifiicador);
- puts("Ciudad:");
- scanf("%s", &viajes[y].ciudad);
- fprintf(archivo, "%s \n", &viajes[y].ciudad);
- puts("Hotel:");
- scanf("%s", &viajes[y].hotel);
- fprintf(archivo, "%s \n", &viajes[y].hotel);
- puts("Transporte:");
- scanf("%s", &viajes[y].transporte);
- fprintf(archivo, "%s \n", &viajes[y].transporte);
- puts("Numero de noches:");
- scanf("%s", &viajes[y].numeroNoches);
- fprintf(archivo, "%s \n", &viajes[y].numeroNoches);
- puts("Precio alojamiento:");
- scanf("%s", &viajes[y].precioAlojamiento);
- fprintf(archivo, "%s \n", &viajes[y].precioAlojamiento);
- puts("Precio desplazamiento:");
- scanf("%s", &viajes[y].precioDesplazamiento);
- fprintf(archivo, "%s", &viajes[y].precioDesplazamiento);
- system("cls");
- break;
- }
- }
- }
- }
- fclose(archivo);
- }
- /************************************** FUNCION PARA LISTAR DATOS AGENCIA **********************************************/
- void listar_datos_agencia(){
- int i;
- printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
- fflush(stdin);
- gets(nom_archivo);
- //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
- archivo=fopen(nom_archivo,"rw");
- if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
- fprintf(stderr, "\n\nEl archivo no existe.");
- }else{
- printf("\n\nArchivo cargado correctamente.");
- printf("\n/******* AGENCIA DE VIAJES *******/\n");
- for(i=0;i<=max_clientes;i++){
- if(clientes[i].dni[0]!='\0'){
- printf("----------------------------------------------\n");
- printf("Cliente %s\n",clientes[i].dni);
- printf("----------------------------------------------\n");
- printf("Nombre: %s %s\n", clientes[i].nombre, clientes[i].apellidos);
- printf("Direccion: %s\n", clientes[i].direccion);
- printf("\n");
- printf("Viaje: %s\n", viajes[i].identifiicador);
- printf("Lugar: %s\n", viajes[i].ciudad);
- printf("Hotel: %s\n", viajes[i].hotel);
- printf("Nº noches: %s\n", viajes[i].numeroNoches);
- printf("Precio alojamiento: %s\n", viajes[i].precioAlojamiento);
- printf("Medio transporte: %s\n", viajes[i].transporte);
- printf("Precio transporte: %s\n", viajes[i].precioDesplazamiento);
- }
- }
- }
- }
- /************************************** FUNCION PARA CARGAR ARCHIVO **********************************************/
- void cargarArchivo(){
- if(clientes[n].dni[0]=='\0')
- {
- printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
- fflush(stdin);
- gets(nom_archivo);
- //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
- archivo=fopen(nom_archivo,"rw");
- if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
- fprintf(stderr, "\n\nEl archivo no existe.");
- }else{
- int i;
- printf("\n\nArchivo cargado correctamente.");
- for(i=0; i<max_clientes;i++){
- //Los datos teneis que ponerlos con _ porque no coge los espacios. Ej: Pelegrin_Castillo
- fscanf(archivo,"\n %s %s %s %s",clientes[i].dni,clientes[i].nombre,clientes[i].apellidos,clientes[i].direccion);
- }
- }
- }
- fclose(archivo);
- }
- /************************************** FUNCION PARA GUARDAR ARCHIVO **********************************************/
- void guardarArchivo(){
- printf("\nIntroduzca el nombre del fichero.\n\t");
- fflush(stdin);
- gets(nom_archivo);
- archivo=fopen(nom_archivo,"wb");
- fwrite(clientes,sizeof(clientes),1,archivo);
- //fwrite(viajes,sizeof(viajes),1,archivo);
- fclose(archivo);
- system("cls");
- }
- void listardatos(){
- int i;
- int i_max=20;
- printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
- gets(nom_archivo);
- fflush(stdin);
- system("cls");
- printf("\nLISTADO DE DATOS DE LA AGENCIA\n\t");
- gets(nom_archivo);
- for(i=0; i++; i=i_max){
- archivo=fopen(nom_archivo,"r");
- fread(clientes[i].dni, strlen(i)+1, 1, archivo);
- printf("%s\n", clientes[i].dni);
- }
- fclose(archivo);
- }
- void eliminarCliente(){
- if(clientes[n].dni[0]=='\0')
- {
- printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
- fflush(stdin);
- gets(nom_archivo);
- //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
- archivo=fopen(nom_archivo,"rw");
- if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
- fprintf(stderr, "\n\nEl archivo no existe.");
- }else{
- int i, y;
- char delcliente;
- for(i=0; i<max_clientes;i++){
- fscanf(archivo,"\n %s %s %s %s",clientes[i].dni,clientes[i].nombre,clientes[i].apellidos,clientes[i].direccion);
- }
- printf("Introduce el dni del cliente que deseas eliminar");
- scanf("%s", &delcliente);
- if(delcliente==clientes[i].dni){
- printf("Cliente Eliminado");
- //How to delete all of the client
- }
- else{
- printf("El dni introducido no coincide");
- }
- }
- }
- }
- int main()
- {
- setlocale(LC_ALL, ""); //De esta manera podremos mostrar por consola caracteres especiales
- for(n=0;n<max_clientes;n++){
- cliente_n(n);
- }
- char select;
- do{
- ftiempo();
- printf("\n\t*************************************************\n\t*\t\t MENU\t\t\t*\n\t*************************************************\n");
- printf("\t* a.-Nuevo cliente\t\t\t\t*\n");
- printf("\t* b.-Guardar fichero\t\t\t\t*\n");
- printf("\t* c.-Nuevo viaje\t\t\t\t*\n");
- printf("\t* d.-Eliminar viaje\t\t\t\t*\n");
- printf("\t* e.-Eliminar cliente\t\t\t\t*\n");
- printf("\t* f.-Cargar fichero\t\t\t\t*\n");
- printf("\t* g.-Listar datos\t\t\t\t*\n");
- printf("\t* h.-Cerrar programa\t\t\t\t*\n");
- printf("\t*************************************************");
- printf("\n\tIntroduce la opción que desea ejecutar: ");
- scanf("%c", &select);
- fflush(stdin);
- system("cls");
- switch (select)
- {
- case 'a':
- aniadirCliente();
- break;
- case 'b':
- guardarArchivo();
- break;
- case 'c':
- nuevoViaje();
- break;
- case 'd':
- eliminarCliente();
- break;
- case 'e':
- printf("\nELIMINAR VIAJE ");
- break;
- case 'f':
- cargarArchivo();
- break;
- case 'g':
- listar_datos_agencia();
- break;
- case 'h':
- break;
- /*default:
- printf("Caracter introducido invalido, introduce uno de estos caracteres entre la a y la h.\n\n");
- break;*/
- }
- }
- while (select != 'h');
- printf("\n\nHas cerrado el programa correctamente\n\n");
- fflush(stdin);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement