AQUI podras apreciar aparte de las operaciones basicas como insertar registros , eliminar registros , mostrar registros , un actualizar con punteros , metodos de ordenamiento por codigo y por nombre es novedoso estos metodos , tambien hay varias decoraciones implemente algoritmos para capturar cuadros y hora -fecha del sistema este proyecto me costo muxo , quiero compartirlo con ustedes , haber Sagrini si das tu visto bueno a mi proyecto y como dices apoyame para comenzar con Linux , eh echo de todo un poco de todos los temas en dev++ pero ya quiero variar , ok espero tu respuesta y seguir en contacto si gustas seria bueno obtener tu ms para intercambiar informacion bueno me despido espero que puedan apreciar mi proyecto :
ATTE : ANTON RAMIREZ , LEONARDO VLADIMIR (ALUMNO UNI)
Código
#include <windows.h>//para los message box #include <iostream> #include <stdio.h> // Operaciones de archivos #include <stdlib.h> #include <string.h> #include <conio.h> #include <ctype.h> // Operaciones toupper/tolower using namespace std; struct CLIENTE { char Cod[5]; char Nombre[25]; char Direccion[28]; char Tipo; char tel[10]; }; // Declaracion global de la variable "Registro" de tipo struct CLIENTE struct CLIENTE Registro; // Declaracion global de la variable "*F" (apuntador de tipo archivo) FILE *F; int MenuCLIENTE(); void IngresarRegCLIENTE(); // Denominado tambien rutina de Altas void BuscarxCodCLIENTE(); // Denominado tambien rutina de Consultas void ActualizacionxCodCLIENTE(); // Denominado tambien rutina de Modificaciones void EliminacionLogicaxCodCLIENTE(); // Denominado tambien rutina de Baja Logica void EliminacionFisicaxCodCLIENTE(); // Denominado tambien rutina de Baja Fisica void MostrarRegCLIENTE(); void Encabezado1(); void Raya58(); void Raya60(); int Menu(); void ordenarxcod(); void ordenarxnom(); void cuadro(int i,int j,int k,int l); int main() { int Opcion; do { Opcion = MenuCLIENTE(); switch(Opcion) { case 1 : IngresarRegCLIENTE(); break; case 2 : BuscarxCodCLIENTE(); break; case 3 : ActualizacionxCodCLIENTE(); break; case 4 : EliminacionLogicaxCodCLIENTE(); break; case 5 : EliminacionFisicaxCodCLIENTE(); break; case 6 : MostrarRegCLIENTE(); break; case 7 : ordenarxcod(); break; case 8 : ordenarxnom(); break; } }while(Opcion != 0); MessageBox(NULL, "Adios Gracias Por Usar Este Programa", "Adios =(", MB_ICONINFORMATION | MB_OK | MB_SYSTEMMODAL); return(0); } int MenuCLIENTE() { int i; textbackground(BLUE); do { cuadro(1,1,80,25); cuadro(28,2,50,4); textcolor(LIGHTGREEN); /*cout << "\n\n\r A R C H I V O D E C L I E N T E S"; cout << "\n\n\r Archivos SECUENCIALES en Lenguaje C "; textcolor(WHITE); cout << "\n\n\n\r 1.- INGRESAR Registros"; cout << "\n\r 2.- BUSCAR por CODIGO"; cout << "\n\r 3.- ACTUALIZAR Datos por CODIGO"; cout << "\n\r 4.- Eliminacion LOGICA por CODIGO"; cout << "\n\r 5.- Eliminacion FISICA por CODIGO (defragmentar)"; cout << "\n\r 6.- MOSTRAR Registros"; cout << "\n\r 7.- ORDENAR Registro por CODIGO"; cout << "\n\r 8.- ORDENAR Registro por NOMBRE"; textcolor(LIGHTRED); cout << "\n\r 0.- TERMINAR";*/ textcolor(WHITE); gotoxy(30,3); textcolor(LIGHTRED); gotoxy(15,5);printf("0.- TERMINAR"); textcolor(LIGHTGREEN); gotoxy(15,7);printf("1.- INGRESAR Registros"); gotoxy(15,9);printf("2.- BUSCAR Regsitros por CODIGO"); gotoxy(15,11);printf("3.- ACTUALIZAR Datos por CODIGO"); gotoxy(15,13);printf("4.- ELIMINACION LOGICA por CODIGO"); gotoxy(15,15);printf("5.- ELIMINACION FISICA (Defragmentar)"); gotoxy(15,17);printf("6.- MOSTRAR Registros"); gotoxy(15,19);printf("7.- ORDENAR Registros por CODIGO"); gotoxy(15,21);printf("8.- ORDENAR Registros por NOMBRE"); textcolor(LIGHTRED); gotoxy(15,23);printf(" Escojer su Opcion---------------------> "); textcolor(WHITE); cin >> i; }while(i<0 || i>8); return(i); } void IngresarRegCLIENTE() { char Codigo[15]; cout << "\n\r INGRESAR REGISTROS DE CLIENTES"; // Intenta abrir el archivo CLIENTES.SEC en modo de lectura/escritura if(F == NULL) { // Crea el archivo en caso de no existir } cout << "\n\n\n\rCodigo ---------> ";getchar(); //gets(Codigo); cin>>Codigo; fread(&Registro,sizeof(Registro),1,F); // Lee el Registro, de tamano=sizeof(Registro) del archivo "F" // Ciclo mientras no se encuentre el final del archivo { { cout << "\n\n\n\rRegistro DUPLICADO ...!!!"; return; } } cout << "\n\rNombre ----------> ";getchar(); cout << "\n\rDireccion ---------> "; cout << "\n\rTelefono/celular ---> "; cout << "\n\rTipo--> "; cin >> Registro.Tipo; // Grabar el Registro completo cout << "\n\n\n\rCLIENTE registrado !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } void BuscarxCodCLIENTE() { //Numero de producto que desea consultar char Codigo[15]; cout << "\n\rBUSCAR REGISTROS POR CODIGO DE CLIENTES"; // Intenta abrir el archivo CLIENTES.SEC, en modo de solo lectura if(F == NULL) { cout << "\n\n\n\rNo existe el archivo !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } // Lee el "Registro", de tamano=sizeof(Registro) del archivo "F" { { Encabezado1(); printf("\n%-8s%-25s%-25s%12s %-5c",Registro.Cod,Registro.Nombre,Registro.Direccion, Registro.tel,Registro.Tipo); Raya60(); return; } } cout << "\n\rNo se encuentra ese registro !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } void ActualizacionxCodCLIENTE() { // Codigo de CLIENTE que desea modificar char Codigo[15]; int op; cout << "\n\rACTUALIZAR REGISTROS POR CODIGO DE CLIENTES"; // Intenta abrir el archivo CLIENTES.dat en modo de lectura/escritura if(F == NULL) // Valida la existencia del archivo { cout << "\n\n\n\rNo existe el archivo !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } // Lee el "Registro", de tamano=sizeof(Registro) del archivo "F" { { Encabezado1(); printf("\n%-8s%-25s%-25s%12s %-5c",Registro.Cod,Registro.Nombre,Registro.Direccion, Registro.tel,Registro.Tipo); Raya60(); cout << "\n\n\n\r"; do { op = Menu(); switch(op) { textcolor(LIGHTGREEN); cout << "\n\n\r Actualizacion de Clientes"; textcolor(WHITE); cout << "\n\n\n\rIngrese nuevo dato"; break; textcolor(LIGHTGREEN); cout << "\n\n\r Actualizacion de Clientes"; textcolor(WHITE); cout << "\n\n\n\rIngrese nuevo dato"; break; textcolor(LIGHTGREEN); cout << "\n\n\r Actualizacion de Clientes"; textcolor(WHITE); cout << "\n\n\n\rIngrese nuevo dato"; cout << "\n\rTipo--> "; cin >> Registro.Tipo; break; } }while(op != 0); /**Es necesario reposicionar el apuntador del archivo al principio del * registro que desea modificar, ya que al leer un registro, el * apuntador se posiciona en el registro siguiente * La funcion ftell(F) devuelve la posicion donde se encuentra el * apuntador */ // Graba el registro con los nuevos campos cout << "\n\n\n\rRegistro modificado !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } } cout << "\n\rNo se encuentra ese registro !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } void EliminacionLogicaxCodCLIENTE() { //numero de codigo que desea eliminar char Codigo[15], op; cout << "\n\rELIMINACION LOGICA DE REGISTROS DE CLIENTES"; if(F == NULL) // Checa la existencia del archivo { cout << "\n\n\n\rNo existe el archivo !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } { { Encabezado1(); printf("\n%-8s%-25s%-25s%12s %-5c",Registro.Cod,Registro.Nombre,Registro.Direccion, Registro.tel,Registro.Tipo); Raya60(); Registro.Tipo = '0'; do { cout << "\n\n\r¿... SEGURO que desea BORRARLO ...? [S/N] ---> "; cin>>op; }while(op!='S' && op!='N'); if(op == 'S') { /** Es necesario reposicionar el apuntador del archivo al principio del * registro que desea modificar, ya que al leer un registro, el * apuntador se posiciona en el registro siguiente * La funcion ftell(F) devuelve la posicion donde se encuentra el * apuntador */ cout << "\n\n\n\rRegistro eliminado !!!\n"; } cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } } cout << "\n\rNo se encuentra ese registro !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } void EliminacionFisicaxCodCLIENTE() { //Variable para controlar el archivo temporal FILE *Temporal; cout << "\n\rELIMINACION FISICA DE REGISTROS DE CLIENTES"; // Intenta abrir el archivo CLIENTES.SEC en modo de solo lectura // Valida la existencia del archivo if(F == NULL) { cout << "\n\n\n\rNo existe el archivo !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } // Crea el archivo Temporal.Sec { // Graba el registro valido en el archivo temporal //Lee el siguinete elemento del archivo } //fcloseall(); // Cierra todos los archivos abiertos //Renombra el archivo temporal con el nombre del archivo original cout << "\n\n\n\rArchivo DEFRAGMENTADO ... !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } void MostrarRegCLIENTE() { cout << "\n\r\t\t\tLISTADO DE REGISTROS DE CLIENTES\n\n"; if(F == NULL) { cout << "\n\n\n\rNo existe el archivo !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } Encabezado1(); { printf("\n%-8s%-25s%-25s%12s %-5c",Registro.Cod,Registro.Nombre,Registro.Direccion, Registro.tel,Registro.Tipo); } Raya60(); cout << "\n\rFin del listado !!!\n"; cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>"; return; } void Encabezado1() { Raya58(); cout << "\nCODIGO N O M B R E D I R E C C I O N TELEFONO TIPO"; Raya60(); } void Raya58() { cout << "\n\r=============================================================================="; } void Raya60() { cout << "\n\r------------------------------------------------------------------------------"; } int Menu() { int i; do { textcolor(LIGHTGREEN); cout << "\n\n\r Actualizacion de Clientes"; textcolor(WHITE); cout << "\n\n\n\r 1.- ACTUALIZAR Nombre"; cout << "\n\r 2.- ACTUALIZAR Direccion"; cout << "\n\r 3.- ACTUALIZAR Tipo"; textcolor(LIGHTRED); cout << "\n\r 0.- TERMINAR"; textcolor(WHITE); cout << "\n\n\n\r Seleccione su opcion ---> "; cin >> i; }while(i<0 || i>3); return(i); } void ordenarxcod(){ FILE *F; CLIENTE A,B,aux; int i,j,n; if(F==NULL){ } for(i=0;i<=n-1;i++){ for(j=i+1;j<=n;j++){ aux=A; A=B; B=aux; } } } MostrarRegCLIENTE(); } void ordenarxnom(){ FILE *F; CLIENTE A,B,aux; int i,j,n; if(F==NULL){ } for(i=0;i<=n-1;i++){ for(j=i+1;j<=n;j++){ aux=A; A=B; B=aux; } } } MostrarRegCLIENTE(); } void cuadro(int i,int j,int k,int l){ register int a; for(a=j+1;a<l;a++){ gotoxy(i,a); gotoxy(k,a); } for(a=i+1;a<k;a++){ gotoxy(a,j); gotoxy(a,l); } gotoxy(i,j);printf("%c",201); gotoxy(k,j);printf("%c",187); gotoxy(i,l);printf("%c",200); gotoxy(k,l);printf("%c",188); gotoxy(1,1); }