Advertisement
tegusta

conto corrente kevin :)

May 16th, 2012
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.64 KB | None | 0 0
  1. /*
  2. Studente : Scia Massimiliano
  3. Classe : 3IC
  4. Data : 16/05/12 17:12
  5. Nome del file : conto corrente
  6. */
  7.  
  8. #include <iostream>
  9. #include <cmath>
  10. #include <ctime>
  11. #include <cstdlib>
  12. #include <cctype>
  13. #include <windows.h>
  14. #include <fstream>
  15. #include <time.h>
  16. #include <stdio.h>
  17. #define N 20
  18.  
  19. using namespace std;
  20.  
  21. struct conto{
  22.       char cod[N];
  23.       char nome[N];
  24.       char soldi[N];
  25. };//conto
  26.  
  27. void end(void){
  28.     fflush(stdin);
  29.     cout<<"\n\nPremere Invio per continuare.";
  30.     getchar();
  31. }//end
  32.  
  33. bool scriviconto(char* nomefile){
  34.      int n;
  35.      cout<<"\nQuanti conti vuoi inserire?\n- ";
  36.      cin>>n;
  37.      FILE* f;
  38.      f=fopen(nomefile,"ab+");
  39.      if(f==NULL)
  40.          return 0;
  41.      conto c;
  42.      for(int i=0;i<n;i++){
  43.          cout<<"\nNome: ";
  44.          fflush(stdin);
  45.          cin.get(c.nome,N,'\n');
  46.          fflush(stdin);
  47.          cout<<"\nCodice: ";
  48.          fflush(stdin);
  49.          cin.get(c.cod,N,'\n');
  50.          fflush(stdin);
  51.          cout<<"\nSoldi: ";
  52.          fflush(stdin);
  53.          cin.get(c.soldi,N,'\n');
  54.          fflush(stdin);
  55.          fwrite(&c,sizeof(conto),1,f);
  56.      }//for
  57.      fclose(f);
  58.      return 1;
  59. }//scriviconto
  60.  
  61. bool modconto(char* nomefile){
  62.      FILE* f;
  63.      f=fopen(nomefile,"rb+");
  64.      if(f==NULL)
  65.          return 0;
  66.      conto c;
  67.      char scelta;
  68.      cout<<"\nPer soldi (s), per nome (n), per codice (c), per posizione (p)\n- ";
  69.      do{
  70.          cin>>scelta;
  71.          if(scelta!='s' && scelta!='n' && scelta!='c' && scelta!='p')
  72.              cout<<"\nErrore!\n";
  73.      }//do
  74.      while(scelta!='s' && scelta!='n' && scelta!='c' && scelta!='p');
  75.      if(scelta=='s'){
  76.          char soldi[N];
  77.          cout<<"\nInserisci l'ammontare dei soldi: ";
  78.          fflush(stdin);
  79.          cin.get(soldi,N,'\n');
  80.          fflush(stdin);
  81.          while(!feof(f)){
  82.              fread(&c,sizeof(conto),1,f);
  83.              if(strcmp(c.soldi,soldi)==0){
  84.                  cout<<"\nNome: ";
  85.                  fflush(stdin);
  86.                  cin.get(c.nome,N,'\n');
  87.                  fflush(stdin);
  88.                  cout<<"\nCodice: ";
  89.                  fflush(stdin);
  90.                  cin.get(c.cod,N,'\n');
  91.                  fflush(stdin);
  92.                  cout<<"\nSoldi: ";
  93.                  fflush(stdin);
  94.                  cin.get(c.soldi,N,'\n');
  95.                  fflush(stdin);
  96.                  fseek(f,-sizeof(conto),SEEK_CUR);
  97.                  fwrite(&c,sizeof(conto),1,f);
  98.                  break;
  99.              }//if
  100.          }//while
  101.      }//if
  102.      else if(scelta=='n'){
  103.          char nome[N];
  104.          cout<<"\nInserisci il nome: ";
  105.          fflush(stdin);
  106.          cin.get(nome,N,'\n');
  107.          fflush(stdin);
  108.          while(!feof(f)){
  109.              fread(&c,sizeof(conto),1,f);
  110.              if(strcmp(c.nome,nome)==0){
  111.                  cout<<"\nNome: ";
  112.                  fflush(stdin);
  113.                  cin.get(c.nome,N,'\n');
  114.                  fflush(stdin);
  115.                  cout<<"\nCodice: ";
  116.                  fflush(stdin);
  117.                  cin.get(c.cod,N,'\n');
  118.                  fflush(stdin);
  119.                  cout<<"\nSoldi: ";
  120.                  fflush(stdin);
  121.                  cin.get(c.soldi,N,'\n');
  122.                  fflush(stdin);
  123.                  fseek(f,-sizeof(conto),SEEK_CUR);
  124.                  fwrite(&c,sizeof(conto),1,f);
  125.                  break;
  126.              }//if
  127.          }//while
  128.      }//else-if
  129.      else if(scelta=='p'){
  130.          int pos,maxrec;
  131.          fseek(f,0,SEEK_END);
  132.          maxrec=ftell(f)/sizeof(conto);
  133.          cout<<"\nInserisci la posizione: ";
  134.          do{
  135.              cin>>pos;
  136.              if(pos>maxrec)
  137.                  cout<<"\nErrore!\n";
  138.          }//do
  139.          while(pos>maxrec);
  140.          pos--;
  141.          cout<<"\nNome: ";
  142.          fflush(stdin);
  143.          cin.get(c.nome,N,'\n');
  144.          fflush(stdin);
  145.          cout<<"\nConto: ";
  146.          fflush(stdin);
  147.          cin.get(c.cod,N,'\n');
  148.          fflush(stdin);
  149.          cout<<"\nSoldi: ";
  150.          fflush(stdin);
  151.          cin.get(c.soldi,N,'\n');
  152.          fflush(stdin);
  153.          fseek(f,pos*sizeof(conto),SEEK_SET);
  154.          fwrite(&c,sizeof(conto),1,f);
  155.      }//else-if
  156.      else{
  157.          char codice[N];
  158.          cout<<"\nInserisci il conto: ";
  159.          fflush(stdin);
  160.          cin.get(codice,N,'\n');
  161.          fflush(stdin);
  162.          while(!feof(f)){
  163.              fread(&c,sizeof(conto),1,f);
  164.              if(strcmp(c.cod,codice)==0){
  165.                  cout<<"\nNome: ";
  166.                  fflush(stdin);
  167.                  cin.get(c.nome,N,'\n');
  168.                  fflush(stdin);
  169.                  cout<<"\nConto: ";
  170.                  fflush(stdin);
  171.                  cin.get(c.cod,N,'\n');
  172.                  fflush(stdin);
  173.                  cout<<"\nSoldi: ";
  174.                  fflush(stdin);
  175.                  cin.get(c.soldi,N,'\n');
  176.                  fflush(stdin);
  177.                  fseek(f,-sizeof(conto),SEEK_CUR);
  178.                  fwrite(&c,sizeof(conto),1,f);
  179.                  break;
  180.              }//if
  181.          }//while
  182.      }//else
  183.      fclose(f);
  184.      return 1;
  185. }//modconto
  186.    
  187. bool eliminaconto(char* nomefile){
  188.      FILE* f;
  189.      FILE* f1;
  190.      f=fopen(nomefile,"rb");
  191.      f1=fopen("kartoffeln.txt","wb");
  192.      if(f==NULL || f1==NULL)
  193.          return 0;
  194.      conto c;
  195.      char scelta;
  196.      cout<<"\nPer soldi (s), per nome (n), per codice (c), per posizione (p)\n- ";
  197.      do{
  198.          cin>>scelta;
  199.          if(scelta!='s' && scelta!='n' && scelta!='c' && scelta!='p')
  200.              cout<<"\nErrore!\n";
  201.      }//do
  202.      while(scelta!='s' && scelta!='n' && scelta!='c' && scelta!='p');
  203.      if(scelta=='s'){
  204.          char soldi[N];
  205.          cout<<"\nInserisci i soldi: ";
  206.          fflush(stdin);
  207.          cin.get(soldi,N,'\n');
  208.          fflush(stdin);
  209.          fread(&c,sizeof(conto),1,f);
  210.          while(!feof(f)){
  211.              if(strcmp(c.soldi,soldi)!=0)
  212.                  fwrite(&c,sizeof(conto),1,f1);
  213.              fread(&c,sizeof(conto),1,f);
  214.          }//while
  215.      }//if
  216.      else if(scelta=='n'){
  217.          char nome[N];
  218.          cout<<"\nInserisci il nome: ";
  219.          fflush(stdin);
  220.          cin.get(nome,N,'\n');
  221.          fflush(stdin);
  222.          fread(&c,sizeof(conto),1,f);
  223.          while(!feof(f)){
  224.              if(strcmp(c.nome,nome)!=0)
  225.                  fwrite(&c,sizeof(conto),1,f1);
  226.              fread(&c,sizeof(conto),1,f);
  227.          }//while
  228.      }//else-if
  229.      else if(scelta=='c'){
  230.          char conto[N];
  231.          cout<<"\nInserisci il conto: ";
  232.          fflush(stdin);
  233.          cin.get(conto,N,'\n');
  234.          fflush(stdin);
  235.          fread(&c,sizeof(conto),1,f);
  236.          while(!feof(f)){
  237.              if(strcmp(c.cod,conto)!=0)
  238.                  fwrite(&c,sizeof(conto),1,f1);
  239.              fread(&c,sizeof(conto),1,f);
  240.          }//while
  241.      }//else-if
  242.      else{
  243.          int pos;
  244.          cout<<"\nInserisci la posizione: ";
  245.          fseek(f,0,SEEK_END);
  246.          int maxrec=ftell(f)/sizeof(conto);
  247.          do{
  248.              cin>>pos;
  249.              if(pos>maxrec)
  250.                  cout<<"\nErrore!\n";
  251.          }//do
  252.          while(pos>maxrec);
  253.          int i=0;
  254.          pos--;
  255.          fseek(f,0,SEEK_SET);
  256.          while(i<maxrec){
  257.              fread(&c,sizeof(conto),1,f);
  258.              if(i!=pos)
  259.                  fwrite(&c,sizeof(conto),1,f1);
  260.              i++;
  261.          }//while
  262.      }//else
  263.      fclose(f);
  264.      fclose(f1);
  265.      remove(nomefile);
  266.      rename("kartoffeln.txt",nomefile);
  267.      return 1;
  268. }//eliminaconto
  269.          
  270.      
  271.  
  272. bool leggiconto(char* nomefile){
  273.      FILE* f;
  274.      f=fopen(nomefile,"rb");
  275.      if(f==NULL)
  276.          return 0;
  277.      conto c;
  278.      fread(&c,sizeof(conto),1,f);
  279.      while(!feof(f)){
  280.          cout<<"\n\n\t\tConto "<<c.cod<<":\nNome: "<<c.nome<<"\n\nSoldi: "<<c.soldi;
  281.          fread(&c,sizeof(conto),1,f);
  282.      }//while
  283.      fclose(f);
  284.      return 1;
  285. }//leggiconto
  286.  
  287.  
  288. int main(){
  289.     char nomefile[N];
  290.     cout<<"\nInserisci il nome del file: ";
  291.     fflush(stdin);
  292.     cin.get(nomefile,N,'\n');
  293.     fflush(stdin);
  294.     bool s=scriviconto(nomefile);
  295.     bool l=leggiconto(nomefile);
  296.     cout<<"\nVuoi modificare o eliminare? (m/e/n-niente)\n- ";
  297.     char scelta;
  298.     do{
  299.          cin>>scelta;
  300.          if(scelta!='m' && scelta!='n' && scelta!='e')
  301.              cout<<"\nErrore!\n";
  302.     }//do
  303.     while(scelta!='m' && scelta!='n' && scelta!='e');
  304.     if(scelta=='m'){
  305.         bool m=modconto(nomefile);
  306.         l=leggiconto(nomefile);
  307.     }//if
  308.     else if(scelta=='e'){
  309.         bool e=eliminaconto(nomefile);
  310.         l=leggiconto(nomefile);
  311.     }//else-if
  312.     else
  313.         l=leggiconto(nomefile);
  314.     end();
  315.     return 0;
  316. }//main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement