|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
Codice:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
struct iscrizione
{
char nickname[10];
char email[50];
char password[10];
char ripeatpassword[10];
};
struct accesso
{
char nickname[10];
char password[10];
};
struct nuovo_admin
{
char nome[50];
char cognome[50];
char anni[5];
char nickname[10];
char password[10];
char ripetipassword[10];
char email[50];
};
typedef struct iscrizione registrazione;
typedef struct accesso login;
typedef struct nuovo_admin new_admin;
//Prototipi
void new_account(registrazione, FILE *);
void log_in(FILE *,login,registrazione);
void pass_persa(FILE *,registrazione);
void lettura(FILE *,registrazione);
void log_in_admin(FILE *,nuovo_admin);
void menu_user(registrazione);
void menu_admin();
void profilo(registrazione);
void mod_profilo(registrazione);
void member_list(registrazione);
int main(int argc, char* argv[])
{
FILE *fp,*fp1,*fp2;
registrazione reg;
login log;
new_admin admin;
int scelta,control=0;
char c,nome[20],cognome[20],anni[5],nickname[
10],password[10],ripetipassword[10],emai
l[50];
fp1=fopen("admin.dat","rt");
if(fp1!=NULL)
{
do
{
printf("\n Sistem Login Tournament");
printf("\n 1)Crea Nuovo Account");
printf("\n 2)Login");
printf("\n 3)Password Smarrita");
printf("\n 4)Lettura");
printf("\n 5)Login Admin");
printf("\n 0)Uscita");
printf("\n Scelta: ");
scanf ("%d",&scelta);
switch(scelta)
{
case 1: new_account(reg,fp); break;
case 2: log_in(fp,log,reg); break;
case 3: pass_persa(fp,reg); break;
case 4: lettura(fp,reg); break;
case 5: log_in_admin(fp,admin); break;
case 0: break;
default: printf("\nErrore: Opzione Inesistente!!");
}
} while(scelta!=0);
}
else
{
fp2=fopen("admin.dat","wt");
printf("\n ATTENZIONE!!");
printf("\n Non esiste ancora un amministratore di sistema, lo si vuole creare? (s/n): ");
scanf ("%c",&c);
if((c=='s')||(c=='S'))
{
system("cls");
printf("\n Creazione Nuovo Amministratore");
printf("\nNome: ");
fflush(stdin);
gets (nome);
printf("\nCognome: ");
fflush(stdin);
gets (cognome);
printf("\nEta': ");
fflush(stdin);
gets (anni);
printf("\nNickname: ");
fflush(stdin);
gets (nickname);
printf("\nPassword: ");
fflush(stdin);
gets (password);
printf("\nRipeti Password: ");
fflush(stdin);
gets (ripetipassword);
printf("\nE-Mail: ");
fflush(stdin);
gets (email);
strcpy(admin.nome, nome);
strcpy(admin.cognome, cognome);
strcpy(admin.anni, anni);
strcpy(admin.nickname, nickname);
strcpy(admin.password, password);
strcpy(admin.ripetipassword, ripetipassword);
strcpy(admin.email, email);
control=fwrite(&admin,sizeof(admin),1,fp2);
if(control==0)
{
printf("\nErrore nella creazione dell'amministratore!");
printf("\nPremere un tasto per uscire dal programma...");
system("del admin.dat");
getch();
exit(EXIT_SUCCESS);
}
else
{
printf("\nCreazione Amministratore avvenuta con successo!");
printf("\nPremere un tasto per chiudere il programma...");
fclose(fp2);
getch();
exit(EXIT_SUCCESS);
}
}
else
{
printf("\nQuesto software necessita di almeno un Amministratore!");
printf("\nPremere un tasto per chiudere il programma...");
fclose(fp2);
system("del admin.dat");
getch();
exit(EXIT_SUCCESS);
}
}
return 0;
}
//Funzioni
void new_account(registrazione reg, FILE *fp)
{
int controllo,n;
char nickname[10],password[10],ripeatpassword
[10],email[10];
printf("\n Creazione Nuovo Account");
printf("\nNickname (MAX 10): ");
fflush(stdin);
gets (nickname);
printf("\nPassword: ");
fflush(stdin);
gets (password);
printf("\nRipeti Password: ");
fflush(stdin);
gets (ripeatpassword);
printf("\nE-Mail: ");
fflush(stdin);
gets (email);
controllo=1;
fp=fopen("iscrizione.dat","a+t");
if(fp!=NULL)
{
while(controllo && !feof(fp))
{
n=fread(®,sizeof(reg),1,fp);
if(n>0)
controllo=strcmp(reg.nickname, nickname);
}
if(controllo!=0)
{
strcpy(reg.nickname, nickname);
strcpy(reg.password, password);
strcpy(reg.email, email);
fwrite(®,sizeof(reg),1,fp);
printf("\nCreazione nuovo account riuscita");
printf("\nPremere invio per continuare...");
fclose(fp);
getch();
system("cls");
}
else
{
printf("\nNickname esistente, scegline un'altro");
printf("\nPremere invio per continuare...");
fclose(fp);
getch();
system("cls");
}
}
else
printf("\nErrore di scrittura, prova a rieseguire l'operazione");
fclose(fp);
}
void log_in(FILE *fp,login log,registrazione reg)
{
int controllo=1,n;
char nickname[10],password[10];
printf("\n Inserisci i dati rispettando le lettere maiscuole e minuscole");
fp=fopen("iscrizione.dat","rt");
if(fp!=NULL)
{
printf("\nNickname: ");
fflush(stdin);
gets (nickname);
printf("Password: ");
fflush(stdin);
gets (password);
controllo = 1;
while(controllo && !feof(fp))
{
n=fread(®,sizeof(reg),1,fp);
if(n>0)
controllo = strcmp(reg.password, password)||strcmp(reg.nickname, nickname);
}
if(!controllo)
{
printf("\nSistema Di Login Eseguito Correttamente");
printf("\nPremere invio per continuare...");
fclose(fp);
getch();
system("cls");
menu_user(reg);
}
else
{
printf("\nNickname o Password Errati!!");
printf("\nPremere invio per continuare...");
fclose(fp);
getch();
system("cls");
}
}
else
{
printf("\nErrore di Lettura, premere un tasto per continuare...");
fclose(fp);
getch();
system("cls");
}
}
void pass_persa(FILE *fp,registrazione reg)
{
char nickname[10],email[50];
int controllo=1,n;
printf("\n Inserisci i dati rispettando le lettere maiscuole e minuscole");
fp=fopen("iscrizione.dat","rt");
if(fp!=NULL)
{
printf("\nNickname: ");
fflush(stdin);
gets (nickname);
printf("\nE-Mail: ");
fflush(stdin);
gets (email);
while(controllo && !feof(fp))
{
n=fread(®,sizeof(reg),1,fp);
if(n>0)
controllo=strcmp(reg.nickname, nickname)||strcmp(reg.email, email);
}
if(controllo==0)
{
printf("\nLa tua password e': %s", reg.password);
printf("\nPremere un tasto per continuare...");
fclose(fp);
getch();
system("cls");
}
else
{
printf("\nNickname o E-mail errati!!");
printf("\nPremi invio per continuare...");
fclose(fp);
getch();
system("cls");
}
}
else
{
printf("\nErrore di lettura, premere un tasto per tornare al menù principale..");
fclose(fp);
getch();
system("cls");
}
}
void log_in_admin(FILE *fp,new_admin admin)
{
int controllo=1,n;
char nickname[10],password[10];
printf("\n Inserisci i dati rispettando le lettere maiscuole e minuscole");
fp=fopen("admin.dat","a+t");
if(fp!=NULL)
{
printf("\n Area Di Login Per Amministratori");
printf("\nNickname: ");
fflush(stdin);
gets (nickname);
printf("\nPassword: ");
fflush(stdin);
gets (password);
while(controllo && !feof(fp))
{
n=fread(&admin,sizeof(admin),1,fp);
if(n>0)
controllo=strcmp(admin.password, password)||strcmp(admin.nickname, nickname);
}
if(controllo==0)
{
printf("\nSistema Di Login Eseguito Correttamente");
printf("\nPremere un tasto per continuare...");
fclose(fp);
getch();
system("cls");
}
else
{
printf("\nNickname o Password Errati");
printf("\nPremere un tasto per continuare...");
fclose(fp);
getch();
system("cls");
}
}
}
void menu_user(registrazione reg)
{
int scelta;
do
{
printf("\n Spazio Utenti");
printf("\n 1)Tuo Profilo");
printf("\n 2)Modifica Profilo");
printf("\n 3)Lista Membri");
printf("\n 4)Logout");
printf("\n 0)Uscita");
printf("\n Scelta: ");
scanf ("%d",&scelta);
switch(scelta)
{
case 1: profilo(reg); break;
case 2: mod_profilo(reg); break;
case 3: member_list(reg); break;
case 4: break;
case 0: exit(EXIT_SUCCESS);break;
default: printf("\nErrore: Opzione Inesistente");
}
}
while(scelta!=0);
}
void lettura(FILE *fp,registrazione reg)
{
int n;
fp=fopen("iscrizione.dat","rt");
if(fp!=NULL)
{
while(!feof(fp))
{
n=fread(®,sizeof(reg),1,fp);
if(n>0)
{
printf("\nNickname: %s", reg.nickname);
printf("\nPassword: %s", reg.password);
printf("\nE-Mail: %s", reg.email);
}
}
}
else
printf("\nErrore di lettura");
}
Mi da questi 3 errori: unresolved external symbol "void __cdecl member_list(struct iscrizione)" (?member_list@@YAXUiscrizione@@@Z) unresolved external symbol "void __cdecl mod_profilo(struct iscrizione)" (?mod_profilo@@YAXUiscrizione@@@Z) unresolved external symbol "void __cdecl profilo(struct iscrizione)" (?profilo@@YAXUiscrizione@@@Z) Dove sbaglio? |
|
|
|
|
|
#42 | ||||||
|
Senior Member
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
|
Quote:
Quote:
La fread() invece va bene. In genere preferisco quelle senza la "f" in quanto l'I/O con quest'ultime è bufferizzato; preferisco l'I/O sincronizzato. Quote:
Quote:
E' per questo che dopo aver eseguito la modifica al tuo array, se vuoi che tali modifiche siano permanenti, devi salvarle nel file con fwrite (o write). Quote:
Quote:
|
||||||
|
|
|
|
|
#43 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
Nessuno??
|
|
|
|
|
|
#44 | |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Quote:
i
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
|
#45 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
Codice:
void profilo(registrazione reg, char nickname[])
{
FILE *fp;
int control=1,n;
fp=fopen("iscrizione.dat","rt");
if(fp!=NULL)
{
while (control==1 && !feof(fp))
{
n=fread(®,sizeof(reg),1,fp);
if(n>0)
control=strcmp(reg.nickname, nickname);
}
if(control==0)
{
printf("\n Ecco i tuoi dati\n");
printf("\nNickname: %s", reg.nickname);
printf("\nPassword: %s", reg.password);
printf("\nE-Mail: %s", reg.email);
printf("\nPremere un tasto per continuare...");
getch();
fclose(fp);
system("cls");
}
else
{
printf("\nDati Inesistenti, premere un tasto per continuare...");
getch();
fclose(fp);
system("cls");
}
}
else
{
printf("\nErrore di lettura, prova a rieseguire l'operazione");
printf("\nPremere un tasto per continuare...");
fclose(fp);
getch();
system("cls");
}
}
void mod_profilo(registrazione reg, char nickname[])
{
FILE *fp;
int control=1,n,c,pos=0;
char password[10],ripetipassword[10],email[50];
printf("\n ATTENZIONE!!");
printf("\n Il tuo Nickname rimmarrà invariato, non puoi modificarlo!\n");
printf("\nNuova Password: ");
fflush(stdin);
gets (password);
printf("\nRipeti Password: ");
fflush(stdin);
gets (ripetipassword);
printf("\nNuova E-Mail: ");
fflush(stdin);
gets (email);
fp=fopen("iscrizione.dat","r+t");
if(fp!=NULL)
{
while(control==1 && !feof(fp))
{
n=fread(®,sizeof(reg),1,fp);
if(n>0)
control=strcmp(reg.nickname, nickname);
}
if(control==0)
{
pos=(ftell(fp))-(sizeof(reg));
fclose(fp);
strcpy(reg.password, password);
strcpy(reg.ripeatpassword, ripetipassword);
strcpy(reg.email, email);
fp=fopen("iscrizione.dat","r+");
fseek(fp,pos,0);
c=fwrite(®,sizeof(reg),1,fp);
if(c>0)
{
printf("\nOperazione eseguita con successo!");
fclose(fp);
profilo(reg,nickname);
system("cls");
}
else
{
printf("\nSi e' vericato un errore nel salvare i dati.");
printf("\nContatta l'amministratore di sistema");
printf("\nPremere un tasto per continuare...");
getch();
fclose(fp);
system("cls");
}
}
else
{
printf("\nErrore Interno: Il tuo nickname non esiste!!");
printf("\nContatta l'amministratore di sistema");
printf("\nPremere un tasto per continuare...");
getch();
fclose(fp);
system("cls");
}
}
else
{
printf("\nErrore Interno: Non è stato trovato il file di gestione");
printf("\nPremere un tasto per continuare...");
getch();
system("cls");
}
}
Come mai? Ultima modifica di Gogeta ss4 : 09-05-2004 alle 22:18. |
|
|
|
|
|
#46 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
fp=fopen("iscrizione.dat","r+t");
fp=fopen("iscrizione.dat","r+"); Decidi se aprirlo in binario o in testo |
|
|
|
|
|
#47 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
avevo dimenticato un fclose(fp)
|
|
|
|
|
|
#48 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
gokan ho appena finito una funzione di modifica dei campi (per quanto riguarda il mio programma), dacci un occhiata magari riesci ad aggiustare il tuo..
Codice:
void mod_profilo(registrazione reg, char nickname[])
{
FILE *fp;
int control=1,n,c,pos=0;
char password[10],ripetipassword[10],email[50];
printf("\n ATTENZIONE!!");
printf("\n Il tuo Nickname rimmarrà invariato, non puoi modificarlo!\n");
printf("\nNuova Password: ");
fflush(stdin);
gets (password);
printf("\nRipeti Password: ");
fflush(stdin);
gets (ripetipassword);
printf("\nNuova E-Mail: ");
fflush(stdin);
gets (email);
fp=fopen("iscrizione.dat","r+t");
if(fp!=NULL)
{
while(control && !feof(fp))
{
n=fread(®,sizeof(reg),1,fp);
if(n>0)
control=strcmp(reg.nickname, nickname);
}
if(control==0)
{
pos=(ftell(fp))-(sizeof(reg));
fclose(fp);
strcpy(reg.password, password);
strcpy(reg.ripeatpassword, ripetipassword);
strcpy(reg.email, email);
fp=fopen("iscrizione.dat","r+");
fseek(fp,pos,0);
c=fwrite(®,sizeof(reg),1,fp);
if(c>0)
{
printf("\nOperazione eseguita con successo!");
fclose(fp);
profilo(reg,nickname);
system("cls");
}
else
{
printf("\nSi e' vericato un errore nel salvare i dati.");
printf("\nContatta l'amministratore di sistema");
printf("\nPremere un tasto per continuare...");
getch();
fclose(fp);
system("cls");
}
}
else
{
printf("\nErrore Interno: Il tuo nickname non esiste!!");
printf("\nContatta l'amministratore di sistema");
printf("\nPremere un tasto per continuare...");
getch();
fclose(fp);
system("cls");
}
}
else
{
printf("\nErrore Interno: Non è stato trovato il file di gestione");
printf("\nPremere un tasto per continuare...");
getch();
system("cls");
}
}
|
|
|
|
|
|
#49 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Grazie per l'interessamente, effettivamente mi potrebbe servire..
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#50 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
Finalmente stasera ho finito la parte del programma che riguarda l'utente(10 pagine di codice
Adesso devo fare quella dell'admin! |
|
|
|
|
|
#51 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
Raga come faccio a eliminare una struttura da file?
|
|
|
|
|
|
#52 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Crei un altro file con tutte le altre strutture meno qella che vuoi eliminare...
|
|
|
|
|
|
#53 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
ok grazie.
|
|
|
|
|
|
#54 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
Dimenticavo, io uso visual c++ e quando faccio il debug mi fa vedere la freccetta di fianco a ogni istruzione, quando però richiama una funzione, la freccia si ferma alla chiamata di funzione e non va dove c'è la definizione della funzione.
Non c'è un modo per farla andare li, perchè se no se c'è qualche errore all'interno delle funzioni non riesco a vederlo |
|
|
|
|
|
#55 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Premi F11 per entrare dentro ad un funzione... F10 per non entrarci...
|
|
|
|
|
|
#56 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
Grazie!!
|
|
|
|
|
|
#57 | |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Quote:
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
|
#58 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
no, ti spiego brevemente.
Per iniziarlo premi F11, si avvia così il programma, poi fin quando hai istruzioni premi F10, quando dovrai inserire qualche input si blocca, a quel punto apri la finestra e inserisci l'input, dopo che lo hai inserito premi sul visual c e continui a premere F10, se trovi qualche chiamata di funzione premi F11 per entrarvi. Tutto qui Grazie al Debug ho risolto molti errori!. Impara ad usarlo bene così ti rendi più facile la programmazione! |
|
|
|
|
|
#59 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Lo so che il debug è uno strumento che ogni buon programmatore dovrebbe usare
Grazie per le dritte
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#60 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
C'è anche molto altro... I breakpoint (si inseriscono con F9) e sono punti in cui il programma si fermerà automaticamente... Per lanciare l'esecuzione fino al primo breakpoint basta premere F5... Riprende F5 ci si ferma di nuovo al primo breakpoint...
Poi c'è il watch... Nell'apposita finestra si potranno inserire di espressioni (questo che io sappia lo fa solo VC++) e nomi di variabili per valutarne il contenuto istruzione per istruzione... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:49.



















