INGEGNERIA INFORMATICA TEMA D’ANNO Fondamenti di Informatica II anno accademico: 2007/2008 POLITECNICO DI BARI STROPPA FABIO LIBRETTO UNIVERSITARIO DEL POLITECNICO DI BARI Il software simula la gestione della segreteria del politecnico, adibita alla registrazione degli studenti, dei loro dati e all’aggiornamento del loro libretto universitario previa autenticazione di un username e di una password con l’operazione di login. Il software prevede due tipi di utenti: lo studente e l’amministratore. Lo studente è colui che si immatricola al politecnico, devono dunque essere registrate informazioni relative ai dati personali dello studente e così via; l’amministratore, o il segretario, è colui che ha il compito di aggiornare il libretto dei singoli studenti, autenticando il superamento delle prove. Il menù iniziale prevede che l’utente possa scegliere tra: • Registrazione • Login • Visualizza informazioni sul prodotto La selezione di “visualizza informazioni sul prodotto” lancia un banale file exe che apre una finestra programmata come una windows form che fornisce informazioni sul software. La fase di registrazione prevede la selezione del profilo, studente o amministratore. Lo studente sarà chiamato a compilare una serie di dati per l’acquisizione di informazioni (nome, cognome, data di nascita, ecc), gli verrà chiesta la data di immatricolazione (che per default è settata al giorno odierno) ed il corso di laurea ingegneristica (selezionabile dal file “cdl.txt” presente nella directory, dove sono salvate tutte le facoltà del politecnico). Successivamente, verranno richiesti username e password. All’utente verrà assegnata una matricola; ovviamente tale identificatore deve essere aggiornato di un unità per ogni studente registrato: nel file “matricole.txt” (file di testo) viene salvata l’ultima matricola registrata; ad ogni registrazione, tale numero verrà incrementato. È importante ricordarsi di settare tale numero a 0 al momento del primo avvio del programma (se ovviamente si vuole partire dalla matricola numero 1). L’amministratore non ha bisogno di registrare i suoi dati personali, ma affinché non si incorra in problemi di sicurezza (quindi per impedire che l’archivio venga danneggiato da interventi non autorizzati) verrà richiesta la password di sistema prima della registrazione. Tale password deve essere conosciuta solo tra i membri della segreteria, perché non deve succedere che uno studente possa registrarsi come amministratore ed aggiungersi esami da solo. La password di sistema è “polibalib+”. Il ‘+’ finale diminuisce notevolmente i rischi che utenti esterni indovinino la password! L’username viene associato all’utente al momento della registrazione, ed è unico; non possono esistere in archivio due o più username uguali. A tale username viene associata una password. Questa password, per motivi di sicurezza, è soggetta ad un semplice sistema di crittografia, noto con il nome di cifrario a sostituzione: viene creata una chiave dal sistema, ad esempio 3, e ogni lettera della password aumenta di 3 caratteri. La parola CIAO diventa FNDR. Anche aprendo il file txt dove sono salvati password e username, è impossibile identificare la password a meno che non si conosca quale algoritmo di cifratura è stato utilizzato. Ovviamente, la chiave è salvata su file dopo username e password. Il file dove vengono salvati gli utenti registrati come studenti è “passwordstd.txt”. Il file dove vengono salvati gli utenti registrati come amministratori è “passwordadm.txt”. La fase di login permette di selezionare prima il profilo con cui si intende loggarsi, e successivamente, previo riconoscimento di username e password, utilizzare le relative opzioni disponibili a seconda del profilo selezionato. Loggare un amministratore è semplicissimo: basta ritrovare username e password nel relativo file ed il gioco è fatto. Loggare uno studente è molto più difficile, perché bisogna recuperare anche tutti i dati registrati. Per aggirare il problema, al momento della registrazione si è pensato di creare un file di testo che ha il nome dell’username; tale file contiene il numero di matricola dello studente. Salvando in memoria il numero di matricola, si può aprire il file dove si sono salvati i dati dello studente, che ha proprio il nome della matricola stessa (cosa che agevola anche il lavoro dell’amministratore quando dovrà selezionare uno studente: gli basterà, come è anche logico pensare, digitare la matricola per ottenere i dati). Uno studente potrà: • Visualizzare i dati personali registrati • Visualizzare il libretto personale, con l’elenco degli esami superati, il relativo voto con l’eventuale lode ed il numero di crediti formativi (cfu) dei singoli esami; viene visualizzato anche il numero totale dei crediti dello studente, la media aritmetica dei voti dello studente e la media ponderata o pesata dei voti dello studente • Scaricare il file contenente il modulo 100; viene aperto il file “mod100.pdf” con l’acrobat reader per poterlo salvare sulla propria macchina e stamparlo in caso di necessità • Scaricare il file contenente lo statino; viene aperto il file “statino.pdf” con l’acrobat reader per poterlo salvare sulla propria macchina e stamparlo in caso di necessità • Cambiare la propria password Sul menù di scelta dello studente verrà visualizzato il proprio username e il tempo trascorso dalla data di registrazione. Un amministratore potrà: • Selezionare lo studente da aggiornare inserendone la matricola • Cambiare la propria password Selezionando lo studente da aggiornare, l’amministratore può visualizzare i suoi dati (magari per verificare di non aver sbagliato matricola) o aggiungere un esame. Il software deve permettere di poter gestire l’aggiornamento dinamico del libretto, cosa che può essere effettuata solo da un amministratore e non dallo studente stesso: si è pensato che l’aggiunta di un esame superato venga effettuata tramite verbale, quindi l’amministratore al momento dell’aggiornamento dovrà avere dinnanzi a sé i verbali dei vari esami con nome e matricola dello studente che è stato approvato (e relativo voto). In questa circostanza, è stato creato un archivio (“materie.dat”) contenente tutte le materie del politecnico, salvate per ordine alfabetico, con il relativo id che si pensa venga segnato sul verbale stesso. Il segretario, al momento dell’aggiornamento, si limiterà semplicemente a digitare l’ID della materia desiderata per aggiungere l’esame superato dalla matricola interessata. Comunque, all’amministratore viene fornito un elenco completo di tutte le materie presenti all’interno del file. NB: è bene ricordare che tale operazione è molto macchinosa e non sempre affidabile, perché ovviamente si sta lavorando con archivi e non con dei database: l’utilizzo di query avrebbe sicuramente giovato, ma dovendo programmare in c++ bisogna necessariamente adeguarsi agli archivi. Inoltre, non c’è garanzia di integrità: dev’essere l’amministratore ad evitare di aggiungere una materia non appartenente al corso di laurea dello studente interessato. Si potevano fare controlli sul file “materie.dat”, ma risultava davvero troppo complesso. Per il libretto è stato pensato un vettore dinamico contenente tutti gli esami. Tali informazioni vengono salvate in un file denominato con il numero di matricola dello studente a cui viene aggiunto il suffisso “lib.txt” per distinguerlo dal file ove vengono salvati i dati personali. Eccezioni non gestite dal programma: • come per ogni programma in console application, l’inserimento di una stringa con un numero superiore di caratteri rispetto a quelli settati per default comporterà un problema; • inserire una carattere ove è richiesto un numero causerà un problema irreversibile. Sviluppato con: Microsoft Visual Studio 2005 Versione 8.0.50727.42 (RTM.050727-4200) ©2005 Microsoft Corporation Si faccia riferimento al manuale di questo compilatore per le istruzioni che possono causare incompatibilità con altri compilatori. MODELLAZIONE DELLE CLASSI (+ membro pubblico; -membro privato; # membro protetto) date -day: int -month: int -year: int info -username: char[30] -password: char[30] +date() +put_date(): void +put(): date(int,int,int): void +get_day(): int +get_month(): int +get_year(): int +print_date(): void +bisestile(): bool +operator++(int): date +operator--(int): date +operator=(date): date +operator==(date): bool +operator!=(date): bool +operator<(date): bool +operator>(date): bool +operator<=(date): bool +operator>=(date): bool +operator-(date): void amministratore +amministratore() +set_nomefile(): void +inserisci_materia(libretto&): void materia -id: int -nome: char[70] -cfu: float +voto: int +lode: bool +materia() +put_id(): void +put_id(int): void +get_id(): int +print_id(): void +put_nome(): void +put_nome(char*): void +get_nome(): char* +print_nome(): void +put_cfu(): void +put_cfu(float): void +get_cfu(): float +printf_cfu(): void +put_voto(): void +get_voto(): int +print_voto(): void +put_lode(): void +get_lode(): bool +print_lode(): void +salva_su_file(char*): void +leggi_da_file(istream&): void +info() +put_username(): void +put_password(): void +get_username(): char* +get_password(): char* +print_username(): void +ptint_password(): void utente -up1: info -up2: info -key: int #nomefile: char[16] +utente() +use_info1_putusername(): void +use_info1_getusername(): char* +use_info1_putpassword(): void +use_info1_getpassword(): char* +use_info1_printusername(): void +use_info1_printpassword(): void +use_info2_putusername(): void +use_info2_getusername(): char* +use_info2_putpassword(): void +use_info2_getpassword(): char* +use_info2_printusername(): void +use_info2_printpassword(): void +strcmp_pass(): int +strcmp_pass(char*): int +strcmp_user(char*): int +registra_utente(): int +logga_utente(): int +conta_numero_utente(): int +cambia_password(int): int +set_nomefile(): void libretto -*vett: materia -media_aritmetica. float -media_pesata: float -tot_cfu: float -numero_esami: int studente -nome: char[30] -cognome: char[30] -datanascita: date -sesso: char -cittadinanza: char[30] -email: char[30] -numtelefono: char[30] -numcellulare: char[30] -codicefiscale: char[17] -nazione: char[30] -provincia: char[3] -comune: char[30] -corso_di_laurea: char[35] -registrazione: date -matricola: int -lib: libretto +studente() +studente(int, char*) +put_datipersonali(): void +print_datipersonali(): void +put_luogodinascita(): void +print_luogodinascita(): void +print_corsodilaurea(): void +put_datadiregistrazione(): void +get_datadiregistrazione(): date +put_matricola(int): void +get_matricola(): int +salva_su_file(char*): void +salva_su_file_user(): void +leggi_da_file(char*): void +leggi_da_file_user(char*): void +use_alloca_scalare(): void +use_rilascia_scalare(): void +use_alloca_vettore(int): void +use_rilascia_vettore(): void +use_calcola_numero_esami(ifstream&): int +get_libretto(): libretto& +use_salvasufile(char*): void +calcola_dimensione_libretto(char*): int +visualizza_libretto(char*): void +use_calcola_tot_cfu(): float +use_calcola_media_arit(): float +use_calcola_media_pes(): float +set_nomefile(): void +libretto() +alloca_scalare(): void +rilascia_scalare(): void +alloca_vettore(int): void +rilascia_vettore(): void +get_numero_esami(): int +calcola_numero_esami(ifstream&): int +use_salvasufile(char*): void +stampa_vettore(ifstream&): void +calcola_totale_cfu(): float +calcola_media_arit(): float +calcola_media_pes(): float Le funzioni friend non sono state riportate. I membri ereditati dalle varie classi non sono stati riportati. Si veda il successivo diagramma. DIAGRAMMA DELLE CLASSI {abstract} utente materia * 1 libretto 1 1 studente 1 2 info 1 amministratore * < aggiorna 1 2 date La classe date è dedicata alla gestione delle date. È formata da giorno, mese ed anno ed è settata automaticamente alla data odierna mediante il costruttore. I metodi della classe permettono di fare alcune operazioni sulle date, come la quantità di anni, mesi e giorni che separano due date. La classe materia è dedicata alla gestione delle materie. È formata da un ID, unico per ogni materia, da un nome, dai relativi crediti formativi e dal voto conseguito all’esame. Eventualmente è possibile aggiungere al voto la lode nel caso il voto sia uguale a 30. La classe libretto è l’insieme degli esami superati dallo studente. Contiene quindi un array dinamico di materie e altri attributi statistici quali il numero totale di crediti dello studente, la media aritmetica dei voti e la media ponderata dei voti. Il libretto è associato ad uno studente, e uno studente potrà avere uno ed un solo libretto. La classe info è una semplice classe per la gestione di informazioni quali username e password. La password, a differenza di qualsiasi altra scritta, non deve apparire sul monitor e deve essere sostituita da asterischi. La classe utente è una classe astratta, non istanziabile. È la classe base per ogni utente che decide di utilizzare il programma. La classe studente è una classe derivata dalla classe utente. È la classe specifica per l’utente che sceglie il profilo di studente, e quindi al momento della registrazione dovrà registrare le proprie informazioni personali. La classe studente avrà un libretto universitario il quale non potrà essere aggiornato dallo stesso, ma solo visionato. La classe amministratore è una classe derivata dalla classe utente. È la classe specifica per l’utente che sceglie il profilo di amministratore, e non ha bisogno di registrare informazioni personali. La classe amministratore può accedere ad ogni studente registrato istanziando un oggetto studente e quindi aggiornarne il libretto aggiungendo materie. DIAGRAMMA DEI CASI D’USO Registrazione <<extend>> Profilo "STUDENTE" <<extend>> <<extend>> Profilo "AMMINISTRAOTRE" Utente Login <<extend>> Visualizza informazioni Visualizza dati <<include>> Visualizza libretto <<include>> Scarica modulo 100 <<include>> Login Studente Scarica statino <<include>> <<include>> Cambia password Log out <<include>> Visualizza dati <<include>> Seleziona studente <<include>> <<include>> Aggiungi esame Amministratore Cambia password <<include>> <<include>> Log out Login CASO D'USO BREVE DESCRIZIONE ATTORI PRECONDIZIONI Registrazione Questo caso d'uso permette di registrare un utente Studente, Amministratore L'username prescelto non deve essere già presente in archivio Per lo studente, il sistema richiede di inserire dati personali, dati sul luogo di nascita, corso di laurea e data di registrazione; infine, username e password. FLUSSI PRINCIPALI Per l’amministratore, il sistema richiede di inserire la password di sistema e, se la password è corretta, inserire username e password personali. FLUSSI L’utente ha inserito un username già presente in archivio, il sistema richiede di ALTERNATIVI reinserire username e password. Se la registrazione ha avuto successo, l'utente è stato inserito in archivio e, se è POSTCONDIZIONI uno studente, gli viene attribuita una matricola CASO D'USO BREVE DESCRIZIONE ATTORI PRECONDIZIONI Log in Questo caso d'uso permette di ottenere l'autorizzazione ad effettuare le varie operazioni Studente, Amministratore L’utente deve essere registrato e quindi presente all’interno dell’archivio Il sistema richiede username e password dell’utente al fine di ottenere FLUSSI PRINCIPALI l’autorizzazione. Verifica quindi la presenza dell’username e della password nell’archivio. FLUSSI L’utente ha inserito un username non presente in archivio o una password errata, il ALTERNATIVI sistema ritorna al menù principale. POSTCONDIZIONI Se la log in ha avuto successo, è possibile effettuare le diverse operazioni. CASO D'USO BREVE DESCRIZIONE ATTORI PRECONDIZIONI FLUSSI PRINCIPALI FLUSSI ALTERNATIVI POSTCONDIZIONI Visualizza informazioni Questo caso d'uso lancia il file “finestra_informazioni.exe” che contiene le informazioni sul prodotto Studente, amministratore CASO D'USO BREVE DESCRIZIONE ATTORI Visualizza dati Viene lanciato il file “finestra_informazioni.exe”. Questo caso d'uso stampa a video i dati dello studente Studente, amministratore L’utente deve essere registrato e quindi presente all’interno dell’archivio. Lo PRECONDIZIONI studente deve essersi loggato; mentre l’amministratore, oltre a dover essere loggato, deve selezionare uno studente. FLUSSI PRINCIPALI Il sistema stampa a video tutti i dati registrati dallo studente FLUSSI ALTERNATIVI POSTCONDIZIONI CASO D'USO BREVE DESCRIZIONE ATTORI Visualizza libretto Questo caso d'uso stampa a video il libretto dell’utente, con il totale dei crediti, la media aritmetica dei voti e la media ponderata dei voti Studente Lo studente deve essersi loggato e quindi deve essere presente in archivio; il PRECONDIZIONI libretto non deve essere vuoto. Il sistema legge da file i vari esami svolti dallo studente e li salva in memoria in un FLUSSI PRINCIPALI array dinamico che viene successivamente stampato. Infine, calcola il numero totale di cfu, la media aritmetica e la media ponderata dei voti. FLUSSI ALTERNATIVI POSTCONDIZIONI Se il file non viene trovato, il libretto è vuoto e viene segnalato a video. CASO D'USO BREVE DESCRIZIONE ATTORI PRECONDIZIONI FLUSSI PRINCIPALI FLUSSI ALTERNATIVI POSTCONDIZIONI Scarica modulo 100 Questo caso d'uso apre il file “mod100.pdf” con acrobat reader per ottenere il modulo 100 del politecnico. Studente Lo studente deve essersi loggato e quindi deve essere presente in archivio. Il sistema apre il file “mod100.pdf” con acrobat reader CASO D'USO BREVE DESCRIZIONE ATTORI PRECONDIZIONI FLUSSI PRINCIPALI FLUSSI ALTERNATIVI POSTCONDIZIONI Scarica statino Questo caso d'uso apre il file “statino.pdf” con acrobat reader per ottenere lo statino del politecnico. Studente Lo studente deve essersi loggato e quindi deve essere presente in archivio Il sistema apre il file “mod100.pdf” con acrobat reader CASO D'USO BREVE DESCRIZIONE ATTORI PRECONDIZIONI FLUSSI PRINCIPALI FLUSSI ALTERNATIVI POSTCONDIZIONI Log out Questo caso d’uso causa la log out dell’utente. Studente, amministratore Lo studente deve essersi loggato e quindi deve essere presente in archivio. L’oggetto studente o amministratore viene distrutto. CASO D'USO BREVE DESCRIZIONE ATTORI PRECONDIZIONI Cambia password Questo caso d’uso permette all’utente di cambiare la password di accesso, dopo aver inserito la password attualmente in uso. Studente, amministratore L’utente deve essersi loggato e quindi deve essere presente in archivio. Il sistema richiede la password attualmente in uso; se corrisponde a quella FLUSSI PRINCIPALI registrata, richiede la nuova password ed una sua conferma. Se l’utente inserisce una password diversa da quella originale, il sistema torna al menù dell’utente. FLUSSI ALTERNATIVI Se la password di conferma è diversa dalla password prima inserita, bisogna reinserire la password. POSTCONDIZIONI La password è stata modificata. CASO D'USO BREVE DESCRIZIONE ATTORI Seleziona studente Questo caso d’uso permette all’amministratore di selezionare lo studente che deve essere aggiornato. Amministratore L’amministratore deve essersi loggato e quindi deve essere presente in archivio. Gli PRECONDIZIONI studenti selezionabili sono, ovviamente, quelli presenti in archivio. L’amministratore seleziona lo studente scrivendo la matricola; il sistema ricerca il file FLUSSI PRINCIPALI denominato con il numero di matricola selezionato e lo apre quando lo trova, salvando i dati in un oggetto studente. FLUSSI ALTERNATIVI POSTCONDIZIONI CASO D'USO BREVE DESCRIZIONE ATTORI Se la matricola selezionata non è presente in archivio, lo studente non è stato trovato e si ritorna al menù principale dell’amministratore. È possibile accedere ai casi d’uso “visualizza dati” e “aggiungi esame”. Aggiungi esame Questo caso d’uso permette l’effettivo aggiornamento del libretto di uno studente aggiungendo un esame superato. Amministratore L’amministratore deve essersi loggato e quindi deve essere presente in archivio. Gli PRECONDIZIONI studenti selezionabili sono, ovviamente, quelli presenti in archivio. Le materie selezionabili sono salvate in un file. L’amministratore immette l’id della materia desiderata ed il sistema la ricerca nel file FLUSSI PRINCIPALI appropriato, salva le informazioni in memoria dinamica e poi le scrive sul file del libretto dello studente. FLUSSI Il sistema non evolve fino a che non si seleziona una materia presente in archivio. ALTERNATIVI POSTCONDIZIONI L’esame è stato aggiunto sul libretto dello studente selezionato. DIAGRAMMA DELLE ATTIVITÀ CASO D’USO: Registrazione (studente) Generazione di matricola, incremento di matricole da file C: Conferma, modifica, annulla? Richiesta inserimento dati, cdl, data di registrazione Decremento matricole da file Mod. C Ann. Registrazione avvenuta Conf. OK Richiesta inserimento username e password Verifica dell’inesistenza dell’username in archivio OK Richiesta reinserimento password Verifica uguaglianza password CASO D’USO: Registrazione (amministratore) Verifica uguaglianza password di sistema Richiesta inserimento password di sistema OK Richiesta inserimento username e password Verifica dell’inesistenza dell’username in archivio OK Registrazione avvenuta OK Richiesta reinserimento password Verifica uguaglianza password CASO D’USO: Log in Verifica della presenza dell’username e password in archivio Selezionare profilo OK Richiesta inserimento username e password Log in avvenuta CASO D’USO: Visualizza informazioni Esecuzione di “finestra_informazioni.exe” CASO D’USO: Visualizza dati (studente, amministratore) Stampa a video i dati dello studente letti da file CASO D’USO: Visualizza libretto Verifica dell’esistenza del file OK Salva i dati in memoria heap e stampa a video CASO D’USO: Scarica modulo 100 Apertura con acrobat reader di “mod100.pdf” CASO D’USO: Scarica statino Apertura con acrobat reader di “statino.pdf” CASO D’USO: Log out Distruggi oggetto CASO D’USO: Cambia password Richiesta di inserimento password originale Verifica dell’esattezza della password OK Richiesta inserimento password di nuova Verifica dell’uguaglianza password Richiesta di reinserimento nuova password OK delle Password cambiata CASO D’USO: Seleziona studente Richiesta di inserimento matricola Verifica dell’esistenza della matricola in elenco OK Studente selezionato CASO D’USO: Aggiungi esame Richiesta inserimento materia C: Conferma? s/n di id NO Verifica dell’esistenza dell’id in archivio OK C SI Richiesta di inserimento voto ed eventuale lode Salvataggio dei dati su file DIAGRAMMA DI SEQUENZA CASO D’USO: Registrazione Interfaccia utente (portale) Studente 1: richiesta registrazione 2: genera matricola 3: richiesta dati 4: indica dati 5: richiesta conferma sui dati 6: indica conferma 7: registrazione rifiutata (lo studente ha annullato l’operazione) 8: decremento matricola Interfaccia utente (portale) Studente 1: richiesta registrazione 2: genera matricola 3: richiesta dati 4: indica dati 5: richiesta conferma sui dati 6: indica conferma 7: richiesta username e password 8: indica username e password 9: richiesta conferma password 10: indica password 11: registrazione effettuata CASO D’USO: Registrazione Interfaccia utente (portale) Amministratore 1: richiesta registrazione 2: richiesta password di sistema 3: indica password di sistema 4: registrazione rifiutata (password di sistema errata) Interfaccia utente (portale) Amministratore 1: richiesta registrazione 2: richiesta password di sistema 3: indica password di sistema 4: richiesta username e password 5: indica username e password 6: richiesta conferma password 7: indica password 8: registrazione effettuata CASO D’USO: Log in Interfaccia utente (portale) Utente 1: richiesta log in 2: richiesto profilo 3: indica profilo 5: richiesta username e password 6: indica username e password 7: log in rifiutata (utente non presente in archivio) Interfaccia utente (portale) Utente 1: richiesta log in 2: richiesto profilo 3: indica profilo 5: richiesta username e password 6: indica username e password 7: log in effettuata CASO D’USO: Cambia password Interfaccia utente (portale) Utente 1: richiesta di cambiao password 2: richiesta password originale 3: indica password originale 4: cambio password rifiutato (password originale errata) Interfaccia utente (portale) Utente 1: richiesta di cambiao password 2: richiesta password originale 3: indica password originale 4: richiesta nuova password 5: indica nuova password 6: richiesta conferma password 7: indica password 8: cambio password effettuato CASO D’USO: Seleziona studente Interfaccia utente (portale) Amministratore Studente 1: richiesta selezione studente 2: richiesta matricola 3: indica matricola 4: richiesta studente 5: studente non trovato 6: studente non trovato Interfaccia utente (portale) Amministratore Studente 1: richiesta selezione studente 2: richiesta matricola 3: indica matricola 4: richiesta studente 5: restituisci studente 6: studente ottenuto CASO D’USO: Visualizza libretto Studente Interfaccia utente Libretto Materia Libretto Materia 1: Richiesta libretto 2: richiesta rifiutata (libretto vuoto) Studente 1: Richiesta libretto Interfaccia utente 2: Richiesta libretto 3: richiesta materie 4: restituzione materie 5: visualizza libretto CASO D’USO: Aggiungi esame Interfaccia utente (portale) Amministratore Studente 1: richiesta aggiunta esame 2: richiesto id materia 3: indica id 4: richiesta conferma materia 5: conferma materia 6: richiesta voto e lode 7: indica voto e lode 8: aggiorna studente 9: aggiornamento effettuato I diagrammi di sequenza degli altri casi d’uso non sono riportati perché troppo banali. Viene ora riportato l’elenco delle materie presenti nel file “materie.dat”. L’amministratore, selezionando l’id della materia, aggiungerà l’esame allo studente. ELENCO MATERIE ID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 NOME Acquedotti e fognature Affidabilità e certificazione di qualità Affidabilità e controllo statistico della qualità Affidabilità e manutenzione degli impianti Algebra Analisi Analisi matematica Analisi matematica I Analisi matematica II Analisi numerica Analisi numerica per le telecomunicazioni Antenne e comp. elettromagnetici Architett. e progr. microelaborata Architettura delle grandi strutture Architettura e composizione architettonica I Architettura e composizione architettonica II Architettura e composizione architettonica III Architettura tecnica Architettura tecnica e tipologie edilizie Architettura tecnica e tipologie edilizie Architettura tecnica I Architettura tecnica II Architetture di calcolo per le telecomunicazioni Automazione dei sistemi elettrici per l'energia II Automazione dei sistemi elettrici per l'energia II Automazione industriale Automazione industriale I Automazione industriale II Azionamenti elettrici Azionamenti elettrici I Azionamenti elettrici II Azionamento a fluido Buisness planning e project financing Calcolatori elettronici Calcolo anelastico e a rottura delle strutture Calcolo numerico Calcolo numerico II Campi elettromagnetici Campi elettromagnetici I Campi elettromagnetici II Caratteri costruttivi e distributivi degli edifici Cartografia numerica Centrali termiche Certificazione energetica degli edifici Chimica Chimica Chimica ambientale CFU 9 6 6 6 6 6 12 6 6 6 3 6 6 6 12 12 12 6 9 6 12 12 3 6 6 6 6 6 6 6 6 6 6 6 3 3 3 6 6 6 9 6 6 3 6 3 3 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 Chimica degli ecosistemi Chimica e tecn. del restauro e della cons. dei materiali Chimica e tecnologia delle acque Chimica I Chimica II Comp. elettrom. per le telecomunicazioni Comp. mecc. dei materiali Compatibilità elettromagnetica Compatibilità elettromagnetica industriale I Compatibilità elettromagnetica industriale II Compilatori e interpreti Complementi di calcolo numerico Complementi di geotecnica Complementi di legislazione delle OO.PP. e dell'edilizia Complementi di matematica Complementi di materiali da costruzione Complementi di scienza delle costruzioni Complementi di tecnica urbanistica Complessità numerica Componenti e sistemi ottici integrati Composizione architettonica e urbana Comunicazioni elettriche Comunicazioni elettriche I Comunicazioni elettriche II Consolidamento degli edifici storici Controlli automatici I Controlli automatici II Controllo dei processi I Controllo dei processi II Controllo dei robot Controllo di azionamenti elettrici Controllo di gestione Controllo di gestione e finanza Controllo di qualità del processo edilizio Controllo distribuito di sistemi produttivi Controllo e gestione degli appalti Controllo non lineare Costruzione di macchine Costruzione di veicoli terrestri Costruzioni di strade ferrovie ed aereoporti Costruzioni elettromeccaniche II Costruzioni idrauliche Costruzioni idrauliche Costruzioni in zona sismica Costruzioni martittime Diagnostica strutturale Dinamica delle strutture Dinamica delle strutture Dinamica delle strutture e ing. sismica Dinamica e controllo delle macchine Dinamica e simulazione dei veicoli Disegno Disegno assistito da calcolatore 3 6 6 6 3 6 6 6 6 6 3 3 3 3 6 3 9 6 3 6 12 6 6 6 3 9 6 6 6 6 6 6 6 3 3 6 3 6 6 12 6 12 3 4,5 6 6 9 4,5 6 6 6 6 3 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 Disegno degli impianti industriali Disegno dell'architettura I Disegno dell'architettura II Disegno edile Disegno tecnico industriale Dispositivi elettronici I Dispositivi elettronici II Dispositivi meccanici per il veicolo Distr. e utilizzazione dell'energia elettrica Distr. e utilizzazione dell'energia elettrica I Distr. e utilizzazione dell'energia elettrica II Durabilità dei componenti Economia dell'energia e sistemi economici Economia e gestione dell'inn. e strategie di inn. tec. Economia e gestione dell'innovazione Economia ed organizzazione aziendale Economia ed organizzazione aziendale Elaborazione numerica dei segnali Elaborazione numerica dei segnali Elaborazione statistica dei segnali Elementi di cultura d'impresa Elementi di diagnostica strutturale Elementi di economia Elementi di economia aziendale Elementi di fisica Elementi di sistemi esperti Elementi di statistica Elementi di teoria dei sistemi Elettromagnetismo Elettronica analogica Elettronica applicata Elettronica dei sistemi digitali Elettronica delle telecomunicazioni Elettronica di potenza I Elettronica di potenza II Elettronica digitale Elettronica I Elettronica II Elettronica III Elettronica industriale Elettronica industriale di potenza Elettronica sistemi digitali I Elettronica sistemi digitali II Elettrotecnica Elettrotecnica Elettrotecnica Elettrotecnica I Elettrotecnica II Energetica applicata Energie alternative Ergotecnica edile Estimo Estimo 3 12 6 6 6 6 6 6 6 9 6 3 6 9 6 6 3 6 6 6 3 3 6 3 3 6 3 3 3 6 9 6 6 9 6 6 6 6 6 6 6 6 6 3 6 9 6 6 6 6 6 6 3 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 Finanza di progetto Fisica dello stato solido Fisica generale Fisica generale Fisica generale Fisica I Fisica II Fisica sperimentale I Fisica sperimentale II Fisica sperimentale III Fisica tecnica Fisica tecnica Fisica tecnica ambientale Fisica tecnica ambientale Fluidodinamica Fluidodinamica numerica Fondamenti della misurazione Fondamenti di automatica Fondamenti di automatica I Fondamenti di automatica II Fondamenti di elettronica Fondamenti di informatica Fondamenti di informatica I Fondamenti di informatica II Fondamenti di sistemi ad eventi discreti Fondazioni Gasdinamica Geologia ambientale Geologia applicata Geologia applicata alla difesa ambientale Geologia applicata alla pianificazione territoriale Geologia tecnica Geomatica Geometria Geometria e algebra Geotecnica Geotecnica Geotecnica Gestione ambientale dei sistemi di produzione Gestione aziendale Gestione dei bacini idrografici Gestione dei processi operativi Gestione dei progetti Gestione dei progetti di innovazione Gestione dei sistemi di trasporto Gestione della comunicazione tecnica Gestione della produzione industriale (a) Gestione della produzione industriale (b) Gestione di impresa Gestione industriale della qualità I Gestione industriale della qualità II Gestione urbana Gestione urbana 3 6 12 6 9 6 6 6 6 6 6 3 9 3 3 6 3 12 6 6 6 6 6 6 3 6 6 6 6 6 6 3 6 6 6 12 9 6 6 6 9 6 6 3 3 6 6 6 3 6 6 9 6 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 Griglie computazionali Identificazione e controllo intelligente Idraulica Idraulica + costruzioni idrauliche Idraulica ambientale Idrogeologia Illuminotecnica e acustica applicata Illuminotecnica e acustica applicata Impianti elettrici I Impianti elettrici II Impianti industriali Impianti meccanici I Impianti meccanici II Impianti speciali idraulici Impianti termotecnici Impianti termotecnici ed illuminotecnica Industrializzazione rapida Informatica grafica Informatica I Informatica II Informatica III Informatica per l'automazione I Informatica per l'automazione II Infrastrutture idrauliche Infrastrutture varie Ingegneria del software Ingegneria del territorio Ingegneria del territorio II Ingegneria sanitaria ambientale Inglese I Inglese II Inglese III Intelligenza artificiale Interazione uomo macchina Istituzioni di diritto pubblico Laboratorio di reti di telecomunicazioni Laboratorio di tesi Laboratorio di tesi Laboratorio di tesi Lavorazioni per deformazione plastica Leggi e regolamenti per il s.a.p. Legislazione Legislazione delle fonti di energia Legislazione delle OO.PP. e dell'edilizia Legislazione delle OO.PP. e dell'edilizia Lingua inglese Macchine Macchine a fluido I Macchine a fluido II Macchine e azion. elettrici I Macchine e azion. elettrici II Macchine elettriche Macchine elettriche I 3 6 3 6 12 6 9 3 9 6 6 6 6 9 6 6 6 6 6 6 9 6 6 12 6 6 6 6 9 3 3 3 6 6 6 3 15 6 9 6 3 3 3 9 3 3 6 6 6 6 6 6 9 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 Macchine elettriche II Marketing e modelli di e-buisness Marketing urbano Materiali innovativi per l'ing. elettrica Meccanica applicata Meccanica applicata alle macchine I Meccanica applicata alle macchine II Meccanica dei fluidi Meccanica dei materiali Meccanica dei robot Meccanica delle strutture Meccanica delle vibrazioni Meccanica e macchine Meccanica orbitale Meccanica razionale Meccanica sperimentale I Meccanica sperimentale II Metodi di controllo per le telecomunicazioni Metodi e sistemi per la sicurezza nelle reti Metodi matematici per l'ingegneria Metodi matematici per l'ingegneria Metodi numerici per l'ingegneria Microonde Misure a microonde e ottiche Misure e modelli idraulici Misure e strumentazione Misure elettriche Misure elettroniche Misure meccaniche e termiche I Misure meccaniche e termiche II Misure per la gestione della qualità Misure per l'automazione e la produzione industriale Misure su sistemi di telecomunicazione Modelli di e-buisness Modelli di reti di computer Modelli di traffico e progettazione reti Modelli e metodi di ottimizzazione Modelli mecc. dei materiali Modellistica dei sist. dinamici Modellistica e controllo dei sistemi di produzione Modellistica e simulazione di impianti motori Modellistica sistemi dinamici elemntari Motori termici per la trazione Normative e diritto nelle telecomunicazioni Oleodinamica Onde elettromagnetiche ed ottica Optoelettronica I Optoelettronica II Organizzazione del cantiere Organizzazione del cantiere Organizzazione del cantiere Ottica Patologie e recupero degli edifici 6 9 6 6 6 6 6 3 6 6 6 6 6 3 6 3 6 6 6 3 6 6 6 3 6 6 9 3 3 6 6 6 6 3 3 6 6 6 3 6 6 3 6 3 6 3 6 6 12 6 9 3 9 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 Pianificazione dei trasporti Pianificazione territoriale Pianificazione territoriale Princ. e metodol. della progettazione meccanica Principi di ingegneria elettrica Principi di ingegneria elettrica Principi fisici dei trasduttori Probabilità e statistica Processi chimici per l'elettronica Produzione assistita da calcolatore Prog. aut. circ. e sistemi elettronci Prog. di sitemi elettronici ad alta frequenza Prog. e dim. delle strutt. e sovrastrutt. di viabilità Progett. sistemi elettronici integrati Progettazione assistita di strutture meccaniche Progettazione degli elementi costruttivi Progettazione degli elementi costruttivi Progettazione integrale Progettazione integrale Progettazione meccanica Progettazione meccanica funzionale Progettazione urbanistica Progettazione urbanistica Progetti di servizi tecnologici Progetti di servizi tecnologici Progetto dei sistemi di trasporto Progetto di filtri attivi Progetto di filtri passivi Propagazione guidata e libera Propulsione aerospaziale Prova finale Prova finale Prova finale Prova finale Recupero e conservazione degli edifici Regolazione e controllo degli impianti Restauro architettonico Reti di telecomunicazioni Riabilitazione strutturale Ricerca operativa Rilievo dell'architettura Risorse idriche Scienza delle costruzioni Scienza delle costruzioni Scienza delle costruzioni Scienza delle costruzioni I Scienza delle costruzioni II Scienza e tecnologia dei materiali Sensori e trasduttori Sicurezza degli impianti industriali Sicurezza dei sistemi informatici Sicurezza e affidabilità delle costruzioni Sicurezza e salute del lavoro 6 6 9 6 9 6 3 3 3 6 6 6 6 6 6 9 6 9 6 6 6 9 6 9 3 6 3 3 6 6 12 9 6 3 9 6 12 9 3 6 9 6 12 9 6 6 6 6 6 6 6 3 6 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 Simulazione circuitale con Matlab e Simulink Simulazione circuitale con Pspice e Psim Simulazione e prototipazione virtuale Sist. elettronici di misura Sist. micro e nanoelettronici Sist. per la cod. e trasm. dei segnali multimediali Sist. per la cod. e trasm. dei segnali multimediali Sistemi di controllo di gestione Sistemi di telecomunicazione Sistemi e reti di radiocomunicazioni Sistemi elettrici per l'energia I Sistemi elettrici per l'energia II Sistemi energetici I Sistemi idrici complessi Sistemi informativi Sistemi informativi per l'edilizia e il territorio Sistemi informativi web Sistemi integrati di produzione Sistemi intelligenti per la diagnostica industriale Sistemi operativi Sistemi organizzativi e gestione delle ris. umane Sistemi radianti I Sistemi radianti II Sperimentazione, collaudo e controllo delle strutture Sperimentazione, collaudo e controllo delle strutture Stabilità dei pendii Stage associato alla tesi Statica delle strutture murarie Stima e controllo dei sistemi dinamici Storia della città e del territorio Storia dell'architettura Storia dell'architettura contemporanea Storia delle tecniche edilizie Storia e tecniche del restauro Strategia ed organizzazione aziendale Strum. ed elab. delle informazioni di misura Strutture prefabbricate Strutture prefabbricate Strutture speciali Tecnica dei lavori idraulici Tecnica dei lavori stradali Tecnica della sicurezza elettrica Tecnica delle costruzioni Tecnica delle costruzioni metalliche Tecnica e pianificazione urbanistica Tecnica ed economa dei trasporti Tecnica urbanistica I Tecnica urbanistica II Tecniche dei lavori stradali Tecniche delle alte frequenze Tecniche di valutazione di impatto ambientale Tecniche di visione artificiale Tecniche ottiche 3 3 6 6 6 3 6 6 6 6 6 6 6 6 6 3 6 6 3 6 6 6 6 9 6 6 3 6 3 6 9 12 6 6 6 6 9 3 6 6 9 6 12 6 6 6 12 12 3 6 3 6 6 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 Tecniche visione artificiale Tecnologia dei materiali e chimica applicata Tecnologia generale dei materiali Tecnologia meccanica I Tecnologia meccanica II Tecnologie delle giunzioni Tecnologie e mat. per l'elettronica Tecnologie e sistemi di assemblaggio Tecnologie generali dei materiali Tecnologie per la tutela ambientale Tecnologie speciali Teconologie di lavorazione dei materiali polimerici Telematica I Telematica II Telemisure Teoria dei circuiti elettrici Teoria dei linguaggi Teoria dei sistemi Teoria delle infrastrutture varie Teoria delle reti elettriche Teoria delle strutture Teoria e applicazione dei grafi Teoria e progetto delle costruzioni in acciaio Teoria e progetto delle costruzioni in acciaio Teoria e progetto delle costruzioni in c.a e c.a.p. Teoria e progetto delle costruzioni in c.a e c.a.p. Tirocinio Tirocinio Tirocinio Tirocinio I Tirocinio II Tirocinio III Topografia e tecniche cartografe Topografia e tecniche cartografe Turbomacchine Valutazione economica di piani e progetti Valutazione immobiliare 6 6 6 6 6 6 6 6 6 6 6 6 3 3 6 9 3 6 9 6 6 3 9 6 9 6 9 6 3 3 3 6 9 6 6 6 3 È necessario distinguere le materie aventi nomi uguali ma appartenenti a corsi diversi nel caso il loro peso in crediti sia differente. SIZEOF delle classi //SIZEOF DI TUTTE LE CLASSI cout<<"-- DIMENSIONE CLASSI --"<<endl<<endl; cout<<"DATA: \t\t\t"<<sizeof(date)<<" Byte"<<endl; cout<<"MATERIA: \t\t"<<sizeof(materia)<<" Byte"<<endl; cout<<"LIBRETTO: \t\t"<<sizeof(libretto)<<" Byte"<<endl; cout<<"INFO: \t\t\t"<<sizeof(info)<<" Byte"<<endl; cout<<"UTENTE: \t\t"<<sizeof(utente)<<" Byte"<<endl; cout<<"STUDENTE: \t\t"<<sizeof(studente)<<" Byte"<<endl; cout<<"AMMINISTRATORE: \t"<<sizeof(amministratore)<<" Byte"<<endl; L’allineamento viene fatto predefinito più capiente. in base alla dimensione in // // // // // // // 12 Byte 88 Byte 20 Byte 60 Byte 144 Byte 488 Byte 144 Byte memoria del tipo date La classe date contiene: int day Æ 4 byte int month Æ 4 byte int year Æ 4 byte 4 + 4 + 4 = 12 byte materia La classe materia contiene: int id Æ 4 byte char nome[70] Æ 1 byte x 70 = 70 byte 4 + 70 + 2(vuoti) = 76 byte float cfu Æ 4 byte int voto Æ 4 byte 76 + 4 + 4 = 84 byte bool lode Æ 1 byte 84 + 1 + 3(vuoti) = 88 byte libretto La classe libretto contiene: materia *vett Æ 4 byte float media_aritmetica Æ 4 byte float media_pesata Æ 4 byte float tot_cfu Æ 4 byte int numero_esami Æ 4 byte 4 + 4 + 4 + 4 = 20 byte info La classe info contiene: char username[30] Æ 1 byte x 30 = 30 byte char password[30] Æ 1 byte x 30 = 30 byte 30 + 30 = 60 byte utente La classe utente contiene: info up1 Æ 60 byte info up2 Æ 60 byte int key Æ 4 byte char nomefile[16] Æ 1 byte x 16 = 16 byte 60 + 60 + 4 + 16 = 140 byte virtual void set_nomefile()=0 è una funzione membro virtuale, quindi alla classe verrà associata la v-table e per ogni istanza (in questo caso delle classi derivate essendo utente astratta) verrà aggiunto il puntatore alla v-table Æ 4 byte 140 + 4 = 144 byte studente La classe studente contiene: tutti gli attributi della classe utente più il puntatore alla v-table Æ 144 byte char nome[30] Æ 1 byte x 30 = 30 byte 144 + 30 = 174 + 2 (vuoti) = 176 byte char cognome[30] Æ 1 byte x 30 = 30 byte 176 + (30 – 2) = 204 byte date datanascita Æ 12 byte 204 + 12 = 216 byte char sesso Æ 1 byte 216 + 1 + 3 (vuoti) = 220 byte char cittadinanza[30] Æ 1 byte x 30 = 30 byte 220 + (30 – 3) = 247 + 1 (vuoto) = 248 byte char email[30] Æ 1 byte x 30 = 30 byte 248 + (30 – 1 ) = 277 + 3 (vuoti) = 280 byte char numtelefono[30] Æ 1 byte x 30 = 30 byte 280 + (30 – 3) = 307 + 1 (vuoto) = 308 byte char numcellulare[30] Æ 1 byte x 30 = 30 byte 308 + (30 – 1) = 337 + 3 (vuoti) = 340 byte char codicefiscale[17] Æ 1 byte x 17 = 17 byte 340 + (17 – 3) = 354 + 2 (vuoti) = 356 byte char nazione[30] Æ 1 byte x 30 = 30 byte 356 + (30 – 2) = 384 byte char provincia[3] Æ 1 byte x 3 = 3 byte 384 + 3 + 1 (vuoto) = 388 byte char comune[30] Æ 1 byte x 30 = 30 byte 388 + (30 – 1) = 417 + 3 (vuoti) = 420 byte char corso_di_laurea[35] Æ 1 byte x 35 = 35 byte 420 + (35 – 3) = 452 byte date registrazione Æ 12 byte 452 + 12 = 464 byte int matricola Æ 4 byte 464 + 4 = 468 byte libretto lib Æ 20 byte 468 + 20 = 488 byte amministratore La classe amministratore contiene: tutti gli attributi della classe utente più il puntatore alla v-table Æ 144 byte