/*
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;
}
}
viernes, 15 de junio de 2012
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;
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;
Suscribirse a:
Entradas (Atom)