Advertisement
Guest User

Untitled

a guest
May 21st, 2019
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. struct Studente {
  6. char nc[30];
  7. int matricola;
  8. short esami;
  9. float media;
  10. short crediti;
  11. short voto;
  12. };
  13. typedef struct Studente studente;
  14.  
  15. void inserisci_utente(studente x[]){
  16. int i,n;
  17. FILE *fp;
  18. fp=fopen("studenti1.dat","ab");
  19. if(!feof(fp)) {
  20. printf("\nQuanti utenti vuoi inserire : ");
  21. scanf("%d", &n);
  22. for (i=0; i<n;i++){
  23. printf("\nInserisci il nome e cognome studente : ");
  24. fflush(stdin);
  25. gets(x[i].nc);
  26. printf("Inserisci la matricola : ");
  27. fflush(stdin);
  28. scanf("%d", &x[i].matricola);
  29. printf("Inserisci numero esami superati : ");
  30. scanf("%d", &x[i].esami);
  31. printf("Inserisci media esami : ");
  32. scanf("%f",&x[i].media);
  33. printf("Inserisci crediti ottenuti : ");
  34. scanf("%d",&x[i].crediti);
  35. }
  36. }
  37. else
  38. {
  39. printf("\nERRORE FILE NON CREATO ");
  40. exit(1);
  41. }
  42. fwrite(&x,sizeof(studente),1,fp);
  43. fclose(fp);
  44.  
  45.  
  46. }
  47. int ricerca(int matricola, studente x[] , short ns){
  48. int i=0,trovato=0;
  49. while (trovato=0 && i<ns ){
  50. if (x[i].matricola==matricola){
  51. trovato++;
  52. return i;
  53. }
  54. else {
  55. trovato=0;
  56. i++;
  57. return -1;
  58. }
  59. }
  60. }
  61. void aggiorna_utente(studente x[]){
  62. FILE *fp,*fp1,fp2;
  63. studente y[100];
  64. int n_agg,i;
  65. int esito;
  66. int n_voto,n_crediti;
  67. int matricola;
  68. short indice_trovato,ns=0;
  69. fp=fopen("esameprog2.dat","ab");
  70. fp1=fopen("studenti1.dat","rb");
  71. while (!feof(fp1)) //finche non e' finito il file degli studenti
  72. {
  73. /*legge uno alla volta gli studenti dal file*/
  74. fread(&x[ns], sizeof(studente), 1, fp1);
  75. ns++; /*incrementa il contatore del numero degli studenti presenti*/
  76. }
  77. printf("\nQuanti utenti vuoi aggiornare? : ");
  78. scanf("%d", &n_agg);
  79. for (i=0; i<n_agg; i++){
  80. printf("\nInserire la matricola dello studente da aggiornare : ");
  81. fflush(stdin);
  82. scanf("%d", &matricola);
  83. indice_trovato=ricerca(matricola,x,ns-1);//a causa dell'incremento automatico faccio numero -1
  84. if(indice_trovato>=0){ //trovato
  85. printf("\nInserire il nuovo voto ottenuto : ");
  86. scanf("%d", &n_voto);
  87. printf("Inserire crediti ottuneti : ");
  88. scanf("%d", &n_crediti);
  89. x[indice_trovato].crediti=+n_crediti;
  90. x[indice_trovato].esami++;
  91. x[indice_trovato].media=( ( (x[indice_trovato].media * (x[indice_trovato].esami-1)) +
  92. n_voto) / x[indice_trovato].esami);
  93. }
  94. else {
  95. printf("\nUTENTE NON TROVATO");
  96. printf("\nINDICE TROVATO %d", indice_trovato );
  97. }
  98. y[i].matricola=matricola;
  99. y[i].crediti=n_crediti;
  100. y[i].voto=n_voto;
  101. }
  102. fwrite(&y,sizeof(studente),1,fp);
  103. fclose(fp);
  104. fclose(fp1);
  105.  
  106. fp2=fopen("studenti2.dat","wb");
  107. while(!feof(fp2)){
  108. //DEVO COPIARE QUELLO CHE CE IN X NEL NUOVO FILE E LO FACCIO STAMPARE
  109. }
  110.  
  111. }
  112.  
  113. int main(){
  114. int scelta;
  115. int i;
  116. studente x[100];
  117.  
  118. do{
  119. printf("\nPremi:\n1. Per inserire un nuovo utente\n2. Per aggiornare le informazioni\n3. Per visualizzare il file completo\n4. Per terminare il programma \n");
  120. scanf("%d",&scelta);
  121. switch(scelta){
  122. case 1: inserisci_utente(x);break;
  123. case 2: aggiorna_utente(x); break;
  124. //case 3: stampa(); break;
  125.  
  126. }
  127. }while (scelta != 4);
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement