Welcome Guest [Log In] [Register]
If you're already a member please log in to your account to access all of our features:

Username:   Password:
Locked Topic
  • Pages:
  • 1
  • 2
***** ******!; *** ****** (20)
Topic Started: Aug 21 2007, 01:39 AM (472 Views)
GreenMan
Member Avatar
Rapsodia bohemia
 *  *  *  *  *  *  *  *  *  *  *  *  *  *
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>

struct registro{
int codigo;
char nombre[20];
char telefono[11];
char email[20];
}datos;

void menu(),
alta(),
listado(),
consulta(),
modificar(),
modificar_selectivo(),
baja(),
terminar(),
ultimo_codigo(),
error_archivo(FILE *);

int ultimo=0;

void main(){
clrscr();
ultimo_codigo();
menu();
}

void menu(){
int opcion='9';
while (opcion!='0'){
clrscr();
printf("1- Alta\n");
printf("2- Listado\n");
printf("3- Consulta\n");
printf("4- Modificar\n");
printf("5- Modificar Selectivo\n");
printf("6- Baja\n\n");
printf("0- Terminar\n");
opcion=getch();
switch (opcion){
case '1':
alta(); break;
case '2':
listado(); break;
case '3':
consulta(); break;
case '4':
modificar(); break;
case '5':
modificar_selectivo(); break;
case '6':
baja(); break;
case '0':
terminar(); break;
default:
printf("Error, opcion inavalida (%c)\n",opcion);
getch();
}
}

}

void alta(){
FILE *p_arch=NULL;
struct registro d;

clrscr();
p_arch=fopen("c:\\datos.dat","ab");
error_archivo(p_arch);

printf(">> ALTA <<\n");
printf("Codigo: %d\n",ultimo);
d.codigo=ultimo;
printf("Nombre: ");
scanf("%s",d.nombre);
printf("Telefono: ");
scanf("%s",d.telefono);
printf("eMail: ");
scanf("%s",d.email);
fwrite(&d,sizeof(datos),1,p_arch);
ultimo++;

fclose(p_arch);
}

void ultimo_codigo(){
FILE *p_arch=NULL;
int cantidad=0;

p_arch=fopen("c:\\datos.dat","rb");
if (p_arch==NULL){
printf("Nuevo");
p_arch=fopen("c:\\datos.dat","wb");
ultimo=1;
}
else{
fseek(p_arch,0,SEEK_END);
cantidad=ftell(p_arch)/sizeof(datos);
ultimo=cantidad;
ultimo++;
}
fclose(p_arch);
}
void listado(){
FILE *p_arch=NULL;
clrscr();
p_arch=fopen("c:\\datos.dat","rb");
error_archivo(p_arch);

printf("%-6s %-20s %-11s %-20s\n","Codigo", "Nombre", "Tel‚fono", "email");
while(fread(&datos,sizeof(datos),1,p_arch)!=0){
printf("%6d ",datos.codigo);
printf("%-20s ",datos.nombre);
printf("%-11s ",datos.telefono);
printf("%-20s\n",datos.email);
}
getch();
fclose(p_arch);
}

void consulta(){
FILE *p_arch=NULL;
int codigo=ultimo;

while ((codigo>ultimo-1) || (codigo<=0)){
clrscr();
printf(">> CONSULTAR <<\n");
printf("Ingrese el Codigo entre (1-%d): ",ultimo-1);
scanf("%d",&codigo);
}
p_arch=fopen("c:\\datos.dat","rb");
error_archivo(p_arch);

fseek(p_arch,sizeof(datos)*(codigo-1),SEEK_SET);
fread(&datos,sizeof(datos),1,p_arch);
printf("Codigo: %d\n", datos.codigo);
printf("Nombre: %s\n", datos.nombre);
printf("Tel‚fono: %s\n", datos.telefono);
printf("eMail: %s\n\n", datos.email);
getch();
fclose(p_arch);
}

void modificar(){
FILE *p_arch=NULL;
int codigo=ultimo;

while ((codigo>ultimo-1) || (codigo<=0)){
clrscr();
printf(">> MODIFICAR <<\n");
printf("Ingrese el Codigo entre (1-%d): ",ultimo-1);
scanf("%d",&codigo);
}
p_arch=fopen("c:\\datos.dat","rb");
error_archivo(p_arch);
fseek(p_arch,sizeof(datos)*(codigo-1),SEEK_SET);
fread(&datos,sizeof(datos),1,p_arch);
printf("Codigo: %d\n", datos.codigo);
printf("Nombre: %s\n", datos.nombre);
printf("Tel‚fono: %s\n", datos.telefono);
printf("eMail: %s\n\n", datos.email);
fclose(p_arch);

p_arch=fopen("c:\\datos.dat","rb+");
error_archivo(p_arch);
fseek(p_arch,sizeof(datos)*(codigo-1),SEEK_SET);
printf("Codigo: %d\n",codigo);
printf("Nombre: ");
scanf("%s",datos.nombre);
printf("Tel‚fono: ");
scanf("%s",datos.telefono);
printf("eMail: ");
scanf("%s",datos.email);
fwrite(&datos,sizeof(datos),1,p_arch);
printf("Datos modificados\n");
getch();
fclose(p_arch);
}
void modificar_selectivo(){
FILE *p_arch=NULL;
int codigo=ultimo, opcion=0;

while ((codigo>ultimo-1) || (codigo<=0)){
clrscr();
printf(">> MODIFICAR <<\n");
printf("Ingrese el Codigo entre (1-%d): ",ultimo-1);
scanf("%d",&codigo);
}
p_arch=fopen("c:\\datos.dat","rb+");
error_archivo(p_arch);
fseek(p_arch,sizeof(datos)*(codigo-1),SEEK_SET);
fread(&datos,sizeof(datos),1,p_arch);
while (opcion!='0'){
clrscr();
gotoxy(10,12);cprintf("<<<<<Codigo>: %d", datos.codigo);
gotoxy(10,14);cprintf("(1)-<Nombre>: %s", datos.nombre);
gotoxy(10,16);cprintf("(2)-<Tel‚fono>: %s", datos.telefono);
gotoxy(10,18);cprintf("(3)-<eMail>: %s", datos.email);
gotoxy(10,20);cprintf("(0)-<Terminar>", datos.email);
opcion = getch();
switch(opcion){
case '1':
gotoxy(26,14);
clreol();
gotoxy(26,14);
gets(datos.nombre);
break;
case '2':
gotoxy(26,16);
clreol();
gotoxy(26,16);
gets(datos.telefono);
break;
case '3':
gotoxy(26,18);
clreol();
gotoxy(26,18);
gets(datos.email);
break;
case '0':
break;
default:
gotoxy(26,20);
cprintf("\nOpcion incorrecta!!!\n");
getch();
break;
}
}
fseek(p_arch,sizeof(datos)*(codigo-1),SEEK_SET);
fwrite(&datos,sizeof(datos),1,p_arch);
printf("\nDatos modificados\n");
getch();
fclose(p_arch);
}

void baja(){
FILE *p_arch=NULL, *p_aux=NULL;
int codigo=ultimo;

//SOLICITA EL INGRESO DEL CODIGO A BORRAR
while ((codigo>ultimo-1) || (codigo<=0)){
clrscr();
printf(">> BAJA <<\n");
printf("Ingrese el Codigo entre (1-%d): ",ultimo-1);
scanf("%d",&codigo);
}
p_arch=fopen("c:\\datos.dat","rb");
error_archivo(p_arch);
fseek(p_arch,sizeof(datos)*(codigo-1),SEEK_SET);
fread(&datos,sizeof(datos),1,p_arch);
printf("\nSe van a eliminar los siguientes datos:\n\n");
printf("Codigo: %d\n", datos.codigo);
printf("Nombre: %s\n", datos.nombre);
printf("Tel‚fono: %s\n", datos.telefono);
printf("eMail: %s\n\n", datos.email);
printf("¨CONFIRMA? S - Si, otra tecla No\n");
if(toupper(getch())=='S'){
//GENERAR ARCHIVO AUXILIAR SIN EL REGISTRO A BORRAR
fseek(p_arch,0,SEEK_SET);
p_aux=fopen("c:\\auxi.dat","wb");
error_archivo(p_aux);

while(fread(&datos,sizeof(datos),1,p_arch)!=0){
if(datos.codigo < codigo)
fwrite(&datos,sizeof(datos),1,p_aux);
else{
if(datos.codigo > codigo){
datos.codigo--;
fwrite(&datos,sizeof(datos),1,p_aux);
}
}
}

fclose(p_aux);
fclose(p_arch);
//COPIAR AUX.DAT A DATOS.DAT
p_aux=fopen("c:\\auxi.dat","rb");
error_archivo(p_aux);
p_arch=fopen("c:\\datos.dat","wb");
error_archivo(p_arch);
while(fread(&datos,sizeof(datos),1,p_aux)!=0)
fwrite(&datos,sizeof(datos),1,p_arch);
fclose(p_aux);
fclose(p_arch);
ultimo--;
printf("\nDatos Eliminados\n");
getch();
}
}

void terminar(){
printf("\n Finalizando...");
getch();
}

void error_archivo(FILE *archivo){
if (archivo == NULL){
printf("\nError de E/S en un archivo\n");
getch();
exit(1);
}
}
Offline Profile Goto Top
 
Gennosuke
Member Avatar
RKO
 *  *  *  *  *  *  *  *  *  *  *  *  *  *
:o


3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
Offline Profile Goto Top
 
Yue-sama
Member Avatar
L2 Gravedad Zero!
 *  *  *  *  *  *  *  *  *  *  *  *  *  *
topic cerrado!
Offline Profile Goto Top
 
1 user reading this topic (1 Guest and 0 Anonymous)
« Previous Topic · SPAMLANDIA · Next Topic »
Locked Topic
  • Pages:
  • 1
  • 2