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);
}


 
  




 Autor
 Autor
		


 En línea
									En línea
								




 
						