RELAZIONE PROGETTO Irene Maria Girnacci Fndamenti di prgrammazine I ann laurea triennale Breve descrizine del prblema trattat Il prblema assegnat cnsiste nell svilupp di una agenda elettrnica, cmpsta da un menù a più livelli, quali: il prfil persnale dell utente, il calendari dell ann e degli eventi, una rubrica telefnica, ed un spazi dedicat alle nte persnali dell utente. Descrizine funzinale del prgramma realizzat e delle eventuali interazini cn l'utente (dati di input che devn essere frniti, risultati attesi,...) Il prgramma è in grad di eseguire le seguenti funzini, divise per menù: PROFILO PERSONALE: cntiene i dati persnali dell utente; essi cmprendn nme, cgnme, cmpleann, cdice pstale, indirizz, città, telefn, cellulare, email 1. l utente è in grad di mdificare i prpri dati; CALENDARIO DELL ANNO: riprta tutti i girni dell ann. Cnsente: 1. la visualizzazine del calendari mensile (per tutti i mesi degli anni, dei mesi successivi/precedenti); 2. la visualizzazine di eventi e ricrrenze (del girn specificat la lista cmpleta); 3. l aggiunta e la registrazine di un event per un girn definit (inseriment della data, dell ra inizi event, della durata dell event in re - cn limite min. e max. specificat e cntrllat -, della descrizine dell event, del lug dve si svlge, dei partecipanti e di eventuali nte); 4. l aggiunta di una ricrrenza per un girn definit (inseriment della data, descrizine ed eventuali nte). E pssibile registrare più ricrrenze in un girn 5. la ricerca generica di un event/ricrrenza tramite l inseriment del nme cmplet di parte di ess, cn la pssibilità di mdificare le single vci eliminare l inter/a event/ricrrenza, di visualizzare gli eventi/ricrrenze successivi ttenuti dalla medesima ricerca; 6. la creazine di una tabella, cme utility interna, cn la funzine di indicare la dispnibilità di registrazine di nuvi eventi, secnd re e girni di tutt l ann RUBRICA TELEFONICA:
riprta nme, cgnme, cmpleann, cdice pstale, indirizz, città, telefn, cellulare, email. Cnsente: 1. la visualizzazine dei dati di gni singl nminativ. Ogni cntatt può essere lett sequenzialmente un dp l altr. 2. inseriment e memrizzazine di nuvi dati, una infrmazine per vlta. E pssibile inserire più nmi (ad esempi: Maria Luisa) cgnmi (ad esempi: De Sica) della città (ad esempi: Desenzan sul Garda) della via (ad esempi: viale della Vittria) dell stess cntatt. Sn previste, inltre, diverse funzini di cntrll, quali: l esistenza di date nel calendari; la cmpsizine della data secnd l schema gg/mm/aaaa, dve è esclus l inseriment di altri separatri al pst dell / ; la cmpatibilità tra l ann, mese e girn della data di nascita e la data crrente; il ricnsciment della data del cmpleann cn la segnalazine bun cmpleann ; la crrettezza dei dati numerici alfanumerici richiesti; i campi sn fissi (per numeri di caratteri); la crrettezza del cdice pstale rispett alla città e al numer di cifre da inserire la ricerca autmatica del prefiss telefnic, in base alla città di residenza, se si immette il valre? 3. ricerca generica di dati tramite l inseriment di nmi cmpleti di parte di essi, cn la pssibilità di mdificare le single vci eliminare l inter cntatt, di visualizzare i cntatti successivi ttenuti dalla medesima ricerca Descrizine della struttura del prgramma realizzat: principali classi e strutture dati utilizzate, principali sttprgrammi (funzine svlta e parametri passati), ecc. La struttura del prgramma è cstituita dalle seguenti strutture dati: classi, vettri, strutture di supprt (cstanti, interi, stringhe etc.) : CLASSI - Le classi principali sn: address_bk class: utilizzata per la rubrica (cmpsta dalle stringhe nme, cmpleann, cdice pstale, indirizz, città, cellulare, email e dalla struttura telefn (string prefiss + string numberi); address_bk functins: cstruttre senza parametri della classe che inizializza i vari campi della classe; funzini di input per l immisine ed eventuali cntrlli dei dati da std input (input_ns, input_brth, input_zcde, input_adrs, input_city, input_tel, input_cell, input_email); funzini di cntrll dei dati (check_birth1, check birth2, check_separatr); funzini per cnversini tra i tipi di dati (cnversin_string, cnversin_string2, split_tel) utili per eventuali cntrlli di dati in input e per la lettura/scrittura da vettre a file/std input e viceversa;
funzini di lettura/scrittura da vettre a file/std input e viceversa (lad_data, vectr_push, write_data); funzine di verlading dell peratre << (peratr<<) per la scrittura su file; altre funzini (initial, etc.); slts_day class: classe utilizzata per il calendari che definisce la dispnibilità dei vari girni e re (cmpsta da stringhe per definire la dispnibilità men dell ra e la durata richiesta per la memrizzazine dell event) : ha infatti cme dati private due stringhe, una per testare se la psizine è libera, l altra per indicare quanti slt cnsecutivi vengn ccupati (vver quante re dura l event). Quest servirà pi anche per nn permettere che venga svrascritt l event salvat precedentemente. slts_day functin: la funzine principale della classe è il cstruttre che inizializza a zer i due campi private (verrann messi a un successivamente in cas di ccupazine event, quindi: 0 = nessun event, psizine nn ccupata, 1 = event, psizine ccupata). In public sn pi dichiarate anche alcune variabili cme la lunghezza dei recrd e una stringa di supprt per le unità slt. event_day class: classe utilizzata: per gli eventi del calendari (cmpsta da elementi di tip string e integer : string per la data estesa, la descrizine dell event, la lcazine, le persne presenti e le eventuali nte, integer per il numer del girn dell ann, per la tiplgia - event ricrrenza - ) ; per indice per la lcazine del girn e dell ra nella tabella calendari; per l ra di inizi dell event; per i minuti dell ra di inizi dell event - nn utilizzat nel prgett -; per la fine dell ra dell event; per la fine dei minuti dell ra dell event - quest ultim nn utilizzat nel prgett - event_day functins: - funzini di input per l immissine degli eventi/ricrrenze: (input_desc, input_lc, input_pers, input_nte, input_date); permettn l input rispettivamente della descrizine, della lcazine, dei partecipanti, delle eventuali nte e della data); - funzini di cnfigurazine ed eventuale cntrll dell input: per impstare rispettivamente la data, l rari e il tip (event ricrrenza (set_day, set_type, set_eventtime). La funzine set_day salva il dat in input (precedentemente salvat in una variabile tempranea, e ricevut cme parametr della funzine), cme dat della classe. La funzine set_type salva il parametr ricevut in e_type, ggett della classe event_day.
La funzine set_eventtime invece cntrlla l'input dell'inizi dell'ra, della durata (cn relativ cntrll dei limiti minimi e massimi, e se nn è già presente un altr event. VETTORI: implementazine dei dati definiti nella classe, separati da un separatre predefinit. Us dei principali vettri: v vectr: vettre principale utilizzat per la rubrica. Cntiene i dati effettivi della classe su cui è pssibile effetturare le perazini di aggiunta, ricerca, mdifica ed eliminazine dei cntatti; gni variazine del vettre viene immediatamente salvata su file. v1 vectr: vettre utilizzat per il calendari. Cntiene i dati delle ricrrenze e degli eventi, separati cn la stessa tecnica del v vectr. Su tali dati è pssibile effettuare le perazini di aggiunta, ricerca, elimina event/ricrrenza e mdifica di eventuali vci dell event/ricrrenza. v2 vectr: vettre utilizzat per il calendari. Cntiene i girni e le re per l ann e viene utilizzat per la definizine e la durata degli eventi. Supprta anche il cntrll se una data ra richiesta è già ccupata da un altr event. tkens vectr: vettre utilizzat per il calendari. E un vettre di supprt intern (esempi pssibile utilizz: visualizzazine di un event/ricrrenza presente in v1: prende l element e l scmpne nei campi definiti tramite separatre, vver nte, data, etc.. definite nella classe event_day). ALTRE FUNZIONI: funzini di cntrll: sn funzini che cnsentn di cntrllare i dati ( days, day, days_passed ). Rispettivamente: days restituisce il numer massim di girni del mese dell ann (per cui ad esempi cme dat in input nn è cnsentit digitare 31 febbrai 2008); day restituisce il numer rdinale del girn della settimana (servirà ad esempi per la visualizzazine della tabella), days_passed invece restituisce il numer del girn dell ann (servirà ad esempi per la memrizzazine degli eventi per un specific girn); funzini per la visualizzazine: ( disp_ricrrenze, disp_eventi, disp_eventi1 ) che cnsentn rispettivamente di visualizzare ricrrenze ed eventi; funzini di cnversine: ( stringtint, stringtint1, inttstring ) che cnsentn la cnversine tra i vari tipi di dat (utili ad esempi per la scrittura su file, la maniplazine su vettri);
funzini di lettura/scrittura: ( write_data, lad_data ) per scrivere dati del vettre su file e viceversa salvare i dati del file sul vettre per lavrare pi in memria; altre funzini di supprt: ( mve_tkens, lad_mnth, ld_mmnth, tkenize ) utili per il prgramma. Mve_tkens è una funzine che spsta i tkens nel vettre, lad_mnth assegna i mesi in frmat test (per la visualizzazine ad esempi), ld_mmnth cnsente di mettere l iniziale maiuscla al nme del mese, tkenize invece è una particlare funzine che cnsente di suddividere il vettre v1 degli eventi/ricrrenze: gni element crrispnde ad un event, quest event tramite la funzine tkenize è ulterirmente suddivis negli elementi cstitutivi, vver i vari campi tramite un gic di delimitatri (si vann infatti a cercare i delimitatri che separan i vari campi); STRUTTURE DI SUPPORTO: Es: cntatri, variabili bleane, cstanti, etc.
Eventuale (breve) descrizine dettagliata di alcuni sttprgrammi particlarmente significativi - cntrlli sulla crrettezza della data di nascita: dat un frmat definit gg/mm/aa e un numer massim e minim di caratteri, sn pssibili diversi cntrlli (esempi: 1) 31/09 dat cme errre (in base all algritm definit nella funzine check_birth1); 2) 29/2/2007 dat cme errre (in base al medesim algritm); 3) 22/2/2222 dat cme errre in base al cntrll dei limiti min e max dei girni, del mese e dell ann; 4) 8.9/1988 e 9/10-2000 dati cme errre in base al cntrll dei separatri; 5) a7/ 6/1988 dat cme errre grazie al check numeric.) - ricerca prefiss del numer telefnic: tramite immissine di? la funzine search_prefix, utilizzand un file di supprt cn nmi di città e prefissi (prefix.txt) assegna autmaticamente il prefiss nel numer di telefn. In cas di prefiss nn trvat immette cme dat 00000. - mdifica della città: se viene mdificata la città, viene richiest nuvamente il numer di telefn (cn relativ prefiss); - mdifica del telefn: se viene mdificat il numer di telefn nn viene richiest il prefiss a men che nn è stata mdificata la città; - funzine days_passed del calendari: utilizzata per gni richiesta che cinvlge una data (esempi: se si vule definire una ricrrenza/event calcla il numer del girn dell ann di questa data per cntrllare che esiste nell ann specificat, se nn esiste errr msg); - funzine tkenize del calendari: funzine che suddivide i campi del vettre cntenenti le infrmazini sugli eventi/ ricrrenze (in cui gni element del vettre cntiene un camp dell event/ricrrenza). Il numer dei campi per event/ricrrenza (per funzini di visualizza/mdifica etc) sn calclati in base alla funzne size() del vettre tkens. - calcl psizine libera/ccupata per un determinat event effetturat sul vettre v2 in base al calcl del girn per le 24re + l ra richiesta per l inizi dell event. Cn quest indice di base si vede se l spazi è ccupat n. - ricerca cntatt nella rubrica: tramite inseriment di una stringa vengn ricercati - e visualizzati - tutti i cntatti cntenenti la stringa in almen un dei campi dati (via, cap, città.. etc). I cntatti trvati pssn essere visualizzati sequenzialmente (un alla
vlta). Una vlta ricercat un cntatt si può scegliere se mdificare un dei campi del cntatt (campi numerati sttfrma di menu), eliminare il cntatt, visualizzare il cntatt successiv trvat, trnare al menu. Esempi e casi di prva (dati di input e risultati prdtti) test data di nascita [rubrica]: dati errati: 1) 31/09/2006; 2) 29/2/2007; 3) 22/2/2222; 4) 8.9/1988; 5) 9/10-2000; 6) a7/ 6/1988. dati crretti: 1) 25/09/1988; 2) 29/2/2008 (ann slare); 3) 3/3/1950. test sul cdice pstale [rubrica]: dati errati: 1) ab200 (nt numeric input); 2) 123456 (piché supera il limite massim cnsentit - 5 - e viene resettat cn i valri 00000); dati crretti: 1) 63023. test sul numer di telefn [rubrica]: dati errati: 1) g77 (nt numeric input); 2) se la smma tra prefiss e numer supera 15 numeri. dati crretti: 1) 0734 (prefix), 225175 (numbers). test sul numer di cellulare [rubrica]: dati errati: 1) k7777 (nt numeric input); 2) se il numer di cell. supera 15 numeri. dati crretti: 1) 349717171. test sull email [rubrica]: dati errati: 1) k7777 (nt numeric input); 2) se il numer di cell. supera 15 numeri. dati crretti: 1) bh@email.it test ricerca [rubrica]: dati crretti: 1) irene ricerca i cntatti che hann la stringa irene in almen una delle vci (visualizzazine di un cntatt alla vlta); 2) via ricerca tutti i cntatti che hann la stringa via in almen una delle vci; test visualizzazine calendari [calendari]: dati di input crretti: 1) + (visualizza il mese successiv); 2) +++ (visualizza il mese,3 mesi dp quell crrente, ex: febbrai +++ maggi ); 3) --- (visualizza il mese, 3 mesi prima di quell crrente, ex: maggi --- febbrai ); 4) 0 (fa trnare al menu principale); dati errati:, (viene segnalat messaggi di errre); 8 (scelta nn valida); test visualizzazine eventi/ricrrenze [calendari]: (dp aver selezinat 1 per visualizzazine ), dati crretti: 1) 00/00 (visualizza tutti gli eventi e le ricrrenze); 2) 25/09 (visualizza gli eventi e le ricrrenze del 25/09); dati errati: 1) 4 (errre: dimensine data e separatri nn validi); 2) 5/ (errre: dimensine data nn valida); 3). (errr: dimensine data e separatri nn validi);
test aggiunta event [calendari]: (dp la selezine 1 ), dati crretti: 25/9 per la data, 17 per l inizi event, 1 per la durata event in re, test1 per la descrizine (vlend anche ), bh per la lcazine event, myself per le persne presenti, that s all flks! per la nta aggiuntiva. dati errati: per la data: 1). (errre: dimensine data e separatre nn validi); 2) 26/ (errre: mese nn valid); 3) 31/02 (errre: girn nn valid per il mese specificat); 4) 77/7 (errre: girn nn valid per il mese specificat); per l ra dell event in re: 1) -1 (errr: ra definita nn nel limite); t (errr: input nn numeric); per la durata dell event: -1 (errr); 0 (errr: nn può durare 0 re..); k (errr); 26 (errr: supera il limite cnsentit); test aggiunta ricrrenza [calendari]: analg al test aggiunta event. test mdifica event/ricrrenza [calendari]: dati errati: 5) 13 (nn presente nel menu) test menu generale calendari: dati crretti: selezini pssibil (da 0 a 6), dati errati: (minri di 0 maggiri di 6), in cas di errre viene richiest di effettuare una scelta valida. test menu generale rubrica: dati crretti: selezini pssibil (da 0 a 4), dati errati: (minri di 0 maggiri di 4), in cas di errre viene richiest di effettuare una scelta valida.
Quest'pera di Irene M. Girnacci è distribuita cn Licenza Creative Cmmns Attribuzine - Nn cmmerciale 4.0 Internazinale.