/*
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();
}
LENGUAJE C, ESAD, UAD
martes, 13 de agosto de 2013
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();
}
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();
}
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;
}
}
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;
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)