martes, 13 de agosto de 2013

dev c++: Calcula y muestra tablas de 1 a n, valores de x a y, forma horizontal version 2

/*
   Programa: Mostrar tablas de 1 a n, y numeros a ser multiplicados, (tablas se muestran de forma horizontal), los valores se solicitan al usuario
   13.08.2013
   Claudio enrique alpizar Romero
   compilador: dev c++ portable
   Se usa color, ubicacion de texto y marco.
  
*/

#include <stdio.h>
#include <windows.h>

void ir_cr(int c, int r)                  
{
    /*
       funcion: ubica printf en coordenadas epecificas de la pantalla
    autor:   Claudio enrique alpizar romero
    por lo esta funcion emula ir_cr para posicionar texto en coordenadas especificas (x-columna,y-renglon)
    se tiene que declarar <windows.h>
    */
    COORD coord;
    coord.X=c;
    coord.Y=r;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}


void Set_Mrc(int c1,int r1,int c2,int r2)  // construye marco
{
    /*   
    funcion: crea marco con codigo ascii
    autor:   Claudio enrique alpizar romero
    fecha:   24.07.2013
    */
   int i;
   ir_cr(c1,r1); printf("%c",201);      // esquinas
   ir_cr(c1,r2); printf("%c",200);
   ir_cr(c2,r1); printf("%c",187);
   ir_cr(c2,r2); printf("%c",188);
   for(i=c1+1;i<c2;i++)                 // controla columna
   {
         ir_cr(i,r1);printf("%c",205);  // LINEA ARRIBA HORIZONTAL
         ir_cr(i,r2);printf("%c",205);  // LINEA ABAJO HORIZONTAL
   }
   for(i=r1+1;i<r2;i++)                 // controla renglon
   {
         ir_cr(c1,i);printf("%c",186);  // LINEA IZQUIERDA VERTICAL
         ir_cr(c2,i);printf("%c",186);  // LINEA DERECHA VERTICAL
   }
}


void tablas(int i,int p1,int n1,int p2)           // calcula y muestra tablas
{
     int numr,rep,r=7,cuenta=0,producto;
     int ncol[5]={2,17,32,47,62};       // columna para cada tabla
     int p3=4,p4=13;
     // p3-columnas en pantalla, p4-renglones de espacio entre bloque de tablas
     for(rep=i;rep<=p1;rep++)
     {
              for(numr=n1; numr<=p2;numr++)
               {              
                   producto = rep * numr;             
                   ir_cr(ncol[cuenta],r+numr);printf("%d * %d = %d", rep, numr, producto); 
                             
               }
               if (cuenta<p3)
               {
                 
                  cuenta++;
              
               }   
               else
               {
                 r+=p4;
                 cuenta=0;
               }
      }
}


main()
{
    char respuesta = 'n';
    int n=0,p=0,c=0,d=0;
       
    do{
        system("color 71");
        system("CLS"); 
        ir_cr(25,2);printf("TABLAS DE MULTIPLICACION");
        ir_cr(25,4);printf("Introduzca el valor de la primera tabla p = ");scanf("%d", &p);
        getchar();
        ir_cr(25,5);printf("Introduzca el valor de la ultima tabla  n = ");scanf("%d", &n);
        getchar();
        ir_cr(25,7);printf("Introduzca primer valor a multiplicar   vi = ");scanf("%d", &c);
        getchar();
        ir_cr(25,8);printf("Introduzca ultimo valor a multiplicar   vf = ");scanf("%d", &d);
        getchar();
       
        if(p>n)
        {
               p=n-2;     
        }
        if(c>d)
        {
               c=d-2;    
        }
       
        if (n>0 && n<=100 || d>0 && d<=100)
        {
                if (n<=5)
                {
                  Set_Mrc(1,1,78,23);       
                }
                tablas(p,n,c,d);
                 
                if (n<=5)
                {
                  ir_cr(25,22);      
                } 
                else
                {
                  printf("\n\n"); 
                }           
                printf("Continuar <s/n> ? ");
                respuesta = getch();      
        }
        else
        {
                system("color 47");
                system("CLS");
                Set_Mrc(1,1,78,23);
                ir_cr(20,11);printf("El valor debe ser mayor a 0 y menor a 100!!!!");
                beep(500,1000);
                ir_cr(25,22);printf("Continuar <s/n> ? ");
                respuesta = getch();
        }  
    }while(respuesta == 's'|| respuesta == 'S');
    system("color 17");
    system("CLS");
    Set_Mrc(1,1,78,23);
    ir_cr(20,10);printf("Gracias por su visita, hasta luego!!!");
    ir_cr(18,22);printf("Presione cualquier tecla para continuar... ");
    getch();
}

dev c++: Calcula y muestra tablas de 1 a n, forma horizontal version 1

/*
   programa: tabalas de multiplicación de 1 a n (donde n es le numero que da el usuario) y las ordena de forma horizontal aprovechando la pantalla
   Claudio enrique alpizar Romero
   13.08.2013
   utiliza color, ubicación de texto y pone marco si las tablas son de 1 a 5
   Compilador: dev c++ portable
*/

#include <stdio.h>
#include <windows.h>

void ir_cr(int c, int r)                  
{
    /*
       funcion: ubica printf en coordenadas epecificas de la pantalla
    sirve para posicionar texto en coordenadas especificas (x-columna,y-renglon)
    se tiene que declarar <windows.h>
    */
    COORD coord;
    coord.X=c;
    coord.Y=r;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}


void Set_Mrc(int c1,int r1,int c2,int r2)  // construye marco
{
    /*   
    funcion: crea marco con codigo ascii
    */
   int i;
   ir_cr(c1,r1); printf("%c",201);      // esquinas
   ir_cr(c1,r2); printf("%c",200);
   ir_cr(c2,r1); printf("%c",187);
   ir_cr(c2,r2); printf("%c",188);
   for(i=c1+1;i<c2;i++)                 // controla columna
   {
         ir_cr(i,r1);printf("%c",205);  // LINEA ARRIBA HORIZONTAL
         ir_cr(i,r2);printf("%c",205);  // LINEA ABAJO HORIZONTAL
   }
   for(i=r1+1;i<r2;i++)                 // controla renglon
   {
         ir_cr(c1,i);printf("%c",186);  // LINEA IZQUIERDA VERTICAL
         ir_cr(c2,i);printf("%c",186);  // LINEA DERECHA VERTICAL
   }
}


void tablas(int p1)                     // calcula y muestra tablas
{
     int numr,rep,r=5,cuenta=0,producto;
     int ncol[5]={2,17,32,47,62};       // columna para cada tabla
     int p2=10,p3=4,p4=13;
     // p2-del 1 al 10, p3-columnas en pantalla, p4-renglones de espacio entre bloque de tablas
     for(rep=1;rep<=p1;rep++)
     {
              for(numr=1; numr<=p2;numr++)
               {              
                   producto = rep * numr;             
                   ir_cr(ncol[cuenta],r+numr);printf("%d * %d = %d", rep, numr, producto);                
               }
               if (cuenta<p3)
               {
                 
                  cuenta++;
               }   
               else
               {
                 r+=p4;
                 cuenta=0;
               }
      }
}


main()
{
    char respuesta = 'n';
    int n=0;
       
    do{
        system("color 71");
        system("CLS"); 
        ir_cr(25,2);printf("TABLAS DE MULTIPLICACION");
        ir_cr(25,4);printf("Introduzca el valor n = ");scanf("%d", &n);
        getchar();
        if (n>0 && n<=100)
        {
                if (n<=5)
                {
                  Set_Mrc(1,1,78,23);       
                }
                tablas(n);
                 
                if (n<=5)
                {
                  ir_cr(25,22);      
                } 
                else
                {
                  printf("\n\n"); 
                }           
                printf("Continuar <s/n> ? ");
                respuesta = getch();   
               
        }
        else
        {
                system("color 47");
                system("CLS");
                Set_Mrc(1,1,78,23);
                ir_cr(20,11);printf("El valor debe ser mayor a 0 y menor a 100!!!!");
                beep(500,1000);
                ir_cr(25,22);printf("Continuar <s/n> ? ");
                respuesta = getch();
        }
         
    }while(respuesta == 's'|| respuesta == 'S');
    system("color 17");
    system("CLS");
    Set_Mrc(1,1,78,23);
    ir_cr(20,10);printf("Gracias por su visita, hasta luego!!!");
    ir_cr(18,22);printf("Presione cualquier tecla para continuar... ");
    getch();
}

dev c++: Calcular hipotenusa, perimetro, area y dibujar triangulo rectangulo

/*
  programa: Calcula hipotenusa, perimetro, area y dibuja triangulo rectangulo.
  Claudio Enrique Alpizar Romero
  13.08.2013
  Compilador: dev c++ portable
 Utiliza color, ubicación de texto y marco.
*/

#include <stdio.h>
#include <windows.h>
#include <math.h>


void ir_cr(int x, int y)//Emulador de ir_cr
{
    /*
       funcion: crea función para ubicar printf en columna y renglón especifico
    por lo esta funcion emula ir_cr para posicionar texto en coordenadas especificas
    se tiene que declarar <windows.h>
    */
    COORD coord;
    coord.X=x;
    coord.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}

void Set_Mrc(int c1,int r1,int c2,int r2) // construye marco
{
    /*   
    funcion: crea marco con codigo ascii
    c1-----------c2
    r1            |
    |             |
    |             |
    -------------r2
    */
   int i;
   ir_cr(c1,r1); printf("%c",201);      // esquinas
   ir_cr(c1,r2); printf("%c",200);
   ir_cr(c2,r1); printf("%c",187);
   ir_cr(c2,r2); printf("%c",188);
   for(i=c1+1;i<c2;i++)                 // controla columna
   {
         ir_cr(i,r1);printf("%c",205);  // LINEA ARRIBA HORIZONTAL
         ir_cr(i,r2);printf("%c",205);  // LINEA ABAJO HORIZONTAL
   }
   for(i=r1+1;i<r2;i++)                 // controla renglon
   {
         ir_cr(c1,i);printf("%c",186);  // LINEA IZQUIERDA VERTICAL
         ir_cr(c2,i);printf("%c",186);  // LINEA DERECHA VERTICAL
   }   
}



float Get_hipotenusa(float a, float b)
{
      float hipotenusa = 0;
      hipotenusa = sqrt(a*a + b*b);
      return hipotenusa;
}

float Get_perimetro(float lado1, float lado2, float lado3)
{
      return lado1 + lado2 + lado3;
}

float Get_area(float b, float h)
{
      float area = (b*h)/2;
      return area;
}


void Set_dibuja(int a,int b)                                                                    
{                                                                              
 
 int T = b;                                                                 
 int R,C;                                                                      
 R = 1;                                                                        
 while (R <= b)  // renglon .- cateto mayor                                                           
    {                                                                          
      C = 1;                                                                   
      while (C <= R) /* columna */                                                        
      {                                                                   
          ir_cr(3+C,2+R);printf("#");                                                       
          C++;
      }                                                                   
      printf("\n");                                                          
      R++;                                                             
    }
    return;
}


main()
{
    char respuesta = 'n';
    float  a, b, x;
   
   
    system("color 74"); 
    do
    {
          
        system("CLS");
        Set_Mrc(1,1,78,23);
        Set_Mrc(27,3,50,5);
       
        ir_cr(28,4);printf("TRIANGULOS RECTANGULOS");
       
        printf("\n");
       
        ir_cr(28,7);printf("Cateto Menor = ");
        scanf("%f", &a);
        getchar();
       
        ir_cr(28,8);printf("Cateto Mayor = ");
        scanf("%f", &b);
        getchar();
       
        if(a>b)
        {
                x = a;
                a = b;
                b = x;
                ir_cr(28,10);printf("Cateto Menor = %f \n", a);
                ir_cr(28,11);printf("Cateto Mayor = %f \n", b);           
        }
       
        ir_cr(28,13);printf("Hipotenusa = %f", Get_hipotenusa(a,b) );
        ir_cr(28,14);printf("Perimetro  = %f", Get_perimetro(a,b,Get_hipotenusa(a,b)) );
        ir_cr(28,15);printf("Area       = %f", Get_area(a,b) );
       
        if (b<=20)
        {
              Set_dibuja(a,b);
        }
        else
        {
              Set_dibuja(7,20);
           
        }    
       
        printf("\n");
        ir_cr(28,22);printf("continuar <s/n> ? ");
        respuesta = getch();
       
        
    }while(respuesta == 's'|| respuesta == 'S');
   
   
    system("color 17");
    system("CLS");
    Set_Mrc(1,1,78,23);
    ir_cr(20,10);printf("Gracias por su visita, hasta luego!!!");
    ir_cr(18,22);printf("Presione cualquier tecla para continuar... ");
    getch();
}

viernes, 15 de junio de 2012

Sistema completo: Modular, manejo de archivos y estructura de datos version 5

/*
  Claudio Enrique Alpizar Romero
  15/06/2012
  Control de Plazas Version 5.0 se adiciono password con 3 intentos
  Fundamentos de Programacion (lenguaje C)
  Compilador borland 5.02
*/

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <dos.h>
#include <alloc.h>
#include <iostream.h>
#include <iomanip.h>
#include <windows.h>

// define algunas constantes
#define LightFont 7        // ilumina letra blanco opcion menu
#define LightBack 12        // ilumina fondo rojo opcion menu
#define StdFont 0         // normal letra negro menu
#define StdBack 7          // normal fondo blanco menu
#define ColM 30            // columna para posicion del menu
#define FileNm "CLAR.dsc"    // archivo de datos
#define FileSp "CLAR.tmp"    // archivo de datos temporal
#define LONGITUD_PASSWORD 11 // Longitud maxima de caracteres
#define pwdlocal "klauz"      // pwd acceso

// define estructura de datos
typedef struct
{
   char m_ficha[8];    // ficha
   char m_nombre[30];    // nombre
   char m_numero[15];    // numero de plaza
   char m_nivel[3];    // nivel
   char m_regimen[2];    // regimen (S)inndicalizado (C)onfianza
   char m_status[2];    // status (A)ctivo, (C)ancelada
}recordset;

// define modulos
void SetScreenP();    // pantalla de presentacion
void SetScreenF();    // pantalla de salida
void ver_ges();        // verifica si existe archivo de gestion
void SetMenu();        // menu de opciones
void add_rec();        // modulo agragar registro
void con_rec();        // modulo consulta individual
void edi_rec();        // modulo editar registro
void del_rec();        // modulo eliminar registro
void viw_rec();        // modulo consulta general
void inf_sis();        // mensaje acerca del sistema

// define funciones soporte
void SetColor(int f,int l);                                                // color de fondo y letra
void SetMarco(int X1,int Y1,int X2,int Y2, int C1);                // crea marco de pantalla version A
void SetMarcoB(int X1,int Y1,int X2,int Y2, int FC1, int BC1);    // crea marco de pantalla version B
void msgb(int ci,int ri, int nmsg);                                        // mensajes multiples
int pwd_usr();                                                                     // verifica clave de acceso

void main()
 {
   SetScreenP();
   if (pwd_usr()==1)
   {
       ver_ges();
       SetMenu();
   }  
   SetScreenF();
 }

void SetMenu()
{
      int tecla,f;
   char t1=24,t2=25;
     char opciones[9][70];
     do
     {
       strcpy(opciones[1], " Agregar                 ");
       strcpy(opciones[2], " Consulta especifica     ");
       strcpy(opciones[3], " Consulta secuencial     ");
       strcpy(opciones[4], " Editar                  ");
       strcpy(opciones[5], " Eliminar                ");
       strcpy(opciones[6], " Acerca del sistema      ");
       strcpy(opciones[7], " Salir                   ");

       clrscr();
       SetColor(StdBack,StdFont);
       SetMarco(1,1,80,24,12);
       gotoxy(20,3);cout<<"       Gerencia de Recursos Materiales";
       gotoxy(20,4);cout<<"              Control de Plazas";
       gotoxy(20,5);cout<<"                MENU PRINCIPAL ";
       gotoxy(13,22); cout<<"Para despalzarse entre las opciones utilice las teclas "<<t1<<t2<<" y ";
       gotoxy(13,23); cout<<"      pulse [ENTER] para ejecutar la opcion seleccionada";
       SetMarco(ColM-1,7,ColM+25,15,4);         // cuadro del menu
       SetColor(StdBack,StdFont);

       for(f=1;f<=7;f++) {gotoxy(ColM,f+7);cprintf("%s",opciones[f]);}
       f=1;
       SetColor(LightBack,LightFont);        // ilumina opcion
       gotoxy(ColM,f+7);cprintf("%s",opciones[f]);
        SetColor(StdBack,StdFont);

              do
              {
                 do
                 {
                     tecla=getch();
                  }while((tecla==80)&&(tecla==72)&&(tecla==13));

                if(tecla==80) // tecla abajo
                {
                SetColor(StdBack,StdFont);
                    gotoxy(ColM,f+7);cprintf("%s",opciones[f]);
                   if (f!=7)
                  {
                   f++;
                  SetColor(LightBack,LightFont);
                        gotoxy(ColM,f+7);  cprintf("%s",opciones[f]);
                        SetColor(StdBack,StdFont);
                   }
                    else
                   {
                      f=1;
                  SetColor(LightBack,LightFont);
                      gotoxy(ColM,f+7);cprintf("%s",opciones[f]);
                  SetColor(StdBack,StdFont);
                   }
            }

                if(tecla == 72) // tecla arriba
                 {
                SetColor(StdBack,StdFont);
                    gotoxy(ColM,f+7);cprintf("%s",opciones[f]);
                   if (f!=1)
                     {
                   f--;
                  SetColor(LightBack,LightFont);
                         gotoxy(ColM,f+7); cprintf("%s",opciones[f]);
                         SetColor(StdBack,StdFont);
                  }
                   else
                  {
                   f=7;
                  SetColor(LightBack,LightFont);
                         gotoxy(ColM,f+7); cprintf("%s",opciones[f]);
                         SetColor(StdBack,StdFont);
                   }
                  }
            }while(tecla!=13);

          switch(f)
            {
              case 1: add_rec();break;
                case 2: con_rec();break;
                case 3: viw_rec();break;
                case 4: edi_rec();break;
                case 5: del_rec();break;
                case 6: inf_sis();break;
              }
    }while(f!=7);
}

void add_rec(void) // Agregar registro
{
   FILE *fp;
   recordset aux;
   int pregunta;
   textbackground(0);// fondo negro
   do
   {
       clrscr();
      SetMarco(1,1,80,24,14);
       gotoxy(15,5);cprintf("                 Modulo: Alta de registros ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
       fp=fopen(FileNm,"ab");
       if(!(fp))
      {
         msgb(14,11,1);
         return;
      }
       else
      {
          gotoxy(20,10);cprintf("Ficha........................");        gets(aux.m_ficha);
            gotoxy(20,11);cprintf("Nombre.......................");        gets(aux.m_nombre);
            gotoxy(20,12);cprintf("Numero de plaza..............");        gets(aux.m_numero);
            gotoxy(20,13);cprintf("Nivel........................");        gets(aux.m_nivel);
          gotoxy(20,14);cprintf("(S)indicalizado,(C)onfianza..");        gets(aux.m_regimen);
          gotoxy(20,15);cprintf("(A)ctiva,(C)ancelada.........");        gets(aux.m_status);
            fwrite(&aux, sizeof(aux), 1, fp);
            fclose(fp);
         textcolor(7);
         gotoxy(15,17);cprintf("-----------------------------------------------------");
         gotoxy(20,18);cprintf("Desea adicionar otro registro (S/N): ");
         pregunta=toupper(getche());
       }
    }while(pregunta=='S');
}

void con_rec(void) // Consultar registro especifico
{
    FILE *fp;
    recordset    aux;
    int localiza,pregunta;
    char cadena[6];
   textbackground(0);// fondo negro
   do
   {
       clrscr();
      SetMarco(1,1,80,24,9);
      textcolor(7);
       gotoxy(15,5);cprintf("       Modulo: Consulta individual de registro ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
        gotoxy(15,7);cprintf("Introduce la ficha que buscas: ");     gets(cadena);

       fp=fopen(FileNm,"rb");
        if(!(fp))
       {

         msgb(14,11,1);
         return;
       }
        else
       {
            while ((localiza=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.m_ficha,cadena)!=0);
          if (localiza==0)
          {
            msgb(14,11,3);
          }
          else
          {
            textcolor(14);
             gotoxy(15,8);cprintf("                Informacion localizada!!! :) ");
             gotoxy(15,9);cprintf("-----------------------------------------------------");
            textcolor(7);
               gotoxy(20,10);cprintf("Ficha....................................%s ",aux.m_ficha);
             gotoxy(20,11);cprintf("Nombre...................................%s ",aux.m_nombre);
             gotoxy(20,12);cprintf("Numero de plaza..........................%s ",aux.m_numero);
                gotoxy(20,13);cprintf("Nivel....................................%s ",aux.m_nivel);
             gotoxy(20,14);cprintf("Regimen:(S)indicalizado,(C)onfianza......%s ",aux.m_regimen);
             gotoxy(20,15);cprintf("Status:(A)ctiva,(C)ancelada..............%s ",aux.m_status);
             gotoxy(15,17);cprintf("-----------------------------------------------------");
            textcolor(14);
               gotoxy(20,18);cprintf("Desea consultar otro registro (S/N): ");
             pregunta=toupper(getche());
            }
        }
    }while(pregunta=='S');
}


void edi_rec(void) // Editar registro
{
   FILE *fp;
   recordset aux;
   int localiza,pregunta,preguntam,ciclo;
   char cadena[6];

   textbackground(0);// fondo negro
    fp=fopen(FileNm,"r+b");

   if(!(fp))
   {
      msgb(14,11,1);
      return;
   }
   else
   {
     do
     {
      fp=fopen(FileNm,"r+b");
      clrscr();
      SetMarco(1,1,80,24,3);
      textcolor(7);
       gotoxy(15,5);cprintf("             Modulo: Editar registro ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
        gotoxy(15,7);cprintf("Introduce la ficha que buscas: ");     gets(cadena);


      while ((localiza=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.m_ficha,cadena)!=0);
      if (localiza==0)
      {
         msgb(14,11,3);
      }
      else
      {

         textcolor(14);
            gotoxy(15,8);cprintf("                Informacion localizada!!! :) ");
         gotoxy(3,9);cprintf("-------------------------------------------------------------------------");
         textcolor(7);
         gotoxy(3,10);cprintf(" Ficha |           Nombre            | No. de plaza | Nivel | RC | Status");
         gotoxy(3,11);cprintf("-------------------------------------------------------------------------");
         textcolor(14);
         gotoxy(3,12);cprintf("%s",aux.m_ficha);
         gotoxy(11,12);cprintf("%s",aux.m_nombre);
         gotoxy(42,12);cprintf("%s",aux.m_numero);
            gotoxy(57,12);cprintf("%s",aux.m_nivel);
         gotoxy(66,12);cprintf("%s",aux.m_regimen);
         gotoxy(71,12);cprintf("%s",aux.m_status);

         textcolor(14);
           gotoxy(15,18);cprintf("Desea modificar todos los datos de este registro (S/N): ");
         pregunta=toupper(getch());
         if (pregunta=='S')
         {
            clrscr();
            SetMarco(1,1,80,24,3);
            textcolor(7);
            gotoxy(3,4);cprintf(" Ficha |           Nombre            | No. de plaza | Nivel | RC | Status");
             gotoxy(3,5);cprintf("-------------------------------------------------------------------------");
             textcolor(14);
             gotoxy(3,6);cprintf("%s",aux.m_ficha);
             gotoxy(11,6);cprintf("%s",aux.m_nombre);
             gotoxy(42,6);cprintf("%s",aux.m_numero);
                gotoxy(57,6);cprintf("%s",aux.m_nivel);
             gotoxy(66,6);cprintf("%s",aux.m_regimen);
             gotoxy(71,6);cprintf("%s",aux.m_status);
           
              textcolor(7);
               gotoxy(15,8);cprintf("   Introduzca los nuevos valores para el registro ");
               gotoxy(15,9);cprintf("-----------------------------------------------------");
            textcolor(14);
            gotoxy(20,10);cprintf("Ficha........................%s ",aux.m_ficha);
                gotoxy(20,11);cprintf("Nombre.......................");gets(aux.m_nombre);
                gotoxy(20,12);cprintf("Numero de plaza..............");gets(aux.m_numero);
                gotoxy(20,13);cprintf("Nivel........................");gets(aux.m_nivel);
              gotoxy(20,14);cprintf("(S)indicalizado,(C)onfianza..");gets(aux.m_regimen);
              gotoxy(20,15);cprintf("(A)ctiva,(C)ancelada.........");gets(aux.m_status);
            gotoxy(15,17);cprintf("-----------------------------------------------------\n");
            textcolor(7);
            gotoxy(15,18);cprintf("Desea salvar los cambios (S/N):                         ");
            preguntam=toupper(getch());
            if (preguntam=='S')
            {
                fseek(fp,-1*sizeof(aux),SEEK_CUR);
                 fwrite(&aux, sizeof(aux), 1, fp);
               textcolor(2);
               gotoxy(15,19);cprintf("  ***Registro actualizado***  ");
               //msg5();
            }
            else
            {
               textcolor(4);
               gotoxy(15,19);cprintf("***No se actualizo registro***");
               //msg6();
            }
            fclose(fp);
         }
      }
     textcolor(14);
     gotoxy(15,18);cprintf("Desea editar otro registro? (S/N):                      ");
     ciclo=toupper(getche());
     }while(ciclo=='S');
   }
}


void del_rec(void) // Borrar registro
{
     FILE *fp,*fd;
     recordset    aux;
     int encontrado=0;
     int pregunta,preguntac;
      char cadena[6];

     textbackground(0);// fondo negro
     do
     {
      clrscr();
      SetMarco(1,1,80,24,12);
      textcolor(7);
       gotoxy(15,5);cprintf("           Modulo: Eliminar registro ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
        gotoxy(15,7);cprintf("Introduce la ficha que buscas: ");     gets(cadena);


       fp=fopen(FileNm,"rb");
       if(!(fp))
       {
         msgb(14,11,1);
          return;
       }
       else
       {
            fd=fopen(FileSp,"wb");
          if(!(fd))
          {
             msgb(14,11,2);
             return;
          }
          else
          {
             while ((fread(&aux, sizeof(aux), 1, fp))!=0)
                if(stricmp(aux.m_ficha,cadena)!=0)
                {
                      fwrite(&aux, sizeof(aux), 1, fd);
                }
                else
                {
                      encontrado=1;
                }
             fclose(fd);
          }
          fclose(fp);
          fcloseall();
          if(encontrado)
          {
            textcolor(2);
              gotoxy(20,10);cprintf("Ficha....................................%s ",aux.m_ficha);
            gotoxy(20,11);cprintf("Nombre...................................%s ",aux.m_nombre);
            gotoxy(20,12);cprintf("Numero de plaza..........................%s ",aux.m_numero);
               gotoxy(20,13);cprintf("Nivel....................................%s ",aux.m_nivel);
            gotoxy(20,14);cprintf("Regimen:(S)indicalizado,(C)onfianza......%s ",aux.m_regimen);
            gotoxy(20,15);cprintf("Status:(A)ctiva,(C)ancelada..............%s ",aux.m_status);
            gotoxy(15,17);cprintf("-----------------------------------------------------");
            textcolor(14);
              gotoxy(15,18);cprintf("Esta seguro que desea eliminar este registro? (S/N): ");
             pregunta=toupper(getche());
             if (pregunta=='S')
             {
                 system("del CLAR.dsc");
                 system("ren CLAR.tmp CLAR.dsc");
               textcolor(12);
                 gotoxy(15,19);cprintf("Registro eliminado con Exito!!! :) ");
               textcolor(7);
             }
          }
          else
          {
             system("del CLAR.tmp");
            msgb(14,11,3);
          }
       }
      gotoxy(15,20);cprintf("Buscar otro registro para eliminarlo? (S/N): ");
      preguntac=toupper(getche());
     }while(preguntac=='S');
     fcloseall();
}


void viw_rec()  // Consulta todos los registros del archivo
{
    FILE *fp;
   recordset aux;
   textbackground(0);// fondo negro
    fp=fopen(FileNm,"rb");
   if(!(fp))
    {
      msgb(14,11,1);
      return;
    }
    fp=fopen(FileNm,"rb");
    while((fread(&aux, sizeof(aux), 1, fp))==1)
    {
      clrscr();
      SetMarco(1,1,80,24,15);
       gotoxy(15,5);cprintf("           Modulo: Consulta todos los registros ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
      textcolor(11);
      gotoxy(20,10);cprintf("Ficha....................................%s ",aux.m_ficha);
      gotoxy(20,11);cprintf("Nombre...................................%s ",aux.m_nombre);
      gotoxy(20,12);cprintf("Numero de plaza..........................%s ",aux.m_numero);
        gotoxy(20,13);cprintf("Nivel....................................%s ",aux.m_nivel);
      gotoxy(20,14);cprintf("Regimen:(S)indicalizado,(C)onfianza......%s ",aux.m_regimen);
      gotoxy(20,15);cprintf("Status:(A)ctiva,(C)ancelada..............%s ",aux.m_status);
      gotoxy(15,17);cprintf("-----------------------------------------------------");
      textcolor(14);
      gotoxy(15,18);cprintf("Pulse cualquier tecla para ver registro siguiente...");getch();
    }
    fclose(fp);
   textcolor(12);
   gotoxy(15,19);cprintf("***Fin de archivo ***                               ");
   gotoxy(15,20);cprintf("Pulse cualquier tecla para regresar al Menu...");getch();
}

void inf_sis() // Acerca del sistema
{
    int ri, ci;
   ci=16;
   ri=7;
   SetMarcoB(ci,ri,ci+51,ri+9,7,1);
   textcolor(14);
    gotoxy(ci+1,ri+1);cprintf("           Fundamentos de programacion            ");
   textcolor(7);
   gotoxy(ci+1,ri+2);cprintf(" ------------------------------------------------ ");
   gotoxy(ci+1,ri+3);cprintf("    Lenguaje C, Compilador Borland C++ 5.02       ");
   textcolor(14);
   gotoxy(ci+1,ri+4);cprintf("          Sistema de Control de Plazas            ");
   gotoxy(ci+1,ri+5);cprintf("                   Version 3.0                    ");
   gotoxy(ci+1,ri+6);cprintf("          Claudio Enrique Alpizar Romero          ");
   textcolor(7);
   gotoxy(ci+1,ri+7);cprintf("                   Junio 2012                     ");
   gotoxy(ci+1,ri+8);cprintf("    Presione cualquier tecla para continuar...    ");getch();
   textbackground(0);// fondo negro
   return;
}

void SetMarco(int X1,int Y1,int X2,int Y2, int C1) // construye marco A
{
    int i;
   textcolor(C1);
   textbackground(0);
     for(i=X1+1;i<X2;i++)
   {
         gotoxy(i,Y1);cprintf("Í");   // LINEA ARRIBA HORIZONTAL
         gotoxy(i,Y2);cprintf("Í");   // LINEA ABAJO HORIZONTAL
   }
     for(i=Y1+1;i<Y2;i++)
   {
         gotoxy(X1,i);cprintf("º");    // LINEA IZQUIERDA VERTICAL
         gotoxy(X2,i);cprintf("º");    // LINEA DERECHA VERTICAL
   }
       // esquinas
         gotoxy(X1,Y1);cprintf("É");
         gotoxy(X1,Y2); cprintf("È");
         gotoxy(X2,Y1);cprintf("»");
         gotoxy(X2,Y2); cprintf("¼");
}

void SetColor(int f,int l)  // FONDO_LETRA
{
    textbackground(f);
   textcolor(l);
}

void SetMarcoB(int X1,int Y1,int X2,int Y2, int FC1, int BC1) // construye marco version B
{
   // BC1 1-azul , 2 verde, 3 cian, 4 rojo, 5 magenta , 8 negro
    int i;
   textcolor(FC1);
   textbackground(BC1);
     for(i=X1+1;i<X2;i++)
   {
         gotoxy(i,Y1);cprintf("Í");   // LINEA ARRIBA HORIZONTAL
         gotoxy(i,Y2);cprintf("Í");   // LINEA ABAJO HORIZONTAL
   }
     for(i=Y1+1;i<Y2;i++)
   {
         gotoxy(X1,i);cprintf("º");    // LINEA IZQUIERDA VERTICAL
         gotoxy(X2,i);cprintf("º");    // LINEA DERECHA VERTICAL
   }
       // esquinas
         gotoxy(X1,Y1);cprintf("É");
         gotoxy(X1,Y2); cprintf("È");
         gotoxy(X2,Y1);cprintf("»");
         gotoxy(X2,Y2); cprintf("¼");
}

void SetScreenP()        // pantalla de inicio
{
  int x,y;
  for(x=2;x<=79;x++)
  {
       gotoxy(x,2);cout<<"Û";
       gotoxy(x,24);cout<<"Û";
       Sleep(5);
  }
  for(y=2;y<=24;y++)
  {
       gotoxy(2,y);cout<<"Û";
       gotoxy(79,y);cout<<"Û";
       Sleep(5);
  }
  textcolor(7);
  gotoxy(20,4);cprintf("         Evidencia de Aprendizaje");
  gotoxy(20,5);cprintf("  Unidad 6. Programa en C Version Modular");
  gotoxy(20,8);cprintf("               Facilitador:");
  gotoxy(20,9);cprintf("           Andrea Jaques Chavez");
  gotoxy(20,12);cprintf("             Presentado por:");
  textcolor(14);
  gotoxy(20,13);cprintf("      Claudio Enrique Alpizar Romero");
  textcolor(7);
  gotoxy(20,22);cprintf("Presione cualquier tecla para continuar...");getch();
}

void SetScreenF()        // Pantalla de salida
{
  textbackground(0);// fondo negro
  clrscr();
  int x,y;
  for(x=2;x<=79;x++)
  {
       gotoxy(x,2);cout<<"Û";
       gotoxy(x,24);cout<<"Û";
       Sleep(5);
  }
  for(y=2;y<=24;y++)
  {
       gotoxy(2,y);cout<<"Û";
       gotoxy(79,y);cout<<"Û";
       Sleep(5);
  }
  textcolor(7);
  gotoxy(20,8);cprintf("                 Gracias!!!!");
  gotoxy(20,9);cprintf("               por utilizar el");
  textcolor(14);
  gotoxy(20,12);cprintf("        Sistema de Control de Plazas");
  textcolor(7);
  gotoxy(20,13);cprintf("             Desarrollado por:");
  gotoxy(20,14);cprintf("      Claudio Enrique Alpizar Romero");
  textcolor(14);
  gotoxy(20,16);cprintf("               Hasta luego...");
  gotoxy(20,22);cprintf("Presione cualquier tecla para continuar...");getch();
}

void msgb(int ci,int ri, int nmsg) // mensajes
{
    //ci- columna inicial, ri- renglon inicial, nmsg- numero de mensaje
   char *txtmsg;
   int txtlen,fc,bc;
   switch(nmsg)
   {
       case 1:
                  txtmsg="  No existe archivo o hay una falla al abrirlo!!! ";
               fc=7;
               bc=4;
               break;
      case 2:
                  txtmsg="     No se puede crear archivo temporal!!! :(     ";
               fc=7;
               bc=4;
               break;
      case 3:
               txtmsg="      No existe la ficha que introdujo!!! :(      ";
               fc=7;
               bc=4;
               break;
      case 4:
               txtmsg="  No existe el archivo de getion de datos !!! :(  ";
               fc=7;
               bc=4;
               break;
      case 5:
               txtmsg=" El sistema genero el archivo de gestion de datos ";
               fc=7;
               bc=1;
               break;
      case 6:
               txtmsg="            Password invalido !!! :(              ";
               fc=7;
               bc=4;
               break;
      case 7:
               txtmsg="  Password valido, iniciando sesion de trabajo!!! ";
               fc=7;
               bc=10;
               break;
      case 8:
               txtmsg="  Ha excedido el numero de intentos permitidos!!! ";
               fc=7;
               bc=4;
               break;
      default:
               txtmsg="  No ha sido definido mensaje para el usuario!!!  ";
               fc=7;
               bc=4;
               break;
   }
   txtlen=strlen(txtmsg);
   SetMarcoB(ci,ri,ci+txtlen+1,ri+3,fc,bc);
    gotoxy(ci+1,ri+1);cprintf("%s",txtmsg);
   gotoxy(ci+1,ri+2);cprintf("    Presione cualquier tecla para continuar...    ");getch();
   textbackground(0);            // fondo negro
   return;
}

void ver_ges()        // verifica al entrar al sistema si existe el archvo para gestionar datos
{
    FILE *fp;
    fp=fopen(FileNm,"rb");
    if(fp)
    {
        fclose(fp);
    }
    else
    {
       clrscr();
      msgb(14,11,4);
      fp=fopen(FileNm,"ab");
        fclose(fp);
      msgb(14,11,5);
    }
    return;
}



int pwd_usr()
{
    // Declaración y definición de variables
    char password[LONGITUD_PASSWORD];     // Arreglo donde se almacenara la contraseña
    char caracter;                              // Variable que almacenara la letra capturada
    int i = 0;                                     // Variable que servira de puntero
    char isCapturaTerminada = 0;             // Variable que servira de bandera para detener el ciclo de captura // false
   int num_int=1,id=0;


   do
   {
   textbackground(0);// fondo negro
      clrscr();
   SetMarco(1,1,80,24,5);
   SetMarcoB(14,11,65,17,7,5);
   gotoxy(15,12);cprintf("                    [Login]                       ");
   gotoxy(15,13);cprintf("           Caracteres permitidos (%i)             ",LONGITUD_PASSWORD - 1);
   gotoxy(15,14);cprintf("             Introduzca su password:              ");
   gotoxy(15,15);cprintf("                 ->                               ");
   gotoxy(15,16);cprintf("               Intento(s): [%i]                    ",num_int);

    while(!isCapturaTerminada) // Ciclo de captura, mientras la captura no termine
   {
        caracter = (char)getch();                              // Funcion que retorna la tecla pulsada por el usuario y no se visualizara en pantalla
        if(caracter == 13)                                          // Se detiene el ciclo cuando el usuario pulse enter (caracter 13)
       {
            if(i >= LONGITUD_PASSWORD)                          // Se sobrepaso los caracteres permitidos, se corta la cadena
          {
                password[LONGITUD_PASSWORD -1] = '\0';      // No olvidar poner el fin de cadena '\0'
            }
            else
          {
                password[i] = '\0';
            }
            isCapturaTerminada = 1; // true
        }
        else
       {
          if (caracter>=65&&caracter<=90||caracter>=97&&caracter<=122||caracter>=48&&caracter<=57)    // solo acepta A-Z,a-z,0-9
         {
             if(i<10)
            {
                    password[i++]= caracter;           // Mientras el usuario no pulse enter se continua capturando
                textcolor(14);
                gotoxy(33+i,15);cprintf("*");     // va recorriendo una columna x caracter capturado
            }
         }
        }
    }
   if(strcmp(password,pwdlocal)!= 0)    // intentos
   {
       i=0;
       num_int=num_int+1;
       isCapturaTerminada =  0;
       textbackground(0);// fondo negro
       clrscr();
       SetMarco(1,1,80,24,12);
          msgb(14,11,6);
   }
   else
   {
       id=1;         // pwd correcto
   }
   }while(id==0 && num_int<=3);  // verifica intentos
   textcolor(7);
   textbackground(0);// fondo negro
   if(id==0)
   {
     if(num_int>=3)
     {
         clrscr();
         SetMarco(1,1,80,24,12);
         msgb(14,11,8);
     }
     return 0;
   }
   else
   {
     clrscr();
     SetMarco(1,1,80,24,10);
     msgb(14,11,7);
     return 1;
   }
}

Sistema completo: Modular, manejo de archivos y estructura de datos version 3

/*
  Claudio Enrique Alpizar Romero
  05/06/2012, 07/06/2012
  Control de Plazas Version 3.0
  Fundamentos de Programacion (lenguaje C)
  Compilador borland 5.02
*/

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <dos.h>
#include <alloc.h>
#include <iostream.h>
#include <iomanip.h>
#include <windows.h>

// define algunas constantes
#define LightFont 7        // ilumina letra blanco opcion menu
#define LightBack 12        // ilumina fondo rojo opcion menu
#define StdFont 0         // normal letra negro menu
#define StdBack 7          // normal fondo blanco menu
#define ColM 30            // columna para posicion del menu
#define FileNm "CLAR.dsc"    // archivo de datos
#define FileSp "CLAR.tmp"    // archivo de datos temporal

// define estructura de datos
typedef struct
{
   char m_ficha[8];    // ficha
   char m_nombre[30];    // nombre
   char m_numero[15];    // numero de plaza
   char m_nivel[3];    // nivel
   char m_regimen[2];    // regimen (S)inndicalizado (C)onfianza
   char m_status[2];    // status (A)ctivo, (C)ancelada
}recordset;

// define modulos
void SetScreenP();    // pantalla de presentacion
void SetScreenF();    // pantalla de salida
void ver_ges();        // verifica si existe archivo de gestion
void SetMenu();        // menu de opciones
void add_rec();        // modulo agragar registro
void con_rec();        // modulo consulta individual
void edi_rec();        // modulo editar registro
void del_rec();        // modulo eliminar registro
void viw_rec();        // modulo consulta general
void inf_sis();        // mensaje acerca del sistema

// define funciones soporte
void SetColor(int f,int l);    // color de fondo y letra
void SetMarco(int X1,int Y1,int X2,int Y2, int C1);    // crea marco de pantalla version A
void SetMarcoB(int X1,int Y1,int X2,int Y2, int FC1, int BC1);    // crea marco de pantalla version B
void msgb(int ci,int ri, int nmsg);        // mensajes multiples

void main()
 {
   SetScreenP();
   ver_ges();
   SetMenu();
   SetScreenF();
 }

void SetMenu()
{
      int tecla,f;
   char t1=24,t2=25;
     char opciones[9][70];
     do
     {
       strcpy(opciones[1], " Agregar                 ");
       strcpy(opciones[2], " Consulta especifica     ");
       strcpy(opciones[3], " Consulta secuencial     ");
       strcpy(opciones[4], " Editar                  ");
       strcpy(opciones[5], " Eliminar                ");
       strcpy(opciones[6], " Acerca del sistema      ");
       strcpy(opciones[7], " Salir                   ");

       clrscr();
       SetColor(StdBack,StdFont);
       SetMarco(1,1,80,24,12);
       gotoxy(20,3);cout<<"       Gerencia de Recursos Materiales";
       gotoxy(20,4);cout<<"              Control de Plazas";
       gotoxy(20,5);cout<<"                MENU PRINCIPAL ";
       gotoxy(13,22); cout<<"Para despalzarse entre las opciones utilice las teclas "<<t1<<t2<<" y ";
       gotoxy(13,23); cout<<"      pulse [ENTER] para ejecutar la opcion seleccionada";
       SetMarco(ColM-1,7,ColM+25,15,4);         // cuadro del menu
       SetColor(StdBack,StdFont);

       for(f=1;f<=7;f++) {gotoxy(ColM,f+7);cprintf("%s",opciones[f]);}
       f=1;
       SetColor(LightBack,LightFont);        // ilumina opcion
       gotoxy(ColM,f+7);cprintf("%s",opciones[f]);
        SetColor(StdBack,StdFont);

              do
              {
                 do
                 {
                     tecla=getch();
                  }while((tecla==80)&&(tecla==72)&&(tecla==13));

                if(tecla==80) // tecla abajo
                {
                SetColor(StdBack,StdFont);
                    gotoxy(ColM,f+7);cprintf("%s",opciones[f]);
                   if (f!=7)
                  {
                   f++;
                  SetColor(LightBack,LightFont);
                        gotoxy(ColM,f+7);  cprintf("%s",opciones[f]);
                        SetColor(StdBack,StdFont);
                   }
                    else
                   {
                      f=1;
                  SetColor(LightBack,LightFont);
                      gotoxy(ColM,f+7);cprintf("%s",opciones[f]);
                  SetColor(StdBack,StdFont);
                   }
            }

                if(tecla == 72) // tecla arriba
                 {
                SetColor(StdBack,StdFont);
                    gotoxy(ColM,f+7);cprintf("%s",opciones[f]);
                   if (f!=1)
                     {
                   f--;
                  SetColor(LightBack,LightFont);
                         gotoxy(ColM,f+7); cprintf("%s",opciones[f]);
                         SetColor(StdBack,StdFont);
                  }
                   else
                  {
                   f=7;
                  SetColor(LightBack,LightFont);
                         gotoxy(ColM,f+7); cprintf("%s",opciones[f]);
                         SetColor(StdBack,StdFont);
                   }
                  }
            }while(tecla!=13);

          switch(f)
            {
              case 1: add_rec();break;
                case 2: con_rec();break;
                case 3: viw_rec();break;
                case 4: edi_rec();break;
                case 5: del_rec();break;
                case 6: inf_sis();break;
              }
    }while(f!=7);
}

void add_rec(void) // Agregar registro
{
   FILE *fp;
   recordset aux;
   int pregunta;
   textbackground(0);// fondo negro
   do
   {
       clrscr();
      SetMarco(1,1,80,24,14);
       gotoxy(15,5);cprintf("                 Modulo: Alta de registros ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
       fp=fopen(FileNm,"ab");
       if(!(fp))
      {
         msgb(14,11,1);
         return;
      }
       else
      {
          gotoxy(20,10);cprintf("Ficha........................");        gets(aux.m_ficha);
            gotoxy(20,11);cprintf("Nombre.......................");        gets(aux.m_nombre);
            gotoxy(20,12);cprintf("Numero de plaza..............");        gets(aux.m_numero);
            gotoxy(20,13);cprintf("Nivel........................");        gets(aux.m_nivel);
          gotoxy(20,14);cprintf("(S)indicalizado,(C)onfianza..");        gets(aux.m_regimen);
          gotoxy(20,15);cprintf("(A)ctiva,(C)ancelada.........");        gets(aux.m_status);
            fwrite(&aux, sizeof(aux), 1, fp);
            fclose(fp);
         textcolor(7);
         gotoxy(15,17);cprintf("-----------------------------------------------------");
         gotoxy(20,18);cprintf("Desea adicionar otro registro (S/N): ");
         pregunta=toupper(getche());
       }
    }while(pregunta=='S');
}

void con_rec(void) // Consultar registro especifico
{
    FILE *fp;
    recordset    aux;
    int localiza,pregunta;
    char cadena[6];
   textbackground(0);// fondo negro
   do
   {
       clrscr();
      SetMarco(1,1,80,24,9);
      textcolor(7);
       gotoxy(15,5);cprintf("       Modulo: Consulta individual de registro ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
        gotoxy(15,7);cprintf("Introduce la ficha que buscas: ");     gets(cadena);

       fp=fopen(FileNm,"rb");
        if(!(fp))
       {

         msgb(14,11,1);
         return;
       }
        else
       {
            while ((localiza=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.m_ficha,cadena)!=0);
          if (localiza==0)
          {
            msgb(14,11,3);
          }
          else
          {
            textcolor(14);
             gotoxy(15,8);cprintf("                Informacion localizada!!! :) ");
             gotoxy(15,9);cprintf("-----------------------------------------------------");
            textcolor(7);
               gotoxy(20,10);cprintf("Ficha....................................%s ",aux.m_ficha);
             gotoxy(20,11);cprintf("Nombre...................................%s ",aux.m_nombre);
             gotoxy(20,12);cprintf("Numero de plaza..........................%s ",aux.m_numero);
                gotoxy(20,13);cprintf("Nivel....................................%s ",aux.m_nivel);
             gotoxy(20,14);cprintf("Regimen:(S)indicalizado,(C)onfianza......%s ",aux.m_regimen);
             gotoxy(20,15);cprintf("Status:(A)ctiva,(C)ancelada..............%s ",aux.m_status);
             gotoxy(15,17);cprintf("-----------------------------------------------------");
            textcolor(14);
               gotoxy(20,18);cprintf("Desea consultar otro registro (S/N): ");
             pregunta=toupper(getche());
            }
        }
    }while(pregunta=='S');
}


void edi_rec(void) // Editar registro
{
   FILE *fp;
   recordset aux;
   int localiza,pregunta,preguntam,ciclo;
   char cadena[6];

   textbackground(0);// fondo negro
    fp=fopen(FileNm,"r+b");

   if(!(fp))
   {
      msgb(14,11,1);
      return;
   }
   else
   {
     do
     {
      fp=fopen(FileNm,"r+b");
      clrscr();
      SetMarco(1,1,80,24,3);
      textcolor(7);
       gotoxy(15,5);cprintf("             Modulo: Editar registro ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
        gotoxy(15,7);cprintf("Introduce la ficha que buscas: ");     gets(cadena);


      while ((localiza=fread(&aux, sizeof(aux), 1, fp))!=0 && stricmp(aux.m_ficha,cadena)!=0);
      if (localiza==0)
      {
         msgb(14,11,3);
      }
      else
      {

         textcolor(14);
            gotoxy(15,8);cprintf("                Informacion localizada!!! :) ");
         gotoxy(3,9);cprintf("-------------------------------------------------------------------------");
         textcolor(7);
         gotoxy(3,10);cprintf(" Ficha |           Nombre            | No. de plaza | Nivel | RC | Status");
         gotoxy(3,11);cprintf("-------------------------------------------------------------------------");
         textcolor(14);
         gotoxy(3,12);cprintf("%s",aux.m_ficha);
         gotoxy(11,12);cprintf("%s",aux.m_nombre);
         gotoxy(42,12);cprintf("%s",aux.m_numero);
            gotoxy(57,12);cprintf("%s",aux.m_nivel);
         gotoxy(66,12);cprintf("%s",aux.m_regimen);
         gotoxy(71,12);cprintf("%s",aux.m_status);

         textcolor(14);
           gotoxy(15,18);cprintf("Desea modificar todos los datos de este registro (S/N): ");
         pregunta=toupper(getch());
         if (pregunta=='S')
         {
            clrscr();
            SetMarco(1,1,80,24,3);
            textcolor(7);
            gotoxy(3,4);cprintf(" Ficha |           Nombre            | No. de plaza | Nivel | RC | Status");
             gotoxy(3,5);cprintf("-------------------------------------------------------------------------");
             textcolor(14);
             gotoxy(3,6);cprintf("%s",aux.m_ficha);
             gotoxy(11,6);cprintf("%s",aux.m_nombre);
             gotoxy(42,6);cprintf("%s",aux.m_numero);
                gotoxy(57,6);cprintf("%s",aux.m_nivel);
             gotoxy(66,6);cprintf("%s",aux.m_regimen);
             gotoxy(71,6);cprintf("%s",aux.m_status);
           
              textcolor(7);
               gotoxy(15,8);cprintf("   Introduzca los nuevos valores para el registro ");
               gotoxy(15,9);cprintf("-----------------------------------------------------");
            textcolor(14);
            gotoxy(20,10);cprintf("Ficha........................%s ",aux.m_ficha);
                gotoxy(20,11);cprintf("Nombre.......................");gets(aux.m_nombre);
                gotoxy(20,12);cprintf("Numero de plaza..............");gets(aux.m_numero);
                gotoxy(20,13);cprintf("Nivel........................");gets(aux.m_nivel);
              gotoxy(20,14);cprintf("(S)indicalizado,(C)onfianza..");gets(aux.m_regimen);
              gotoxy(20,15);cprintf("(A)ctiva,(C)ancelada.........");gets(aux.m_status);
            gotoxy(15,17);cprintf("-----------------------------------------------------\n");
            textcolor(7);
            gotoxy(15,18);cprintf("Desea salvar los cambios (S/N):                         ");
            preguntam=toupper(getch());
            if (preguntam=='S')
            {
                fseek(fp,-1*sizeof(aux),SEEK_CUR);
                 fwrite(&aux, sizeof(aux), 1, fp);
               textcolor(2);
               gotoxy(15,19);cprintf("  ***Registro actualizado***  ");
               //msg5();
            }
            else
            {
               textcolor(4);
               gotoxy(15,19);cprintf("***No se actualizo registro***");
               //msg6();
            }
            fclose(fp);
         }
      }
     textcolor(14);
     gotoxy(15,18);cprintf("Desea editar otro registro? (S/N):                      ");
     ciclo=toupper(getche());
     }while(ciclo=='S');
   }
}


void del_rec(void) // Borrar registro
{
     FILE *fp,*fd;
     recordset    aux;
     int encontrado=0;
     int pregunta,preguntac;
      char cadena[6];

     textbackground(0);// fondo negro
     do
     {
      clrscr();
      SetMarco(1,1,80,24,12);
      textcolor(7);
       gotoxy(15,5);cprintf("           Modulo: Eliminar registro ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
        gotoxy(15,7);cprintf("Introduce la ficha que buscas: ");     gets(cadena);


       fp=fopen(FileNm,"rb");
       if(!(fp))
       {
         msgb(14,11,1);
          return;
       }
       else
       {
            fd=fopen(FileSp,"wb");
          if(!(fd))
          {
             msgb(14,11,2);
             return;
          }
          else
          {
             while ((fread(&aux, sizeof(aux), 1, fp))!=0)
                if(stricmp(aux.m_ficha,cadena)!=0)
                {
                      fwrite(&aux, sizeof(aux), 1, fd);
                }
                else
                {
                      encontrado=1;
                }
             fclose(fd);
          }
          fclose(fp);
          fcloseall();
          if(encontrado)
          {
            textcolor(2);
              gotoxy(20,10);cprintf("Ficha....................................%s ",aux.m_ficha);
            gotoxy(20,11);cprintf("Nombre...................................%s ",aux.m_nombre);
            gotoxy(20,12);cprintf("Numero de plaza..........................%s ",aux.m_numero);
               gotoxy(20,13);cprintf("Nivel....................................%s ",aux.m_nivel);
            gotoxy(20,14);cprintf("Regimen:(S)indicalizado,(C)onfianza......%s ",aux.m_regimen);
            gotoxy(20,15);cprintf("Status:(A)ctiva,(C)ancelada..............%s ",aux.m_status);
            gotoxy(15,17);cprintf("-----------------------------------------------------");
            textcolor(14);
              gotoxy(15,18);cprintf("Esta seguro que desea eliminar este registro? (S/N): ");
             pregunta=toupper(getche());
             if (pregunta=='S')
             {
                 system("del CLAR.dsc");
                 system("ren CLAR.tmp CLAR.dsc");
               textcolor(12);
                 gotoxy(15,19);cprintf("Registro eliminado con Exito!!! :) ");
               textcolor(7);
             }
          }
          else
          {
             system("del CLAR.tmp");
            msgb(14,11,3);
          }
       }
      gotoxy(15,20);cprintf("Buscar otro registro para eliminarlo? (S/N): ");
      preguntac=toupper(getche());
     }while(preguntac=='S');
     fcloseall();
}


void viw_rec()  // Consulta todos los registros del archivo
{
    FILE *fp;
   recordset aux;
   textbackground(0);// fondo negro
    fp=fopen(FileNm,"rb");
   if(!(fp))
    {
      msgb(14,11,1);
      return;
    }
    fp=fopen(FileNm,"rb");
    while((fread(&aux, sizeof(aux), 1, fp))==1)
    {
      clrscr();
      SetMarco(1,1,80,24,15);
       gotoxy(15,5);cprintf("           Modulo: Consulta todos los registros ");
       gotoxy(15,6);cprintf("-----------------------------------------------------");
      textcolor(11);
      gotoxy(20,10);cprintf("Ficha....................................%s ",aux.m_ficha);
      gotoxy(20,11);cprintf("Nombre...................................%s ",aux.m_nombre);
      gotoxy(20,12);cprintf("Numero de plaza..........................%s ",aux.m_numero);
        gotoxy(20,13);cprintf("Nivel....................................%s ",aux.m_nivel);
      gotoxy(20,14);cprintf("Regimen:(S)indicalizado,(C)onfianza......%s ",aux.m_regimen);
      gotoxy(20,15);cprintf("Status:(A)ctiva,(C)ancelada..............%s ",aux.m_status);
      gotoxy(15,17);cprintf("-----------------------------------------------------");
      textcolor(14);
      gotoxy(15,18);cprintf("Pulse cualquier tecla para ver registro siguiente...");getch();
    }
    fclose(fp);
   textcolor(12);
   gotoxy(15,19);cprintf("***Fin de archivo ***                               ");
   gotoxy(15,20);cprintf("Pulse cualquier tecla para regresar al Menu...");getch();
}

void inf_sis() // Acerca del sistema
{
    int ri, ci;
   ci=16;
   ri=7;
   SetMarcoB(ci,ri,ci+51,ri+9,7,1);
   textcolor(14);
    gotoxy(ci+1,ri+1);cprintf("           Fundamentos de programacion            ");
   textcolor(7);
   gotoxy(ci+1,ri+2);cprintf(" ------------------------------------------------ ");
   gotoxy(ci+1,ri+3);cprintf("    Lenguaje C, Compilador Borland C++ 5.02       ");
   textcolor(14);
   gotoxy(ci+1,ri+4);cprintf("          Sistema de Control de Plazas            ");
   gotoxy(ci+1,ri+5);cprintf("                   Version 3.0                    ");
   gotoxy(ci+1,ri+6);cprintf("          Claudio Enrique Alpizar Romero          ");
   textcolor(7);
   gotoxy(ci+1,ri+7);cprintf("                   Junio 2012                     ");
   gotoxy(ci+1,ri+8);cprintf("    Presione cualquier tecla para continuar...    ");getch();
   textbackground(0);// fondo negro
   return;
}

void SetMarco(int X1,int Y1,int X2,int Y2, int C1) // construye marco A
{
    int i;
   textcolor(C1);
   textbackground(0);
     for(i=X1+1;i<X2;i++)
   {
         gotoxy(i,Y1);cprintf("Í");   // LINEA ARRIBA HORIZONTAL
         gotoxy(i,Y2);cprintf("Í");   // LINEA ABAJO HORIZONTAL
   }
     for(i=Y1+1;i<Y2;i++)
   {
         gotoxy(X1,i);cprintf("º");    // LINEA IZQUIERDA VERTICAL
         gotoxy(X2,i);cprintf("º");    // LINEA DERECHA VERTICAL
   }
       // esquinas
         gotoxy(X1,Y1);cprintf("É");
         gotoxy(X1,Y2); cprintf("È");
         gotoxy(X2,Y1);cprintf("»");
         gotoxy(X2,Y2); cprintf("¼");
}

void SetColor(int f,int l)  // FONDO_LETRA
{
    textbackground(f);
   textcolor(l);
}

void SetMarcoB(int X1,int Y1,int X2,int Y2, int FC1, int BC1) // construye marco version B
{
   // BC1 1-azul , 2 verde, 3 cian, 4 rojo, 5 magenta , 8 negro
    int i;
   textcolor(FC1);
   textbackground(BC1);
     for(i=X1+1;i<X2;i++)
   {
         gotoxy(i,Y1);cprintf("Í");   // LINEA ARRIBA HORIZONTAL
         gotoxy(i,Y2);cprintf("Í");   // LINEA ABAJO HORIZONTAL
   }
     for(i=Y1+1;i<Y2;i++)
   {
         gotoxy(X1,i);cprintf("º");    // LINEA IZQUIERDA VERTICAL
         gotoxy(X2,i);cprintf("º");    // LINEA DERECHA VERTICAL
   }
       // esquinas
         gotoxy(X1,Y1);cprintf("É");
         gotoxy(X1,Y2); cprintf("È");
         gotoxy(X2,Y1);cprintf("»");
         gotoxy(X2,Y2); cprintf("¼");
}

void SetScreenP()        // pantalla de inicio
{
  int x,y;
  for(x=2;x<=79;x++)
  {
       gotoxy(x,2);cout<<"Û";
       gotoxy(x,24);cout<<"Û";
       Sleep(5);
  }
  for(y=2;y<=24;y++)
  {
       gotoxy(2,y);cout<<"Û";
       gotoxy(79,y);cout<<"Û";
       Sleep(5);
  }
  textcolor(7);
  gotoxy(20,4);cprintf("         Evidencia de Aprendizaje");
  gotoxy(20,5);cprintf("  Unidad 6. Programa en C Version Modular");
  gotoxy(20,8);cprintf("               Facilitador:");
  gotoxy(20,9);cprintf("           Andrea Jaques Chavez");
  gotoxy(20,12);cprintf("             Presentado por:");
  textcolor(14);
  gotoxy(20,13);cprintf("      Claudio Enrique Alpizar Romero");
  textcolor(7);
  gotoxy(20,22);cprintf("Presione cualquier tecla para continuar...");getch();
}

void SetScreenF()        // Pantalla de salida
{
  textbackground(0);// fondo negro
  clrscr();
  int x,y;
  for(x=2;x<=79;x++)
  {
       gotoxy(x,2);cout<<"Û";
       gotoxy(x,24);cout<<"Û";
       Sleep(5);
  }
  for(y=2;y<=24;y++)
  {
       gotoxy(2,y);cout<<"Û";
       gotoxy(79,y);cout<<"Û";
       Sleep(5);
  }
  textcolor(7);
  gotoxy(20,8);cprintf("                 Gracias!!!!");
  gotoxy(20,9);cprintf("               por utilizar el");
  textcolor(14);
  gotoxy(20,12);cprintf("        Sistema de Control de Plazas");
  textcolor(7);
  gotoxy(20,13);cprintf("             Desarrollado por:");
  gotoxy(20,14);cprintf("      Claudio Enrique Alpizar Romero");
  textcolor(14);
  gotoxy(20,16);cprintf("               Hasta luego...");
  gotoxy(20,22);cprintf("Presione cualquier tecla para continuar...");getch();
}

void msgb(int ci,int ri, int nmsg) // mensajes
{
    //ci- columna inicial, ri- renglon inicial, nmsg- numero de mensaje
   char *txtmsg;
   int txtlen,fc,bc;
   switch(nmsg)
   {
       case 1:
                  txtmsg="  No existe archivo o hay una falla al abrirlo!!! ";
               fc=7;
               bc=4;
               break;
      case 2:
                  txtmsg="     No se puede crear archivo temporal!!! :(     ";
               fc=7;
               bc=4;
               break;
      case 3:
               txtmsg="      No existe la ficha que introdujo!!! :(      ";
               fc=7;
               bc=4;
               break;
      case 4:
               txtmsg="  No existe el archivo de getion de datos !!! :(  ";
               fc=7;
               bc=4;
               break;
      case 5:
               txtmsg=" El sistema genero el archivo de gestion de datos ";
               fc=7;
               bc=1;
               break;
      default:
               txtmsg="  No ha sido definido mensaje para el usuario!!!  ";
               fc=7;
               bc=4;
               break;
   }
   txtlen=strlen(txtmsg);
   SetMarcoB(ci,ri,ci+txtlen+1,ri+3,fc,bc);
    gotoxy(ci+1,ri+1);cprintf("%s",txtmsg);
   gotoxy(ci+1,ri+2);cprintf("    Presione cualquier tecla para continuar...    ");getch();
   textbackground(0);            // fondo negro
   return;
}

void ver_ges()        // verifica al entrar al sistema si existe el archvo para gestionar datos
{
    FILE *fp;
    fp=fopen(FileNm,"rb");
    if(fp)
    {
        fclose(fp);
    }
    else
    {
       clrscr();
      msgb(14,11,4);
      fp=fopen(FileNm,"ab");
        fclose(fp);
      msgb(14,11,5);
    }
    return;