Advertisement
ConciCetto

Ospedale

Jul 4th, 2015
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.00 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. #define MAX_REPARTO1 10;
  7. #define MAX_REPARTO2 15;
  8. #define MAX_REPARTO3 5;
  9.  
  10. struct paziente{
  11.        char codicefiscale[20];
  12.        char nome[20];
  13.        char cognome[20];
  14.        char stato[20];
  15.        int reparto;
  16.        };
  17.        
  18.        struct paziente *pazienti[30];
  19.        
  20.  void inizializza();
  21.  void riempistructdafile();
  22.  void inserisci(struct paziente *pazientefile);
  23.  void salvasufile();
  24.  void visualizzaopzioni();
  25.  void visualizzapazienti();
  26.  void aggiungi();
  27.  int ricercapaziente(char codicefiscale[]);
  28.  void elimina();
  29.  int i, k;
  30.  
  31.  main()
  32.  {
  33.      int scelta;
  34.        do {
  35.            do {
  36.                visualizzaopzioni();
  37.                scanf("%d", &scelta);
  38.               } while(scelta<1 || scelta>5);
  39.              
  40.               switch(scelta) {
  41.                              case 1: aggiungi();
  42.                                      break;
  43.                              case 2: elimina();
  44.                                      break;
  45.                              case 3: salvasufile();
  46.                                      break;
  47.                              case 4: visualizzapazienti();
  48.                                      break;
  49.                              }
  50.                              }while(scelta!=5);
  51.                              
  52.                              
  53.                
  54.        }
  55.  
  56.  
  57.                                        
  58.  int ricercapaziente(char codicefiscale[]) {
  59.  
  60.           for(i=0; i<30; i++) {
  61.             if(pazienti[i]==NULL) continue;
  62.                    if(strcmp(pazienti[i]->codicefiscale, codicefiscale)==0)
  63.                                                         {
  64.                                                          printf("\n\nPAZIENTE PRESENTE IN ELENCO");
  65.                                                          return(i);
  66.                                                         }
  67.                                                          }
  68.                                                          return -1;
  69.                                                          }
  70.      
  71.    
  72.  void inserisci(struct paziente *pazientefile) {
  73.       struct paziente *nuovo;
  74.       nuovo=(struct paziente *)malloc(sizeof(struct paziente));
  75.       nuovo=pazientefile;
  76.      
  77.       int indicelibero;
  78.       int trovato=0;
  79.      
  80.       for(i=0; i<31; i++) {
  81.                if(pazienti[i]==NULL) {
  82.                                      indicelibero=i;
  83.                                      trovato=1; //vero
  84.                                      break; }
  85.                                      }
  86.                
  87.                if(trovato==1) {
  88.                  pazienti[indicelibero]=nuovo;
  89.                
  90.                } else {
  91.                       printf("\n\nImpossibile aggiungere altri pazienti tutti i reparti sono pieni!");
  92.                       return;
  93.                       }
  94.                      
  95.                      
  96.                      
  97.                       }
  98.  
  99.  void aggiungi() {
  100.  
  101.  struct paziente *nuovo;
  102.  nuovo=(struct paziente *)malloc(sizeof(struct paziente));
  103.  
  104.  char nome[20], cognome[20], stato[20];
  105.  char codicefiscale[20];
  106.  int reparto;
  107.  
  108.  printf("\n\nInserisci dati paziente:\n\n ");
  109.  printf("\nNome: ");
  110.  scanf("%s", nome);
  111.  printf("\nCognome: ");
  112.  scanf("%s", cognome);
  113.  do{
  114.              printf("\nStato (ricoverato o dimesso): ");
  115.              scanf("%s", stato);
  116.              if((strcmp(stato , "dimesso")!=0) && (strcmp(stato , "ricoverato")!=0) && (strcmp(stato , "DIMESSO")!=0) && (strcmp(stato , "RICOVERATO")!=0))
  117.              {
  118.              printf("\nInserire ricoverato o dimesso.\n");
  119.              }
  120.    }
  121.  while( (strcmp(stato , "dimesso")!=0) && (strcmp(stato , "ricoverato")!=0) && (strcmp(stato , "DIMESSO")!=0) && (strcmp(stato , "RICOVERATO")!=0) );
  122.  printf("\nCodice Fiscale (in maiuscolo): ");
  123.  scanf("%s", codicefiscale);
  124.  do{
  125.              printf("\nReparto: ");
  126.              scanf("%d", &reparto);
  127.              if(reparto<0 || reparto>3)
  128.              printf("\nInserire un reparto da 1 a 3");
  129.     }
  130.  while(reparto<0 || reparto>3);
  131.  nuovo->reparto=reparto;
  132.  
  133.  strcpy(nuovo->nome, nome);
  134.  strcpy(nuovo->cognome, cognome);
  135.  strcpy(nuovo->stato, stato);
  136.  strcpy(nuovo->codicefiscale, codicefiscale);
  137.  
  138.  inserisci(nuovo);
  139.  
  140.  printf("\n\n...");
  141.  printf("\nInserimento avvenuto!");
  142.  getch();
  143. }
  144.  
  145.  void visualizzapazienti() {
  146.       int n_reparto;
  147.       printf("\n\nQuale reparto vuoi visualizzare? ");
  148.       printf("\nDigita: 1, 2 o 3");
  149.       scanf("%d", &n_reparto);
  150.      
  151.       printf("\n\n\nI pazienti del reparto %d", n_reparto);
  152.      
  153.       if(n_reparto>0 && n_reparto<4) {
  154.                        for(i=0; i<30; i++) {
  155.                         if(pazienti[i]==NULL) continue;
  156.                                 if(pazienti[i]->reparto==n_reparto)
  157.                                    {        
  158.                                                             printf("\n\n%s %s %s", pazienti[i]->nome, pazienti[i]->cognome, pazienti[i]->stato);
  159.                                    }
  160.                                             }
  161.                                    }
  162.                                             else {
  163.                                                                    printf("\n\n\nReparto inesistente!");
  164.                                                   }
  165.   getch();                                                                 
  166.   return;
  167.  }
  168.      
  169.  void salvasufile() {
  170.      
  171.       FILE *fp;
  172.       fp=fopen("pazienti.txt", "w");
  173.      
  174.       for(i=0; i<30; i++) {
  175.               if(pazienti[i]!=NULL) {
  176.                  
  177.                   fprintf(fp, "%s\n%s\n%s\n%s\n", pazienti[i]->nome, pazienti[i]->cognome, pazienti[i]->codicefiscale, pazienti[i]->stato);
  178.                  
  179.                   }
  180.                          }
  181.         fclose(fp);
  182.                          
  183.                           FILE *fr;
  184.       fr=fopen("reparti.txt", "w");
  185.      
  186.                          fprintf(fr, "Reparto1\n");
  187.                          
  188.                          int n1=0;
  189.                          int n2=0;
  190.                          int n3=0;
  191.                          
  192.      for(i=0; i<30; i++) {
  193.              if(pazienti[i]!=NULL && pazienti[i]->reparto==1) {
  194.                                          n1++;
  195.                                          }
  196.                                          }
  197.      fprintf(fr, "%d\n", n1);
  198.      
  199.      for(i=0; i<30; i++) {
  200.              if(pazienti[i]!=NULL && pazienti[i]->reparto==1) {
  201.                                          fprintf(fr, "%s\n", pazienti[i]->codicefiscale);
  202.                                          }
  203.                                          }
  204.      
  205.      fprintf(fr, "Reparto2\n");
  206.                                          
  207.      for(i=0; i<30; i++) {
  208.              if(pazienti[i]!=NULL && pazienti[i]->reparto==2) {
  209.                                          n2++;
  210.                                          }
  211.                                          }
  212.      fprintf(fr, "%d\n", n2);
  213.    
  214.      for( i=0; i<30; i++) {
  215.              if(pazienti[i]!=NULL && pazienti[i]->reparto==2) {
  216.                                          fprintf(fr, "%s\n", pazienti[i]->codicefiscale);
  217.                                          }
  218.                                          } 
  219.                                          
  220.      fprintf(fr, "Reparto3\n");
  221.      
  222.      for(i=0; i<30; i++) {
  223.              if(pazienti[i]!=NULL && pazienti[i]->reparto==3) {
  224.                                          n3++;
  225.                                          }
  226.                                          }
  227.     fprintf(fr, "%d\n", n3);
  228.    
  229.     for( i=0; i<30; i++) {
  230.              if(pazienti[i]!=NULL && pazienti[i]->reparto==3) {
  231.                                          fprintf(fr, "%s\n", pazienti[i]->codicefiscale);
  232.                                          }
  233.                                          } 
  234.                                          
  235.                                          fclose(fr);
  236.  printf("\n\nSalvato su file!");
  237. getch();                                         
  238.    return;
  239. }
  240.    
  241. void elimina() {
  242.      
  243.      char provvisorio[20];
  244.      
  245.      printf("\n\nInserisci il codice fiscale (in maiuscolo) del paziente da rimuovere:  ");
  246.      scanf("%s", provvisorio);
  247.      
  248.      for(i=0; i<30; i++) {
  249.         int index=ricercapaziente(provvisorio);
  250.              if(index!=-1) {
  251.                                                    free(&pazienti[index]);
  252.                                                    pazienti[index] = NULL;
  253.                                                    printf("\n\n PAZIENTE ELIMINATO");
  254.                                                    }  
  255.            else printf("\n\nPAZIENTE NON PRESENTE");
  256.         salvasufile();
  257.         getch();
  258.         return;
  259.         }
  260.      
  261.        
  262.     }
  263.    
  264.  void visualizzaopzioni() {
  265.        
  266.        system("cls");
  267.        printf("\nPremere invio per continuare...\n");
  268.        getch();
  269.        system("cls");
  270.        
  271.        printf("\n 1 - Inserisci");
  272.        printf("\n 2 - Elimina");
  273.        printf("\n 3 - Salva su File");
  274.        printf("\n 4 - Visualizza reparti");
  275.        printf("\n 5 - Esci");
  276.        printf("\n\nScegli cosa fare: ");
  277.        
  278.        }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement