Proiecte
Aspecte prioritare privind evaluarea proiectelor ........................................................................... 1 Net ........................................................................................................................................................ 2 Games .................................................................................................................................................. 7 Misc ..................................................................................................................................................... 9
Aspecte prioritare privind evaluarea proiectelor Desfăşurarea activităţilor: • Pentru stabilirea proiectului fiecare student se poate prezenta în ziua de consultaţii stabilită în prealabil (vineri, orele 10-13, sala A15), pentru înregistrarea şi eventual, precizarea mai detaliata a tematicii. • Proiectele se dezvoltă în echipe de maxim 2 persoane. • Orele de consultaţie (ore de proiect) se desfăşoară conform planificării stabilite în ziua de joi (la laborator) pentru ziua de vineri a săptămânii curente. Evaluarea proiectului: • pentru fiecare proiect se va prezenta programul funcţional şi o lucrare - referat. • respectarea cerinţelor temei alese: 25% • instalarea, compilarea şi funcţionarea programului: 10% • conţinutul proiectului (program şi referat): 25% • verificarea cunoştinţelor teoretice legate de realizarea proiectului: 40% Aspecte grave care diminuează rezultatul evaluării 1. Inexistenţa unui meniu principal, excepţie fac aplicaţiile full screen. 2. Lipsa interfeţei grafice 3. Interfaţă grafică confuză, inconsistentă 4. Tratarea superficiala a problemei 5. Neacoperirea tuturor specificaţiilor prezentate 6. Apariţia unei excepţii netratate în rularea programului 7. Folosirea de metode „învechite” (deprecated) 8. Funcţionarea anormala a aplicaţiei pentru diverse cazuri 9. Scrierea neclara a codului sursa şi lipsa comentariilor 10. Întrebare fără răspuns adecvat 11. Prezentare generală „urât” 12. Lipsa codului sursă.
1
Net 1. Link Spider application Scrieţi o aplicaţie Java cu interfaţă grafică care primeşte într-un TextField o adresă de site şi afişează toate link-urile găsite în acea pagină. Folosiţi un fir de execuţie şi furnizaţi posibilitatea pentru abandon. -
puneţi la dispoziţie o modalitate de a alege adâncimea căutării. Adâncimea maximă să fie nivelul 3; rezultatele căutării să poată fi salvate într-un fişier la vizualizarea şi salvarea link-urilor găsite adoptaţi un mod de reprezentare care evidenţiază ierarhie nivelelor (arborescenţa).
2. Full Link Spider application Scrieţi o aplicaţie Java cu interfaţă grafică care primeşte într-un TextField o adresă de site si afişează recursiv toate link-urile găsite în acel site. -
Căutarea link-urilor se face doar de la directorul web curent in jos. Un link spre altă adresă se afişează dar nu se urmăreşte mai departe. La afişare folosiţi o reprezentare care indică ierarhia link-urilor. Dotaţi programul cu posibilitatea salvării listei de link-uri într-un fişier. Folosiţi un fir de execuţie pentru a nu bloca interfaţa grafică şi implementaţi abandonul.
3. Image Spider application Scrieţi o aplicaţie Java cu interfaţă grafică care primeşte într-un TextField sau fişier, o adresă de site şi afişează toate imaginile găsite pe ea. -
-
Nu folosiţi pentru încărcarea fiecărei imagini un fir de execuţie plus o conexiune. Creaţi un vector şi apoi încărcaţi într-un fir de execuţie imaginile printr-o singură conexiune la un moment dat. Implementaţi posibilitatea pentru abandon. în fişier pot fi mai multe link-uri, prelucraţi-le secvenţial.
4. Image Spider applet Scrieţi un applet Java cu interfaţă grafică care primeşte într-un TextField sau fişier, o adresă de site şi afişează toate imaginile găsite pe ea. -
-
Nu folosiţi pentru încărcarea fiecărei imagini un fir de execuţie plus o conexiune. Creaţi un vector şi apoi încărcaţi într-un fir de execuţie imaginile printr-o singură conexiune la un moment dat. Implementaţi posibilitatea pentru abandon. în fişier pot fi mai multe link-uri, prelucraţi-le secvenţial.
2
5. Server File Spider Scrieţi o aplicaţie client/server unde clientul este un applet care primeşte într-un TextField o cale şi afişează toate fişierele şi directoarele de pe server din aceea locaţie sau un mesaj de eroare dacă nu există pe server. -
-
Folosiţi TCP pentru implementare. Furnizaţi posibilitatea de abandon. Implementai o modalitate de salvare a liste de directoare/fişiere la clint. Aplicaţia server are de asemenea interfaţă grafică şi protocolează toate accesele şi activităţile clienţilor. Informaţiile protocolate despre un client cuprind: a) la conectare: data/ora/minutul/secunda conectării, adresa client, cererea client, b) la deconectare: data/ora/minutul/secunda deconectării, adresa client, succesul sau eşecul cererii. Aceste informaţii se afişează şi se salvează instantaneu într-un fişier log. folosiţi fire de execuţie pe server şi pe client.
6. Client/Server BigCalculator Scrieţi o aplicaţie Java client/server care simulează un calculator rudimentar pentru numere mari. Toate operaţiile vor fi executate de un server accesat prin TCP. -
Implementaţi posibilitatea citirii/scrierii numerelor din/în fişier. Severul este aplicaţie iar clientul applet (sau tot aplicaţie). Folosiţi fire de execuţie atât pe server cât şi pe client. Aplicaţia server are de asemenea interfaţă grafică şi protocolează toate accesele şi activităţile clienţilor. Informaţiile protocolate despre un client cuprind: a) la conectare: data/ora/minutul/secunda conectării, adresa client, cererea client, b) la deconectare: data/ora/minutul/secunda deconectării, adresa client, succesul sau eşecul cererii. Aceste informaţii se afişează şi se salvează instantaneu într-un fişier log.
7. Client/Server arithmetic expression calculator Scrieţi o aplicaţie client/server care simulează un calculator de expresii aritmetice. Pentru comunicare folosiţi UDP Ex. (3+1)*5+1. - Puneţi la dispoziţie posibilitatea pentru citirea expresie din fişier. - Ţineţi cont şi de cazul în care o expresie nu este bine formată. - Funcţiile calculatorului sa nu fie mai puţine decât cele oferite de calculatorul din Windows. - Severul este aplicaţie iar clientul applet (sau tot aplicaţie). - Aplicaţia server are de asemenea interfaţă grafică şi protocolează toate accesele şi activităţile clienţilor. Informaţiile protocolate despre un client cuprind: a) la conectare: data/ora/minutul/secunda conectării, adresa client, cererea client, b) la deconectare: data/ora/minutul/secunda deconectării, adresa client, succesul sau eşecul cererii. Aceste informaţii se afişează şi se salvează instantaneu într-un fişier log. - Folosiţi fire de execuţie atât pe server cât şi pe client.
3
8. Clietn/Server TCP Chat Scrieţi o aplicaţie client/server de chat folosind comunicarea prin TCP. Ea va permite comunicarea între maxim 2 utilizatori. -
-
Un client poate avea ca parametru adresa serverului portul şi numele clientului. implementaţi facilităţi pentru: legarea unui utilizator cu altul, ştergerea legăturii între doi utilizatori şi pentru terminarea programului. Severul este aplicaţie iar clientul tot aplicaţie. Pe sever este gestionată lista de utilizatori. Clientul conectat să poată vizualiza şi alege din lista de utilizatori. Pentru a comunica cu mai multe persoane deschideţi câte o fereastră (sau aplicaţie) pentru fiecare. Aplicaţia server are de asemenea interfaţă grafică şi protocolează toate accesele şi activităţile clienţilor. Informaţiile protocolate despre un client cuprind: a) la conectare: data/ora/minutul/secunda conectării, adresa client, cererea client, b) la deconectare: data/ora/minutul/secunda deconectării, adresa client, succesul sau eşecul cererii. Aceste informaţii se afişează şi se salvează instantaneu într-un fişier log. Folosiţi fire de execuţie atât pe server cât şi pe client.
9. Clietn/Server UDP Chat Scrieţi o aplicaţie client/server de chat folosind comunicarea prin UDP. Ea va permite comunicarea între maxim 2 utilizatori. -
-
Un client poate avea ca parametru adresa serverului portul şi numele clientului. implementaţi facilităţi pentru: legarea unui utilizator cu altul, ştergerea legăturii între doi utilizatori şi pentru terminarea programului. Severul este aplicaţie iar clientul applet. Pe sever este gestionată lista de utilizatori. Clientul conectat să poată vizualiza şi alege din lista de utilizatori. Pentru a comunica cu mai multe persoane deschideţi câte o fereastră (sau aplicaţie) pentru fiecare. Aplicaţia server are de asemenea interfaţă grafică şi protocolează toate accesele şi activităţile clienţilor. Informaţiile protocolate despre un client cuprind: a) la conectare: data/ora/minutul/secunda conectării, adresa client, cererea client, b) la deconectare: data/ora/minutul/secunda deconectării, adresa client, succesul sau eşecul cererii. Aceste informaţii se afişează şi se salvează instantaneu într-un fişier log. Folosiţi fire de execuţie atât pe server cât şi pe client.
4
10. Înregistrarea surselor Scrieţi o aplicaţie care va funcţiona ca un server, ce va primi, prin intermediul unui applet, una din comenzile: • add şi următoarele informaţii: numele autorului; conţinutul unui fişier sursa java aflat local; un nume asociat sursei respective. Sursa va fi salvată de către server intr-un director specificat, intr-un subdirector cu numele autorului, respectiv într-un fişier cu numele asociat sursei respective. • load şi va primi numele autorului şi numele unui fişier sursă şi va afişa conţinutul fişierului specificat. -
-
Atât serverul cât şi clientul au interfaţă grafică. Aplicaţia server are de asemenea interfaţă grafică şi protocolează toate accesele şi activităţile clienţilor. Informaţiile protocolate despre un client cuprind: a) la conectare: data/ora/minutul/secunda conectării, adresa client, cererea client, b) la deconectare: data/ora/minutul/secunda deconectării, adresa client, răspunsul cererii. Aceste informaţii se afişează şi se salvează instantaneu într-un fişier log. Folosiţi fire de execuţie la client şi la server pentru aşteptarea de răspunsuri. Pentru comunicare puteţi folosit TCP sau UDP.
11. Rezervare de locuri la hotel (JSP, JDBC) Sa se realizeze o aplicaţie de rezervare a locurilor la un hotel folosind pagini JSP. Datele de rezervare se vor stoca intr-o baza de date iar programele JSP vor fi gestionate de serverul de Web şi vor comunica cu baza de date folosind un driver JDBC si componente JavaBeans. Clientul va opera prin intermediul unui browser. 12. Închiriere maşini (JSP, JDBC) Să se realizeze o aplicaţie de închiriere maşini folosind pagini JSP. Datele de închiriere se vor stoca intr-o baza de date iar programele JSP vor fi gestionate de serverul de Web şi vor comunica cu baza de date folosind un driver JDBC şi componente JavaBeans. Clientul va opera prin intermediul unui browser. 13. Magazin online Sa se realizeze o aplicaţie Web pentru cumpărături online dintr-un magazin (de exemplu, o librărie). Se va folosi serverul Web şi un server de baze de date. Clientul va opera prin intermediul unui browser. 14. Gestiune conturi (RMI) Să se realizeze o aplicaţie de gestiune a conturilor unui client al băncii folosind Java RMI. Fiecare client al băncii deţine mai multe conturi administrate de serverul băncii. Conturile se memorează pe server intr-o forma simpla (ca fişier care conţine numărul contului şi valoarea disponibila in cont) sau ca o baza de date. Clientul prezintă o interfaţa grafică (AWT sau Swing) si poate opera modificări în propriile conturi (transferuri, plăţi către alţi clienţi), după ce a fost
5
identificat printr-o parola introdusa printr-un dialog. La client se va implementa si o comanda prin care acesta va obţine de la server întreaga situaţie a conturilor sale. 15. Gestiunea stocurilor uni depozit (RMI) Să se realizeze o aplicaţie de menţinere a gestiunii stocurilor unor depozite folosind Java RMI. Stocurile se memorează pe server intr-o forma simpla (ca fişier care conţine numele produselor si stocul disponibil) sau ca o baza de date. La fiecare depozit se executa un program client (aplicaţie Java cu interfaţă grafica AWT sau Swing) care transmite serverului orice modificare intervenita in depozit (consumul anumitor produse, intrarea unor produse noi). La client se va implementa si o comanda prin care acesta va obţine de la server întreaga situaţie a stocurilor (pe întreaga reţea de depozite).
6
Games 16. Turnurile din Hanoi Scrieţi o aplicaţie Java care să vizualizeze într-un mod sugestiv problema turnurilor din Hanoi. Aplicaţia să ruleze în două moduri: modul manual – în care utilizatorul mută discurile pe tije; şi în modul automat – în care calculatorul rezolvă problema. -
Lucraţi în modul full screen folosind FullScreen API de la Sun. Puneţi algoritmul din modul automat într-un fir de execuţie pentru a nu bloca interfaţa. Furnizaţi pentru modul manual/automat un contor care măsoară timpul necesar utilizatorului pentru a rezolva problema. Implementaţi posibilitatea abandonului. Permiteţi specificarea numărului de discuri. Insistaţi asupra reprezentării grafice, să fie cât mai sugestivă. Setaţi viteza de lucru în modul automat adecvat percepţiei umane. Să fie uşor sesizabil fiecare mişcare făcută. Afişaţi discul mutat şi pe drumul făcut în timpul mişcării.
17. Bingo Scrieţi o aplicaţie în regim client-server. Serverul aşteaptă conectarea unor clienţi, porneşte jocul - trimite clienţilor un set de 15 numere, intre 1 si 90, generate aleator, după care, la intervale regulate de timp, generează câte un număr intre 1 si 90 pe care îl transmite tuturor clienţilor (numărul respectiv nu va mai fi transmis din nou). Fiecare client recepţionează numerele transmise de server şi le compară cu numerele primite iniţial. Jocul se termina când unul dintre clienţi face bingo şi transmite aceasta serverului. Serverul trebuie să verifice daca bingo-ul este corect şi să reiniţializeze jocul sau sa-l continue, în cazul în care nu e corect. Daca un client transmite de 3 ori incorect ca a făcut bingo, acesta va fi exclus din joc. -
-
Atât clientul cât şi serverul au interfaţă grafică. Clientul poate fi şi applet. Aplicaţia server are de asemenea interfaţă grafică şi protocolează toate accesele şi activităţile clienţilor. Informaţiile protocolate despre un client cuprind: a) la conectare: data/ora/minutul/secunda conectării, adresa client, cererea client, b) la deconectare: data/ora/minutul/secunda deconectării, adresa client, răspunsul cererii. Aceste informaţii se afişează şi se salvează instantaneu într-un fişier log. Folosiţi fire de execuţie la client şi la server pentru aşteptarea de răspunsuri. Pentru comunicare puteţi folosit TCP sau UDP.
7
18. Calul pe tabla de şah Scrieţi o aplicaţie Java care să determine toate modalităţile ca un cal să parcurgă toate pătratele tabelei de şah de dimensiune NxN (4 <= n <= 20), o singură dată pornind dintr-un pătrat dat. -
Setarea poziţii iniţiale a calului se face printr-un clic cu mouse-ul pe pătratul dorit. Nu există restricţii asupra culorilor alese. Lucraţi în modul full screen cu Full Screen API. Arătaţi mişcările calului pe fiecare drum. Setaţi viteza de deplasare la un nivel rezonabil sau permiteţi prin intermediul uni Slider setarea aceasta. Afişaţi timpul necesar pentru calcul şi apoi toate mişcările făcute. Salvaţi mişcările şi poziţie iniţială a calului. Extindeţi problema pentru mai mulţi cai şi asociaţi fiecărui cal o altă culoare. Atenţie să nu se calce.
19. Nu te supara frate 20. Scrable 21. Remi 22. Memory 23. Slider /Puzzle 24. Volei
8
Misc 25. Afişsaj electronic 26. Calendar 27. BigCalculator applet Scrieţi un applet care simulează un calculator de numere mari. -
Puneţi la dispoziţie posibilitatea pentru citirea/scrierea numerelor mari din/în fişier. Funcţiile calculatorului sa nu fie mai puţine decât cele oferite de calculatorul din Windows.
28. Arithmetic expression calculator applet Scrieţi un applet care simulează un calculator de expresii aritmetice. Ex. (3+1)*5+1. - Puneţi la dispoziţie posibilitatea pentru citirea expresie din fişier. - Ţineţi cont şi de cazul în care o expresie nu este bine formată. - Funcţiile calculatorului sa nu fie mai puţine decât cele oferite de calculatorul din Windows. 29. Calculator Clone Scrieţi o aplicaţie care să poată funcţiona şi ca applet şi care reprezintă un clon al calculatorului din Windows. - Puneţi la dispoziţie posibilitatea ca toate operaţiile executate să fie reţinute în formă text într-un fişier log. - Funcţiile calculatorului sa nu fie mai puţine decât cele oferite de calculatorul din Windows. 30. Notepad Clone Scrieţi o aplicaţie Java care reprezintă un clon al Notepad-ului din Windows. - Funcţionalitatea aplicaţiei să fie cel puţin egală cu Notepad. - Folosiţi fire de execuţie pentru a nu bloca interfaţa la texte lungi. 31. File Browser Scrieţi o aplicaţie de tip navigator de directoare/fişiere. Din punct de vedere al interfeţei grafice să fie asemănător lui Norton Commander sau Total Commander (două Panel-uri). Aplicaţia să permită navigarea prin directoarele discurilor din sistem şi să vizualizeze directoarele/fişierele în manieră arborescentă şi listă. -
Furnizaţi operaţiunile standard pe fişiere şi directoare, de exemplu: ştergere, redenumire, creare, copiere, proprietăţi, căutare etc. Folosiţi fire de execuţie pentru operaţii care pot necesita timp de calul îndelungat. De exemplu: căutarea sau popularea liste de directoare/fişiere. Permiteţi întreruperea acţiunilor de durată lungă.
9
32. Image Browser Scrieţi o aplicaţie Java de tip browser de imagini cară se permită navigarea prin structura de directoare de pe discurile accesibile. -
Vizualizaţi fişierele cu extensiile png, jpg, gif. Crearea unor albume (seturi de imagini) cu posibilitatea salvării/încărcării lor. Vizualizarea unui album (slide-show). Folosiţi fire de execuţie pentru a nu bloca interfaţa şi furnizaţi opţiunea de abandon.
33. SlideShow applet Scrieţi un applet de tip Slide Show care să permită deschiderea/încărcarea unui director de imagini. Imaginile să fie derulate pe ecran la un interval de timp variabil, specificat de utilizator. -
Pentru fiecare imagine se afişează şi unele proprietăţi, de exemplu, numele, dimensiunea etc. Folosiţi un fir de execuţie pentru încărcarea imaginilor înainte de a le vizualiza. Furnizaţi posibilitatea de abandon.
34. Test grilă Scrieţi o aplicaţie Java care să implementeze un sistem pentru teste grilă. Ea să permită crearea/încărcarea unor fişiere cu teste grilă. Un test grilă este compus din: mai multe întrebări cu răspuns simplu; variantele posibile de răspuns la fiecare întrebare; varianta corectă şi timpul maxim de răspuns la fiecare întrebare. -
Permiteţi lansarea unui test grilă cu urmărirea corectitudinii şi a timpului pentru răspuns la fiecare întrebare. Fişierele pot fi în modul text sau octet cu o structură fixă aleasă de programator. Afişaţi rezultatul final (1=răspuns corect, 0=lipsă răspuns, -1=răpsuns greşit) Afişaţi un raport cu întrebările şi răspunsurile greşite/corecte. Raportul să poată fi salvat ca fişier text sau html. Eventual criptaţi fişierele cu testele pentru a nu permite manipularea datelor. În momentul utilizării lor în aplicaţie ele pot fi decriptate instantaneu prin stream.
35. Evidenta angajaţilor unei companii Scrieţi o aplicaţie Java care să ţină evidenţa angajaţilor unei companii. Informaţiile care vor trebui memorate pentru fiecare angajat sunt: cod, nume, salar, data angajării, adresa, telefon. Codul trebuie sa fie unic pentru fiecare persoana si nu poate fi null. -
-
Programul trebuie sa permită: salvarea/încărcarea angajaţilor pe/de pe un suport extern; actualizarea angajaţilor, operaţiuni de căutare, listare, ordonare după oricare din primele patru atribute, tipărire. Puneţi operaţiile costisitoare de timp în fire de execuţie. Pentru reprezentarea informaţilor folosiţi liste sau tabele.
10
36. Bibliotecar Scrieţi o aplicaţie Java care va implementa o bibliotecă de cărţi. Pentru fiecare carte vor fi memorate informaţiile cotă, titlu, autor, raft, stare, cititor, unde stare poate avea una din valorile: raft, sala, afara si va descrie locul unde se găseşte cartea. Daca o carte nu este in raft va fi reţinut cititorul căruia i-a fost împrumutata. Cota unei cărţi trebuie sa fie unică. -
Implementaţi: salvarea/încărcarea cărţilor pe/de pe un suport actualizarea bibliotecii, operaţiuni de căutare, listare, tipărire pentru cărţi. Modul de organizare a fişierelor este la atitudinea programatorului. Folosiţi fire de execuţie pentru operaţii de durată lungă. Eventual realizaţi o criptare pentru a asigura securitatea informaţilor. Furnizaţi posibilitatea salvării unor rapoarte in format text sau html.
extern,
37. Gestionar de CD-uri Scrieţi o aplicaţie Java pentru gestionarea CD-urilor. Aplicaţia trebuie să permită: scanarea unui CD şi memorarea tuturor fişierelor de pe el; memorarea CD-urilor scanate şi a fişierelor conţinute pe suport extern, ştergerea unui anumit CD (şi a fişierelor conţinute) din listă; operaţiuni de listare, respectiv căutare a unui anumit fişier/text; crearea unui document HTML sau text cu conţinutul tuturor CD-urilor. -
Organizarea fişierelor este la atitudinea programatorului. Folosiţi fire de execuţie la citiri complexe şi căutări.
38. Gestionar Internet Cafe Scrieţi o aplicaţie pentru gestionarea unui număr de n calculatoare, fiecare având doua tarife specificate, reprezentând costul pe ora pentru navigare Internet, respectiv jocuri. Programul trebuie sa permită: specificarea tarifelor pentru fiecare calculator şi salvarea lor intr-un fişier de iniţializare, de unde vor fi încărcate la fiecare lansare, cu posibilitatea modificării lor; evidenţa închirierii fiecărui calculator utilizatorilor; stabilirea cuantumului ce trebuie achitat de un utilizator, în funcţie de numărul de minute ţi de tipul activităţii (internet/jocuri); afişarea în permanenţă a totalului încasărilor din ziua curentă; salvarea totalurilor din fiecare zi pe suport extern. -
Folosiţi fire de execuţii pentru operaţii costisitoare de timp. Implementaţi generarea de rapoarte sub formă text sau html.
39. Gestionar prezentă/activitate Scrieţi o aplicaţie Java care va gestiona prezenta si activitatea la laboratoare pentru o mulţime de studenţi pe o perioada de n săptămâni. Fiecare student va fi identificat prin nume, an, grupă. Programul va permite introducerea într-o maniera facilă a prezenţei şi activităţii de la fiecare laborator. Trebuie memorate informaţiile: prezenţa, absenţa, recuperare, numărul de probleme/exerciţii prezentate, bonus pentru soluţii deosebite, minus pentru „frauda”. - Programul va genera un fişier HTML cu situaţia curentă a prezenţei/activităţii similar cu acesta. - Principala facilitate a programului trebuie sa fie uşurinţa în exploatare. - Folosiţi fire de execuţii pentru operaţii costisitoare de timp.
11