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. }




PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6222
Iscritto: 04/12/2003

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


Il mio blog: https://piero.dev
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.:)

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:

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 :).

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
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:

PM Quote