Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- //OPZIONI MENU
- #define ESCI 0
- #define INSERISCI_DOCENTE 1
- #define INSERISCI_CORSO 2
- #define ASSEGNAZIONE 3
- #define CARICO_DIDATTICO 4
- #define SCHEDA_DOCENTE 5
- //OPZIONI PER ARRAY
- #define MAX_STRING 30
- #define MAX_DOCENTI 30
- #define MAX_CORSI 30
- #define MAX_CFU 30
- //CONTROLLO DELLE OPERAZIONI
- #define OPERAZIONE_RIUSCITA 1
- #define OPERAZIONE_FALLITA -1
- //STRUTTURE DEI DATI
- typedef struct {
- int code;
- char titolo[MAX_STRING];
- int cfu;
- char corso[MAX_STRING];
- } corso;
- typedef struct {
- int num_corsi;
- corso corsi[MAX_CORSI];
- } archivio_corsi;
- typedef struct {
- char code_fisc[MAX_STRING];
- char nome[MAX_STRING];
- char cognome[MAX_STRING];
- int num_cfu;
- archivio_corsi corsi;
- } docente;
- typedef struct {
- int num_docenti;
- docente docenti[MAX_DOCENTI];
- } archivio_docenti;
- //FUNZIONI PER DOCENTE
- docente leggi_docente() {
- docente nuovo_docente;
- printf("Inserisci codice fiscale del docente: ");
- scanf("%s", nuovo_docente.code_fisc);
- printf("Inserisci nome del docente: ");
- scanf("%s", nuovo_docente.nome);
- printf("Inserisci cognome del docente: ");
- scanf("%s", nuovo_docente.cognome);
- nuovo_docente.num_cfu = 0;
- nuovo_docente.corsi.num_corsi = 0;
- return nuovo_docente;
- }
- int inserisci_docente(archivio_docenti *docenti, docente nuovo_docente) {
- for (int i = 0; i < docenti->num_docenti; i++) {
- if (strcmp(docenti->docenti[i].code_fisc, nuovo_docente.code_fisc) == 0) {
- printf("Codice fiscale gia' esistente!!\n\n");
- return OPERAZIONE_FALLITA;
- }
- }
- if (docenti->num_docenti >= MAX_DOCENTI) {
- printf("Archivio pieno!!\n\n");
- return OPERAZIONE_FALLITA;
- } else {
- docenti->docenti[docenti->num_docenti] = nuovo_docente;
- docenti->num_docenti++;
- return OPERAZIONE_RIUSCITA;
- }
- }
- int ricerca_docente(archivio_docenti docenti) {
- int index = 0;
- char code_fisc[MAX_STRING];
- printf("Inserire il codice fiscale del docente da cercare: ");
- scanf("%s", code_fisc);
- do {
- if (strcmp(docenti.docenti[index].code_fisc, code_fisc) == 0) {
- return index;
- } else {
- index++;
- }
- } while (index < docenti.num_docenti);
- return OPERAZIONE_FALLITA;
- }
- //FUNZIONE PER CORSO
- corso leggi_corso() {
- corso nuovo_corso;
- printf("Inserisci codice del corso: ");
- scanf("%d", &nuovo_corso.code);
- printf("Inserisci titolo del corso: ");
- scanf("%s", nuovo_corso.titolo);
- printf("Inserisci CFU del corso: ");
- scanf("%d", &nuovo_corso.cfu);
- printf("Inserisci corso di Laurea del corso: ");
- scanf("%s", nuovo_corso.corso);
- return nuovo_corso;
- }
- int inserisci_corso(archivio_corsi *corsi, corso nuovo_corso) {
- for (int i = 0; i < corsi->num_corsi; i++) {
- if (corsi->corsi[i].code == nuovo_corso.code) {
- printf("Codice corso gia' esistente!!\n\n");
- return OPERAZIONE_FALLITA;
- }
- }
- if (corsi->num_corsi >= MAX_CORSI) {
- printf("Archivio pieno!!\n\n");
- return OPERAZIONE_FALLITA;
- } else {
- corsi->corsi[corsi->num_corsi] = nuovo_corso;
- corsi->num_corsi++;
- return OPERAZIONE_RIUSCITA;
- }
- }
- int ricerca_corso(archivio_corsi corsi) {
- int index = 0, code;
- printf("Inserire il codice del corso da cercare: ");
- scanf("%d", &code);
- do {
- if (corsi.corsi[index].code == code) {
- return index;
- } else {
- index++;
- }
- } while (index < corsi.num_corsi);
- return OPERAZIONE_FALLITA;
- }
- //FUNZIONE PER ASSEGNARE UN CORSO AD UN DOCENTE
- int assegnazione_docente_corso(archivio_docenti *docenti, archivio_corsi *corsi, int index_docente, int index_corso) {
- int scelta;
- if ((docenti->docenti[index_docente].num_cfu) + (corsi->corsi[index_corso].cfu) > MAX_CFU) {
- printf("Troppi corsi assegnati al docente!!\n\n");
- return OPERAZIONE_FALLITA;
- } else {
- printf("Vuoi assegnare a -%s- il corso -%s-?\n SI->1 NO->2 SCELTA: ", docenti->docenti[index_docente].cognome, corsi->corsi[index_corso].titolo);
- scanf("%d", scelta);
- if (scelta == OPERAZIONE_RIUSCITA) {
- docenti->docenti[index_docente].corsi.corsi[docenti->docenti[index_docente].corsi.num_corsi] = corsi->corsi[index_corso];
- docenti->docenti[index_docente].num_cfu = docenti->docenti[index_docente].num_cfu + corsi->corsi[index_corso].cfu;
- docenti->docenti[index_docente].corsi.num_corsi++;
- return OPERAZIONE_RIUSCITA;
- } else {
- return OPERAZIONE_FALLITA;
- }
- }
- }
- //FUNZIONE PER STAMPARE IL CARICO DOCENTI
- void stampa_carico(archivio_docenti docenti) {
- for (int i = 0; i < docenti.num_docenti; i++) {
- printf("----Docente n.%d---\n", i + 1);
- printf("Cognome: %s\n", docenti.docenti[i].cognome);
- printf("Nome: %s\n", docenti.docenti[i].nome);
- printf("Carico didattico: %d\n", docenti.docenti[i].num_cfu);
- printf("-------------------\n\n");
- }
- }
- //FUZIONE PER STAMPARE LA SCHEDA DI UN DOCENTE
- void stampa_docente(archivio_docenti docenti, int index) {
- printf("---- %s %s ----\n", docenti.docenti[index].cognome, docenti.docenti[index].nome);
- printf("Codice Fiscale: %s\n", docenti.docenti[index].code_fisc);
- printf("Carico didattico: %d\n", docenti.docenti[index].num_cfu);
- printf("Numero corsi assegnati: %d\n", docenti.docenti[index].corsi.num_corsi);
- for (int i = 0; i < docenti.docenti[index].corsi.num_corsi; i++) {
- printf("%d. %s;\n\n", i + 1, docenti.docenti[index].corsi.corsi[i].titolo);
- }
- }
- //AZZERAMENTO ARCHIVI
- void init_num_docenti(archivio_docenti *docenti) {
- docenti->num_docenti = 0;
- }
- void init_num_corsi(archivio_corsi *corsi) {
- corsi->num_corsi = 0;
- }
- int main(int argc, char** argv) {
- //DICHIARAZIONE DELLE VARIABILI
- int menu, esito, index_docente, index_corso;
- docente nuovo_docente;
- corso nuovo_corso;
- archivio_docenti docenti;
- archivio_corsi corsi;
- //AZZERAMENTO ARCHIVI
- init_num_docenti(&docenti);
- init_num_corsi(&corsi);
- do {
- system("clear");
- printf("----------------------------------MENU'------------------------------------\n\n"
- "Cosa vuoi fare?\n"
- "1. Inserisci docente.\n"
- "2. Inserisci corso.\n"
- "3. Assegnare corso ad un docente.\n"
- "4. Carico didattico docenti.\n"
- "5. Scheda docente.\n"
- "0. Esci.\n\n"
- "---------------------------------------------------------------------------\n\n"
- "Scelta: ");
- scanf("%d", &menu);
- switch (menu) {
- case INSERISCI_DOCENTE:
- system("clear");
- nuovo_docente = leggi_docente();
- esito = inserisci_docente(&docenti, nuovo_docente);
- if (esito == OPERAZIONE_RIUSCITA) {
- printf("\nDocente inserito nell'archivio con successo!!\n\n");
- } else {
- printf("\nOperazione annullata!!\n\n");
- }
- system("read -n 1 -s -p \"Premi un tasto per continuare...\"");
- break;
- case INSERISCI_CORSO:
- system("clear");
- nuovo_corso = leggi_corso();
- esito = inserisci_corso(&corsi, nuovo_corso);
- if (esito == OPERAZIONE_RIUSCITA) {
- printf("\nCorso inserito nell'archivio con successo!!\n\n");
- } else {
- printf("\nOperazione annullata!!\n\n");
- }
- system("read -n 1 -s -p \"Premi un tasto per continuare...\"");
- break;
- case ASSEGNAZIONE:
- //system("clear");
- index_docente = ricerca_docente(docenti);
- index_corso = ricerca_corso(corsi);
- if ((index_docente == OPERAZIONE_FALLITA)&&(index_corso == OPERAZIONE_FALLITA)) {
- printf("Docente o corso oppure entrambi inesistenti!!\n\n");
- } else {
- esito = assegnazione_docente_corso(&docenti, &corsi, index_docente, index_corso);
- if (esito == OPERAZIONE_FALLITA) {
- printf("\nOperazione annullata!!\n\n");
- } else {
- printf("\nAssegnazione riuscita con successo!!\n\n");
- }
- }
- system("read -n 1 -s -p \"Premi un tasto per continuare...\"");
- break;
- case CARICO_DIDATTICO:
- system("clear");
- stampa_carico(docenti);
- system("read -n 1 -s -p \"Premi un tasto per continuare...\"");
- break;
- case SCHEDA_DOCENTE:
- system("clear");
- index_docente = ricerca_docente(docenti);
- stampa_docente(docenti, index_docente);
- system("read -n 1 -s -p \"Premi un tasto per continuare...\"");
- break;
- case ESCI:
- system("clear");
- break;
- default: printf("Scelta errata!!\n\n");
- }
- } while (menu != 0);
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement