El subprograma no da error al compilar, pero no funciona correctamente. Lo que ocure es que no se porque pero al meter los DNI en la estructura, no da ningun problema; los guarda correctamente.
Pero para dar de baja a un socio mediante el DNI, no consigo hacer que funcione(subprograma BajaSocios) para borrar el DNI que la persona te indique.
El código es el siguiente:
Pero para dar de baja a un socio mediante el DNI, no consigo hacer que funcione(subprograma BajaSocios) para borrar el DNI que la persona te indique.
El código es el siguiente:
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#define MAX_Socios 100
#define MAX_Cursos 10
#define TRUE 1
#define FALSE 0
//Declaración de estructuras
struct estructura_datos_socio
{
char nombre[40];
char DNI[10];
int TipoSocio;
}datos_socio[MAX_Socios];
//Variables Globales
int opcion,opcion1,opcion2,opcion3;
int contador=1;
//Prototipos de subprogramas
int Menu();
int GestSocios();
int GestCursos();
int InformesEconomicos();
void AltaSocios(struct estructura_datos_socio *datos_socio,int contador);
void BajaSocios(struct estructura_datos_socio *datos_socio, int contador);
void ModificacionSocios();
void ConsultaSocios(struct estructura_datos_socio *datos_socio,int contador);
void PagoMensual();
void SociosNormales();
void SociosJubilados();
void SociosINfantiles();
void GeneralSocios();
int main()
{
setlocale( LC_ALL, "Spanish" );
Menu();
return 0;
}
//Subprograma Menú
int Menu()
{
do{
printf("\n\t\tMENÚ PRINCIPAL");
printf("\n\n1.- Gestión de Socios");
printf("\n2.- Gestión de Cursos");
printf("\n3.- Informes Económicos");
printf("\n0.- Salir");
printf("\nOpcion a escoger: ");
scanf("%d",&opcion);
fflush(stdin);
switch (opcion)
{
case 1: system("cls");
GestSocios();
break;
case 2: system("cls");
GestCursos();
break;
case 3: system("cls");
InformesEconomicos();
break;
case 0: system("cls");
printf("\n\n\t\tGracias por utilizar la aplicación de \"GEST-GYM\"\n\n\t\t");
break;
default:
printf("\nOpcion incorrecta, introduzca otra...\n\n");
printf("\nPulse <intro> para volver al menu\n\n");
fflush(stdin);
getchar();
system("cls");
}
}while(opcion!=0);
return (opcion);
}
/**************************************************************************************************************
Subprograma de gestión de socios
***************************************************************************************************************/
/***********************************************************************************
Subprograma: GestSocios Tipo: void
Prerrequesitos: Opción 1 para ejecutar el subprograma
Objetivo: Presenta en la pantalla el submenú de gestión de socios
************************************************************************************/
int GestSocios()
{
do
{
printf("\tSUBMENÚ \"GESTION DE SOCIOS\"");
printf("\n\n1.- Alta");
printf("\n2.- Baja");
printf("\n3.- Modificación de datos de un socio");
printf("\n4.- Consulta de datos de un socio");
printf("\n5.- Pago Mensual");
printf("\n6.- Listado de Socios normales");
printf("\n7.- Listado de Socios jubilados");
printf("\n8.- Listado de Socios infantiles");
printf("\n9.- Listado General de Socios");
printf("\n0.- Volver al Menú Principal");
printf("\nOpcion a escoger: ");
scanf("%d",&opcion1);
fflush(stdin);
switch (opcion1)
{
case 1: system("cls");
AltaSocios(datos_socio,contador);
contador++;
system("cls");
break;
case 2: system("cls");
BajaSocios(datos_socio, contador);
contador--;
system("cls");
break;
case 3: system("cls");
ModificacionSocios();
system("cls");
break;
case 4: system("cls");
ConsultaSocios(datos_socio,contador);
system("cls");
break;
case 5: PagoMensual();
break;
case 6: SociosNormales();
break;
case 7: SociosJubilados();
break;
case 8: SociosInfantiles();
break;
case 9: GeneralSocios();
break;
case 0: ;
break;
default:
printf("\nOpcion incorrecta, introduzca otra...\n\n");
printf("\nPulse <intro> para volver al menu\n\n");
fflush(stdin);
getchar();
system("cls");
}
}while (opcion1!=0);
}
/**************************************************************************************************************
Subprograma de gestión de cursos
***************************************************************************************************************/
/***********************************************************************************
Subprograma: GestCursos Tipo: Submenú
Prerrequesitos: Opción 2 para ejecutar el subprograma
Objetivo: Presenta en la pantalla el submenú de gestión de cursos
************************************************************************************/
int GestCursos()
{
printf("\tSUBMENÚ \"GESTION DE CURSOS\"");
printf("\n\n1.- Alta");
printf("\n2.- Baja");
printf("\n3.- Modificación de datos de un curso");
printf("\n4.- Consulta de datos de un curso");
printf("\n5.- Listado General de Cursos");
printf("\n6.- Inscripción de socios a un curso");
printf("\n7.- Listado de socios que están apuntados a un curso");
printf("\n0.- Volver al Menú Principal");
printf("\nOpcion a escoger: ");
fflush(stdin);
scanf("%d",&opcion2);
system("cls");
}
/**************************************************************************************************************
Subprograma de infomes económicos
***************************************************************************************************************/
/***********************************************************************************
Subprograma: InformesEconomicos Tipo: Submenú
Prerrequesitos: Opción 3 para ejecutar el subprograma
Objetivo: Presenta en la pantalla el submenú de informes económicos
************************************************************************************/
int InformesEconomicos()
{
printf("\tSUBMENÚ \"INFORMES ECONOMICOS\"");
printf("\n\n1.- Informe Mensual(por cuotas básicas)");
printf("\n2.- Informe Mensual(de un curso)");
printf("\n3.- Informe Mensual(todos los cursos)");
printf("\n0.- Volver al Menú Principal");
printf("\nOpcion a escoger: ");
fflush(stdin);
scanf("%d",&opcion3);
system("cls");
}
/***********************************************************************************
Subprograma: AltaSocios Tipo: Procedimiento
Prerrequesitos: Opción 1 para ejecutar el subprograma
Objetivo: Pedir datos generales del socio(DNI,nombre y tipo)
************************************************************************************/
void AltaSocios(struct estructura_datos_socio *datos_socio,int contador)
{
int validacion;
char letraDNI;
printf("\t\"Alta de socios\"");
printf("\nIntroduzca su nombre: ");
fflush(stdin);
gets(datos_socio[contador].nombre);
do{
printf("\nTipo de socio:");
printf("\n\n1.- Normal");
printf("\n2.- Jubilado");
printf("\n3.- Infantil");
printf("\tIntroduce el tipo de socio: ");
scanf("%d",&datos_socio[contador].TipoSocio);
fflush(stdin);
if ((datos_socio[contador].TipoSocio >=1) && (datos_socio[contador].TipoSocio <=3))
{
validacion='v';
printf("\nTu tipo es %d", datos_socio[contador].TipoSocio);
getchar();
}
else
{
validacion='f';
printf("\nEl tipo introducido no es correcto");
getchar();
fflush(stdin);
system("cls");
}
}while(validacion=='f');
do{
printf("\nIntroduzca su DNI: ");
scanf("%s",datos_socio[contador].DNI);
fflush(stdin);
if (strlen(datos_socio[contador].DNI)==9)
{
validacion='v';
for (contador;datos_socio[contador].DNI<9;contador++)
printf("%c, %d\n", datos_socio[contador].DNI, isdigit(datos_socio[contador].DNI));
}
else
{
validacion='f';
printf("\nEl DNI introducido no es correcto");
getchar();
fflush(stdin);
system("cls");
}
}while(validacion=='f');
printf("Su DNI es: %s",datos_socio[contador].DNI);
printf("\nPulse <intro> para volver al menú");
getchar();
}
/***********************************************************************************
Subprograma: BajaSocios Tipo: Procedimiento
Prerrequesitos: Opción 2 para ejecutar el subprograma
Objetivo: Eliminar datos generales del socio(DNI,nombre y tipo)
************************************************************************************/
void BajaSocios(struct estructura_datos_socio *datos_socio, int contador)
{
int baja_socio;
int i=0;
int posicion;
printf("\n\tBaja de socios");
printf("\n\n\tIntroduzca el DNI del socio a modificar");
scanf("%s", &baja_socio);
for (i=0; i>MAX_Socios; i++)
{
if (datos_socio[i].DNI == baja_socio)
{
posicion=i;
for (i=posicion; i<MAX_Socios; i++)
{
datos_socio[i]= datos_socio[i+1];
fflush(stdin);
printf("\nSe ha borrado el socio correctamente.");
getchar();
system("cls");
break;
}
break;
}
if ((datos_socio[i].DNI!= baja_socio) && (i=MAX_Socios-1))
{
printf("\nEste DNI no se encuentra en nuestro registro.");
}
}
fflush(stdin);
getchar();
}
/***********************************************************************************
Subprograma: ModificacionSocios Tipo: Procedimiento
Prerrequesitos: Opción 3 para ejecutar el subprograma
Objetivo: Modificar datos generales del socio(DNI,nombre y tipo)
************************************************************************************/
void ModificacionSocios()
{
}
/***********************************************************************************
Subprograma: ConsultaSocios Tipo: Procedimiento
Prerrequesitos: Opción 4 para ejecutar el subprograma
Objetivo: Pedir datos generales del socio(DNI,nombre y tipo)
************************************************************************************/
void ConsultaSocios(struct estructura_datos_socio *datos_socio,int contador)
{
for (contador=1;contador<MAX_Socios;contador++)
{
fflush(stdin);
printf("Socio %i: %s",contador,datos_socio[contador].DNI);
getchar();
}
}
/***********************************************************************************
Subprograma: PagoMensual Tipo: Procedimiento
Prerrequesitos: Opción 5 para ejecutar el subprograma
Objetivo: Pedir datos generales del socio(DNI,nombre y tipo)
************************************************************************************/
void PagoMensual()
{
}
/***********************************************************************************
Subprograma: SociosNormales Tipo: Procedimiento
Prerrequesitos: Opción 6 para ejecutar el subprograma
Objetivo: Pedir el listado de socios normales
************************************************************************************/
void SociosNormales()
{
}
/***********************************************************************************
Subprograma: PagoMensual Tipo: Procedimiento
Prerrequesitos: Opción 7 para ejecutar el subprograma
Objetivo: Pedir el listado de socios jubilados
************************************************************************************/
void SociosJubilados()
{
}
/***********************************************************************************
Subprograma: SociosInfantiles Tipo: Procedimiento
Prerrequesitos: Opción 8 para ejecutar el subprograma
Objetivo: Pedir el listado de socios infantiles
************************************************************************************/
void SociosInfantiles()
{
}
/***********************************************************************************
Subprograma: PagoMensual Tipo: Procedimiento
Prerrequesitos: Opción 7 para ejecutar el subprograma
Objetivo: Pedir datos generales del socio(DNI,nombre y tipo)
************************************************************************************/
void GeneralSocios()
{
}