Sunteți pe pagina 1din 29

ACADEMIA DE STUDII ECONOMICE DIN BUCURETI

FACULTATEA DE CIBERNETIC, STATISTIC I INFORMATIC ECONOMIC

PROIECT Programarea Dispozitivelor Mobile


Aplicaie mobila pentru organizatori evenimente (PDM_P06)

Studeni: Moaca Alexandru, grupa 1058 Muceanu Constantin Razvan, grupa 1058

Bucureti, 2011

Cuprins
Cuprins.............................................................................................................................................2 1.INTRODUCERE..........................................................................................................................2 1.1. Necesitatea proiectului..........................................................................................................2 1.2. Obiectivele proiectului..........................................................................................................3 1.3.Cadrul general.......................................................................................................................3 2. DESCRIEREA SOLUIEI .........................................................................................................3 2.1. Descrierea scenariului...........................................................................................................3 2.2.Descrierea functionalitatii.....................................................................................................5 3. IMPLEMENTAREA SOLUIEI PRIN TEHNOLOGIA JAVA ME ........................................8 4. IMPLEMENTAREA SOLUIEI PRIN TEHNOLOGIA .NET CF .......................................14 4.1.Modulul Logare...................................................................................................................15 4.6 Accentuare probleme/avantaje aprute la implementarea soluiei prin .NET CF...............23 5. ANALIZA COMPARAT A CELOR DOU SOLUII.........................................................24 7. BIBLIOGRAFIE........................................................................................................................25 Anexe:............................................................................................................................................26

1.INTRODUCERE 1.1. Necesitatea proiectului

Aplicaiile realizate ncearc sa solutioneze intr-un mod rapid si util problemele intampinate in organizarea unui eveniment,atat din punctul de vedere al organizatorilor ,cat si din punctul de vedere al alegerilor clientului. Aplicaiile pentru organizatorii de evenimente urmaresc construirea unui mod flexibil de informare complet a clientului , cu privire la costul organizarii unui eveniment, n funcie de alegerile acestuia,puse la dispozitie de catre aplicatie.

1.2. Obiectivele proiectului


Proiectele au ca obiectiv informarea clientului interesat, ntr-un mod complet i corect, cu privire la costurile unui anumit tip de eveniment, oferind posibilitatea alegerii facilitatilor dorite. Astfel, aplicatiile permit urmtoarele: - afiarea pe ecranul dispozitivului mobil a informaiilor necesare la in modulele aplicatiei; - afiarea pe display a opiunilor disponibile; - afiarea costului total al evenimentului, in conformitate cu alegerile clientului; - afiarea datelor despre evenimentele in curs de organizare.

1.3.Cadrul general
Aplicaiile sunt destinate domeniului de organizari de evenimente. Aplicaiile faciliteaz procesul de organizare a unui eveniment, reducnd timpul petrecut atat de client n cutarea acestor informaii,dar si simplificand pasi necesari de parcurs de catre oragnizatorii de evenimente,in prezentarea ofertelor. Datele prezint avantajul unui acces sigur, uor i rapid,atat pentru cei cu experienta in utilizarea dispozitivelor mobile,cat si pentru cei carora utilizarea acestui tip de dispozitiv nu le este familiara.

2. DESCRIEREA SOLUIEI 2.1. Descrierea scenariului

Eficientizarea procesului de selectionare a facilitatiilor oferite de catre organizatorii ,in vederea derularii unui eveniment in conformitate cu cerintele clientului, urmareste parcurgerea ctorva pai simpli. Organizatorul de evenimente va deschide aplicaia.Primul ecran va contine o procedura de logare,unde se vor cere un username si o parola pe baza carora organizatorul se va conecta incadrul aplicatiei. Urmatorul ecran care va aparea dupa selectarea butonului de conectarecontine urmatoarele optiuni: - Creare eveniment - Vizualizare eveniment

Creare eveniment Organizatorul alege prima opiune din meniu, Creare evenimet Pe ecran vor aparea o serie de campuri pe care organizatorul le va completa in functei de datele si preferintele clientului,se va putea alege tipul evenimentului,petrecere sau conferinta,se vor cere o serie de date personale ale clientului ,se va stabili numarul de participanti si in functie de alegerea si optiunile disponibile,locatia evenimentului. Se va oferi posibilitatea alegerii unei locatii de catre client,alta decat unu dintre cele doua sali predefinite. In continuare se va prezenta un estimativ final al oraganizarii evenimentului. Dupa completarea datelor necesare si alegerilor clientului se va solicita o semnatura digitala pentru validarea evenimentului,cu posibilitaea de a reseta semnatura,la o eventuala eroare a clientului . Astfel,se va afisa un cost estimativ al evenimentului,in functie de pachetele si facilitatile alese de catre client. Optiunea Inapoi, care permite ntoarcerea utilizatorul la ecranul principal.

Vizualizare eveniment

Organizatorul alege prima opiune din meniu, Vizualizare eveniment

Selectarea butonului Vizualizare eveniment va conduce organizatorul catre un ecran care va descrie evenimentul tocmai creat,dar si toate acele evenimente care au fost create de catre organizatorul respectiv. Ecranul va contine o lista unde vor aparea evenimentele.In aceasta lista se vor afisa numele si data organizarii evenimentului.Datele vor fi sortate in tabel in functie de cheia primara a tabelei. La apasarea de click pe una din intrarile din tabel se va deschide un ecran ce va contine detalii despre eveniment. Fiecare ecran va contine in partea de jos optiunile :Inapoi si Iesire.In momentul alegerii optiunii inapoi ,aplicatia va reveni la ecranul anterior afisat,iar la alegerea optiunii iesire aplicatia se va inchide si va aparea ecranul principal el telefonului.

2.2.Descrierea functionalitatii
Aplicaia este proiectat pe urmtoarele seciuni: - Logare: - Username - Parola - Creare eveniment

- Creare eveniment:

- Client - Data - Tip eveniment : - Conferinta - Petrecere -Participanti -Locatie: - Predefinita - Optiune client -Posibilitate alegere:- Sala - Sonorizare - Mancare+Racoritoare - Alcool - Dj - Transport - Interpret - Proiector -Semnatura

- Vizualizare evenimente:-Nume si Prenume client -Data organizarii evenimentului -Date despre eveniment

La selectare butonului Creare eveniment va aparea un MassageBox,care va contine costul estimativ al evenimentului,calculat in functie de facilitatile alese de client. Detaliile organizarii evenimentului vor fi sticate in baza de date pentru gestiune.

3. IMPLEMENTAREA SOLUIEI PRIN TEHNOLOGIA JAVA ME


Implementarea soluiei prin tehnologia Java Micro Edition a fost fcut utiliznd mediul de dezvoltare NetBeans. Acest mediu are integrate emulatoare de dispozitive mobile ce sunt utlizate la testarea aplicaiei ntr-un mediu apropiat de dispozitivele urmrite. Aplicaia dezvoltat n Java ME permite utilizatorului alegerea opiunilor dorite utiliznd: ferestre pentru afiarea datelor; formulare de introducere a datelor; colecii de date stocate persistent utiliznd tehnologia RMS (Record Management Store); forme pentru vizualizarea datelor citite din fiiere XML; forme pentru afiarea grafic a datelor stocate persistent; ferestre ce afieaz coninul anumitor pagini HTML.

Stocare datelor se face cu ajutorul framework-ului persisent Floggy. Cadrul Floggy este un cadru persistent pentru platforma J2ME, liceniat de ctre Apache License . Cadrul permite persistena obiectelor mult mai usor decat daca se utilizeaza RMS. RMS tradiionale (Record Management System), persist doar gama de octei, care aduce provocri pentru depozitarea obiectelor complexe. Arhitectura este mprit n dou niveluri: compilare / ambalare i de aplicare. n nivelul de elaborarea, componenta waever este responsabil pentru primirea byte-codul i creeaz infrastructura persistenta pentru fiecare obiect pentru a fi stocate. ntr-un ambalaj, floggy cadrul API este "mpins" n cererea de logic. n cele din urm, n timpul etapei de punere n aplicare, Floggy Framework poate fi utilizat prin metodele sale: economii, mutri, ediiile obiect i interogri.

3.1. Modulul Start

Fig 1 Formular Start

Modulul Start este reprezentat de clasa StartPage (fig.1). De aici de pot alege optiunile : 1.Creare de eveniment 2.Vizualizare Evenimente ClasaStart extinde un Canvas pe care sunt desenate 2 patrate si 2 stringuri.

3.2. Modulul Creare eveniment

Fig 2 Formularul Creare eveniment

Prin alegerea optiunii Creare Eveniment din fereastra pricipala se deschide un nou form Creare Eveniment (fig.2). Clasa extinde un Form si are in cadrul ferestre mai multe elemente de tip textfield , choicegroup etc. Formul cuprinde informatii necesare creeri de noi evenimente: numele clientului , telefonul , tipul evenimentului , data evenimentului , localitatea , locatia , numarul de participanti precum si pachetele oferite de companie pentru organizarea evenimentelor. Din optiunea Meniu se pot alege 2 optiuni:

1.Estimarea Costurilor calculeaza costul estimativ al evenimentului in functie de tipul evenimentului , numarul de participanti sau de tipul de pachete dorit.
if(cmbPachet.getString(k).equals("Food&Drinks")){ costuri=costuri+(nrPers*5); } if(cmbPachet.getString(k).equals("Transport")){ costuri=costuri+(nrPers*2); }

2. Salveaza salveaza datele introduse. Rezervari = new Rezervari(); try { PersistableManager.getInstance().save(rez); } catch (FloggyException ex) { }

3.3. Modulul Vizualizare eveniment

Fig 3 Formularul Vizualizare eveniment

Formularul Vizualizare Clienti este format dintr-un ChoiceGroup in care sunt afisate informatii despre evenimentele oraganizate de companie(numele clientului , tipul evenimentului si data evenimentului). Datele sunt citite dint-o colectie in care au fost salvate toate evenimentele firmei.
... ObjectSet objSet = PersistableManager.getInstance().find(Rezervari.class, null, null); for(int i=0;i<objSet.size();i++){ try { rezervare = (Rezervari) objSet.get(i); } catch (FloggyException ex) { ex.printStackTrace(); }

...

3.4. Accentuare probleme/avantaje aprute la implementarea soluiei prin Java ME


Dispozitivele mobile sunt folosite frecvent pentru a accesa serviciile Internet prin conexiuni de date. O modalitate eficient de a transfera date ntre platforme i tehnologii diferite este utilizarea fiierelor XML, care sunt simple fiiere text formatate conform regulilor XML. Pentru a procesa un fiier XML i pentru a extrage datele necesare este nevoie de un parser XML, care implementeaz un motor pentru procesare de texte. Problema n cazul aplicaiilor MIDlet J2ME este c exist dispozitive mobile care nu suporta API-ul XML pentru Java ME definit de pachetul suplimentar (JSR 280). Pentru a rezolva aceast problem, avem nevoie de un parser XML simplu i independent, care trebuie s fie rapid i cu un impact mic asupra memoriei (n special cea virtual).

4. IMPLEMENTAREA SOLUIEI PRIN TEHNOLOGIA .NET CF


Aplicaia este mprit pe module : -Logare - Meniu - Creare - Vizualizare eveniment Formularul principal figura 1 cuprinde 2 butoane , Creare eveniment si Vizualizare eveniment,care permit accesul in fiecare dintre celelalte 2 module. Butonul din stanga jos Iesire este destinat terminarii aplicatiei,iar butonul din partea dreapta este destinat accesarii ecranului precedent.

Fig 1 Formular principal

4.1.Modulul Logare

Fig 2 Formular Logare

4.2.Modulul Meniu

Fig 3 Formular Logare

4.3.Modulul Creare eveniment

Fig 3 Formular Creare eveniment

Fig 4 Formular Creare eveniment

Fig 5 Formular Creare eveniment

4.4.Modulul Vizualizare eveniment

Fig 6 Formular Vizualizare eveniment

Fig 7 Formular Vizualizare Eveniment

4.6 Accentuare probleme/avantaje aprute la implementarea soluiei prin .NET CF


Au fost ntmpinate greuti la implementarea mecanismului de tip ResultSet DataGrid ( unde dataGrid.DataSource = resultSet ). Aceast legtur permite afiarea rapid a informaiilor din tabela din baza de date. Totodat, nu necesit introducerea din cod a structurii tabelei pentru afiarea corect, aceasta fiind preluat automat din tabel la momentul citirii informaiilor din baza de date. A fost implementat un mecanism de tip listview dataReader care nu este la fel de rapid : se citesc secvenial informaiile din baza de date, se creeaz obiecte pe baza acestora, urmnd a se popula listview-ul pe baza acestor obiecte. Structura coloanelor listview-ului este introdus apriori la nivelul codului nu este citit din baza de date i ca atare o schimbare n structura tabelei atrage modificarea codului. Elementele de pe fiecare formular sunt poziionate relativ unele fa de altele iar dimensiunile acestora sunt stabilite relative la dimensiunile formularului (dimensiunile dispozitivului mobil pe care se instaleaz aplicaia). Astfel indiferent de dimensiunile ecranului dispozitivului mobil se va pstra o afiare corect a elementelor. Scrierea/citirea n baza de date este lent i datorit structurii complexe a tabelelor, structur impus de natura problemei. Implementarea minibrowser-ului web a fost foarte uoar datorit claselor i mecanismelor puse la dispoziie de limbajul de programare i respectiv de mediul de programare, tiliznd componenta predefinit de tip webbrowser i mecanismele de creare i gestiune a firelor de execuie.

Implementarea capacitii de a trimite emailuri a fost facil datorit transparenei structurii Pocket Outlook API.

5. ANALIZA COMPARAT A CELOR DOU SOLUII


Avantajele implementrii tehnologiei .NET CF n Visual C# sunt numeroase. Un prim avantaj este faptul c permite utilizarea unei baze de date pentru stocarea persistent (SQL Compact Edition) i regsirea rapid a datelor. Pentru aplicaiile cu date care trebuie stocate ntr-o baz de date, aceast tehnologie este mai avantajoas dect lucrul cu fiiere (spre exemplu RMS n Java), reducnd redundana datelor, asigurnd coerena lor i accesul rapid (scriere/citire) la acestea. De asemenea, prin utilizarea componentelor ResultSet cu un DataGrid se poate construi foarte uor un mecanism de afiare a datelor dintr-o baz de date n mod direct, asigurnd astfel o independen ntre codul scris de programator i structura tabelelor din baza de date. Un alt avantaj este reprezentat de uurina realizrii operaiilor de tip trimitere/intercepie SMS, trimitere email, datorit API-ului Pocket Outlook. Al treilea avantaj se refer la uurina desenrii att de obiecte predefinite (cerc, dreptunghi etc.) prin intermediul primitivelor grafice, ct i desenarea liber, asigurat de clasa Graphics. Alte avantaje: - uurin n captarea i tratarea diferitelor evenimente ce prezint interes pentru programator; - centralizarea structurii de clase i a instrumentelor pentru dezvoltarea de aplicaii n cadrul IDE-ului Microsoft Visual Studio; - uurin n parcurgerea i citirea informaiei utile din fiiere XML; - gestiunea transparent i facil a evenimentelor; - mediul de dezvoltarea care uureaz munca dezvoltatorului. Tehnologia Java ME prezint unele dezavantaje: - controale mai puine i mai greu de utlizat; nu se poate lucra vizual (de exemplu pentru aranjare); - nu se pot aranja controalele pe form (C# are controale variate i mai uor de folosit); - nu are baz de date; RMS pentru stocare se utlizeaz mai greu; - n Java se programeaz mai greu, din punctul de vedere al programatorului, n special din cauza controalelor, care sunt mai puine, mai greu de manevrat i nu se pot combina (de exemplu: list cu textbox etc.)

Din punctul de vedere al dezvoltatorului aplicaiilor, C# este preferat pentru crearea unui program pentru un dispozitive mobile, deoarece e foarte asemntor cu dezvoltarea aplicaiilor Windows Forms. Emulatorul este integrat n Visual Studio, fiind necesar doar rularea care lanseaz emulatorul i aplicaia scris. Avantajul Java este reprezentat de faptul c este un limbaj de programare care ruleaz indiferent de platform (Win 98/2000/XP, Unix,Linux, etc.) i c este un limbaj sigur. Spre deosebire de Java ME, .NET Compact Framework folosete n ntregime librriile .NET Framework (dar adaptate pentru dispozitivele mobile).

6. CONCLUZII
Programarea n C# este asemntoare cu dezvoltarea aplicaiilor Windows Forms, astfel c este indicat pentru lucrul cu dispozitive mobile. Emulatorul este integrat n Visual Studio, fiind necesar doar rularea care lanseaz emulatorul i aplicaia scris. Avantajul tehnologiei Java este c este un limbaj de programare care ruleaz indiferent de platform (Win 98/2000/XP, Unix,Linux, etc.), fiind de asemenea i un limbaj sigur.

7. BIBLIOGRAFIE
http://revistaie.ase.ro/content/31/Pocatilu%2BToma.pdf http://pocatilu.ase.ro http://www.sun.java.com/ http://java.sun.com/j2me http://www.nokia.com http://www.siemens-mobile.com/developer http://www.microsoft.com/downloads/en/details.aspx?FamilyID=06111A3A-A651-4745-88EF3D48091A390B&displaylang=en http://www.microsoft.com/windowsphone/en-us/howto/wp6/sync/prepare-to-sync-windowsphone-6-5-with-my-computer.aspx http://netbeans.org/downloads/index.html http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html http://www.roseindia.net/j2me/ https://www.astraonline.ro/ http://www.developer.com/ws/pc/article.php/3556186/Fast-and-Simple-Mobile-Access-toPocket-Outlook-Data.htm http://www.go4expert.com/forums/showthread.php?t=1484

Anexe:
1. Java ME MidletMain midletul pricipal care porneste aplicatia.

package main; import javax.microedition.lcdui.Display; import javax.microedition.midlet.*; /** * @author moacaaa */ public class MidletMain extends MIDlet { public static Display mmDispaly=null; public MidletMain() { mmDispaly = Display.getDisplay(this); }

public void startApp() { StartPage sp = new StartPage(this); mmDispaly.setCurrent(sp); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public static Display getMMDisplay(){ return mmDispaly; } }

In momentul pornirii aplicatie porneste clas StartPage care este setata ca pagina de pornire din MidletMain:

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package main; import eveniment.CreareEveniment; import eveniment.VizualizareEveniment; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; import javax.microedition.midlet.MIDletStateChangeException; /** * * @author moacaa */ public class StartPage extends Canvas implements CommandListener { private MidletMain midletMain; private Command cmdAdaugaEv; private Command cmdVizualizareEv; private Command cmdExit; public StartPage(MidletMain midletMain){ this.midletMain=midletMain; comandListeners(); }

private void comandListeners(){ cmdExit = new Command("Exit", Command.EXIT, 1); cmdVizualizareEv = new Command("Vizualizare Evenimente", Command.SCREEN, 1); cmdAdaugaEv = new Command("Adauga Eveniment", Command.SCREEN, 1); this.addCommand(cmdExit); this.addCommand(cmdVizualizareEv); this.addCommand(cmdAdaugaEv); this.setCommandListener(this); } protected void paint(Graphics g) { g.setColor(0,173,171); g.fillRect(0, 0, this.getWidth(), this.getHeight()); Image image=null; if (image == null) { try { image = Image.createImage("/DSC01805.jpg"); } catch (Exception ex) { g.setColor(0xffffff); g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT); return; } } // g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT); int width=getWidth(); int height = getHeight(); g.setColor(0); g.setGrayScale(100); g.drawRect(60,50, width/2, height/4); g.drawRect(60, 140, width/2, height/4); g.setColor(147, 195, 158); g.fillRect(60,50, width/2, height/4); g.setColor(0,0,0); g.drawString("Creare", 90, 80, 0); g.setColor(147, 195, 158); g.fillRect(60,140, width/2, height/4); g.setColor(0,0,0); g.drawString("Vizualizare", 75, 170, 0); } public void commandAction(Command c, Displayable d) { if (c==cmdExit){ midletMain.destroyApp(false); midletMain.notifyDestroyed();

} if(c==cmdAdaugaEv){ CreareEveniment cv = new CreareEveniment(midletMain); MidletMain.getMMDisplay().setCurrent(cv); } if(c==cmdVizualizareEv){ VizualizareEveniment vv = new VizualizareEveniment(midletMain); MidletMain.getMMDisplay().setCurrent(vv); } } }

2. .NET

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