Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Studente : Scia Massimiliano
- Classe : 3IC
- Data : 16/05/12 17:12
- Nome del file : conto corrente
- */
- #include <iostream>
- #include <cmath>
- #include <ctime>
- #include <cstdlib>
- #include <cctype>
- #include <windows.h>
- #include <fstream>
- #include <time.h>
- #include <stdio.h>
- #define N 20
- using namespace std;
- struct conto{
- char cod[N];
- char nome[N];
- char soldi[N];
- };//conto
- void end(void){
- fflush(stdin);
- cout<<"\n\nPremere Invio per continuare.";
- getchar();
- }//end
- bool scriviconto(char* nomefile){
- int n;
- cout<<"\nQuanti conti vuoi inserire?\n- ";
- cin>>n;
- FILE* f;
- f=fopen(nomefile,"ab+");
- if(f==NULL)
- return 0;
- conto c;
- for(int i=0;i<n;i++){
- cout<<"\nNome: ";
- fflush(stdin);
- cin.get(c.nome,N,'\n');
- fflush(stdin);
- cout<<"\nCodice: ";
- fflush(stdin);
- cin.get(c.cod,N,'\n');
- fflush(stdin);
- cout<<"\nSoldi: ";
- fflush(stdin);
- cin.get(c.soldi,N,'\n');
- fflush(stdin);
- fwrite(&c,sizeof(conto),1,f);
- }//for
- fclose(f);
- return 1;
- }//scriviconto
- bool modconto(char* nomefile){
- FILE* f;
- f=fopen(nomefile,"rb+");
- if(f==NULL)
- return 0;
- conto c;
- char scelta;
- cout<<"\nPer soldi (s), per nome (n), per codice (c), per posizione (p)\n- ";
- do{
- cin>>scelta;
- if(scelta!='s' && scelta!='n' && scelta!='c' && scelta!='p')
- cout<<"\nErrore!\n";
- }//do
- while(scelta!='s' && scelta!='n' && scelta!='c' && scelta!='p');
- if(scelta=='s'){
- char soldi[N];
- cout<<"\nInserisci l'ammontare dei soldi: ";
- fflush(stdin);
- cin.get(soldi,N,'\n');
- fflush(stdin);
- while(!feof(f)){
- fread(&c,sizeof(conto),1,f);
- if(strcmp(c.soldi,soldi)==0){
- cout<<"\nNome: ";
- fflush(stdin);
- cin.get(c.nome,N,'\n');
- fflush(stdin);
- cout<<"\nCodice: ";
- fflush(stdin);
- cin.get(c.cod,N,'\n');
- fflush(stdin);
- cout<<"\nSoldi: ";
- fflush(stdin);
- cin.get(c.soldi,N,'\n');
- fflush(stdin);
- fseek(f,-sizeof(conto),SEEK_CUR);
- fwrite(&c,sizeof(conto),1,f);
- break;
- }//if
- }//while
- }//if
- else if(scelta=='n'){
- char nome[N];
- cout<<"\nInserisci il nome: ";
- fflush(stdin);
- cin.get(nome,N,'\n');
- fflush(stdin);
- while(!feof(f)){
- fread(&c,sizeof(conto),1,f);
- if(strcmp(c.nome,nome)==0){
- cout<<"\nNome: ";
- fflush(stdin);
- cin.get(c.nome,N,'\n');
- fflush(stdin);
- cout<<"\nCodice: ";
- fflush(stdin);
- cin.get(c.cod,N,'\n');
- fflush(stdin);
- cout<<"\nSoldi: ";
- fflush(stdin);
- cin.get(c.soldi,N,'\n');
- fflush(stdin);
- fseek(f,-sizeof(conto),SEEK_CUR);
- fwrite(&c,sizeof(conto),1,f);
- break;
- }//if
- }//while
- }//else-if
- else if(scelta=='p'){
- int pos,maxrec;
- fseek(f,0,SEEK_END);
- maxrec=ftell(f)/sizeof(conto);
- cout<<"\nInserisci la posizione: ";
- do{
- cin>>pos;
- if(pos>maxrec)
- cout<<"\nErrore!\n";
- }//do
- while(pos>maxrec);
- pos--;
- cout<<"\nNome: ";
- fflush(stdin);
- cin.get(c.nome,N,'\n');
- fflush(stdin);
- cout<<"\nConto: ";
- fflush(stdin);
- cin.get(c.cod,N,'\n');
- fflush(stdin);
- cout<<"\nSoldi: ";
- fflush(stdin);
- cin.get(c.soldi,N,'\n');
- fflush(stdin);
- fseek(f,pos*sizeof(conto),SEEK_SET);
- fwrite(&c,sizeof(conto),1,f);
- }//else-if
- else{
- char codice[N];
- cout<<"\nInserisci il conto: ";
- fflush(stdin);
- cin.get(codice,N,'\n');
- fflush(stdin);
- while(!feof(f)){
- fread(&c,sizeof(conto),1,f);
- if(strcmp(c.cod,codice)==0){
- cout<<"\nNome: ";
- fflush(stdin);
- cin.get(c.nome,N,'\n');
- fflush(stdin);
- cout<<"\nConto: ";
- fflush(stdin);
- cin.get(c.cod,N,'\n');
- fflush(stdin);
- cout<<"\nSoldi: ";
- fflush(stdin);
- cin.get(c.soldi,N,'\n');
- fflush(stdin);
- fseek(f,-sizeof(conto),SEEK_CUR);
- fwrite(&c,sizeof(conto),1,f);
- break;
- }//if
- }//while
- }//else
- fclose(f);
- return 1;
- }//modconto
- bool eliminaconto(char* nomefile){
- FILE* f;
- FILE* f1;
- f=fopen(nomefile,"rb");
- f1=fopen("kartoffeln.txt","wb");
- if(f==NULL || f1==NULL)
- return 0;
- conto c;
- char scelta;
- cout<<"\nPer soldi (s), per nome (n), per codice (c), per posizione (p)\n- ";
- do{
- cin>>scelta;
- if(scelta!='s' && scelta!='n' && scelta!='c' && scelta!='p')
- cout<<"\nErrore!\n";
- }//do
- while(scelta!='s' && scelta!='n' && scelta!='c' && scelta!='p');
- if(scelta=='s'){
- char soldi[N];
- cout<<"\nInserisci i soldi: ";
- fflush(stdin);
- cin.get(soldi,N,'\n');
- fflush(stdin);
- fread(&c,sizeof(conto),1,f);
- while(!feof(f)){
- if(strcmp(c.soldi,soldi)!=0)
- fwrite(&c,sizeof(conto),1,f1);
- fread(&c,sizeof(conto),1,f);
- }//while
- }//if
- else if(scelta=='n'){
- char nome[N];
- cout<<"\nInserisci il nome: ";
- fflush(stdin);
- cin.get(nome,N,'\n');
- fflush(stdin);
- fread(&c,sizeof(conto),1,f);
- while(!feof(f)){
- if(strcmp(c.nome,nome)!=0)
- fwrite(&c,sizeof(conto),1,f1);
- fread(&c,sizeof(conto),1,f);
- }//while
- }//else-if
- else if(scelta=='c'){
- char conto[N];
- cout<<"\nInserisci il conto: ";
- fflush(stdin);
- cin.get(conto,N,'\n');
- fflush(stdin);
- fread(&c,sizeof(conto),1,f);
- while(!feof(f)){
- if(strcmp(c.cod,conto)!=0)
- fwrite(&c,sizeof(conto),1,f1);
- fread(&c,sizeof(conto),1,f);
- }//while
- }//else-if
- else{
- int pos;
- cout<<"\nInserisci la posizione: ";
- fseek(f,0,SEEK_END);
- int maxrec=ftell(f)/sizeof(conto);
- do{
- cin>>pos;
- if(pos>maxrec)
- cout<<"\nErrore!\n";
- }//do
- while(pos>maxrec);
- int i=0;
- pos--;
- fseek(f,0,SEEK_SET);
- while(i<maxrec){
- fread(&c,sizeof(conto),1,f);
- if(i!=pos)
- fwrite(&c,sizeof(conto),1,f1);
- i++;
- }//while
- }//else
- fclose(f);
- fclose(f1);
- remove(nomefile);
- rename("kartoffeln.txt",nomefile);
- return 1;
- }//eliminaconto
- bool leggiconto(char* nomefile){
- FILE* f;
- f=fopen(nomefile,"rb");
- if(f==NULL)
- return 0;
- conto c;
- fread(&c,sizeof(conto),1,f);
- while(!feof(f)){
- cout<<"\n\n\t\tConto "<<c.cod<<":\nNome: "<<c.nome<<"\n\nSoldi: "<<c.soldi;
- fread(&c,sizeof(conto),1,f);
- }//while
- fclose(f);
- return 1;
- }//leggiconto
- int main(){
- char nomefile[N];
- cout<<"\nInserisci il nome del file: ";
- fflush(stdin);
- cin.get(nomefile,N,'\n');
- fflush(stdin);
- bool s=scriviconto(nomefile);
- bool l=leggiconto(nomefile);
- cout<<"\nVuoi modificare o eliminare? (m/e/n-niente)\n- ";
- char scelta;
- do{
- cin>>scelta;
- if(scelta!='m' && scelta!='n' && scelta!='e')
- cout<<"\nErrore!\n";
- }//do
- while(scelta!='m' && scelta!='n' && scelta!='e');
- if(scelta=='m'){
- bool m=modconto(nomefile);
- l=leggiconto(nomefile);
- }//if
- else if(scelta=='e'){
- bool e=eliminaconto(nomefile);
- l=leggiconto(nomefile);
- }//else-if
- else
- l=leggiconto(nomefile);
- end();
- return 0;
- }//main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement