Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: gwennnnnn26 en 12 Mayo 2017, 14:03 pm



Título: como hago que se enlisten datos en C
Publicado por: gwennnnnn26 en 12 Mayo 2017, 14:03 pm
Hola chicos sigo con el mismo tema, tengo mi codigo pero ahora quisiera saber si me pueden ayudar a decirme como puedo enlistar los datos que se guardan, miren hay diferentes menus este codigo si compila bien pero por ejemplo en el menu que dice "ingresar como usuario" en la parte donde dice ingresar como nuevo usuario ahi pide una serie de datos ahi es donde tengo problema porque cuando uno ingresa como administrador en el menú dice "ver lista de todos los usuarios" ESE ES MI PROBLEMA  que no se como se haga :( me ayudarian explicandome y poniendo un ejemplo ***OJO porque luego se enojan no estoy diciendo que me lo hagan ***

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. char linea[100];
  7. int cont=-1;
  8. int cont_ad=-1;
  9.  
  10. void presentacion(void);
  11. void menu (void);
  12. void administrador1 (void);
  13. void administrador (void);
  14. void usuario (void);
  15. void leer (void);
  16.  
  17. struct
  18. {
  19.  char nombre_terminal[50];
  20.  char nombre[81];
  21.  char usuario[81];
  22.  char contra_usuario[30];
  23.  char tarjeta[30];
  24. }ficha[1000];
  25.  
  26. int main ()
  27. {
  28.  menu();
  29.  leer();
  30.  return 0;
  31. }
  32.  
  33. void menu (void)
  34. {
  35.  int opcion;
  36.  system("clear");
  37.  sleep(1);
  38.  system("clear");
  39.  printf("\n\t\tBienvenido a BLABLA, Renta motocicletas ecológicas\n");
  40.  printf("\n\t\t\t      ______________________\n");
  41.  printf("\t\t\t     |_-_-_-_-_-_-_-_-_-_-_ |\n");
  42.  printf("\t\t\t    | SELECCIONA UNA OPCION: | \n");
  43.  printf("\t\t\t     |_-_-_-_-_-_-_-_-_-_-_ |\n");
  44.  printf("\t\t\t      ======================\n");
  45.  printf("\n\t  ===================================================================== \n ");
  46.  printf("\t ||                                                    -MENU PRINCIPAL ||");
  47.  printf("\n\t || 0. Salir del programa > ESCRIBIR [0 + Enter]                       || ");
  48.  printf("\n\t || 1. Ingresar como Administrador > ESCRIBIR [1 + Enter]              || ");
  49.  printf("\n\t || 2. Ingresar como Usuario > ESCRIBIR [2 + Enter]                    || ");
  50.  printf("\n\t || 3. Pantalla de instrucciones  > [ESCRIBIR (3 + Enter)]             ||\n ");
  51.  printf("\t ||                                                                    ||");
  52.  printf("\n\t  =====================================================================  ");
  53.  printf("\n\n\t\t\t\t\t>");
  54.  scanf("%d",&opcion);
  55.  getchar();
  56.  if (opcion == 0)
  57.    {
  58.      system("clear");
  59.      printf("\n\n\tGracias por su preferencia\n\n");
  60.      exit(-1);
  61.    }
  62.  if (opcion == 1)
  63.    {
  64.      system("clear");
  65.      administrador();
  66.    }
  67.  if (opcion == 2)
  68.    {
  69.      system("clear");
  70.      usuario();
  71.    }
  72.  if (opcion == 3)
  73.    {
  74.      system("clear");
  75.      presentacion();
  76.    }
  77. }
  78.  
  79. void presentacion (void)
  80. {
  81.  //en este apartado se muestra en la pantalla las instrucciones generales del funcionamiento de las motocicletas
  82.  //se puede ver como se limpia la pantalla cada que avanza el programa para que no se sature de ontenido el monitor
  83.  int m;
  84.  printf("\n\n\t BIENVENID@S AL PROGRAMA DE LALALALAS ECOLOGICAS \n\n"); //bienvenida
  85.  printf("lea cuidadosamente lo siguiente \n\n");
  86.  printf("\n\t--------------------------------------------------------------------\n");//pag 1
  87.  printf("\t|                          INSTRUCCIONES:                          |\n");
  88.  printf("\t| En este programa puedes rentar una motocicleta ecologica para ti |\n");
  89.  printf("\t| dentro de las sucursales registradas del progrma, para esto cada |\n");
  90.  printf("\t| persona debe de darse de alta como usuario o en dado caso de que |\n");
  91.  printf("\t| el usuario tenga una cuenta existente solo debe ingresar, luego  |\n");
  92.  printf("\t| un menú se desglosa para poder seleccionar una accion cualquiera.|\n");
  93.  printf("\t|                                                                  |\n");
  94.  printf("\t| La renta de las motocicletas es por una hora, si se sobrepasa el |\n");
  95.  printf("\t| tiempo entonces se cobrara una multa de $ 2,000 por hora que sea |\n");
  96.  printf("\t| excedida, asi mismo el propietario de la renta debe regresar las |\n");
  97.  printf("\t| motocicletas en buen estado y seran evaluadas si estan bien o no |\n");
  98.  printf("\t| finalmente solo el un administrador puede manejar el control del |\n");
  99.  printf("\t| ordenamiento de los datos prioritarios, es decir que si tiene en |\n");
  100.  printf("\t| su cuenta alguna multa, el indicado para poder manipularlo es el |\n");
  101.  printf("\t| administrador no el usuario.                               pag.1 |\n");
  102.  printf("\t--------------------------------------------------------------------\n");
  103.  printf("\n\t---------------------------------------------------------------------\n");// pag 2
  104.  printf("\t| Dentro de las funciones que el administrador tiene como prioridad |\n");
  105.  printf("\t| realizar en el programa, estan las siguientes: 1 Agregar una moto-|\n");
  106.  printf("\t| estacion, 2 Eliminar una moto-estacion, 3 Usuarios registrados en |\n");
  107.  printf("\t| el sistema, 4 Numero de motos en Bodega y en reparacion, 5 status |\n");
  108.  printf("\t| de moto-estaciones, 6 Salir y actualizar el contenido.            |\n");
  109.  printf("\t|                                                                   |\n");
  110.  printf("\t| Dentro de las funciones que hace el usuario, estan las siguientes:|\n");
  111.  printf("\t| 1 ver los adeudos, 2 rentar motocicleta.                          |\n");
  112.  printf("\t|                                                                   |\n");
  113.  printf("\t| Tanto 'Usuario' como 'Administrador' deben de tener una cuenta ya |\n");
  114.  printf("\t| que el operador debe distinguir quien desea ingresar, este perfil |\n");
  115.  printf("\t| te muestra entonces tus respectivas funciones. Todas las motos se |\n");
  116.  printf("\t| almacenan en una bodega y si tienen fallas se mandan reparar, asi |\n");
  117.  printf("\t| las motocicletas cuando son arregladas vuelven a la bodega.       |\n");
  118.  printf("\t|                                                             pag.2 |\n");
  119.  printf("\t---------------------------------------------------------------------\n");
  120.  printf("\n\tENTERADO... \n");
  121.  getchar();
  122.  printf("  Menu principal [1 + Enter] Salir [0 + Enter] \n");
  123.  scanf("%d",&m);
  124.  if (m == 1)
  125.    menu();
  126.  if (m == 0)
  127.   {
  128.    system("clear");
  129.    printf("\n\n\tGracias por su preferencia\n\n");
  130.    exit(-1);
  131.   }
  132. }
  133.  
  134. void administrador ()
  135. {
  136.  int Filtro,usuario = 12345,password,con = 0;
  137.  
  138.  printf("\n\n\t\t\t\t BIENVENIDO A ADMINISTRADOR ... \n");
  139.  printf("\n\t  ========================================================================= \n ");
  140.  printf("\t ||                                                                        ||");
  141.  printf("\n\t || 0. Salir del programa y actualizar contenido > [ESCRIBIR (0 + Enter)]  || ");
  142.  printf("\n\t || 1. Ingresar como administrador > [ESCRIBIR (1 + Enter)]                || ");
  143.  printf("\n\t || 2. Volver al menu > [ESCRIBIR (2 + Enter)]                             || ");
  144.  printf("\n\t ||                                                                        ||\n");
  145.  printf("\t  =========================================================================  ");
  146.  printf("\n\n\t\t\t\t\t>");
  147.  scanf("%d",&Filtro);
  148.  switch(Filtro){
  149.  
  150.  case 0:
  151.  system("clear");
  152.  printf("\n\n\tGracias por su preferencia\n\n");
  153.  exit(-1);
  154.  break;
  155.  
  156.  case 1:
  157.  printf("\n\n\t\tUsuario: \n");
  158.  printf("\t\tADMINISTRADOR \n");
  159.  do {
  160.  printf("\n\tpara ingresar dame la clave: \n\t\t>");
  161.  scanf("%d",&password);
  162.  con = con + 1;
  163.  } while ((usuario != password)&&(con <= 4));
  164. if (usuario == password)
  165. {
  166. printf("\n\n\tiniciando sesion ... \n");
  167. sleep(3);
  168. administrador1 ();
  169. }
  170. else
  171. {
  172. printf("\n\tpassword incorrecto e ingresado mas de 5 veces... \n");
  173. printf("\n\t<<< VOLVIENDO AL MENU PRINCIPAL >>> \n");
  174. sleep(4);
  175. menu();
  176. }
  177.  break;
  178.  
  179.  case 2:
  180.  system("clear");
  181.  menu();
  182.  break;
  183. }
  184.  
  185.  
  186. }
  187.  
  188. void administrador1 ()
  189. {
  190. char aux[30];
  191. int seleccion,elimina,o,i,u,moto,j;
  192.  system("clear");
  193.  printf("\n\n\t\t\t\t PANEL DE ADMINISTRADOR ... \n");
  194.  printf("\n\t  ========================================================================= \n ");
  195.  printf("\t ||                                                                        ||");
  196.  printf("\n\t || 0. Salir del programa y actualizar contenido > [ESCRIBIR (0 + Enter)]  || ");
  197.  printf("\n\t || 1. Agregar una moto-estacion  > [ESCRIBIR (1 + Enter)]                 || ");
  198.  printf("\n\t || 2. Eliminar una moto-estacion > [ESCRIBIR (2 + Enter)]                 || ");
  199.  printf("\n\t || 3. Lista de usuarios registrados > [ESCRIBIR (3 + Enter)]              || ");
  200.  printf("\n\t || 4. Numero de motos en bodega y en reparacion > [ESCRIBIR (4 + Enter)]  || ");
  201.  printf("\n\t || 5. Status de moto-estaciones existentes > [ESCRIBIR (5 + Enter)]       || ");
  202.  printf("\n\t || 6. Manipular motos > [ESCRIBIR (6 + Enter)]                            || ");
  203.  printf("\n\t || 7. Volver al menu principal y actualizar > [ESCRIBIR (7 + Enter)]      ||\n ");
  204.  printf("\t ||                                                                        ||");
  205.  printf("\n\t  =========================================================================  ");
  206.  printf("\n\n\t\t\t\t\t\t\t     %d Terminales registradas\n",cont_ad+1);
  207.  printf("\n\n\t\t\t\t\t>");
  208.  scanf("%d",&seleccion);
  209.  
  210.  switch(seleccion){
  211.  
  212.  case 0:
  213.      system("clear");
  214.      printf("\n\n\tGracias por su preferencia \n\n");
  215.      exit(-1);
  216.      break;
  217.  
  218.  case 1:
  219.      system("clear");
  220.      printf("\n\tAgregar una terminal \n");
  221.      printf("Introduce la ubicacion de la moto-estacion nueva:\n");
  222.      getchar();
  223.      gets(ficha[cont_ad+1].nombre_terminal);
  224.      cont_ad++;
  225.      printf("\nEsta el la moto-estacio numero %d\n",cont_ad+1); //agregue esta linea porque al momento de eliminar busca por numero
  226.      printf("<<<AGREGANDO 10 MOTOS POR DEFAULT>>> \n\n");
  227.          printf("Asignando motos ecologicas por default \n");
  228.  printf("El numero de serie de cada una es:  \n");
  229.  for (u = 0; u<=10 ; u++)
  230.  {
  231.  printf("El numero de serie de la moto numero %d es: %d  \n",u,1000+u);
  232.  }
  233.      printf("_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_\n");
  234.      printf("Moto-estacion dada de alta, ahora el usuario puede ver la nueva terminal\n");
  235.      printf("_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_\n");
  236.      sleep(1);
  237.      administrador1 ();
  238.     break;
  239.  
  240.  case 2:
  241.     system("clear");
  242.     printf("\n\tEliminar moto-estacion \n");
  243.     printf("\tDame el numero de motoestacion que deseas eliminar \n");
  244.     scanf("%d",&elimina);
  245.     for (j=elimina-1;j<cont_ad;j++){
  246. strcpy(ficha[j].nombre_terminal,ficha[j+1].nombre_terminal);
  247. }
  248.     cont_ad--;
  249.     printf("\tTerminal eliminada, Gracias\n");
  250.     sleep(3);
  251.     administrador1 ();
  252.    break;
  253.  
  254.  case 3:
  255.     system("clear");
  256.     printf("\tUsuarios dados de alta hasta el momento...\n");
  257.     sleep(1);
  258.     administrador1 ();
  259.     break;
  260.  
  261.  case 4:
  262.     system("clear");
  263.     printf("\tTotal de motos extre:\n\t Total de motos en bodega (disponibles):\n\t Total de motos en Reparacion (No disponibles):\n");
  264.     sleep(1);
  265.     administrador1 ();
  266.     break;
  267.  
  268.  case 5:
  269.     system("clear");
  270.     printf("\n\tEstatus de moto estaciones> datos informativos\n\n");
  271.     printf("Estas son las motoestaciones registradas: \n");
  272.     for (j=0 ;j<cont_ad+1;j++){
  273.     printf("%d.- %s \n",j+1,ficha[j].nombre_terminal);
  274.     }
  275.     printf("selecciona el numero de la motoestacion que deseas consultar. [# + Enter] \n");
  276.     sleep(3);
  277.     administrador1 ();
  278.     break;
  279.  
  280.  case 6:
  281.  break;
  282.  
  283.  case 7:
  284.     system("clear");
  285.     menu();
  286.     break;
  287. }
  288. }
  289.  
  290.  
  291. void usuario ()
  292. {
  293.  int  j,seleccion,r,seleccion1,buscar,comparar;
  294.  char usu[81],ubicacion[81],con_usu[81];
  295.  
  296. // buscar  = 0;
  297.  system("clear");
  298.  do{
  299.    printf("\n\n\t\t\t\t PANEL DEL USUARIO ... \n");
  300.    printf("\n\t  ========================================================================= \n ");
  301.    printf("\t ||                                                                        ||");
  302.    printf("\n\t || 0. Salir del programa y actualizar contenido > [ESCRIBIR (0 + Enter)]  || ");
  303.    printf("\n\t || 1. Registrarse como nuevo usuario  > [ESCRIBIR (1 + Enter)]            || ");
  304.    printf("\n\t || 2. Iniciar sesion como usuario > [ESCRIBIR (2 + Enter)]                || ");
  305.    printf("\n\t || 3. Volver al menu principal y actualizar > [ESCRIBIR (3 + Enter)]      ||\n ");
  306.    printf("\t ||                                                                        ||");
  307.    printf("\n\t  =========================================================================  ");
  308.    printf("\n\n\t\t\t\t\t\t\t     %d Datos registrados\n",cont+1);
  309.    printf("\n\n\t\t\t\t\t>");
  310.    scanf("%d",&seleccion);
  311.    getchar();
  312.    switch(seleccion){
  313.      /***********************Salir*******************************/
  314.    case 0:
  315.      system("clear");
  316.      printf("\n\n\tGracias por su preferencia\n\n");
  317.      leer();
  318.      exit(-1);
  319.      break;
  320.      /************************Solicitar datos*********************************/
  321.    case 1:
  322.      system("clear");
  323.      puts("\t        Registrarse...       \n");
  324.      printf("Introduce tu nombre:\n");
  325.      gets(ficha[cont+1].nombre);
  326.      printf("Introduce el usuario:\n");
  327.      gets(ficha[cont+1].usuario);
  328.      printf("Introduce la contraseña:\n");
  329.      gets(ficha[cont+1].contra_usuario);
  330.      printf("Introduce numero de tarjeta:\n");
  331.      gets(ficha[cont+1].tarjeta);
  332.      printf("Introduce [Enter] para continuar:\n");
  333.      getchar();
  334.      printf("_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_\n");
  335.      printf("Ahora estas dado de alta y el administrador puede ver tu informacion\n");
  336.      printf("_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_\n");
  337. //      printf("nombre> %s\n",ficha[cont].nombre);
  338. //      printf("contra> %s\n",ficha[cont].contra_usuario);
  339. //      printf("usuario> %s\n",ficha[cont].usuario);
  340.  
  341. FILE* archivo;
  342. archivo=fopen("lalalala.txt","at");
  343. fprintf(archivo,"%s\n",ficha[cont+1].nombre);
  344. fprintf(archivo,"%s\n",ficha[cont+1].usuario);
  345. fprintf(archivo,"%s\n",ficha[cont+1].contra_usuario);
  346. fprintf(archivo,"%s\n",ficha[cont+1].tarjeta);
  347. fclose(archivo);
  348. cont++;
  349.      sleep(3);
  350.      system("clear");
  351.      break;
  352.  
  353.      /**************************Ingresar*************************/
  354.    case 2:
  355.      system("clear");
  356.      printf("\n\t\t          Ingresar...          \n\n");
  357.      printf("\tDame el usuario registrado:\n\t>");
  358.      gets(usu);
  359.      buscar=strcmp(ficha[cont].usuario,usu);
  360.       if(buscar != 0){
  361. printf("error \n");
  362.       }
  363.        else {
  364. printf("\tIngresa la contrasena del usuario: \n\t>");
  365. gets(con_usu);
  366. comparar=strcmp(ficha[cont].contra_usuario,con_usu);
  367. system("clear");
  368. if(comparar == 0 ){
  369.          printf("\tBIENVENIDO USUARIO \n");
  370.          printf("Que accion deseas realizar:\n");
  371.  printf("_-_-_-_-_-_-_-_\n");
  372.          printf("1.Ver adeudos\n2.Rentar Moto\n3.Regresar moto\n");
  373.          printf("_-_-_-_-_-_-_-_\n");
  374.  scanf("%d",&seleccion1);
  375.  getchar();
  376.  if(seleccion1==1){
  377.    printf("Los adeudos de esta cuenta son...\n");
  378.    sleep(1);
  379.  }
  380.  if(seleccion1==2){
  381.    printf("Nuestras terminales son:\n");
  382.    sleep(1);
  383. //mprimir las terminales existentes
  384.    printf("Dame el nombre de la terminal que deseas:\n");
  385.    gets(ubicacion);
  386.    printf("ATENCION: RECUERDA QUE LA RENTA ES POR 1 HORA, CON EL 100 PORCIENTO DE SU BATERIA Y\n");
  387.    printf("A PARTIR DE LA PRIMER HORA EXCEDIDA, SE COBRAN $2000 POR CADA HORA ADICIONAL \n\n");
  388.    printf("\tQuieres continuar... (si [1 + Enter], no [2 + Enter]):\n");
  389.            printf("\n\n\t\t\t\t\t>");
  390.    scanf("%d",&r);
  391.    if(r==1){
  392.      printf("Su moto esta apartada por una hora\nEsperamos su llegada\nGracias por rentar con BLABLA\n");
  393.      printf("\n\t<<<REGRESANDO AL PANEL DEL USUARIO>>>\n");
  394.      sleep(6);
  395.      usuario();
  396.    }
  397.   else{
  398.     printf("\n\t<<<REGRESANDO AL PANEL DEL USUARIO>>>\n");
  399.     sleep(2);
  400.     usuario();
  401.    }
  402.  }
  403. }
  404. }
  405.  
  406.      system("clear");
  407.      break;
  408.      /********************volver al menu****************************/
  409.    case 3:
  410.      menu();
  411.      break;
  412.    }//fin switch
  413.  }while (seleccion!=0);
  414. }//fin programa
  415.  
  416.  
  417. void leer (void)
  418. {
  419.  
  420. char linea[50];
  421. cont=-1;
  422. cont_ad=-1;
  423.  
  424. FILE *archivo;
  425. archivo = fopen("lalalala.txt","rt");
  426. if (archivo != NULL){
  427. while (!feof (archivo)){
  428. fgets(linea,80,archivo);
  429. if (feof(archivo))break;
  430. if (strlen(linea)>0)
  431. linea[strlen(linea)-1]='\0';
  432. strcpy(ficha[cont+1].nombre,linea);
  433.  
  434. fgets(linea,80,archivo);
  435.        if (feof(archivo))break;
  436.        if (strlen(linea)>0)
  437.        linea[strlen(linea)-1]='\0';
  438.        strcpy(ficha[cont+1].usuario,linea);
  439.  
  440. fgets(linea,80,archivo);
  441.        if (feof(archivo))break;
  442.        if (strlen(linea)>0)
  443.        linea[strlen(linea)-1]='\0';
  444.        strcpy(ficha[cont+1].contra_usuario,linea);
  445.  
  446. fgets(linea,80,archivo);
  447.        if (feof(archivo))break;
  448.        if (strlen(linea)>0)
  449.        linea[strlen(linea)-1]='\0';
  450.        strcpy(ficha[cont+1].tarjeta,linea);
  451. /*
  452.  
  453.  
  454.  
  455.  
  456.  
  457. fgets(linea,80,archivo); //asignar 80 espacios para el nombre de la cancion
  458. if(feof(archivo))break;//revisa si se encuentra al final del archivo
  459. if(strlen(linea)>0)// evalua la linea
  460. linea[strlen(linea)-1]='\0';// y acomoda en la posicion correspondiente (blanco) el nombre en este caso
  461. strcpy(ficha[ultimaficha+1].nombre_cancion,linea); // registra el nombre de la cancion
  462.  
  463.  
  464.  
  465.  
  466.  fgets(linea,80,archivo);
  467.         if (feof(archivo))break;
  468.         if (strlen(linea)>0)
  469.         linea[strlen(linea)-1]='\0';
  470.         strcpy(ficha[cont_ad+1].nombre_terminal,linea);
  471. */
  472.  cont++;
  473.  cont_ad++;
  474.  }
  475.  }
  476.  fclose(archivo);
  477. }
  478.  
  479.