Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_REPARTO1 10;
- #define MAX_REPARTO2 15;
- #define MAX_REPARTO3 5;
- struct paziente{
- char codicefiscale[20];
- char nome[20];
- char cognome[20];
- char stato[20];
- int reparto;
- };
- struct paziente *pazienti[30];
- void inizializza();
- void riempistructdafile();
- void inserisci(struct paziente *pazientefile);
- void salvasufile();
- void visualizzaopzioni();
- void visualizzapazienti();
- void aggiungi();
- int ricercapaziente(char codicefiscale[]);
- void elimina();
- int i, k;
- main()
- {
- int scelta;
- do {
- do {
- visualizzaopzioni();
- scanf("%d", &scelta);
- } while(scelta<1 || scelta>5);
- switch(scelta) {
- case 1: aggiungi();
- break;
- case 2: elimina();
- break;
- case 3: salvasufile();
- break;
- case 4: visualizzapazienti();
- break;
- }
- }while(scelta!=5);
- }
- int ricercapaziente(char codicefiscale[]) {
- for(i=0; i<30; i++) {
- if(pazienti[i]==NULL) continue;
- if(strcmp(pazienti[i]->codicefiscale, codicefiscale)==0)
- {
- printf("\n\nPAZIENTE PRESENTE IN ELENCO");
- return(i);
- }
- }
- return -1;
- }
- void inserisci(struct paziente *pazientefile) {
- struct paziente *nuovo;
- nuovo=(struct paziente *)malloc(sizeof(struct paziente));
- nuovo=pazientefile;
- int indicelibero;
- int trovato=0;
- for(i=0; i<31; i++) {
- if(pazienti[i]==NULL) {
- indicelibero=i;
- trovato=1; //vero
- break; }
- }
- if(trovato==1) {
- pazienti[indicelibero]=nuovo;
- } else {
- printf("\n\nImpossibile aggiungere altri pazienti tutti i reparti sono pieni!");
- return;
- }
- }
- void aggiungi() {
- struct paziente *nuovo;
- nuovo=(struct paziente *)malloc(sizeof(struct paziente));
- char nome[20], cognome[20], stato[20];
- char codicefiscale[20];
- int reparto;
- printf("\n\nInserisci dati paziente:\n\n ");
- printf("\nNome: ");
- scanf("%s", nome);
- printf("\nCognome: ");
- scanf("%s", cognome);
- do{
- printf("\nStato (ricoverato o dimesso): ");
- scanf("%s", stato);
- if((strcmp(stato , "dimesso")!=0) && (strcmp(stato , "ricoverato")!=0) && (strcmp(stato , "DIMESSO")!=0) && (strcmp(stato , "RICOVERATO")!=0))
- {
- printf("\nInserire ricoverato o dimesso.\n");
- }
- }
- while( (strcmp(stato , "dimesso")!=0) && (strcmp(stato , "ricoverato")!=0) && (strcmp(stato , "DIMESSO")!=0) && (strcmp(stato , "RICOVERATO")!=0) );
- printf("\nCodice Fiscale (in maiuscolo): ");
- scanf("%s", codicefiscale);
- do{
- printf("\nReparto: ");
- scanf("%d", &reparto);
- if(reparto<0 || reparto>3)
- printf("\nInserire un reparto da 1 a 3");
- }
- while(reparto<0 || reparto>3);
- nuovo->reparto=reparto;
- strcpy(nuovo->nome, nome);
- strcpy(nuovo->cognome, cognome);
- strcpy(nuovo->stato, stato);
- strcpy(nuovo->codicefiscale, codicefiscale);
- inserisci(nuovo);
- printf("\n\n...");
- printf("\nInserimento avvenuto!");
- getch();
- }
- void visualizzapazienti() {
- int n_reparto;
- printf("\n\nQuale reparto vuoi visualizzare? ");
- printf("\nDigita: 1, 2 o 3");
- scanf("%d", &n_reparto);
- printf("\n\n\nI pazienti del reparto %d", n_reparto);
- if(n_reparto>0 && n_reparto<4) {
- for(i=0; i<30; i++) {
- if(pazienti[i]==NULL) continue;
- if(pazienti[i]->reparto==n_reparto)
- {
- printf("\n\n%s %s %s", pazienti[i]->nome, pazienti[i]->cognome, pazienti[i]->stato);
- }
- }
- }
- else {
- printf("\n\n\nReparto inesistente!");
- }
- getch();
- return;
- }
- void salvasufile() {
- FILE *fp;
- fp=fopen("pazienti.txt", "w");
- for(i=0; i<30; i++) {
- if(pazienti[i]!=NULL) {
- fprintf(fp, "%s\n%s\n%s\n%s\n", pazienti[i]->nome, pazienti[i]->cognome, pazienti[i]->codicefiscale, pazienti[i]->stato);
- }
- }
- fclose(fp);
- FILE *fr;
- fr=fopen("reparti.txt", "w");
- fprintf(fr, "Reparto1\n");
- int n1=0;
- int n2=0;
- int n3=0;
- for(i=0; i<30; i++) {
- if(pazienti[i]!=NULL && pazienti[i]->reparto==1) {
- n1++;
- }
- }
- fprintf(fr, "%d\n", n1);
- for(i=0; i<30; i++) {
- if(pazienti[i]!=NULL && pazienti[i]->reparto==1) {
- fprintf(fr, "%s\n", pazienti[i]->codicefiscale);
- }
- }
- fprintf(fr, "Reparto2\n");
- for(i=0; i<30; i++) {
- if(pazienti[i]!=NULL && pazienti[i]->reparto==2) {
- n2++;
- }
- }
- fprintf(fr, "%d\n", n2);
- for( i=0; i<30; i++) {
- if(pazienti[i]!=NULL && pazienti[i]->reparto==2) {
- fprintf(fr, "%s\n", pazienti[i]->codicefiscale);
- }
- }
- fprintf(fr, "Reparto3\n");
- for(i=0; i<30; i++) {
- if(pazienti[i]!=NULL && pazienti[i]->reparto==3) {
- n3++;
- }
- }
- fprintf(fr, "%d\n", n3);
- for( i=0; i<30; i++) {
- if(pazienti[i]!=NULL && pazienti[i]->reparto==3) {
- fprintf(fr, "%s\n", pazienti[i]->codicefiscale);
- }
- }
- fclose(fr);
- printf("\n\nSalvato su file!");
- getch();
- return;
- }
- void elimina() {
- char provvisorio[20];
- printf("\n\nInserisci il codice fiscale (in maiuscolo) del paziente da rimuovere: ");
- scanf("%s", provvisorio);
- for(i=0; i<30; i++) {
- int index=ricercapaziente(provvisorio);
- if(index!=-1) {
- free(&pazienti[index]);
- pazienti[index] = NULL;
- printf("\n\n PAZIENTE ELIMINATO");
- }
- else printf("\n\nPAZIENTE NON PRESENTE");
- salvasufile();
- getch();
- return;
- }
- }
- void visualizzaopzioni() {
- system("cls");
- printf("\nPremere invio per continuare...\n");
- getch();
- system("cls");
- printf("\n 1 - Inserisci");
- printf("\n 2 - Elimina");
- printf("\n 3 - Salva su File");
- printf("\n 4 - Visualizza reparti");
- printf("\n 5 - Esci");
- printf("\n\nScegli cosa fare: ");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement