Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - grego027

#1
Hola Buenas Dias Tardes o Noches.....Necesito me ayuden con este proyecto....esta casi terminado...pero al ejecutarlo aparenta guardar los datos pero al momento que eligio la opcion mostrar los datos para modificarlos o eliminarlos ....no los muestra ...pareciera que los datos no se guardan....ese es el incoveniente no se si me estare equipovando al momento de utilizar el archivo FILE que es el que sirve como gestor de base de datos en C++.. El resto del codigo funciona a la perfeccion ..me eh quedado estancado ahi no se que mas modificar......de antemano muchas gracias por su gentil ayuda...:)...:)....(Y).
Código (cpp) [Seleccionar]

#include<conio.h>
#include<stdio.h>
#include<string.h>

struct estudiantes
{
int codigo;
char nombre[50];
char apellido[50];
char materia[50];
int curso;
int dia;
int mes;
int año;
float nota1;
float nota2;
float promedio;
char estado;
};//Fin de la estructura_estudiantes
char *password();
void validar();
void menu();
void ingresar();
void modificar();
void modi_materia();
void modi_curso();
void modi_nota();
void eliminar();
void consultar();
void lista_general();
void lista_nombre();
void lista_materia();
void lista_aprobados();
void lista_reprobados();
int valida(int, int, int);
int op, res, valor=0;
FILE *ptr;
struct estudiantes est;
long tam=sizeof(struct estudiantes);
void main()
{
 clrscr();validar();
 menu();
 getch();
 }
void menu()
{
 op=0;
 clrscr();
  do
  {
   printf("\n\n\t\t    DATA BASE_CISC_N2K");
   printf("\n\t\t    ******************");
   printf("\n\n\t\t1.- NUEVO REGISTRO");
   printf("\n\n\t\t2.- MODIFICAR REGISTRO");
   printf("\n\n\t\t3.- ELIMINAR REGISTRO");
   printf("\n\n\t\t4.- CONSULTAR");
   printf("\n\n\t\t5.- SALIR\n\t");
   printf("\n\n\t\t    Elija una opcion:[ ]");gotoxy(39,17);scanf("%d",& op);
   switch (op)
    {
     case 1:
           ingresar();
   menu();
           break;
     case 2:
           modificar();
           break;
     case 3:
           eliminar();
   menu();
   break;
     case 4:
   consultar();
     
     default : printf("\n\n\n\t\tMsg:OPCIÓN NO VÁLIDA...VUELVA A INTENTARLO.");
     getch();clrscr();
    }
  }while(op<1 || op>5);
  clrscr();
}

void ingresar() //DEFINICION DE LA FUNCION ingresar//
{
 int d, m, a, val;
 clrscr();
 ptr=fopen("estudiantes.dat","ab");
 if(ptr==NULL)
  printf("Error de apertura");
 else
 {
  fseek(ptr,0,SEEK_END);
  valor=ftell(ptr)/tam;
  est.codigo=valor+1;
  printf("\n\t\tCodigo de estudiante:\t%d", est.codigo);
  fflush(stdin);
  printf("\n\t\tIngrese nombre del estudiante:\n\t");
  gotoxy(20,4);gets(est.nombre);
  printf("\n\t\tIngrese apellido del estudiante:\n\t");
  gotoxy(20,8);gets(est.apellido);
  printf("\n\t\tIngrese materia del estudiante:\n\t");
  gotoxy(20,12);gets(est.materia);
  do
  {
   printf("\n\t\tIngrese el curso del estudiante:\n\t");
   gotoxy(20,16);scanf("%d",& est.curso);
  }while(est.curso<=0 && est.curso >8);
  do
  {
   printf("\n\t\tIngrese fecha de nacimiento del estudiante\n\n");
   printf("\n\t\tDia:\t");scanf("%d", & d);
   printf("\n\t\tMes:\t");scanf("%d", & m);
   printf("\n\t\tAño:\t");scanf("%d", & a);
   val=valida(d, m, a);
   if(val==0)
   printf("\n\t\tMessage:FECHA INCORRECTA...VUELVA A INTENTARLO \n\t");
   getch();clrscr();
  }while(val==0);est.dia= d;est.mes= m;est.año= a;
  }
  do
   {
    printf("\n\tINGRESE NOTA 1:\t");
    scanf("%f", &est.nota1);
   }while(est.nota1<0 || est.nota1>10);
  do
   {
    printf("\n\tINGRESE NOTA 2:\t");
    scanf("%f", &est.nota2);
   }while(est.nota2<0 || est.nota2>10);
  est.promedio=(est.nota1+est.nota2)/2;
  est.estado='A';
  fwrite(&est,tam,1,ptr);
  res=ferror(ptr);
  if(res==0){
   gotoxy(10,15);printf("Msg: REGISTRO GUARDADO");getch();}
  else
  { gotoxy(10,15);printf("Msg: NO SE GUARDO EL REGISTRO");
   clrscr();
  fclose(ptr);
 }
 getch();
}

void modificar()
{
op=0;
clrscr();
do
{
 gotoxy(25,5);printf("MODIFICAR REGISTRO");
 gotoxy(25,6);printf("__________________");
 gotoxy(25,10);printf("1.MODIFICAR MATERIA");
 gotoxy(25,11);printf("2.MODIFICAR CURSO");
 gotoxy(25,12);printf("3.MODIFICAR NOTAS");
 gotoxy(25,13);printf("4.SALIR");
 gotoxy(25,18);printf("Ingrese opcion:[ ]");gotoxy(41,18);scanf("%d",& op);
    switch (op)
     {
      case 1:
                modi_materia();
                menu();
                break;
      case 2:
                modi_curso();
menu();
                break;
      case 3:
                modi_nota();
                menu();
                break;
      case 4:
                menu();
     }
}while(op<1||op>4);
getch();clrscr();
}

void modi_materia()
{
int n;
clrscr();

lista_general();
ptr=fopen("estudiantes.dat","r+b");
if(ptr==NULL)
  printf("Error de apertura");
 else
 {
  fseek(ptr,0,SEEK_END);
  valor=ftell(ptr)/tam;
  do
   {
    gotoxy(30,5);printf("MODIFICAR MATERIA");
    gotoxy(30,6);printf("_________________");
    gotoxy(15,10);printf("INGRESE EL ID DE REGISTRO A MODIFICAR:[ ]");gotoxy(54,10);scanf("%d",&n);clrscr();
   }while(n<1 || n>valor);
   fseek(ptr,tam*(n-1),SEEK_SET);
   fread(&est,tam,1,ptr);
   gotoxy(20,3);printf("INFORMACION ACTUAL DEL ESTUDIANTE: %d",est.codigo);
   gotoxy(20,4);printf("____________________________________");
   printf("\n\n\n");
   printf("ID NOMBRE APELLIDO MATERIA\tCURSO\tF/NAC\t\tNOTA1\tNOTA2\tPROMEDIO\n\n");
   printf("\n\n%d %s %s %s\t %d\t %d-%d-%d\t %.2f\t %.2f\t %.2f" ,est.codigo
      ,est.nombre,est.apellido,est.materia,est.curso,est.dia,est.mes
      ,est.año,est.nota1,est.nota2,est.promedio);
   printf("\n\n\nPRESIONE UNA TECLA....");
   getch();
   fflush(stdin);
   printf("\n\tINGRESE NUEVA MATERIA\n\t");
   gets(est.materia);
   fseek(ptr,tam*(n-1),SEEK_SET);
   fwrite(&est,tam,1,ptr);
   res==ferror(ptr);
   if(res==0)
   printf("\n\tREGISTRO MODIFICADO");  
   else
    printf("\n\tERROR AL MODIFICAR REGISTRO");
   fclose(ptr);
   getch();
 }
 clrscr();
}

void modi_curso()
{
int n;
clrscr();
lista_general();
ptr=fopen("estudiantes.dat","r+b");
if(ptr==NULL)
  printf("Error de apertura");
 else
 {
  fseek(ptr,0,SEEK_END);
  valor=ftell(ptr)/tam;
  do
   {
    gotoxy(30,5);printf("MODIFICAR CURSO");
    gotoxy(30,6);printf("_________________");
    gotoxy(15,10);printf("INGRESE EL ID DE REGISTRO A MODIFICAR:[ ]");
    gotoxy(54,10);scanf("%d",&n);
    clrscr();
   }while(n<1 || n>valor);
   fseek(ptr,tam*(n-1),SEEK_SET);
   fread(&est,tam,1,ptr);
   gotoxy(20,3);printf("INFORMACION ACTUAL DEL ESTUDIANTE # %d",est.codigo);
   printf("\n\n");
   printf("ID NOMBRE APELLIDO MATERIA\tCURSO\tF/NAC\t\tNOTA1\tNOTA2\tPROMEDIO\n\n");
   printf("\n\n%d %s %s %s\t %d\t %d-%d-%d\t %.2f\t %.2f\t %.2f" ,est.codigo
      ,est.nombre,est.apellido,est.materia,est.curso,est.dia,est.mes
      ,est.año,est.nota1,est.nota2,est.promedio);
   printf("\n\n\nPRESIONE UNA TECLA PARA CONTINUAR");
   getch();
   fflush(stdin);
   printf("\n\tINGRESE NUEVO CURSO\n\t");
   do
    {
     scanf("%d",& est.curso);
    }while(est.curso<=0 && est.curso >8);
   fseek(ptr,tam*(n-1),SEEK_SET);
   fwrite(&est,tam,1,ptr);
   res==ferror(ptr);
   if(res==0)
    printf("\n\tREGISTRO MODIFICADO");
   else
    printf("\n\tERROR AL MODIFICAR EL REGISTRO");
   fclose(ptr);
   getch();
 }
 clrscr();
}
 void modi_nota()
{
int n;
clrscr();
printf("\n\n\n MODIFICACION DE CURSO:\n\t");
lista_general();
ptr=fopen("estudiantes.dat","r+b");
if(ptr==NULL)
  printf("Error de apertura");
 else
 {
  fseek(ptr,0,SEEK_END);
  valor=ftell(ptr)/tam;
  do
   {
    gotoxy(30,5);printf("MODIFICAR NOTAS");
    gotoxy(30,6);printf("_______________");
    gotoxy(15,10);printf("INGRESE EL ID DE REGISTRO A MODIFICAR:[ ]");gotoxy(54,10);scanf("%d",&n);clrscr();
   }while(n<1 || n>valor);
   fseek(ptr,tam*(n-1),SEEK_SET);
   fread(&est,tam,1,ptr);
   gotoxy(20,3);printf("INFORMACION ACTUAL DEL ESTUDIANTE # %d",est.codigo);
   printf("\n\n");
    printf("ID NOMBRE APELLIDO MATERIA\tCURSO\tF/NAC\t\tNOTA1\tNOTA2\tPROMEDIO\n\n");
   printf("\n\n%d %s %s %s\t %d\t %d-%d-%d\t %.2f\t %.2f\t %.2f" ,est.codigo
   ,est.nombre,est.apellido,est.materia,est.curso,est.dia,est.mes
   ,est.año,est.nota1,est.nota2,est.promedio);
   printf("\n\n\nPRESIONE UNA TECLA....");
   getch();
   fflush(stdin);
   printf("\n\tINGRESE NUEVAS NOTAS\n\t");
   do
   {
    printf("\n\tINGRESE NOTA 1:\t");
    scanf("%f", &est.nota1);
   }while(est.nota1<0 || est.nota1>10);
   do
   {
    printf("\n\tINGRESE NOTA 2:\t");
    scanf("%f", &est.nota2);
   }while(est.nota2<0 || est.nota2>10);
   est.promedio=(est.nota1+est.nota2)/2;
   fseek(ptr,tam*(n-1),SEEK_SET);
   fwrite(&est,tam,1,ptr);
   res==ferror(ptr);
   if(res==0)
    printf("\n\tREGISTRO MODIFICADO");
   else
    printf("\n\tERROR AL MODIFICAR EL REGISTRO");
   fclose(ptr);
   getch();
 }
 clrscr();
}
void eliminar()
{
 int num;
 clrscr();
 lista_general();
 ptr=fopen("estudiantes.dat","r+b");
 if(ptr==NULL)
  printf("Error de apertura");
 else
 {
  fseek(ptr,0,SEEK_END);
  valor=ftell(ptr)/tam;
  do
   {
   gotoxy(15,10);printf("INGRESE EL ID DE REGISTRO A ELIMINAR:[ ]");
   gotoxy(54,10);scanf("%d",&num);clrscr();
   }while(num<1 || num>valor);
   fseek(ptr,tam*(num-1),SEEK_SET);
   fread(&est,tam,1,ptr);
   printf("INFORMACION ACTUAL DEL ESTUDIANTE # %d",est.codigo);
   printf("\n\n");
   printf("ID NOMBRE APELLIDO MATERIA\tCURSO\tF/NAC\t\tNOTA1\tNOTA2\tPROMEDIO\n\n");
   printf("\n\n%d %s %s %s\t %d\t %d-%d-%d\t %.2f\t %.2f\t %.2f" ,est.codigo
   ,est.nombre,est.apellido,est.materia,est.curso,est.dia,est.mes
   ,est.año,est.nota1,est.nota2,est.promedio);
   printf("\n\n\nPRESIONE UNA TECLA PARA CONTINUAR");
   getch();
   est.estado='I';
   fseek(ptr,tam*(num-1),SEEK_SET);
   fwrite(&est,tam,1,ptr);
   res==ferror(ptr);
   if(res==0)
    printf("\n\n\tREGISTRO ELIMINADO");  

   else
    printf("\n\n\tERROR AL INTENTAR ELIMINAR EL REGISTRO");
   fclose(ptr);getch();
  }
  clrscr();
 }

void consultar()
{
op=0;
clrscr();
do
{
 gotoxy(30,5);printf("BUSCAR REGISTRO");
 gotoxy(30,6);printf("_______________");
 gotoxy(25,10);printf("1.CONSULTAR TODOS LOS CAMPOS");
 gotoxy(25,11);printf("2.CONSULTAR POR NOMBRE");
 gotoxy(25,12);printf("3.CONSULTAR POR MATERIA");
 gotoxy(25,13);printf("4.CONSULTAR APROBADOS");
 gotoxy(25,14);printf("5.CONSULTAR REPROBADOS");
 gotoxy(25,15);printf("6.SALIR");
 gotoxy(25,18);printf("Ingrese una opcion:[ ]");gotoxy(45,18);scanf("%d",& op);
    switch (op)
     {
      case 1:
               lista_general();
               break;
      case 2:
               lista_nombre();
break;
      case 3:
               lista_materia();
               break;
      case 4:
               lista_aprobados();
               break;
      case 5:
               lista_reprobados();
               break;
     }
}while(op!=6);
getch();clrscr();
}

void lista_general()
{
clrscr();
printf("\n\t\t\tCONSULTA GENERAL\n");
printf("\t\t\t****************"); printf("\n");
ptr=fopen("estudiantes.dat","rb");
if(ptr==NULL)
 printf("\nARCHIVO NO EXISTE");
else
{
 printf("\nID\tNOMBRES APELLIDOS MATERIA\tCURSO\tNOTA1\tNOTA2\tPROMEDIO\n\n");
 fread(&est,tam,1,ptr);
 while(feof(ptr)==0)
 {
  if(est.estado=='A')
   {
      printf("\n%d:\t%s %s\t %s\t %d\t %.2f\t%.2f\t%.2f",est.codigo
      ,est.nombre,est.apellido,est.materia,est.curso,est.nota1,est.nota2,est.promedio);
    printf("\n");
   }
  fread(&est,tam,1,ptr);
 }
 fclose(ptr);
}
printf("\n\n\nPRESIONE UNA TECLA PARA CONTINUAR.......");
getch();
clrscr();
}

void lista_nombre()
{
char nom[50];
int cont=0;
clrscr();
gotoxy(25,5);printf("CONSULTAR POR NOMBRE");
gotoxy(25,6);printf("********************");
ptr=fopen("estudiantes.dat","rb");
if(ptr==NULL)
  printf("\nARCHIVO NO EXISTE");
else
{
 fseek(ptr,0,SEEK_SET);
 fflush(stdin);
 gotoxy(10,10);printf("INGRESE EL NOMBRE DEL ESTUDIANTE:");
 gotoxy(43,10);gets(nom);clrscr();
 gotoxy(25,3);printf("RESULTADO DE LA CONSULTA");
 gotoxy(25,4);printf("________________________");
 printf("\n\nID\tNOMBRES APELLIDOS MATERIA\tCURSO\tNOTA1\tNOTA2\tPROMEDIO\n\n");
 fread(&est,tam,1,ptr);
 while(feof(ptr)==0)
 {
  if(est.estado=='A')
   {
    if(strcmp(est.nombre,nom)==0)
     {

printf("\n%d:\t%s %s\t %s\t %d\t %.2f\t%.2f\t%.2f",est.codigo
       ,est.nombre,est.apellido,est.materia,est.curso,est.nota1,est.nota2,est.promedio);
       printf("\n");
       cont++;
     }
    }
     fread(&est,tam,1,ptr);
 }
 fclose(ptr);
 if(cont==0)
 printf("\n\tALUMNO NO REGISTRADO");
 printf("\n\n\n\n\tPRESIONE UNA TECLA.....");
 getch();
}
clrscr();
}

void lista_materia()
{
char mat[50];
int cont=0;
clrscr();
gotoxy(25,5);printf("CONSULTA POR MATERIA");
gotoxy(25,6);printf("********************");
ptr=fopen("estudiantes.dat","rb");
if(ptr==NULL)
  printf("\nARCHIVO NO EXISTE");
else
{
 fseek(ptr,0,SEEK_SET);
 fflush(stdin);
 gotoxy(10,8);printf("INGRESE EL NOMBRE DE LA MATRIA:");
 gotoxy(41,8);gets(mat);clrscr();
 gotoxy(25,3);printf("RESULTADO DE LA CONSULTA");
 gotoxy(25,4);printf("________________________");printf("\n\n\n");
 printf("ID\tNOMBRE APELLIDOS MATERIA\tCURSO\tNOTA1\tNOTA2\tPROMEDIO\n\n");
 fread(&est,tam,1,ptr);
 while(feof(ptr)==0)
 {
  if(est.estado=='A')
   {
    if(strcmp(est.materia,mat)==0)
     {
printf("\n%d:\t%s %s\t %s\t %d\t %.2f\t%.2f\t%.2f",est.codigo
       ,est.nombre,est.apellido,est.materia,est.curso,est.nota1,est.nota2,est.promedio);
printf("\n");
       cont++;
     }
   }
    fread(&est,tam,1,ptr);
 }
 fclose(ptr);
 if(cont==0)
 printf("\n\tMATERIA NO REGISTRADA");
 printf("\n\n\n\n\tPRESIONE UNA TECLA.....");
 getch();
}
clrscr();
}

void lista_aprobados()
{
clrscr();
gotoxy(16,3);printf("RESULTADO DE LA CONSULTA DE ALUMNOS APROBADOS");
gotoxy(16,4);printf("_____________________________________________");printf("\n\n\n");
ptr=fopen("estudiantes.dat","rb");
if(ptr==NULL)
 printf("\nARCHIVO NO EXISTE");
else
{
printf("ID\tNOMBRE APELLIDOS MATERIA\tCURSO\tNOTA1\tNOTA2\tPROMEDIO\n\n");
 fread(&est,tam,1,ptr);
 while(feof(ptr)==0)
 {
   if(est.estado=='A')
   {
    if(est.promedio>=7)
     {
     printf("\n%d:\t%s %s\t %s\t %d\t %.2f\t%.2f\t%.2f",est.codigo
     ,est.nombre,est.apellido,est.materia,est.curso,est.nota1,est.nota2,est.promedio);
      printf("\n");
     }
   }
    fread(&est,tam,1,ptr);
 }
 fclose(ptr);
}
printf("\n\n\nPRESIONE UNA TECLA PARA CONTINUAR.......");
getch();clrscr();
}

void lista_reprobados()
{
clrscr();
gotoxy(16,3);printf("RESULTADO DE LA CONSULTA DE ALUMNOS REPROBADOS\n\n");
gotoxy(16,4);printf("_____________________________________________");printf("\n\n\n");
ptr=fopen("estudiantes.dat","rb");
if(ptr==NULL)
 printf("\nARCHIVO NO EXISTE");
else
{
 printf("ID\tNOMBRE APELLIDOS MATERIA\tCURSO\tNOTA1\tNOTA2\tPROMEDIO\n\n");
 fread(&est,tam,1,ptr);
 while(feof(ptr)==0)
 {
   if(est.estado=='A')
   {
    if(est.promedio<7)
     {
      printf("\n%d:\t%s %s\t %s\t %d\t %.2f\t%.2f\t%.2f",est.codigo
      ,est.nombre,est.apellido,est.materia,est.curso,est.nota1,est.nota2,est.promedio);
      printf("\n");
     }
    }
     fread(&est,tam,1,ptr);
 }
 fclose(ptr);
}
printf("\n\n\nPRESIONE UNA TECLA PARA CONTINUAR.......");
getch();clrscr();
}

int valida(int dd, int mm, int aa)
{
int aux;
 if(aa<=1954 || aa>=2015)
  return 0;
 if(mm<1 || mm > 12)
  return 0;
 switch(mm)
 {
  case 2:
          if((aa%4==0 && aa%100!=0)||(aa%400==0))
           aux=29;
          else
           aux=28;
          break;
  case 4: case 6: case 9: case 11:
          aux=30;
          break;
  default:
   aux=31;
 }
 if(dd<1 || dd>aux)
 return 0; return 1;
}


void validar()
  {
   char usuario[10],pass[8],x;
   gotoxy(26,5);printf("Universidad de Guayaquil");
   gotoxy(18,6);printf("Facultad de Ciencias Matemáticas y Físicas");
   gotoxy(15,7);printf("Carrera de Ingeniería en Sistemas Computacionales -");
   gotoxy(27,8);printf("Ingenieria en Networking");
 
   gotoxy(15,10);printf("***************************************************");
   gotoxy(18,12);printf("DATABASE_CINTN2K");
   gotoxy(18,13);printf("Login:");
   gotoxy(28,26);printf("                 ");
   gotoxy(35,18);printf("Username:");gotoxy(44,18);scanf("%s",&usuario);
   gotoxy(35,20);printf("Password:");
   
   char *pass1 = password();
   if((strcmp(usuario,"ADMIN")==0)&&(strcmp(pass1,"0927")==0))
   {
    clrscr();
    gotoxy(30,22);printf("Msg: USUARIO AUTENTICADO CORRECTAMENTE");
    gotoxy(30,23);printf("______________________________________");
    getch();
    menu();
    getch();
    clrscr();
   }
   else
   {
    clrscr();
    gotoxy(35,22);printf("Msg: ACCESO DENEGADO AL SISTEMA");
    gotoxy(35,23);printf("_______________________________");
    getch();
    gotoxy(35,22);printf("                                     ");
    gotoxy(35,23);printf("                                     ");
    validar();
    }
  }

char * password()
{
char *aux = new char[10];
int car = 0 ;
int i = 0;
while(((car = getch()) != 13) && i < 10)
{
 aux[i] = car;
 printf("*");
 i++;
 }
  if(i == 0)
  {
   delete aux;
   return NULL;
   }
   aux[i] = NULL;
   return aux;
}
[/code ]
#2
Desearia que me ayuden en esta funcion de antemano gracias....se trata de un programa que me tiene que mostrar en dos funciones tipo retorna y recibe una serie de n elementos pares positivos eh intentado de varias maneras y pues se me ah complicado....ehh....si me ejecuta pero no me sale los valores pares me salen otros valores que no vienen al caso aqui les dejo la codificacion gracias....

#include<stdio.h>
#include<conio.h>
int fibo (int n ,char a[100]);
main()
{
char a[100];
     int n=0,i=0,l=0;
      printf("\n\t\tNUMEROS PARES POSITIVOS\n\t\t");
      printf("\n\t\tIngrese el Numero de terminos de la serie:\n\t\t");
      scanf("%d",&n);
      printf("\n");
     
      for(i=0;i<n;i++)  
      {
 
printf("\n\t[%d]",a[i]);
}
a[i]=fibo(n,a);
 
      getch();
      return 0;
     /*la funcion recibe los parametros*/
}
int fibo(int n,char a[100])
{

   int i=0;
   printf("\n\tpresione una tecla para continuar");
   a[0]=2;
   for(i=0;i<n;i++)
{
if((a[i]%2)==0)
a[i];
}
return a[i];
   /* la subfuncion retorna parametros*/
}