| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
dark_puzzle
Registrado: 29 Mar 2006 Mensajes: 5
| Publicado: 29/03/2006 10:35 am | | | Título: base de datos con tres ficheros |
| Muy buenas, tengo que hacer un proyecto para fin de asignatura de Programación, el cual tiene que consistir en crear tres ficheros en C y que interactuen entre ellos, a modo de base de datos, es decir crear una base de datos de estructura fija e introducir valores, ir almacenandolos en diferentes "fichas", y luego introducir opciones como buscar por letras, por número de registro etc, aun no tengo claro de que temática lo haré(presumiblemente debe de ser una empresa, de lo que sea), pero me gustaría que me indicaseis donde puedo encontrar ejemplos, material didactico, etc para realizar el proyecto.
Gracias por adelantado, un saludo |
| | Volver arriba | |  | wildcrue
Registrado: 06 Abr 2006 Mensajes: 45 Ubicación: Guanajuato
| Publicado: 07/04/2006 5:34 am | | | Título: A lo mejor te sirve mi chat |
| Hola, probablemente eztaz viendo manejo de ficheros de texto y .dat no? ando realizando un chat bazandome en ezto y puez hay variaz funcionez ke a lo mejor te pudieran zervir para komprender un poko maz acerka de komo modifikar ezte tipo de archivoz... te pongo el kodigo para ke lo chekez (lo hice en Microsoft Visual C++ por lo ke te pongo el .ccp y el .h):
// ARCHIVO .CPP
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <iostream.h> #include "chat.h" #include "chat2.h"
int conts=0;
void main (void) { presentacion(); //Ventana ke dice CHAT v1 tusuario(); // Menu de eleccion de usuario chat(); // Despues de autentificacion se pasa a esta parte ke ez el chat en si }
// ARCHIVO CHAT.H
extern int conts; // Prototipos void presentacion (void); //MENU void tusuario (void); //ABRIR Y CERRAR ARCHIVOS FILE *sopen(void); FILE *ropen(void);
//TIPOS DE USUARIOS void nuser (FILE *, FILE *); int luser (FILE *); void closea (FILE *); void leerusuarios (FILE *);
//AUTENTIFICAR ADMINISTRADOR void admin (void);
//DEL CHAT void chat (void);
struct datos { char usuario[20], pass[20]; };
void presentacion (void) { printf( "\n\n\t\t\t----------------\n"); printf( "\t\t\t| |\n"); printf( "\t\t\t| |\n"); printf( "\t\t\t| -----------\n"); printf( "\t\t\t| | \n"); printf( "\t\t\t| | \n"); printf( "\t\t\t| | \n"); printf( "\t\t\t| | \n"); printf( "\t\t\t| | \n"); printf( "\t\t\t| -----------\n"); printf( "\t\t\t| |\n"); printf( "\t\t\t| | H A T v1.0\n"); printf( "\t\t\t----------------\n"); printf( "\n\t\t\tPresione Enter para continuar"); getch(); system("cls"); }
// MENU void tusuario (void) { char select=' '; int conta=0; while( conta==0 ) { cik: printf( "\nSeleccione su tipo de usuario:\n\n"); printf( "a) Usuario nuevo\n"); printf( "b) Usuario ya registrado (loggearse)\n"); printf( "c) Administrador: Checar base de datos\n"); printf( "d) Salir del sistema\n"); printf( "Escriba el inciso que le corresponda: "); select=getche(); if( select=='a' || select=='A' ) { FILE *apf=NULL; FILE *apf2=NULL; system("cls"); apf2=ropen(); apf=sopen(); nuser(apf, apf2); closea(apf); closea(apf2); goto cik; } if( select=='b' || select=='B' ) { FILE *apf=NULL; char resp=' '; int dam=0; system("cls"); apf=ropen(); dam= luser(apf); closea(apf); conts++; if( dam==1 ) { printf( "\nDesea ir al chat? >> s=ir a chat | n=ir al menu\nRespuesta="); resp=getche(); if( resp=='s' || resp=='S') { printf("\n"); conta++; } if(resp=='n' || resp=='N') { printf( "\n"); goto cik; } } else { goto cik; }
} if( select=='d' || select=='D' ) { printf( "Saliendo del sistema\n"); system( "pause"); exit(0); } if( select=='c' || select=='C') { FILE *apf=NULL; admin(); apf=ropen(); leerusuarios(apf); closea(apf); }
} }
FILE *sopen (void) { FILE *apf=fopen("user.dat", "ab"); if(apf==NULL) { printf( "\nNo se pudo abrir el .dat\n"); } return apf; }
FILE *ropen (void) { FILE *apf=fopen("user.dat", "rb"); if(apf==NULL) { printf( "\nNo se pudo abrir el .dat\n"); } return apf; }
void nuser (FILE *apf, FILE *apf2) { datos user, usem; int cont=0; strcpy(user.pass," "); strcpy(user.usuario, " "); printf( "Nombre de usuario: "); gets(user.usuario); while(!feof(apf2)) { fread(&usem, sizeof(datos), 1, apf2); if (strcmp(user.usuario, usem.usuario)==0) { printf( "Nombre de usuario en existencia, el programa se cerrara\n"); system("pause"); exit(0); fseek(apf2, -sizeof(datos), SEEK_CUR); break; } } fflush(stdin); printf( "Password: "); gets(user.pass); fwrite(&user, sizeof(datos), 1, apf); }
void closea (FILE *apf) { fclose(apf); }
int luser (FILE *apf) { datos lusers; char dat1[20], dat2[20]; int cont=0; printf( "Ingrese su nombre de usuario: "); gets(dat1); while(!feof(apf)) { fread(&lusers, sizeof(datos), 1, apf); if( strcmp(dat1, lusers.usuario) == 0) { printf( "\nNombre de usuario correcto\n"); printf( "Ingrese su contraseña: "); gets(dat2); if( strcmp(dat2, lusers.pass) ==0) { printf( "Contraseña correcta!, ahora puede accesar al chat...\n"); cont++; return 1; fseek(apf, -sizeof(datos), SEEK_CUR); break; } else { printf( "Contraseña incorrecta\n"); system("pause"); exit(0); } fseek(apf, -sizeof(datos), SEEK_CUR); break; } } printf( "Nombre de usuario invalido!\n"); return 0; }
void leerusuarios(FILE *apf) { datos rusers; while(!feof(apf)) { fread(&rusers, sizeof(datos), 1, apf); printf( "Usuario\t\tPassword\n"); printf( "%s\t\t", rusers.usuario); printf( "%s\n", rusers.pass); printf( "\n"); } }
void admin (void) { char rec[11]={' '}; char correcta[11]="admin"; printf( "\nIngrese contraseña de administrador:"); gets(rec); if( strcmp(rec,correcta)==0) { printf( "\nContraseña correcta!\n"); } else { printf( "Contraseña no valida!\n"); system("pause"); exit(0); } }
// ARCHIVO DEL CHAT2.H
extern x=0; //Prototipos void separacion(void); FILE *leerdata(void); void mostrardata(FILE *, char *nick); void cerrardata(FILE *);
FILE *abrirchat(void); void escribirenchat (FILE *, char *nick); void cerrarchat (FILE *); int decision (void);
struct chater { char mensaje[100]; };
void chat (void) { FILE *chat=NULL; FILE *leer=NULL; int asd=0, x=0; char nick[10]={' '}; printf( "Ingrese su nick: "); gets(nick); while(asd==0) { chat=abrirchat(); escribirenchat(chat, nick); cerrarchat(chat);
separacion(); leer= leerdata(); mostrardata(leer, nick); separacion(); cerrardata(leer);
asd=decision(); } }
FILE *abrirchat (void) { FILE *chat=fopen("chat.dat", "ab"); if(chat==NULL) { printf( "Error: No se pudo abrir el .dat\n"); exit(0); } return chat; }
void escribirenchat(FILE *chat, char *nick) { chater captura; strcpy(captura.mensaje, " "); fflush(stdin); puts(nick); gets(captura.mensaje); printf( "\n" ); fwrite(&captura, sizeof(chater), 1, chat); }
void cerrarchat (FILE *chat) { fclose(chat); }
int decision (void) { char letra=' '; printf( "Menu>> c=Limpiar pantalla - s=Seguir con chat - e=salir del chat - a=admin\n"); printf( "Ingrese la letra que corresponda a su decision: "); letra=getche(); if(letra=='s' || letra=='s') { printf("\n"); return 0; } if(letra=='c' || letra=='C') { system("cls"); return 0; } if(letra=='e' || letra=='E') { return 1; } if(letra=='a' || letra=='A') { printf("\n"); system("limpiarchat.exe"); } }
// separacion
struct paleer { char msg[100]; };
void separacion(void) { printf( "\n------------------------------------------------\n\n"); }
FILE *leerdata(void) { FILE *leer=fopen("chat.dat", "rb"); if(leer==NULL) { printf( "Error: No se pudo tener acceso al .dat\n"); exit(0); } return leer; }
void mostrardata(FILE *leer, char *nick) { paleer tu; while(!feof(leer)) { fread(&tu, sizeof(paleer), 1, leer); if(feof(leer))break; printf( "+ %s\n", tu.msg); } }
void cerrardata(FILE *leer) { fclose(leer); }
Eso es lo ke llevo pues no ezta terminado, ezpero ke te zirva a ti o algun otro uzuario de ezte foro, digo ke no ezta terminado puez aun le kiero meter muchaz maz kozaz (aparte ke le pongo varioz goto ke kreo no zon necezarioz, jeje) pero para ezo necezito aprender programacion en C a bajo nivel puez kiero manejar direccionez ip y kozaz azi. Este chat funciona de la siguiente manera:
-Tu puedez poner el ejekutable generado en una karpeta en red y ahi, puez kada perzona ke lo abra va a poder modifikar el .dat accezando al .exe (zi me explike? :S) lo ke parecera komo zi ze trataze de un chat real. - En teoria (lo ke keria hacer) puedez inztalarlo en una komputadora ke ezte konfigurada para trabajar komo zervidor ftp y loz uzuarioz tendrian accezo a ezte zoftware a travez de internet (zegun yo zuena bien, ke opinan?).
Si enkuentraz maneraz de mejorar mi programa (o alguien maz) agradeceria ke lo publikara en ezte foro, puez el konocimiento debe zer kompartido (lo poko ke ze, ze loz aporto, jeje) y zi alguien zabe de programacion a bajo nivel, ke me heche una mano!
Zuerte kon tu proyecto! Noz vemoz! (ezkribe rezpuezta en ezte foro para zaber zi tienez maz dudaz y kon guzto te tratare de ayudar). _________________ Atte. Wildcrue |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |