Sunteți pe pagina 1din 4

Salut tuturor,

Iata enuntul proiectului final.


Rezolvarea proiectului mi-o trimiteti pe mail. Ideal ar fi sa il trimiteti pana
cand dati examenul final, astfel incat sa-l pot corecta si, odata ce luati final
ul, sa va inchei si situatia si sa puteti solicita diploma. Daca nu, in cel mai
rau caz il trimiteti dupa ce sustineti examenul final, insa nu mai tarziu de ult
ima data oficiala de examen final.
Odata proiectul final corectat si acceptat, va va aparea o bifa in gradebook pe
coloana "Project".
Iata in continuare enuntul proiectului.
ENUNT
Sa se construiasca o agenda de telefoane electronica, cu interfata grafica si f
acilitati de cautare dupa nume, prenume, CNP, telefon si afisare ordonata dupa o
ricare dintre aceste criterii. Aplicatia porneste initial in mod "shareware", ur
mand ca, dupa introducerea codului corect de inregistrare, functionalitatea sa s
a fie completa. (vezi detalii mai jos)
PRINCIPII
Cartea de telefoane este formata din abonati. Fiecare abonat este de fapt o per
soana care are asociat un numar de telefon. Numerele de telefon pot fi de fix sa
u de mobil. Vom putea adauga/sterge/edita/ordona abonati, iar informatia se salv
eaza pe hard-disk la iesirea din program si se incarca la pornire, fiind de asem
enea salvata periodic. Manevrarea informatiei se face prin intermediul unei inte
rfete grafice (GUI).
CLASELE PREZENTE IN PROIECT
Abonat
NrTel - pe care o puteti folosi ca unica clasa pt numere de telefon, sau o putet
i declara abstracta si din ea derivati alte doua, NrFix si NrMobil; oricum ar fi
, tipul numarului de telefon este cunoscut si validarea tine cont de acest tip
NrFix si NrMobil, daca ati ales varianta derivarii
CarteDeTelefon - este de fapt clasa de pornire care depoziteaza abonatii si meto
dele de manevrare a acestora, asa-numitul "model" (din arhitectura M-V-C)
Clasele corespunzatoare interfetelor grafice
care sa permita introducere abonat
, modificare abonat, stergere abonat, cautare abonat dupa diverse criterii, afis
are abonati sortati dupa un anume criteriu specificat de utilizator etc. Aici nu
marul, tipul si denumirile claselor le alegeti voi cum doriti.
Nici o clasa nu va folosi constructori fara argument (nu dorim sa cream persoan
e fara nume, numere de telefon vide etc). In aceste conditii este nevoie de o va
lidare a datelor pasate ca argumente, si protejarea impotriva datelor de intrare
eronate.
Toate clasele vor face override metodei toString(). De asemenea, abonatii vor f
i subiectul ordonarii dupa diverse criterii, in consecinta fiind necesara rescri
erea metodei equals() si/sau compareTo (interfata Comparable!) pentru cateva cla
se din proiect. Este de asemenea posibil, in functie de implementarea aleasa de

voi, sa fie nevoie sa folositi un Comparator.


Clasa Abonat
Un obiect de tip Abonat are nume, prenume, CNP (care identifica in mod unic o pe
rsoana - pentru cazul a doua persoane cu acelasi nume) si un camp de tip NrTel.
Obiectele de tip Abonat vor putea fi ordonate dupa oricare din cele 4 atribute.
Clasa CarteDeTelefon
Reprezinta "modelul" din arhitectura MVC. Abonatii vor fi stocati sub forma unei
colectii. Pentru diversele operatiuni cu aceasta colectie va puteti folosi de a
lgoritmii deja prezenti in clasa java.util.Collections (cautare, sortare etc).
Clasa CarteDeTelefon pune la dispozitia utilizatorului metode pentru:
-

adaugare/stergere/modificare de abonat

cautare abonat dupa fragmente de nume, numar, CNP si pozitie

salvarea/incarcarea bazei de date cu abonati (lucru cu hard-disk-ul)

ordonarea abonatilor dupa oricare dintre criteriile posibile

Interfata grafica
Cu exceptia cerintelor prezentate in continuare, design-ul ei este la latitudine
a voastra, insa toate functiile enumerate mai sus trebuie sa se realizeze prin i
ntermediul ei. Utilizatorul va putea sa aleaga operatiunea dorita, iar voi prelu
ati input-ul lui si il pasati metodelor din model apelandu-le dupa necesitati.
La pornirea aplicatiei va fi afisat timp de 2 secunde un splash screen, care va
contine o poza aleasa de voi dedesubtul careia este scris numele vostru.
Aplicatia porneste initial in mod shareware, care are urmatoarele (d)efecte:
salvarea si incarcarea bazei de date sunt dezactivate (dezactivati elementele Op
en si Save din meniul File)
In meniul Help este activ elementul Inregistrare
dedesubtul ferestrei principale (ca parte a sa) va exista o zona de reclame. Ale
geti cateva poze de aceeasi marime pe care le puneti intr-un JLabel, si pe care
le schimbati periodic (odata la 3-5 secunde, sa zicem) cu ajutorul unui thread puteti folosi Timer si TimerTask sau chiar un Thread.
Fereastra principala va contine lista de abonati (care, la pornirea aplicatiei,
este populata cu informatiile salvate anterior, daca exista) si butoane pentru
adaugare/stergere/modificare/sortare/cautare/iesire. Fereastra va avea o bara de
meniu, cu meniurile:
File
Open deschiderea unei baze de date cu abonati; la click pe acest element se desc
hide o fereastra de alegere de fisier (JFileChooser)
Save

salvarea bazei de date curente. Daca nu este inca stabilit fisierul in care

trebuie salvat (in urma unei salvari anterioare), va fi afisat de asemenea un J


FileChooser pentru a da utilizatorului posibilitatea de a alege locatia si numel
e fisierului. Atat acest element cat si precedentul vor fi dezactivate cat timp
aplicatia se afla in mod de functionare shareware
(Separator)
Iesire
acelasi rol ca si butonul Iesire din fereastra principala; afiseaza un di
alog de confirmare ("Doriti sa parasiti aplicatia?" Butoane: Da/Nu)
Abonati
Adauga - are acelasi efect ca si butonul de adaugare din fereastra principala, si
anume afisarea ferestrei/dialogului de adaugare de abonat
Cauta - analog
Sterge

- analog

Modifica - analog
Help
Inregistrare deschide un dialog care cere codul de inregistrare; in cazul in car
e codul este corect, se dezactiveaza acest element de meniu, se activeaza Open s
i Save din meniul File si se elimina reclamele. Fereastra de dialog se poate fac
e usor cu JOptionPane.showInputDialog(...). Codul de inregistrare il stabiliti v
oi (preferabil scurt, din ratiuni de usurinta in testare...).
(Separator)
About

deschide o fereastra cu scurte informatii despre autor si aplicatie

Meniurile vor avea pe cat posibil mnemonice (shortcut-uri), iar butoanele texte
ajutatoare (hint).
La dublu-click sau enter pe un abonat va fi afisata fereastra de modificare a ac
estuia. Apasand Del pe un abonat, va fi afisat un dialog de confirmare ("Doriti
sa stergeti abonatul X?", butoane Da/Nu) inaintea stergerii acestuia.
Ordonarea abonatilor va fi facuta fie cu click pe capul de tabel (in cazul in ca
re folositi JTable), fie cu un set de componente separate ce permit selectarea c
riteriului de sortare dorit (ex: radio button-uri, drop down list plus un buton
de sortare etc).
Cautarea se va putea face dupa fragmente de nume/prenume/numar de telefon/CNP (p
ractic are rol de filtrare a listei de abonati). Atunci cand exista un filtru se
tat, acesta trebuie evidentiat (sa apara undeva in fereastra, astfel incat utili
zatorul sa stie ca lista nu este cea completa, ci una partiala).
Validarea input-ului (cel de la utilizator, plus argumentele din constructori) v
a fi facuta folosind regex-uri si aruncand exceptii acolo unde este cazul.
Alte facilitati
Aplicatia va dispune de un thread care efectueaza salvarea bazei de date odata l

a 5 minute. Fisierul in care se face salvarea este cel ales de utilizator la des
chiderea aplicatiei. Daca utilizatorul nu a ales inca un fisier pentru salvare,
aceasta nu va avea loc automat.
Documentatia
Documentati ceea ce faceti acolo unde este cazul! In primul rand, acolo unde fol
ositi procedee sau algoritmi mai dificil de urmarit, clarificati care v-au fost
intentiile. Comentariile din cod nu trebuie sa fie multe, ci doar plasate in loc
urile potrivite.
Facilitati suplimentare, optionale
Oricate:-)...puteti incerca afisarea abonatilor intr-un JTable si editarea lor i
n-place (o rezolvare eleganta), deschiderea unui popup menu cu operatii posibile
(Modificare/Stergere etc) la click dreapta pe un abonat din lista, cautare incr
ementala, memorarea listei de abonati intr-un server de baze de date...orice v-a
r placea sa vedeti iesit din mainile voastre.
In incheiere, spor la treaba, si nu ezitati sa ma cautati daca aveti nelamuriri.
Succes!
Ionut

S-ar putea să vă placă și