proiect disciplina program are independent a de platforma

Upload: alexandru-efimov

Post on 09-Jul-2015

90 views

Category:

Documents


0 download

TRANSCRIPT

Universitatea Tehnica Gh. Asachi, Iasi

Facultatea de Automatica si Calculatoare

Proiect la disciplina Programare Independenta de Platforma

Student: Efimov Ioan-Alexandru Grupa: 1302B

An universitar 2010-2011

Aplicatie Aeroport

2

Enunt Tema:

T7. S se dezvolte o aplicaie de tip Aeroport n tehnologie servlets/JSP cu interfa grafic. Aplicaia va gestiona o baz de date cu urmtoarele tabele: Piloti - cu informaii despre membrii asociaiei i cu urmtoarea structur: Nume,Prenume, ID, Ore_zbor Curse - cu informaii despre tipurile de cotizaii i cu urmtoarea structur:Destinatie, Ora, CostB,CostE, ID_avion, ID_cursa, ID Avioane - cu informaii despre plata cotizaiilor i cu urmtoarea structur:Firma, Model, Varsta, ID_avion Baza de date folosit n cadrul aplicaiei va fi de tip MySQL. Aplicaia va permiteintroducerea datelor n tabele, afiarea i modificarea datelor din tabele precum i afiareape ecran a urmtoarelor rapoarte: Cursele efectuate de un anumit pilot Cursele de la o anumita ora Numarul de curse efectuate de un anumit avion

Aplicatie Aeroport

3

Cuprins:

I. Scurt prezentare a tehnologiilor folosite II. Proiectarea aplicaiei

1. Proiectarea bazei de date 2. Interfaa aplicaiei 3. Elemente de programareIII. IV. Concluzii Bibliografie

Aplicatie Aeroport

4

I. Scurt prezentare a tehnologiilor folositeHTMLUnul din limbajele folosite in cadrul acestei aplicaii este HTML. Hypertext Markup Language este un limbaj de marcare/descriere. Fiind un limbaj de marcare, HTML nu utilizeaz instruciuni sau comenzi, ci etichete de descriere, acestea fiind numite i balize, elemente sau tag-uri. HTML este o form de marcare orientat ctre prezentarea documentelor text pe o singura pagin, utiliznd un software de redare specializat, numit agent utilizator HTML, cel mai bun exemplu de astfel de software fiind browserul web. HTML furnizeaz mijloacele prin care coninutul unui document poate fi adnotat cu diverse tipuri de metadate i indicaii de redare. Indicaiile de redare pot varia de la decoraiuni minore ale textului, cum ar fi specificarea faptului c un anumit cuvnt trebuie subliniat sau c o imagine trebuie introdus, pn la scripturi sofisticate, hri de imagini i formulare. Metadatele pot include informaii despre titlul i autorul documentului, informaii structurale despre cum este mprit documentul n diferite segmente, paragrafe, liste, titluri etc. i informaii cruciale care permit ca documentul s poat fi legat de alte documente pentru a forma astfel hiperlink-uri (sau web-ul). Formularul este unul dintre cele mai importante unete folosite pentru a obtine informatii importante despre un user. In functie de necesitati informatia poate fi procesata si stocata intr-un fisier, se pot realiza statistici, formulare la informatia prezentata in pagina si multe altele. Formularul este indicat prin folosirea tag-ului . Pentru a indica actiunea formularului se foloseste atributul action care indica unde vor fi trimise informatiile din acel formular pentru a fi procesate. Destinatia informatiilor poate fi un Servlet sau o pagina JSP. HTML se poate genera direct utiliznd tehnologii de codare din partea serverului cum ar fi PHP, JSP sau ASP. Multe aplicaii ca sistemele de gestionare a coninutului, wiki-uri i forumuri web genereaz pagini HTML.

Java Servlet / JSPLimbajul Java are radacinile in C. Java este asemanator cu C++, dar este mai flexibil, mai portabil si mai simplu de invatat. Parintele limbajului a fost James Gosling, autorul celebrului editor de text emacs. Java incearca sa ramana un limbaj simplu, s-a preluat partea buna a

Aplicatie Aeroport

5

limbajului C++ si au fost eliminate partile derutante cum ar fi supraincarcarea operatorilor si mostenirea multipla. Limbajul este independent de arhitectura calculatorului pe care lucreaza (deci este portabil). Nu genereaza cod nativ pentru o platforma sau alta ci genereaza o secventa de instructiuni pentru o masina virtuala, numita si Masina Virtuala Java (JVM). Aplicatiile Java vor fi interpretate. Deci Java este un limbaj compilat si interpretat. Dezavantajul principal al limbajelor interpretate este viteza de executie. Pachetul javax.servlet ne ofera un cadru generic pentru crearea serverelor. Contine APIuri pentru prelucrarea cererilor si deservirea clientilor. Un alt pachet, javax.servlet.http contine implementarea servleturilor utilizate in cazul webserverelor pentru generarea paginilor HTML Un servlet HTTP pentru a putea realiza o anumita sarcina trebuie sa redefineasca metoda doGet(). Metoda este apelata de catre webserver ori de cate ori serverului ii este adresata o cerere HTTP care contine un GET . Metoda este definita in clasa HttpServlet pe langa metodele: doDelete(), doOptions(), doPost(), doTrace(). Aceste metode au doi parametri, unul de tip ServletRequest si unul de tip ServletResponse. Cele doua clase contin metode si variabile care permit comunicare servletului cu webserverul si pot genera exceptiile ServletException si IOException: public void doGet( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{...} Clasa ServletRequest contine toate informatiile necesare servletului pentru a intelege cererea si a putea raspunde la aceasta. Contine informatii referitoare la calculatorul caruia trebuie sa raspunda.Clasa ServletResponse contine metode care permit crearea si trimiterea raspunsului. Astfel cu ajutorul metodei setContentType( String) se stabileste tipul datelor care se trimit inapoi. Dintre tipurile posibile amintim: text/html, text/plain. O alta metoda importanta este getWriter(). Metoda returneaza o referinta de tip PrintWriter, care este un flux de iesire prin care se trimite raspunsul. Aceasta metoda se utilizeaza daca servletul trebuie sa trimita un continut de tip text si metoda getOutputStream() se utilizeaza daca se trimit date binare.

MySQLMySQL este un sistem de gestiune a bazelor de date relaional, produs de compania suedeza MySQL AB i distribuit sub Licena Public General GNU. Este cel mai popular SGBD open-source la ora actual, fiind o component cheie a stivei LAMP (Linux, Apache, MySQL, PHP).

Aplicatie Aeroport

6

Dei este folosit foarte des mpreun cu limbajul de programare PHP, cu MySQL se pot construi aplicaii n orice limbaj major. Exist multe scheme API disponibile pentru MySQL ce permit scrierea aplicaiilor n numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic API. O interfa de tip ODBC denumit MyODBC permite altor limbaje de programare ce folosesc aceast interfa, s interacioneze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. n sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul crora respetivele limbaje s poat folosi acest SGBD mult mai uor dect prin intermediul sistemului ODBC.

II. Proiectarea aplicatiei1. Proiectarea bazei de dateBaza de date Aeroport contine 3 tabele cu campurile avand urmatoarele relatii:

Piloti Nume(varchar,20) Prenume(varchar,30) ID(varchar,6) Ore_Zbor(int,4)

Curse Dest(varchar,20) Ora(time) CostB(int,6) CostE(int,6) ID_Cursa(varchar,6) ID_Avion(varchar,6) ID(varchar,6)

Avioane Firma(varchar,20) Model(varchar,20) ID_Avion(varchar,6) Varsta(int,2)

Aplicatie Aeroport

7

Valorile initiale ale tabelelor sunt: Curse: Dest Paris Londra Bucuresti Atena Halmstad Iasi Avioane:FIRMA Blu Air Wizz Air Carpatica Carpatica Wizz Air Blue Air MODEL DC-9 Boeing 747 Boeing 707 DC-9 Learjet G6 Boeing 737 VARSTA ID_AVION 12 333331 7 333332 5 333334 12 333333 1 333335 2 333336

Ora CostB CostE ID_AVION ID_CURSA ID_PILOT 22:39:00 523 123 333331 222221 111111 19:32:00 421 152 333332 222222 111112 06:00:00 230 50 333333 222223 111111 21:22:00 324 123 333334 222224 111114 04:21:00 324 125 333335 222225 111113 15:33:00 100 20 333333 222226 111111

Piloti:

NUME Vatra Vranceanu Sirghie Costancianu

PRENUME Victor Andrei-Ioan Valentin Andrei

ID 111112 111113 111114 111111

ORE_ZBOR 312 231 154 432

2. Interfata aplicatieiInterfata aplicatiei este facuta cu ajutorul limbajului HTML sub forma a 5 pagini web. Pe fiecare pagina se pot face anumite operatiuni asupa bazei de date cu ajutorul unui servlet. Raspunsul este afisat tot sub forma unei pagini web. Meniul este alcatuit din 5 butoane fiecare reprezentand tipul operatiilor posibile pe acele pagini: Home Rapoarte Afisare

Aplicatie Aeroport

8

Introd. Date Modificare

Home: Pagina home este pagina de inceput pe care sunt afisate informatii despre aplicatie si proiect.

Rapoarte: Pe pagina rapoarte se pot efectua urmatoarele afisari: Cursele efectuate de nu anume pilot Cursele care au plecarea intr-un anumit interval orar Numarul de curse efectuat de un anume avion Aceasta se face cu ajutorul a 3 butoane de tip radio care permit alegerea optiunii dorite si a campurilor de date in care se vor introduce informatiile dorite.

Afisare: Pe pagina de afisari se pot afisa inregistrari din baza de date dupa o anumita valoare a unui camp sau se pot afisa toate inregistrarile. Acest lucru se realizeaza cu 2 meniuri din care se pot alege optiunile precum tabelul si campul dupa care se face cautarea si un text box pentru introducerea informatiei cautate.

Aplicatie Aeroport

9

Introd. Date Pe aceasta pagina se pot introduce date noi in cele 3 tabele cu ajutorul unui meniu in care se alege tabelul dorit si datele se vor introduce in text boxurile ce apar pentru fiecare optiune.

Modificare Pe pagina de modificare se pot face modificari ale valorilor unor campuri sau se pot sterge anumite inregistrari. Acest lucru se realizeaza cu 2 meniuri din care se pot alege optiunile precum tabelul si campul ce se va modifica sau sterge si 2 text boxuri pentru introducerea informatiei cautate si apoi informatia ce va fi pusa in tabel.

Aplicatie Aeroport

10

3. Elemente de programareProiectul are urmatoarea structura de fisiere:

Folderul css contine fisierul layout.css ce contine stilurile pentru paginile HTML. // Fisier Layout.css: @charset "utf-8"; #page { background: #447fc3; color: #FFF; position: relative; min-height: 100%; height: auto !important; height: 100%;} #dv { width: 1024px; margin-right: auto; margin-left: auto; text-align:left;} html, body {margin: 0; padding: 0; height: 100%;} #logo { background: #FFF;} pilot,avion,cursa { ;} Folderul images contine fisierele imagini ce sunt prezente in acest proiect. Folderul WEB-INF contine un alt folder classes ce contine fisierele .class si fisierele sursa .java:

Aplicatie Aeroport

11

si fisierul web.xml in care sunt realizate conexiunile intre server si fisierul class al servletului:

Aplicatie Aeroport Raport raport Raport /raport Print print Print /print Introd introd Introd /introd Modif modif Modif /modif

Aplicatie Aeroport

12

In cardul acestui proiect avem urmatoarele clase: Raport.java //Fisier raport.java //Creator: Efimov Ioan-Aleandru //Rol: Fisier servlet pentru afisarea de rapoarte dupa nume pilot, ora cursei, nr de curse per avion public class raport extends HttpServlet { public void doPost(HttpServletRequest cerere, HttpServletResponse raspuns) throws ServletException, IOException { Print.java //Fisier print.java //Creator: Efimov Ioan-Aleandru //Rol: Fisier servlet pentru afisarea informatiilor din fiecare tabel cu cautare dupa un camp public class print extends HttpServlet { public void doPost(HttpServletRequest cerere, HttpServletResponse raspuns) throws ServletException, IOException { Introd.class //Fisier introd.java //Creator: Efimov Ioan-Aleandru //Rol: Fisier servlet pentru adaugarea de informatii n baza de date public class introd extends HttpServlet { public void doPost(HttpServletRequest cerere, HttpServletResponse raspuns) throws ServletException, IOException { Modif.class //Fisier introd.java //Creator: Efimov Ioan-Aleandru //Rol: Fisier servlet pentru modificarea de informatii in baza de date public class modif extends HttpServlet { public void doPost(HttpServletRequest cerere, HttpServletResponse raspuns) throws ServletException, IOException {

In toate aceste clase se face afisare de tip HTML cu ajutorul functiei out.println() in formatul paginilor anterioare:

Aplicatie Aeroport

13

raspuns.setContentType("text/html"); PrintWriter out = raspuns.getWriter(); out.println(""); out.println("Modificare Date"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println("
"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println("

"); Conexiunea la baza de date se face cu ajutorul urmatorului cod: String urlBazaDate="jdbc:mysql://localhost/aeroport"; String user="root"; String password=""; try { Class.forName("com.mysql.jdbc.Driver"); Connection c=DriverManager.getConnection(urlBazaDate,user,password); Statement s=c.createStatement(); i=s.executeUpdate("DELETE FROM aeroport.piloti WHERE ID='"+id+"';"); s.close(); }catch (Exception e) { out.println("Pilot doGet() " + e.getMessage()); } Si aducerea informatiilor din paginile html se face prin functia getParameter() : String id=cerere.getParameter("idpilot"); String data=cerere.getParameter("mpilot"); String camp=cerere.getParameter("mp");

Aplicatie Aeroport

14

III. Concluzii

Prin acest proiect am invatat cum se poate relationa cu o baza de date prin intermediul limbajului de programare JAVA si cum se poate alcatui o aplicatie web cu ajutorul tehnologiei JAVA Servlets/JSP precum si elemente noi de HTML si JavaScript. Acest proiect poate fi folositor in cazul dezvoltarii unei aplicatii de gestionare a activitatilor intrun aeroport, precum si a personalului si inventarului . Functionalitati ce pot fi implementate: La adaugarea unei noi informatii valoarea campurilor ce sunt in relatie cu alt tabel sa fie aleasa in functie de valorile existente in tableul relationat (ex. meniu de tip drop-down); Modificare de campuri multiple; Alte rapoarte; Un meniu Help;

Aplicatie Aeroport

15

IV.

Bibliografie:

1. Curs Limbaje orientate obiect - Dezvoltarea aplicatiilor in stil OOP - Margit Antal http://www.ms.sapientia.ro/~manyi/teaching/oop/oop_romanian/curs1/curs1.html 2. Wikipedia : http://ro.wikipedia.org/wiki/MySQL http://ro.wikipedia.org/wiki/HyperText_Markup_Language 3. Referate Proiect Programare Independenta de Platforma G. Varvara http://pip.ac.tuiasi.ro/laboratoare