lunes, 22 de noviembre de 2010

Progama de Contraseña (Extra)

Hola compañeros bueno pues ahora les voy a poner un programa en el cual tendremos que poner el nombre de usuario en este caso pondré los el usuario y contraseña mas básicos que son:
Usuario: administrador
Contraseña: admin
En este programa utilizaremos cadena de caracteres que son tipos de datos estructurados compuesto por caracteres. En C, una cadena de caracteres se define como un arreglo de caracteres que termina con el carácter nulo (‘\0’). El acceso a una cadena se realiza por medio de un apuntador que señala al primer carácter de la cadena.
Para esto hay que utilizar las funciones de entrada y de salida de las bibliotecas stdio.h como: gets, scanf, puts y printf.
Bueno pues aquí está la codificación es C para que lo puedan copiar y checar en su compilador:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct empleado
{
       int matricula;
       char nombre[50];
       };

main()
{
      struct empleado a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
      int op, i, opcaso1, cont=0;
      char usuario[]="administrador", usuarioing[30];
      char clave[]="admin", claveing[20];
      do
      {
      system("cls");
      printf("==============DEPARTAMENTO DE RECURSOS HUMANOS=====================\n\niniciar sesion");
      printf("\n\nusuario: ");
      gets(usuarioing);
      printf("clave: ");
      gets(claveing);
      }
      while (strcmp(usuario,usuarioing)!=0 && strcmp(clave,claveing)!=0);
      printf("\ndatos correctos\nbienvenido");
      do
      {
      printf("\n\nmenu:\n1- para capturar nombre del empleado y matricula \n2- para imprimir los datos ingresados en la opcion 1");
      printf("\ncual fue su eleccion: ");
      scanf("%d", &op);
      switch(op)
      {
      case 1:
      {
      printf("ingrese la matricula del empleado: ");
      scanf("%d", &a1.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a1.nombre);
      printf("desea seguir ingresado datos?: 1- para si......2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      if (opcaso1==1)
      {
      printf("\ningrese la matricula del empleado: ");
      scanf("%d", &a2.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a2.nombre);
      printf("desea agregar mas datos?: 1- para si.....2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      if(opcaso1==1)
      {
      printf("\ningrese la matricula del empleado: ");
      scanf("%d", &a3.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a3.nombre);
      printf("desea agregar mas datos?: 1- para si.....2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      if(opcaso1==1)
      {
      printf("\ningrese la matricula del empleado: ");
      scanf("%d", &a4.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a4.nombre);
      printf("desea agregar mas datos?: 1- para si.....2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      if(opcaso1==1)
      {
      printf("\ningrese la matricula del empleado: ");
      scanf("%d", &a5.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a5.nombre);
      printf("desea agregar mas datos?: 1- para si.....2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      if(opcaso1==1)
      {
      printf("\ningrese la matricula del empleado: ");
      scanf("%d", &a6.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a6.nombre);
      printf("desea agregar mas datos?: 1- para si.....2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      if(opcaso1==1)
      {
      printf("\ningrese la matricula del empleado: ");
      scanf("%d", &a7.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a7.nombre);
      printf("desea agregar mas datos?: 1- para si.....2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      if(opcaso1==1)
      {
      printf("\ningrese la matricula del empleado: ");
      scanf("%d", &a8.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a8.nombre);
      printf("desea agregar mas datos?: 1- para si.....2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      if(opcaso1==1)
      {
      printf("\ningrese la matricula del empleado: ");
      scanf("%d", &a9.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a9.nombre);
      printf("desea agregar mas datos?: 1- para si.....2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      if(opcaso1==1)
      {
      printf("\ningrese la matricula del empleado: ");
      scanf("%d", &a10.matricula);
      fflush(stdin);
      printf("ingrese el nombre del empleado: ");
      gets(a10.nombre);
      printf("desea agregar mas datos?: 1- para si.....2- para no: ");
      scanf("%d", &opcaso1);
      cont++;
      }
      }
      }
      }
      }
      }
      }
      }
      }
       break;
       }
       case 2:
       {
       printf("datos de los empleados: ");
       printf("\n\nnmatricula: %d\n",  a1.matricula);
       puts(a1.nombre);
       if(cont>=2)
       {
       printf("\n\nnmatricula: %d\n",  a2.matricula);
       puts(a2.nombre);
       if(cont>=3)
       {
       printf("\n\nnmatricula: %d\n",  a3.matricula);
       puts(a3.nombre);
       if(cont>=4)
       {
       printf("\n\nnmatricula: %d\n",  a4.matricula);
       puts(a4.nombre);
       if(cont>=5)
       {
       printf("\n\nnmatricula: %d\n",  a5.matricula);
       puts(a5.nombre);
       if(cont>=6)
       {
       printf("\n\nnmatricula: %d\n",  a6.matricula);
       puts(a6.nombre);
       if(cont>=7)
       {
       printf("\n\nnmatricula: %d\n",  a7.matricula);
       puts(a7.nombre);
       if(cont>=8)
       {
       printf("\n\nnmatricula: %d\n",  a8.matricula);
       puts(a8.nombre);
       if (cont>=9)
       {
       printf("\n\nnmatricula: %d\n",  a9.matricula);
       puts(a9.nombre);
       if(cont>=10)
       {
       printf("\n\nnmatricula: %d\n",  a10.matricula);
       puts(a10.nombre);
       }
       }
       }
       }
       }
       }
       }
       }
       }
       //royo del caso 2//
       break;
       }
       }//cierre del switch//
       }
       while (opcaso1==2);
      system("pause");
      }
Bueno  la librerías #include < string.h> es para el manejo de cadenas.
Strcmp: hace comparaciones de caracteres en este caso comparara que “administrador” y “admin” sean correctas.
Una vez terminado este paso creamos un swtich para crear el menú de captura de datos, en mi caso yo elegí 10 empleados.
Después de terminar con la captura de los 10 empleados comenzamos con el case 2 en el cual solo imprimirá los datos ya guardados en la codificación.
Ahora les mostrare la ejecución del programa:
Aquí yo guarde 3 datos, presiono 1 para capturar datos, después nos preguntara que si ya no queremos capturar datos, pero yo puse que 1 para sí y así capturar los 3 datos que se muestran.

Después elegimos la segunda opción que es no seguir capturando datos, con esto se nos desglosara nuevamente el menú de capturar datos, pero la segunda opción dice mostrar datos ya almacenado, la elegimos y ahí está el resultado.

2 comentarios:

  1. Hola compañero estuve checando tu codigo y lo chequé en mi compilador, y pues hago una observación, ¿ no hubiera sido mejor utilizar una estructura y un typedef como un arreglo para almacenar todos los empleados?

    me refiero a haberlo puesto asi:

    typedef struct empleado
    {
    int matricula;
    char nombre[50];
    } EMPLEADO;

    EMPLEADO lista[20];

    o algo asi porque usar 10 estructuras diferentes no creo que sea muy eficiente a la hora de programar ,yo hice algo similar en mi ejemplo de la presentación si quieres puedes checar el codigo.

    :D

    ResponderEliminar