Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Come posso ottenere una GUI per la gestione dei File Binari?
Forum - C/C++ - Come posso ottenere una GUI per la gestione dei File Binari?

Avatar
Michael.Kiske (Normal User)
Newbie


Messaggi: 8
Iscritto: 17/04/2013

Segnala al moderatore
Postato alle 9:28
Mercoledì, 17/04/2013
Salve a tutti, sono nuovo di qui e vorrei chiedere il vostro aiuto se è possibile :).
Ho scritto questo codice su windows, quindi la grafica è prettamente CUA (Character User Interface). Vorrei implementare con questo codice qualche GUI semplice da capire e da scrivere. Il programma permette la gestione di un registro, cioè la possibilità di aggiungere alunni e cambiare le ore delle assenze. Spero di essere stato chiaro e di ottenere qualche aiuto, Grazie in anticipo!.

Questo è il codice:
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4. #include <string.h>
  5. #include <windows.h>
  6. #include <conio.h>
  7. HANDLE hConsole;
  8. WORD wAttr;
  9.  
  10. using namespace std;
  11. /* Funzioni Grafiche*/
  12. void rosso();
  13. void verde();
  14.  
  15. void rosso()
  16. {
  17.      hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
  18.      wAttr=FOREGROUND_BLUE;
  19.      SetConsoleTextAttribute(hConsole,wAttr);
  20. }
  21.  
  22. void verde()
  23. {
  24.      hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
  25.      wAttr=FOREGROUND_GREEN;
  26.      SetConsoleTextAttribute(hConsole,wAttr);
  27. }
  28.  
  29.  
  30. struct dati
  31. {
  32.        char nome[20];
  33.        char cognome[20];
  34.        int assenze;
  35.        int matricola;
  36.        bool state;
  37. };
  38.  
  39. int aggiungi_alunno(char *nomefile)
  40. {
  41.      dati alunni;
  42.      long int dim_file,numrec;
  43.      cout <<"Inserisci nome: ";
  44.      cin>>alunni.nome;
  45.      cout<<"Inserisci cognome: ";
  46.      cin>>alunni.cognome;
  47.      cout <<"Inserisci ore assenza: ";
  48.      cin>>alunni.assenze;
  49.      ofstream file;
  50.      file.open(nomefile,ios::app|ios::binary);
  51.      file.seekp(-0,ios::end);
  52.      dim_file=file.tellp();
  53.      alunni.matricola=(dim_file/sizeof(alunni))+1;
  54.      file.write((char*)&alunni,sizeof(alunni));
  55.      file.close();
  56.      return 0;
  57. }
  58.  
  59. void stampa_stato(char *nomefile)
  60. {
  61.      system("cls");
  62.      dati alunno,*elem=new dati;
  63.      ifstream file;
  64.      file.open(nomefile,ios::binary);
  65.      int num=1;
  66.      while(true)
  67.      {
  68.                 if(file.read((char*)elem,sizeof(alunno)))
  69.                 {          
  70.                            alunno=*elem;
  71.                            if(alunno.state!=false)cout<<num<<":" <<"\t\t\t"<<alunno.nome<<setw(20)<<alunno.cognome<<setw(20)<<alunno.assenze<<setw(20)<<"\n";
  72.                            num++;                
  73.                 }
  74.                 else break;
  75.      }
  76.      file.close();
  77. }
  78.  
  79. int aggiorna_stato(char* nomefile)
  80. {
  81.      dati alunno,*elem=new dati;
  82.      int num_assenze,mat;
  83.      cout <<"Inserisci matricola alunno";cin>>mat;
  84.      fstream file;
  85.      file.open(nomefile,ios::in|ios::out|ios::binary);
  86.      file.seekg((sizeof(alunno)*(mat-1)),ios::beg);
  87.      file.read((char*)elem,sizeof(alunno));
  88.      alunno=*elem;
  89.      cout <<"\nInserisci numero assenze ";
  90.      cin>>num_assenze;
  91.      alunno.assenze=alunno.assenze+num_assenze;
  92.    
  93.      file.seekg((sizeof(alunno)*(mat-1)),ios::beg);
  94.      if(file.write((char*)&alunno,sizeof(alunno)))cout <<"Operazione conclusa con successo!";
  95.      file.close();  
  96. }
  97.  
  98. void on_off(char *nomefile)
  99. {
  100.      dati alunno, *elem=new dati;
  101.      string stato;
  102.      int mat;
  103.      fstream file;
  104.      file.open(nomefile,ios::in|ios::out|ios::binary);
  105.      stampa_stato("Registro.bin");
  106.      cout <<"\nInserici matricola identificativa:  ";cin>>mat;
  107.      cout <<"\nVuole disattivarlo? s/n:  ";
  108.      cin>>stato;
  109.      
  110.      if(stato=="s")
  111.      {
  112.      //apro il file in modalità di input output binary
  113.      file.seekg((sizeof(alunno)*(mat-1)),ios::beg);//posiziono il puntatore sull'alunno che mi interessa partendo dall'inizio
  114.      file.read((char*)elem,sizeof(alunno));//leggo i dati dell'alunno puntato dal puntatore
  115.      alunno=*elem;
  116.      alunno.state=false;
  117.      file.seekg((sizeof(alunno)*(mat-1)),ios::beg);//riposiziono il puntatore sull'alunno iniziale
  118.      if(file.write((char*)&alunno,sizeof(alunno)))cout <<"Operazione riuscita\n";//sovrascivo il record con quello nuovo
  119.      file.close();//chiudo il file
  120.      }
  121.      else if(stato=="reon")
  122.      {
  123.      file.seekg((sizeof(alunno)*(mat-1)),ios::beg);//posiziono il puntatore sull'alunno che mi interessa partendo dall'inizio
  124.      file.read((char*)elem,sizeof(alunno));//leggo i dati dell'alunno puntato dal puntatore
  125.      alunno=*elem;
  126.      alunno.state=true;
  127.      file.seekg((sizeof(alunno)*(mat-1)),ios::beg);//riposiziono il puntatore sull'alunno iniziale
  128.      if(file.write((char*)&alunno,sizeof(alunno)))cout <<"Operazione riuscita\n\n";//sovrascivo il record con quello nuovo
  129.      file.close();//chiudo il file
  130.      }
  131.    
  132.      
  133.      
  134. }
  135.      
  136.      
  137.                
  138.      
  139. int main ()
  140. {
  141.    
  142.     char nome_file[15]="Registro.bin";
  143.     int scelta,num_alunni,matricola;
  144.     do{
  145.         verde();
  146.     cout<<"                    \n\t\t    *Gestione file binari- Giuseppe Maggio\n\n"<<endl;
  147.       rosso();
  148.     cout<<" @°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°@\n";
  149.     cout<<" °                                                                         °\n";
  150.     rosso();cout<<" °";verde();cout<<"Aggiungi Alunno.........................................................1";rosso();cout<<"°"<<endl;
  151.     rosso();cout<<" °                                                                         °"<<endl;
  152.     rosso();cout<<" °";verde();cout<<"Visualizzare stato......................................................2";rosso();cout<<"°"<<endl;
  153.     rosso();cout<<" °                                                                         °"<<endl;
  154.     rosso();cout<<" °";verde();cout<<"Aggiornare stato........................................................3";rosso();cout<<"°"<<endl;
  155.     rosso();cout<<" °                                                                         °"<<endl;
  156.     rosso();cout<<" °                                                                         °"<<endl;
  157.     rosso();cout<<" °                                                                         °"<<endl;
  158.     rosso();cout<<" °                                                                         °"<<endl;
  159.     rosso();cout<<" °";verde();cout<<"Uscire dal programma....................................................9";rosso();cout<<"°"<<endl;
  160.     rosso();cout<<" @°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°@"<<endl;
  161.     verde();
  162.         cout <<"\nInserisci scelta: ";
  163.         cin>>scelta;
  164.        
  165.         if(scelta==1)
  166.         {
  167.             system("cls");
  168.             cout <<"\t\t\tProcedura d' inserimento nuovo alunno\n";
  169.             cout <<"Inserisci numero di alunno da inserire: ";
  170.             cin>>num_alunni;
  171.             for(int i=0;i<num_alunni;i++)  aggiungi_alunno(nome_file);
  172.         }
  173.         else if(scelta==2) stampa_stato(nome_file);
  174.         else if(scelta==3)
  175.         {
  176.              system("cls");
  177.                    rosso();
  178.     cout<<" @°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°@\n";
  179.     cout<<" °                                                                         °\n";
  180.     rosso();cout<<" °";verde();cout<<"Aggiornamento singolo alunno............................................1";rosso();cout<<"°"<<endl;
  181.     rosso();cout<<" °                                                                         °"<<endl;
  182.     rosso();cout<<" °";verde();cout<<"Eliminazione alunno.....................................................2";rosso();cout<<"°"<<endl;
  183.     rosso();cout<<" °                                                                         °"<<endl;
  184.     rosso();cout<<" @°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°@"<<endl;
  185.     verde();
  186.              cin>>num_alunni;
  187.              if(num_alunni==1)aggiorna_stato(nome_file);
  188.              else on_off(nome_file);
  189.         }
  190.        
  191.              
  192.       }while(scelta!=9);
  193.     system ("pause");
  194. }





Abortion, when it is needed
Execution, for those who deserve it
Controlling our existence with every life we take
Look into the future to prepare us for our fate
The giving and taking of life will always be
Altering the future
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6116
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:50
Mercoledì, 17/04/2013
Dai un'occhiata alle librerie QT.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
ghostmars919 (Member)
Newbie


Messaggi: 9
Iscritto: 06/09/2012

Segnala al moderatore
Postato alle 16:12
Mercoledì, 17/04/2013
Prova con le Qt  oppure se ti trovi meglio prova le gtk.:)


Simon Gelso
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 16:47
Venerdì, 19/04/2013
Potresti usare Dev-C++ che ti implementa anche un esempio di GUI! :k:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
Michael.Kiske (Normal User)
Newbie


Messaggi: 8
Iscritto: 17/04/2013

Segnala al moderatore
Postato alle 16:03
Sabato, 20/04/2013
Testo quotato

Postato originariamente da pierotofy:

Dai un'occhiata alle librerie QT.



Testo quotato

Post simile ghostmars919:

Prova con le Qt  oppure se ti trovi meglio prova le gtk.



Grazie, proverò a controllare :).


Abortion, when it is needed
Execution, for those who deserve it
Controlling our existence with every life we take
Look into the future to prepare us for our fate
The giving and taking of life will always be
Altering the future
PM Quote
Avatar
Michael.Kiske (Normal User)
Newbie


Messaggi: 8
Iscritto: 17/04/2013

Segnala al moderatore
Postato alle 16:12
Sabato, 20/04/2013
Testo quotato

Postato originariamente da LittleHacker:

Potresti usare Dev-C++ che ti implementa anche un esempio di GUI! :k:



Grazie :k:, uso già Dev c++. L' esempio di GUI presente è su la windows.h. Molto complicata a mio avviso per un semplice motivo: Ha la capacità di complicare tutto, specialmente il fatto che sia case-sensitive. Ciò rende tutto molto più difficile da ricordare ogni funzione e il suo corretto utilizzo. Tu sai usare windows.h ?

Ultima modifica effettuata da Michael.Kiske il 20/04/2013 alle 16:13


Abortion, when it is needed
Execution, for those who deserve it
Controlling our existence with every life we take
Look into the future to prepare us for our fate
The giving and taking of life will always be
Altering the future
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 0:14
Domenica, 21/04/2013
Testo quotato

Postato originariamente da Michael.Kiske:

Testo quotato

Postato originariamente da LittleHacker:

Potresti usare Dev-C++ che ti implementa anche un esempio di GUI! :k:



Grazie :k:, uso già Dev c++. L' esempio di GUI presente è su la windows.h. Molto complicata a mio avviso per un semplice motivo: Ha la capacità di complicare tutto, specialmente il fatto che sia case-sensitive. Ciò rende tutto molto più difficile da ricordare ogni funzione e il suo corretto utilizzo. Tu sai usare windows.h ?



No...era solo un consiglio! Non ho mai scritto GUI in C++! :k:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote