Baze de date
Proiectarea bazelor de date - gestiunea studentilor bursieri la facultateUniversitatea
Dunarea de Jos Tema de Proiect Cerinte Gestiunea studentilor bursieri la facultate. Aplicatia va cuprinde minim: 3 tabele, cel putin cate o functie de adaugare, cautare, afisare, stergere si modificare cel putin o functie pentru lucrul cu mai multe tabele cel putin un raport Analiza problemei Comform regulamentului in vigoare la nivelul
Universitatii Dunarea de Jos Se acorda studentilor integralisti care au media generala peste 9.00. Media se actualizeaza dupa fiecare an de studiu. Se acorda studentilor integralisti care au media generala peste 8.00. Media se actualizeaza dupa fiecare an de studiu. Se acorda studentilor cu o situatie materiala scazuta. De asemenea, nu prevede conditia ca studentul sa fie integralist. Conditia principala este ca in familia studentului sa nu se realizeze un venit mai mare de 400 RON per membru de familie. Un numar maxim fix de burse este alocat fiecarei facultati in functie de numarul de studenti si de plafonul financiar disponibil pentru intreaga Universitate. In functie de tipul bursei, pentru fiecare in parte este stabilita o suma fixa, o data pe an. Proiectare la nivel Conceptual Entitatile aplicatiei: Facultatea Aceasta entitate poate fi descrisa prin mai multe attribute cum ar fi: numar de studenti specializari grupe Studentul Atributele entitatii: nume cod numeric personal specializarea la care studiaza anul de studio media generala venitul studentului Atributele entitatii: conditii de acordare tipul de bursa Asocieri intre entitati Modelul Entitate -Asociere Extins permite definirea de subtipuri ale unui tip de entitati, care mostenesc atribute de la tipul de entitate pe care il extind (si care, in acest context, se numeste supertip) si au in plus atribute specifice semnificatiei lor. Prin definirea tipurilor si a subtipurilor de entitati se pot crea ierarhii de tipuri de entitati pe mai multe niveluri. Modelul Entitate-Asociere Extins se reprezinta printr-o diagrama E-A extinsa. Studentul apartine unei facultati si este inscris la o anumita specializare intr-o anumita grupa. Studentul care indeplineste conditiile de acordare a unui anumit tip de bursa si se incadreaza in numarul maxim de locuri disponibile, este automat bursier. Bursele se acorda ca urmare a unor conditii pe care studentul trebuie sa le indeplineasca. De asemenea numarul burselor depinde de numarul de studenti ai facultatii. Asocierile dintre multimile de entitati se stabilesc in functie de modul in care se desfasoara activitatea modelata. De exemplu, daca in facultatea respectiva fiecare student invata intr-o singura specializare, atunci intre multimile de entitati Facultate-Studenti exista o asociere 1:N. Pentru tipul Student se defineste o specializare disjuncta partiala, cu subtipurile Bursier social, Bursier merit si Bursier . Aceste subtipuri se afla in asociere 1:1 cu tipul de baza Student, mostenesc atributele acestuia si fiecare mai contine atribute specifice: Bursier social(Venitul) Bursier de studiu(Media generala) O multime de entitati slabe se afla, de regula, in asociere N:1 cu multimea de entitati puternice de care depinde. In exemplul dat, intre multimea Bursieri si multimea de entitati Studenti exista o asociere N . O multime de entitati de un subtip dat este, de regula, in asociere 1:1 cu multimea de entitati de supertipul acesteia. Pentru exemplul de mai sus, un student poate fi un (singur) bursier; iar un bursier este chiar un student, deci asocierea intre multimile de entitati Student si Bursier exista o asociere cu raportul de cardinalitate 1:1.
Proiectare la nivel logic Modelul relational:
Am preferat sa fac o diferentiere clara intre burse in prezentarea modelului relational, desi in implementare voi folosi o singura tabela pentru a detalia conditiile de acordare ale burselor. Datorita faptulului ca nu am
reusit sa obtin informatii veridice cu privire la numarul exact de burse
disponibile pentru fiecare tip in parte sau metodologia de calculare la nivelul
Universitatii voi alege valori arbitrare pentru aceste variabile ale tabelei Proiectarea la nivel Fizic Pentru crearea bazei de date si introducerea inregistrarilor in tabele am creat documentul “Instructiuni Creare BD”. Acesta contine un set de comenzi sql, cu ajutorul carora se poate crea baza de date si cuprinde si cele 60 de inregistrari de studenti. Continut: //crearea bazei de date si a tabelelor CREATE DATABASE fscb; CREATE TABLE STUDENT (nume VARCHAR(40), CNP VARCHAR(30), Cod_Spec VARCHAR(5), Medie DECIMAL (2,2) An INTEGER(1), Venit INTEGER(3)); CREATE TABLE FACULTATE (Cod_Spec VARCHAR(5), Nr_Grupe INTEGER(2), Nr_Stud INTEGER(3)); CREATE TABLE BURSE (Tip VARCHAR(10), Medie DECIMAL(2,2), Nr_Burse INTEGER(2), Venit_P INTEGER(3), Suma INTEGER(4)); //adaugarea de inregistrari in FACULTATE INSERT INTO FACULTATE ('Aut', 10, 30); INSERT INTO FACULTATE ('Cti', 11, 30); //adaugarea de inregistrari in BURSE INSERT INTO BURSE ('Merit', 9.00, 8, NULL, 350); INSERT INTO BURSE ('Studiu', 8.00, 7, NULL, 250); INSERT INTO BURSE ('Sociala', NULL, 10, 400, 200); //adaugare de inregistrari in STUDENT INSERT INTO STUDENT VALUES ('BOLOCAN COSMIN', '18628091234', 'Cti' 7.80, 3, 260); INSERT INTO STUDENT VALUES ('MIHNEA LUCIAN', '18621091234', 'Cti' 7.30, 3, 500); INSERT INTO STUDENT VALUES ('ANTONIU C. SILVIU CEZAR', '18628091234', 'Cti' 8.80, 3, 500); INSERT INTO STUDENT VALUES ('ARTENI C. DRAGOS CATALIN', '18628061234', 'Cti' 6.20, 3, 500); INSERT
INTO STUDENT VALUES (' INSERT
INTO STUDENT VALUES ('BEJAN I. INSERT
INTO STUDENT VALUES (' INSERT INTO STUDENT VALUES ('BULBOACA GH. MARIAN', '18515061234', 'Cti' 8.20, 4, 500); INSERT INTO STUDENT VALUES ('CHITARU E. CRISTIAN', '18523071234', 'Cti' 7.20, 4, 240); INSERT INTO STUDENT VALUES ('CUSTURA N. MIOARA ALINA', '18528061234', 'Cti' 7.90, 4, 500); INSERT INTO STUDENT VALUES ('DIACONU M. MARINEL DANIEL', '18518061234', 'Cti' 6.30, 2, 500); INSERT INTO STUDENT VALUES ('DINU GH. ALEXANDRU', '18728061234', 'Cti' 9.30, 2, 500); INSERT INTO STUDENT VALUES ('DOBRE ST.S. CRISTINA MADALINA', '18721111234', 'Cti' 6.50, 2, 500); INSERT INTO STUDENT VALUES ('DOBRI O. CRISTINA', '18703061234', 'Cti' 8.00, 2, 500); INSERT INTO STUDENT VALUES ('DORIN G. GEORGE CRISTIAN', '18708061234', 'Cti' 7.20, 2, 280); INSERT INTO STUDENT VALUES ('DOROBANTU C. ANDREI IONUT', '18720051234', 'Cti' 7.50, 2, 500); INSERT INTO STUDENT VALUES ('DULGHERU P. MIHAITA', '18712021234', 'Cti' 6.26, 2, 500); INSERT INTO STUDENT VALUES ('FLOREA M. OCTAVIAN', '18725031234', 'Cti' 9.80, 2, 500); INSERT INTO STUDENT VALUES ('GALITA GH. CATALIN MARIAN', '18721081234', 'Cti' 7.50, 2, 500); INSERT
INTO STUDENT VALUES (' INSERT INTO STUDENT VALUES ('GURAU S. ADRIAN IULIAN', '18918061234', 'Cti' 6.20, 1, 500); INSERT
INTO STUDENT VALUES (' INSERT INTO STUDENT VALUES ('IRIMIA GH. IONUT', '18908061234', 'Cti' 8.20, 1, 500); INSERT INTO STUDENT VALUES ('IROFTE C. DUMITRU DANIEL', '18917061234', 'Cti' 6.20, 1, 500); INSERT INTO STUDENT VALUES ('ISAIEA A. IONUT CATALIN', '18828091234', 'Cti' 6.20, 1, 500); INSERT INTO STUDENT VALUES ('KISS P. PAVEL', '18828051234', 'Cti' 6.20, 1, 190); INSERT INTO STUDENT VALUES ('LACATUS C. MIOARA', '18828041234', 'Cti' 6.20, 1, 500); INSERT INTO STUDENT VALUES ('LEONTE C.I. SILVIA OANA', '18828011234', 'Cti' 6.20, 1, 500); INSERT
INTO STUDENT VALUES (' INSERT INTO STUDENT VALUES ('LUPU T. GABRIEL', '18828101234', 'Cti' 6.20, 1, 500); INSERT INTO STUDENT VALUES ('BEGA M DANIEL', '18818101454', 'Aut' 9.20, 1, 500); INSERT INTO STUDENT VALUES ('CARCEL S. EUGENIA', '18828105204', 'Aut' 9.30, 1, 500); INSERT INTO STUDENT VALUES ('CHIRILA P. IOANA', '18828101264', 'Aut' 9.10, 1, 500); INSERT
INTO STUDENT VALUES (' INSERT
INTO STUDENT VALUES (' INSERT INTO STUDENT VALUES ('CURDUMAN V. ANDREI', '18828109434', 'Aut' 7.20, 1, 500); INSERT INTO STUDENT VALUES ('DAVID D. ALEXANDRA MIHAELA', '18828101234', 'Aut' 7.50, 1, 500); INSERT INTO STUDENT VALUES (' DIACONU T. IONUT VALERIU', '18828101984', 'Aut' 5.20, 1, 500); INSERT
INTO STUDENT VALUES (' INSERT INTO STUDENT VALUES ('DROBOTA L. REMUS MIHAI', '18828109864', 'Aut' 6.20, 1, 500); INSERT INTO STUDENT VALUES ('EPURE A. CRISTIAN GEORGE', '18628108334', 'Aut' 9.90, 3, 500); INSERT
INTO STUDENT VALUES ('FEICAN INSERT INTO STUDENT VALUES ('GALANOPULO M. VICENTIU', '18726109534', 'Aut' 8.20, 2, 500); INSERT INTO STUDENT VALUES ('GRADEA P. MARIAN STEFAN', '18728209284', 'Aut' 8.50, 2, 500); INSERT INTO STUDENT VALUES ('HAGIU D. IONELA', '18728109534', 'Aut' 7.20, 2, 100); INSERT INTO STUDENT VALUES ('LAVRE C. CRISTIAN', '18728101234', 'Aut' 6.20, 2, 250); INSERT
INTO STUDENT VALUES ('LIHOR GH. IULIAN INSERT INTO STUDENT VALUES ('LOVIN N. ELENA', '28728101754', 'Aut' 5.20, 2, 500); INSERT INTO STUDENT VALUES ('MAFTEI AL. FLORENTINA IUSTINA', '18728109462', 'Aut' 7.90, 2, 500); INSERT INTO STUDENT VALUES ('MARINESCU V.A. VALERIU', '18728108754', 'Aut' 6.20, 2, 500); INSERT INTO STUDENT VALUES ('MIHAI M. ANAMARIA', '18628101944', 'Aut' 7.20, 3, 210); INSERT
INTO STUDENT VALUES ('MINDRU INSERT
INTO STUDENT VALUES (' INSERT INTO STUDENT VALUES ('MOCANU M. GEORGE ADRIAN', '18628105534', 'Aut' 6.20, 3, 165); INSERT INTO STUDENT VALUES ('NICULITA D. ALEXANDRU', '18628100034', 'Aut' 8.60, 3, 500); INSERT INTO STUDENT VALUES ('PANAIT P. DRAGOS MARIAN', '18628107529', 'Aut' 6.20, 3, 500); INSERT INTO STUDENT VALUES ('PETROIU Z. IULIAN', '18526103234', 'Aut' 8.20, 4, 500); INSERT INTO STUDENT VALUES ('REBEGEA GH. CRISTINA', '18524104234', 'Aut' 5.20, 4, 500); INSERT INTO STUDENT VALUES ('SECARA S.L. MIRCEA', '18518101534', 'Aut' 6.20, 4, 190); INSERT INTO STUDENT VALUES ('TARALA E. VALENTIN', '18521101254', 'Aut' 7.20, 4, 500); Pentru implementarea acestui proiect am decis sa folosesc limbajul de programare Java, mai exact, pachetul JDBC. Am implementat in codul sursa functii de adaugare, raport, cautare, afisare, stergere si modificare. Codul programului si explicatiile aferente: import java . sql .*; public class TestBursa //Adaugare sectie in Facultate public void add1() //Adaugare tip de bursa public void add2() //Adaugare student public void add3() //Afisare burse de merit public void afbm() } //Afisare burse de studiu public void afbs() } //Afisare burse sociale public void afbs2() } //Cautare si afisare student dupa CNP public void cauta() } // Calcularea mediei generale pe facultate public void medie() //Modificarea unei inregistrari public void mod() //Testarea functiilor public static void main ( String [] args ) catch(ClassNotFoundException e) try //Testare adaugari add1(); add2(); add3(); //Testare modificare mod(); //Testare cautare cauta(); medie(); //Testare stergere delete(); //Testare afisari afbm(); afbs(); afbs2(); // Inchidem conexiunea con.close(); } catch (SQLException e) Din pacate, desi am schitat o interfata grafica, folosind pachetul JFrame si am adaugat elementele necesare, nu am reusit sa adaptez codul de mai sus pentru a o putea folosi. Atasez totusi si varianta “curata” a interfetei grafice, fara nici un fel de modificare. Codul sursa al interfetei: import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import java.applet.*; public class MyFrame extends Frame void setParameters( Component c,int fr,int fg,int fb,int br,int bg,int bb,String font,int style,int size) catch (Exception e) } public Image loadImage(String fileName) public int StrToInt(String s) public String IntToStr(int i) public MyFrame() public static void main(String args[])public void userInits(){
|