Aplicatie de Citire a Bibliei. Varianta Desktop
UNIVERSITATEA “AUREL VLAICU“, ARAD
FACULTATEA DE ȘTIINȚE EXACTE
DOMENIUL DE LICENȚĂ: INFORMATICĂ
FORMA DE ÎNVĂȚĂMÂNT: ZI
LUCRARE DE LICENȚĂ
ÎNDRUMĂTOR ȘTINȚIFIC ABSOLVENT
Profesor universitar doctor Mariana Nagy Har OD Sergiu Emanuel
ARAD
2016
UNIVERSITATEA “AUREL VLAICU “, ARAD
FACULTATEA DE ȘTIINȚE EXACTE
DOMENIUL DE LICENȚĂ: INFORMATICĂ
FORMA DE ÎNVĂȚĂMÂNT: ZI
APLICAȚIE DE CITIRE A BIBLIEI
VARIANTĂ DESKTOP
VARIANTĂ ANDROID
ÎNDRUMĂTOR ȘTINȚIFIC ABSOLVENT
Prof. univ. dr Mariana Nagy Har OD Sergiu Emanuel
ARAD
2016
Cuprins
Introducere…………………………………………………………………………………..10
Medii de programare………………………………………………………………………….11
Visual studio …………………………………………………………………12
Folosirea c# Forms………………………………………………………13
Interfața cu utilizatorul………………………………………………….14
Transferul între formulare……………………………………………….15
Elementele: Button, List, TextBox, Picture Box, Label, etc…………….16
Adobe PDF Reader………………………………………………………18
Gestionarea timpului aplicației: Timer, Calendar………………………19
Operații cu fișiere ……………………………..……………………………….20
Elemente audio…………………………………………………………..21
Conectarea la baza de date………………………………………………22
Android Studio……………………………………………..……………….23
Interfața cu utilizatorul………………………………………………….24
Rularea aplicației………………………………………………………..25
Android XML……………………………………………………………26
Activități……………………………………………….…………………27
Bazele programării android………………………….………………….29
Elementele Widgets………………………………….….……………….31
Design-ul unei aplicații………………………………….……………….32
Conectarea la baza de date……………………………….………………33
Mysql………………………………………………………….……………….34
Utilizarea Wamp…………………………………………………………35
Localhost și phpmyadmin……………………………………………….36
Introducere date………………………………………………………….37
Comenzi Sql…………………………………………………………….37
Tabele Sql………………………………………………………………..38
Tehnici de programare comparative ……………..………………..39
Programare modulară……………….…………….……………………40
Programare orientată pe obiect………………………………………44
Aplicația de citire a bibliei c#……………………………………………………….49
Schema aplicației…………………………………………………………50
Design principal…………………………………………….……………51
Funcții…………………………………………………………………52
Teste…………………………………………………………………..53
Planuri și personaje……………………………………………………56
Baza de date…………………………………………………………..57
Modul de administrare…………………………………………………59
Aplicația android…………………………………………………………60
Schema aplicației………………………………………………….…….61
Design principal………………………………………………………….62
Status bar……………………………………………………………..63
Citirea bibliei………………………………………………………….64
Setări………………………………………………………………….65
Implementare tehnică………………………………………………….66
4.3.1 Resurse necesare…………………………………………………..…..67
Concluzii……………………………………………………….………….…68
Bibliografie……………………………………………………….…………71
Index……………………………………………………………….…………..74
Introducere
Am ales această temă pentru lucrarea de față deoarece biblia reprezintă cea mai importantă carte și cea mai bine vândută și cea mai citată, iar interesul pentru a fi citită este uriaș. Astfel, prin această aplicație am dorit să facilitez citirea bibliei atât de pe calculatorul personal, cât și de pe telefonul mobil aflat la îndemâna fiecăruia. Aplicațiile de citire a bibliei existente în prezent sunt destul de numeroase, dar lucrarea de față aduce ceva nou prin modul unic de realizare și accesul facil la toată biblia. De asemenea cu această aplicație este foarte ușor studiul fiecărui capitol din biblie deoarece oferă posibilitatea personalizării textului citit. Pe de altă parte, în aplicatie există și informații despre personajele biblice, teste de verificare a cunoștiintelor și multe alte elemente cu un scop clar și bine definit: aprofundarea cunoștiintelor despre Biblie și mesajul ei.
În capitolele următoare o să prezint detaliat fiecare pas pe care l-am efectuat pentru a realiza aceasta aplicație în mediul de programare visual studio c# pentru calculatoarele personale și în mediul de programare android studio pentru telefoanele mobile cu sistem de operare android. Voi scoate în relief principalele elemente folosite în alcătuirea aplicației și voi vorbi despre limbajul c# și majoritatea elementelor sale, dar și despre limbajul android și câteva dintre elementele sale principale. Din punct de vedere al codului folosit, în cele ce urmează voi vorbi despre principalele instrucțiuni ale limbajului c# în cadrul programării orientate pe obiect. Mă voi referi la noțiunea de obiect și de clasa, la butoane și liste, la elemente de introducere a textului, la operatii cu fișiere, la tehnici de căutare și la introducerea de elemente audio și text în programul c#. Apoi voi exemplifica partea de SQL folosită pentru a permite aplicației să personalizeze accesul fiecărui utilizator și voi discuta câteva principii ale programării c# folosind o bază de date MYSQL. În final, o să scot în evidență partea de android, voi descrie mediul de programare android studio, principiile de programare in android, interfata cu utilizatorul, fisiere xml si celelalte elemente necesare constructiei aplicatiei.
Astfel, după parcurgerea lucrării de față, se vor observa metodele de programare abordate și tehnicile folosite pentru a obține aceste două aplicații, cum de la un program în care avem doar o linie de cod de început am ajuns la programe complexe, care fac multe operații și care pentru a ne facilita aprofundarea cunoștiintelor despre biblie ne cer doar două lucruri: sa avem la îndemână un calculator cu o tastatură și un mouse, respectiv un telefon mobil cu sistem de operare android.
1. Medii de programare
La baza construcției calculatorului stau microprocesoarele, care sunt alcătuite în principal din tranzistori, adică un fel de întrerupătoare. Acestea pot avea doar două stări 0 pentru închis și 1 pentru deschis. Astfel, tot ce dăm noi ca date de intrare unui calculator este interpretat ca 0 și 1, fiecare caracter este transformat de către calculator în aceste două valori. Orice operație pe care o execută calculatorul, oricât de complexă, este transformată în șiruri de 0 și 1. De exemplu, atunci când dorim să adunăm două numere cu ajutorul calculatorului, el nu adună defapt acele numere, ci corespondentul lor în limbaj binar. Când folosim tastatura și introducem o literă, calculatorul folosește defapt codul specific acelei litere. În acest sens, pentru litera A codul folosit de calculator este 65, iar când este nevoie de această literă el foloseste codul ei transformat în limbaj binar. Este nevoie de calculatoare cât mai rapide și puternice pentru a putea gestiona numărul uriaș de date din lumea care ne înconjoară, iar cu cât putem retine mai multe date putem spune că detinem mai mult controlul și accesul la informație. În acest sens, rolul programării este de a scrie diferite coduri pe care calculatorul le interpretează și care ne fac mai usoară munca pe care o desfășurăm pe calculator. Dar programarea în 0 și 1 este un lucru destul de complicat datorită faptului că oamenii nu sunt obișnuiți să gândească așa, astfel au fost dezvoltate mediile de programare.
Mediul de programare este un set de programe care facilitează munca programatorului. Un mediu de programare combină toți pașii necesari pentru crearea unui program: Editarea codului sursă, testarea programului, compilarea programului, afișarea erorilor, într-un soft care face toate aceste lucruri și pe langă oferă și o interfață prietenoasă cu utilizatorul. Practic, cu ajutorul unui mediu de programare specific, noi nu mai suntem nevoiți să ii dam calculatorului instrucțiuni în binar, ci folosim anumite comenzi pe care el le interpretează corespunzător. Pe langa acest fapt, dupa ce am scris codul în mediul de programare dorit, putem rula acest cod. Adică, cu ajutorul unui interpretor vedem cum reactionează calculatorul la codul scris de noi.
Dacă în scrierea codului nostru, avem o eroare de sintaxă sau de funcționare a programului, cu ajutorul mediului de programare aflăm imediat acest lucru și astfel ne este mult mai ușor să descoperim locul în care se află eroarea. De exemplu: Dacă folosim o instrucțiune for și scriem din greșeală four programul ne va afișa un mesaj de eroare și ne va semnala numărul liniei de cod în care se află eroarea. Astfel, în doar câteva secunde putem ajunge la locul erorii și putem efectua pașii necesari pentru corectarea ei.
1.1 Visual studio
Mediul de programare folosit pentru prima aplicație este Visual Studio 2010. Acesta include un set complex de instrumente pentru dezvoltarea de aplicații de tipuri foarte diferite, astfel ajungem de la programele clasice scrise în consola la aplicații complexe pentru navigarea pe internet și chiar pentru telefoanele mobile. Visual Studio 2010 are numele de cod Dev101 și a fost lansat pe 12 aprilie 2010 alături de o serie de alte programe, acesta are un editor nou care utilizeaza diferite instrumente folosite la scrierea mai ușoară a codurilor și la design-ul mai ușor al aplicațiilor.
Visual Studio nu poate fi folosit pentru toate limbajele de programare, nici nu poate folosi toate componentele sale de la bun început. Pentru a putea utiliza unele facilități este nevoie sa instalam diferite pachete de date. Pe de altă parte, odată instalate toate pachetele ne putem bucura de un mediu de programare optim cu un compilator foarte bun și în care putem realiza aproape toate aplicațiile la care ne-am putea gândi. Partea de design a aplicației se poate face foarte ușor datorită diverselor elemente predefinite ale mediului de programare și putem folosi ca limbaje fie Visual Basic, fie C++, fie C#, în functie de dorinta noastra.
Fig 1.2 Mediul de programare Visual Studio
Folosirea C# Forms
Pentru a utiliza mediul de programare Visual Studio C# Forms trebuie să deschidem o noua aplicație din meniul File New Project Windows Form Application1. Din punct de vedere vizual, acest tip de aplicație este asemănător cu un formular care poate fi folosit pentru a prezenta diferite informații utilizatorilor, dar și pentru a prelucra eventualele date pe care le poate introduce utilizatorul. De exemplu, un program de acest tip care calculează media ponderată a tuturor studentilor de la o anumită specializare poate primi ca date de intrare notele fiecărui student. Pe de altă parte, aceste formulare pot avea forme diferite în funcție de ceea ce vrem să facem cu ele, de la un program care adună sau scade doua numere, până la programe foarte complexe cu baze de date de dimensiuni uriașe.
Pentru a personaliza fiecare formular este suficient să adăugam pe suprafața acestuia diferite elemente puse la dispoziție de către program. Fiecare din aceste elemente este un obiect care are proprietăți diferite și poate fi programat diferit și pus să facă o gamă largă de activități. Din punct de vedere informatic, avem la dispoziție metode pentru a controla și cea mai mică acțiune a fiecărui element grafic pe care il adaugăm pe formular. Dar, spre deosebire de programele clasice, care pornesc din Main2, aici avem totul pe evenimente. Adică, pentru fiecare activitate alegem un eveniment și doar când are loc acel eveniment se execută codul pentru acea actitivate. Spre exemplu, dacă dorim ca un cod să se execute doar când suntem cu mouse-ul într-o anumită zonă, alegem evenimentul Mouse Over3, iar când vrem să se execute codul când dăm click pe un element, alegem evenimentul On Click. Fiecare formular pe care îl creem noi este o clasă din punct de vedere al programarii, iar când vrem să folosim o anumită facilitate a formularului, clasa este ceea ce se execută și face posibilă funcționarea codului. Un alt eveniment foarte folosit este cel de load, codul scris aici se execută imediat când se încarcă formularul și este util pentru aplicațiile în care dorim ca totul să fie gata pentru întâlnirea cu utilizatorul. Dacă dorim ca fundalul formularului să aibă culoarea maro este suficient dacă la evenimentul de încarcare al lui scriem următorul cod:
this.BackColor = System.Drawing.Color.Brown;
1Windows Forms Application- https://msdn.microsoft.com/- pentru mai multe informații și exemple complete privind gama aceasta de aplicații.
2Main- Prima metodă care se apelează când rulăm orice program scris în limbajele c++ sau java.
3Mouse Over- https://msdn.microsoft.com/en-us/library/- pentru informații suplimentare despre acest eveniment și programe demonstrative.
1.1.2 Interfata cu utilizatorul
Motivul principal al folosirii acestui mediu de programare este interfața ușoară cu utilizatorul. Din punct de vedere al programatorului, este foarte important ca fiecare element să fie așezat “la locul lui“, adică să se poată găsi repede fiecare element grafic și codul să fie cât mai ușor de citit și cât mai bine organizat. Pentru a adăuga elemente pe formular este suficient să folosim funcția Drag and Drop1, iar pentru a scrie codul dorit trebuie doar să alegem evenimentul și să dam click pe iconița specifică lui.
Fig 1.3 Interfața aplicației windows forms c sharp
Ceea ce ne interesează la designul unei aplicații c sharp se poate diviza în trei parți esentiale: Funcționalitate, aspect și performanță. Bineinteles, ceea ce conteaza în primul rând este funcționalitatea, ne interesează dacă aplicația este utilă și poate fi folosită de utilizator pentru a efectua diferite sarcini. Partea estetică se referă la modul în care arată ceea ce prezentăm utilizatorului, deși cel mai important este ca aplicația să functioneze, trebuie să arate și plăcut pentru utilizator ca el să o poată folosi în mod ușor.
Performanța nu depinde doar de viteza cu care ruleaza aplicația, dacă ea funcționează foarte bine, arată foarte bine, dar la fiecare pas are o serie de erori nu va putea fi folosită de catre utilizator. Când realizăm designul unei aplicații trebuie să tinem cont de toți acești factori în măsură egală, stiind că fiecare are rolul lui bine definit.
1Drag and Drop– Reprezintă o activitate prin care programatorul selectează un element și îl inserează cu un simplu click într-o altă locație din proiect sau chiar în alt proiect în funcție de locul în care este necesară folosirea lui.
1.1.3 Transferul între formulare
Pentru a transfera datele de pe un formular pe altul este nevoie să declarăm o variabilă statică1 în formularul numărul unu și să o acesăm în formularul numărul doi.
public static int variable1;
// declararea variabilei in Form1
Form1.variable1 = 10;
// Schimbarea valorii variabilei in Form1
int temp = Form1.variable1;
//Acesarea variabilei in form 2
Ca ajutor am folosit o variabila de tip intreg pe care am numit o temp pentru a retine valoarea variabilei din Form. Dar, acest cod este util doar cand vrem ca in Form2 sa accesam variabila nu si sa o modificam.
Daca dorim ca in Form2 sa modificam valoarea variabilei avem nevoie de set2 respectiv get3.
private static int _variable1;
public static int variable1{
get // Acest accesor ne dă posibilitatea să acesam variabila în form 2
{
return _variable1;
}
set // Acest accesor ne dă posibilitatea modificării ei
_variable1 = value;
}
}
Acesta este codul care ne permite să și modificăm valoarea variabilei, am folosit o variabilă static _variable1 și o variabila de tip întreg variable1, datorită tipului diferit putem folosi același nume pentru fiecare cele două variabile. Noțiunea de public o să fie explicată în capitolul 2 al lucrării de față, dar pentru moment este suficient să știm că dacă declarăm o variabilă de tip public, ea este vizibilă peste tot în clasa respectivă. Acest transfer este foarte util în aplicații în cadrul cărora dorim să efectuăm diferite calcule. De exemplu, un program care afișează numele utilizatorului conectat îl poate lua din formularul din conectare cu codul de mai sus. Un alt exemplu de folosire al acestui transfer poate fi un program folosit în cadrul unei companii de telefonie mobilă, formularul care înregistrează datele fiecărui utilizator poate lua numărul de telefon al acestuia din alt formular în care se află doar acest gen de date, folosind un cod asemănător cu cel descris mai sus.
1Variabila statica- http://stackoverflow.com/questions/10795502- Pentru mai multe informații despre acest concept.
2Set- Este o metodă care ne permite să dăm o valoare elementului respectiv pe care îl accesăm.
3Get- Este o metodă care ne permite să folosim valoarea pe care am dat-o prin Set.
1.1.4 Elementele: Button, List, TextBox, Picture Box, Label
Cele mai folosite elemente in creearea de aplicatii windows form c sharp sunt cele mentionate in titlul acestui subcapitol. Butonul, probabil cel mai folosit element, exista in program sub o varietate uriasa de forme si tipuri si este folosit in special pentru a face o actiune imediata cu evenimentul On Click1. Din punct de vedere al functionalitatii butoanele pot fi:
Push button, adica un buton care la click efectueaza o anumita actiune ca de exemplu afisarea unui mesaj pe ecran. In Windows Form clasa Button reprezinta initial un Push Button.
Radio Button sau Option Button este folosit pentru a allege o optiune dintr-o gama larga de variante. Cand o optiune este aleasa toate celelalte sunt dezactivate. Windows Forms ofera clasa RadioButton pentru creearea acestor obiecte.
Check Box Button este un buton care permite utilizatorului sa aleaga o optiune sau alta: On or Off 2.
Fig 1.4 Push Button Radio Button Check Box Button
Elementele de tip lista prezinta o colectie de obiecte ca pe o lista din care utilizatorul alege ceea ce doreste. Sunt elemente asemanatoare cu TextBox si Button, dar depinde de versiunea programului Visual Studio.
Marele avantaj al elementelor de tip lista este ca ele contin obiectele direct si nu este nevoie de o clasa suplimentara pentru manipularea lor. Din punct de vedere al functionalitatii ele se impart in trei categorii, fiecare destul de greu de folosit si cu caracteristici avansate: List View, TreeViev si DataGridView.
Fig 1.5 Tree View, List View si List Box
Din figura 1.5 putem observa evolutia elementelor de tip Lista in mediul de programare visual studio.
On Click- Acesta este evenimentul predefinit in programarea C# Windows Forms. Mai multe informatii despre el se pot afla aici- https://msdn.microsoft.com/en-us/library/OnClick
On or Off- Acest concept in informatica se refera la pornire si oprire, adica fie o optiune este activa fie cealalta, nu pot fi ambele in acelasi timp. Daca avem un program care se ocupa de managementul studentiilor unei facultati, putem avea optiunea de afisare studenti, iar ca OFF de iesire din program.
Elementele de tip Text Box sunt foarte comune in programele Windows Form Application deoarece mereu este nevoie de operatii cu numere sau ca utilizatorul sa introduca o anumita valoare. Sunt foarte utile cand dorim introducerea unei singure valori, dar in momentul in care dorim sa introducem mai multe valori se recomanda listele. Spre deosebire de liste, la butoane, daca vrem sa accesam valori din diferite obiecte ne ne trebuie clase diferite. Elementele de tip Picture Box sunt folosite pentru a insera in program diferite imagini, cele mai intalnite sunt cele de tip JPEG1. Imaginea pe care dorim sa o arate programul poate fi pusa direct in design cu ajutorul unei proprietati a elementului Picture Box sau poate fi inserata cu ajutorul codului. Codul prin care putem pune in program orice imagine arata in felul urmator:
pictureBox1.Image=Image.FromFile(“c:\\testimage.jpeg”);
Marimea imaginii poate fi schimbata usor si din interiorul codului, este nevoie doar sa stim cateva metode din clasa ei:
AutoSize- Ajusteaza imaginea dupa marimea formularului
Center Image- Pune imaginea in centrul formularului
Normal- Pune imaginea in stanga sus
Stretch Image- Ajusteaza imaginea dupa codul dat.
Elementele de tip label sau eticheta sunt foarte intalnite in majoritatea programelor de acest gen. Cu ajutorul acestor elemente putem insera text oriunde pe suprafata formularului pentru a ajuta utilizatorul cu anumite informatii referitoare la functionarea programului sau la modul de folosire a acestuia. Clasa pentru label este definite in System. Windows. Forms namespace [2] , iar daca dorim sa setam textul pentru eticheta putem folosi urmatorul cod:
label1.Text = "This is my first Label";
In codul de mai sus apelam o metoda text pentru a inlocui continutul initial al elementului de tip label cu textul aflat intre ghilimele.
Fig 1.6 Label cu text setat
JPEG- Reprezinta o posibilitate de compresie a imaginilor digitale, mai multe detalii despre ea se pot gasi aici- https://ro.wikipedia.org/wiki/JPEG
Namespace- Reprezinta un cuvant cheie folosit pentru a declara obiecte cu un anumit scop.
1.1.5 Adobe PDF Reader
Acest element este folosit mai rar, de aceea nu este prezent implicit in meniul cu elementele oferite de catre program, dar poate fi adaugat urmand cativa pasi simpli:
Dam click dreapta pe meniul toolbox si alegem Choose Items
Selectam COM Components si alegem Adobe Reader
Dam click pe OK
Fig 1.7 Meniul Choose Toolbox Items
Codul pentru deschiderea in formular a fisierelor de tip PDF este urmatorul:
private void button1_Click(object sender, EventArgs e)
{
{ // Deschidem un dialog
OpenFileDialog dlg = new OpenFileDialog();
// Folosim un filtru pentru a vedea doar fisiere de tip pdf
dlg.Filter = "pdf files (*.pdf) |*.pdf;";
dlg.ShowDialog();
if (dlg.FileName!= null)
{
// Fisierul ales il introducem in formular
axAcroPDF1.LoadFile(dlg.FileName);
}}}
Pentru a putea efectua deschiderea fisierelor a fost nevoie sa folosim Open File Dialog[1] si axAcroPDF1[2].
Open File Dialog- mai multe informatii aici- https://msdn.microsoft.com/en-us/library/cc221415.aspx
AxAcroPDF1- Reprezinta numele implicit folosit de catre program pentru a se referi la elementul PDF.
1.1.6 Gestionarea timpului aplicatiei
“ Timpul exista pentru ca lucrurile sa nu se intample in acelasi timp” (Albert Einstein, 1939). Este foarte important sa stim gestiona timpul aplicatiei, adica timpul cand trebuie sa se execute o anumita functie si cand nu trebuie sa se execute. Cel mai folosit element pentru gestionarea timpului aplicatiei este Timer. Acesta permite programatorului sa foloseasca evenimente la un anumit interval de timp fara interventia altor fire de executie1. Cu ajutorul timer-ului putem controla timpul programului in ore, minute, secunde si milisecunde, programul oferindu-ne posibilitatea sa setam timpul de executie al timer-ului fara sa fim nevoiti sa scrim cod, acest lucru se realizeaza din fereastra de proprietati.
Fig 1.8 Proprietatile elementului Timer
Un alt element care ne arata timpul este MonthCalendar care se poate folosi pentru a afla o anumita data din timp sau pentru a indica data la care ne aflam si pentru a aplica diferite modificari programului la o anumita data viitoare.
Fig 1.9 MonthCalendar
Fire de executie- Reprezinta o instanta a clasei Thread, iar mai multe informatii despre acest concept se afla aici- http://andrei.clubcisco.ro/cursuri/2poo/co/Curs13.PDF
1.1.7 Operatii cu fisiere
De foarte multe ori in programele noastre suntem nevoiti sa lucram cu fisiere de diferite tipuri si marimi. Ceea ce ne intereseaza la prelucrarea fisierelor este sistemul de intrare iesire care, in C sharp este construit ca o ierarhie de clase pe baza conceptului de stream1. Toate operatiile de intrare iesire efecutate de catre program folosesc stream-uri. Programul asociaza streamurile cu dispozitivele fizice de exemplu disc magnetic, dar toate aceste streamuri sunt la fel, spre deosebire de dispozitive care sunt diferite. Un stream este o entitate2 abstracta care fie consuma fie produce informatie.
Componenta SaveFileDialog permite utilizatorului sa caute in sistem fisiere si sa le selecteze pentru a fi salvate. Dialogul returneaza calea si numele fisierului ales de utilizator, dar pentru a fi deschis fisierul trebuie sa scriem cod.
SaveFileDialog saveFileDialog1 = new SaveFileDialog();// defineste dialogul
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Save an Image File"; // seteaza titlul pentru dialog
saveFileDialog1.ShowDialog(); // face dialogul vizibil
System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile();
Elementele de tip SaveFileDialog nu pot fi adaugate direct pe formular, ele sunt adaugate in bara de jos a acestuia, dar pot fi folosit exact ca elementele adaugate direct. Dar pentru a putea efectua orice operatie asupra fisierelor trebuie sa includem in header-ul2 programului System.IO. Aceasta linie de cod include o biblioteca a programului care contine toate functiile necesare pentru intrare si iesire. Principalele operatii cu fisiere sunt de citire si scrire in interiorul acestora, dar pot exista si operatii de cautare, stergere sau afisare a datelor din fisiere.
Pentru a putea folosi stream trebuie sa respectam cativa pasi:
Sa identificam fisierele care contin data de care avem nevoie
Sa conectam un stream la ele
Sa folosim un Reader sau Writer pentru ele
Sa facem operatii asupra datelor
Stream- Reprezinta o clasa abstracta, fiecare element al ei are un rol important in operatiile cu fisiere.
Header- Reprezinta partea de sus a programului, adica ceea ce scriem pe primele linii, si este interpretat de catre preprocesor inainte de a fi compilat codul.
1.1.8 Elemente audio
De multe ori in interiorul unui program este nevoie de anumite sunete care sa avertizeze utilizatorul cu privire la diferite activitati ale modulului respectiv. In aplicatiile de tip Windows Forms C sharp, conceptul de redare al sunetelor este extins si putem sa avem o gama variata de sunete, pornind de la sunetul clasic \a1 pana la orice fel de melodie au videoclip dorim sa inseram in interiorul formularului. Cu ajutorul acestui soft putem realiza chiar si un program specializat pentru a rula orice fel de fisier muzical. Spre deosebire de celelalte elemente predefinite in program, pentru a lucra cu elemente audio trebuie sa introducem noi aceasta optiune.
Elementul care ne permite sa introducem fisiere de tip audio este Windows Media Player, acesta trebuie adaugat de catre noi, deoarece nu exista implicit in meniul Toolbox2. Pentru aceasta dam click dreapta pe ToolboxChoice Items Windows Media Player apoi il selectam si il introducem in programul nostru. Odata introdus in formular acest element arata in felul urmator:
Fig 1.9.1 Windows Media Player
Pentru a efectua diferite operatii cu acest player trebuie doar sa dam click dreapta pe el si sa alegem proprietatea dorita. Daca dorim sa scriem cod care sa ii produca un anumit effect alegem din fereastra de evenimente cel pe care il dorim si dam dublu click pe el. Cel mai folosit eveniment este cel de click pe un buton, dar se pot alege si altele. Din fereastra de optiuni putem alege ca player-ul sa inceapa cu un anumit volum si cu o anumita melodie si sa apara sau nu pe tot ecranul, dar toate aceste optiuni se pot modifica din codul pe care il scriem pentru el.
\a- Reprezinta un caracter special pentru un sunet simplu generat de sistem.
Toolbox- Reprezinta meniul implicit al aplicatiei windows forms c sharp in care se afla toate elementele de care avem nevoie in momentul initial al fiecarui program.
1.1.9 Conectarea la baza de date
Mereu in programele noastre avem nevoie de foarte multe date. Din 1.1.7 ne putem da seama ca uneori operarea cu fisiere poate fi foarte dificila, iar datele trebuie organizate altfel. In acest sens, Windows Forms Application C sharp, permite conectarea la baze de date de diferite tipuri. In mod implicit putem folosi serverul Visual Studio pentru a creea o baza de date, dar noi vrem in lucrarea de fata sa ne conectam la o baza de date cu specific SQL. Codul pentru conectarea la baza de date arata in felul urmator:
MySqlConnection mcon= new MySqlConnection("datasource=localhost;port=3306;username= root;password=");
MySqlCommand mcd;
MySqlDataReader mdr;
Deschidem o noua conexiune numita mcon, iar pentru a genera conexiunea avem nevoie de urmatoarele informatii:
Datasource- Adica sursa de unde luam datele, daca este locala ea va fi localhost
Portul- Adica numarul pe care se desfasoara conexiunea, daca este de pe acelasi calculator el va fi 3306
Username- Reprezinta numele de utilizator al bazei de date care este implicit root
Passoword- Reprezinta parola de acces la baza de date, aici implicit nu are parola
Pentru a putea efectua interogarii si alte functii SQL avem nevoie de o comanda MySqlCommand pe care o numim mcd. Despre SQL si majoritatea functiilor sale, baze de date si mediul MYSQL v-om vorbi in subcapitolul 1.3.
Pentru a putea prelucra datele din baza de date avem nevoie de o comanda MysqlDataReader pe care o numim mdr. Pentru a putea prelucra datele procedam astfel:
try
{
mcon.Open();// Deschiderea conexiunii
// Operatii asupra datelor din baza de date
catch (Exception ex)
{ MessageBox.Show(ex.Message); }// mesaj pentru eroare
mcon.Close(); // Inchiderea conexiunii
}
1.2 Android Studio
Majoritatea telefoanelor mobile de pe piata utilizeaza sistemul de operare android, iar aplicatiile de acest gen sunt foarte mult folosite si foarte bine vandute in toata lumea. Toate programele necesare pentru a creea o aplicatie android se gasesc pe internet in mod gratuit, nu trebuie sa platim nimic pentru a avea posibilitatea sa creem aplicatii. Daca dorim sa vindem o aplicatie facuta de noi ne trebuie doar un cont Google Play care ne cere o taxa nesemnificativa. Un soft foarte bun pentru a creea aceste aplicatii este Android Studio.
Android Studio este IDE-ul1 official pentru dezvoltarea de soft pentru telefoane mobile cu sistem de operare android. A fost anuntat inca din luna mai a anului 2013 la o conferinta a companiei Google si este disponibil in mod gratuit pentru toti cei care doresc sa incerce astfel de programare. Pentru a developa aplicatii android, trebuie sa instalam programul Android Studio impreuna cu programul Java SDK si sa creem un telefon virtual sau sa ne conectam prin USB2 propriul telefon la calculatorul pe care dorim sa compilam3 aplicatia.
Programarea telefoanelor cu sistem de operare android se poate face in principiu cu mai multe soft-uri, dintre care: Eclipse, Visual Studio, Android Studio, etc. Avantajul acestui soft este dat de faptul ca este construit special pentru programarea android si ofera numeroase facilitati noi:
Genereaza mai multe fisiere APK
Are diferite module de aplicatii gata facute pentru a ajuta programatorul
Poate folosi functia drag and drop
Are design si multe elemente
Posibilitate de a studia compatibilitatea aplicatiei cu versiunea de android
Suport pentru Google Cloud4
Programarea android este orientata pe obiect, iar limbajul de programare folosit este Java. Nu este necesar sa fim experti in acest limbaj de programare cand scriem aplicatii android, deoarece programul ofera de la sine o gama larga de elemente ajutatoare. Din punct de vedere al aplicatiilor, pentru a reusi sa facem o aplicatie care sa fie cumparata de catre cineva este nevoie de multa creativitate, dar mediul acesta de programare ne ofera ca instrumente tot ce avem neoie. Totusi, interfata cu utilizatorul este destul de complexa si dureaza destul de mult pana ne obisnuim cu ea si cu modul de gandire specific android.
Din punct de vedere al raspandirii, Android Studio este unul din cele mai folosite software-uri pentru programarea aplicatiilor android, iar ca numar de telefoane, peste 190 de milioane utilizeaza android ca sistem de operare. Este cel mai raspandit sistem de operare folosit pentru telefoanele mobile si creste in fiecare zi cu aproximativ 1 milion de utilizatori. Android este disponibil momentan in 10 versiuni, iar acest soft permite alegerea fiecaruia.
IDE- integrated development environment
USB- Magistrala serial universala- stabileste comunicarea intre dispositive si gazda
Compilare- Verificarea de catre calculator a codului unui program
Google Cloud- Pentru mai multe informatii- https://cloud.google.com/
1.2.1 Interfata cu utilizatorul
Ceea ce vede utilizatorul cand intra intr-o aplicatie este tot ce conteaza, tot ce poate oferi o aplicatie trebuie sa fie vizibil si usor de folosit. Din punct de vedere al interfetei cu utilizatorul, aplicatia Android Studio ofera o varietate de componente pentru a veni in ajutorul programatorului.
Fig 1.2 Interfata Android Studio1
In partea stanga avem structura proiectului, unde avem toate fisierele necesare pentru constructia aplicatiei. Designul aplicatiei se afla in folderul res, partea de programare java este in folderul java, iar tot ce folosim ca si poze se afla in folderul drawable. In partea de jos avem terminalul unde putem sa dam diferite comenzi si butonul care ne arata daca avem conectate la aplicatie diferite dispositive cu sistem de operare android. Meniul superior al aplicatiei ne ofera butonul clasic de compilare a codului scris si posibilitatea de a selecta pe ce fel de rezolutie a ecranului rulam aplicatia. Putem alege dintr-o gama larga de telefoane disponibile si putem vedea modul in care evolueaza aplicatia noastra pe diferite rezolutii.
Meniul din partea dreapta include butonul de cautare, unde putem cauta orice element din softul android. Fiecare element care este folosit in design are proprietatiile lui si poate fi intializat odata cu rularea aplicatiei sau la diferite activitati. Proprietatiile fiecarui element se gasesc in partea din dreapta jos a aplicatiei. Spre deosebire de limbajul de programare c# forms unde totul se desfasoara pe evenimente, in programarea android fiecare actiune se bazeaza pe o activitate. Punctul forte al acestui soft este faptul ca ofera posibilitatea observarii actiunii codului imediat dupa ce a fost scris cu ajutorul designului present in centrul softului. Programul ne ofera si meniul de setari in care putem alege gama de culori preferata si modul de afisare dorit al fiecarui meniu al programului.
Sursa pozei este: https://extremegtx.wordpress.com/2015/01/07/android-studio-the-user-interface/
1.2.2 Rularea aplicatiei
Din punct de vedere al rularii aplicatiei android studio ne ofera doua posibilitati: fie rulam aplicatia pe un telefon virtual construit in aplicatie, fie pe un telefon real conectat prin USB1. Acest modul de compilare ne permite mai multe activitati:
Selectarea device-ului pe care dorim sa rulam aplicatia
Capturarea de imagini in timpul rularii aplicatiei
Evaluarea codului si a variabilelor in timpul rularii
Oprirea diferitelor portiuni de cod de la compilare
Atunci cand dorim sa compilam aplicatia, Android Studio construieste o versiune speciala a aplicatiei noastre destinata strict rularii, o conecteaza la dispozitivul selectat de catre noi si o ruleaza pe acesta. Interfata cu utilizatorul ne arata diferite informatii in timp ce aplicatia ruleaza pentru a putea controla firul de executie2. Pentru a putea rula aplicatia trebuie sa urmam cativa pasi:
Deschidem proiectul in Android Studio
Selectam Debug in fereastra de Toolbar
In fereastra Choise Device alegem dispozitivul pe care dorim rularea aplicatiei
Dam click pe OK
Fig. 1.3 Meniul Choose Device
In fig. 1.3 vedem doua telefoane reale conectate la aplicatie si un telefon virtual creeat cu ajutorul Android Studio. Api reprezinta o valoare numerica, prin care putem vedea versiunea de android prezenta pe dispozitivele respective. Api variaza intre 1 si 22 iar 16 inseamna versiunea 4.1 de android.
Vezi referinta 1.2- 2
Vezi referinta 1.1.6- 1
Sursa pozei- http://android4beginners.com/2013/06/lesson-0-7-running-an-android-app-in-a-real-device-but-you-dont-need-any-to-create-an-app/
1.2.3 Android XML
Android studio ne ofera un editor destul de avansat pentru a construi designul aplicatiei noastre care foloseste functia drag and drop si ne permite sa vedem o imagine initiala a ceea ce vrem sa rulam. In acest editor putem alege intre functia Text unde editam noi fisierele XML si functia Design care ne arata rezultatul. Tot ceea ce editam noi in text se modifica automat si in Design. De exemplu daca vrem sa afisam pe ecran un buton si ii gresim numele in cod, in design ne va aparea o eroare care ne permite sa observam imediat unde am gresit, dar si sa ne corectam direct eroarea.
Prescurtarea Xml provide de la Extensible Mark-up Language, si este cel mai popular format pentru afisarea datelor atat in programe cat si pe internet. Android ne pune la dispozitie trei tipuri de folosire a Xml: DOM, SAX, si XMLPullParser. Dintre toate, cel mai usor de folosit si cel recomandat este XMLPullParser. Un fisier Xml incepe cu prologul care reprezinta prima informative dintr-un fisier de tip Xml. Fisierele Xml au si evenimente, fiecare fisier poate avea unul sau mai multe si de obicei sunt de tipul Document start, Document ends, Tag starts, Tag ends etc. Pe langa aceste elemente, fisierele Xml contin in principal text, care poate fi afisat sub diferite forme si dimensiuni si este mereu inconjurat de taguri xml. Motivul pentru care se folosesc fisiere Xml este introducerea de date in aplicatie, dar si transferul si prelucrarea lor pentru diferite scopuri. Marele avantaj al fisierelor de tip Xml este sunt usor de citit pentru utilizator si pot fi recunoscute usor de catre browserele web si astfel textul continut de catre ele este usor de gasit cu algoritmi de cautare. Din punct de vedere al functionalitatii fisierele Xml nu pot fi interpretate ca si cod, ele practic nu fac nimic, sunt doar folosite a structura, depozita si transfera informatia dintr-o parte in alta.
Principalul scop pentru care a fost creeat Xml este transferul de date, de multe ori, calculatoarele contin informatii in formate incompatibile, iar transferul de date intre acest gen de calculatoare este o munca foarte grea care dureaza mult timp. Datele enorm de mari trebuie convertite la o anumita forma si multa informatie se pierde. De aceea pentru a stoca toate aceste date se foloseste Xml, ceea ce se stocheaza astfel este usor de citit de catre toti cei care au nevoie de la om care vrea sa afle o informatie pana la cele mai complicate calculatoare. Din punct de vedere al programarii, xml nu este un limbaj de programare, el vine impreuna cu Html Css si Java Script si partea lui este doar stocarea informatiei, iar celelalte se ocupade design-ul si prelucrarea ei.
Un exemplu de cod Xml care ne afiseaza informatii referitoare la o carte este urmatorul:
<? xml version="1.0" encoding="UTF-8"?>
<MagazindeCarti>
<carte category="gatit">
<titlu lang="ro">Carte de bucate</title>
<autor>Daniel Toporan</autor>
<an>2010</an>
<pret>30.00</pret>
</carte>
</MagazindeCarti>
In primul rand din cod definim versiunea de Xml folosita, aceasta este prima versiune aparuta adica 1.0. Formatul folosit pentru codarea informatiei este UTF-8 care reprezinta o metoda de codare a caracterelor cu lungime variabila si foloseste de la 1 pana la 4 octeti. Ceea ce se poate observa este ca avem ca si elemente de tip tag orice sir de caractere dorim noi, nu folosim un set de tag-uri predefinite ca in limbajul HTML1. Putem observa ca fiecare tag este subordonat altuia, este o relatie de tip tag copil- tag parinte, iar din punct de vedere informatic, aceasta tehnica se numeste transcriere structurala2 si este foarte utila pentru a observa de cine apartine fiecare element al codului scris.
1.2.4 Activitati
Atunci cand dorim sa incepem un program in Android Studio primul lucru pe care trebuie sa il facem este o actiune numita Activitate. In aceasta activitate are loc interactiunea cu utilizatorul, adica o activitate reprezinta ceea ce vede cel care foloseste aplicatia la un moment dat. Fiecare ecran al aplicatiei poate fi asociat cu o activitate, iar din punct de vedere al constructiei avem cel putin o activitate in fiecare aplicatie, dar putem avea si mult mai multe.
<Button
android:onClick=”send Message” />
Codul de mai sus reprezinta un atribut al metodei onClick, iar de fiecare data cand utilizatorul da click pe butonul respectiv, se apeleaza metoda java send Message, care poate contine diferite alte metode sau programe.
Fig 1.4 Ciclul de viata al unei activitati1
Din figura 1.4 vedem ca in ciclul de viata al unei activitati apar mai multe metode:
onCreate(): Cand creem o activitate apelam automat aceasta metoda. Aici initializam fiecare element al interfetei cu utilizatorul.
OnStart(): Aceasta metoda se apeleaza exact inainte de a rula aplicatia. Aici adaugam toate elementele grafice care vor aparea imediat ce aplicatia ruleaza.
OnResume(): Aceasta metoda se apeleaza intre activitatile aplicatiei. Aici putem reactualiza diferitele elemente de grafica pe care le folosim.
OnPause(): Inaintea folosirii unei activitati din aplicatie aceasta metoda se apeleaza. Aici oprim diferitele elemente specifice activitatii trecute.
onStop(): Metoda aceasta se apeleaza exact dupa metoda OnPause(). Aici putem salva progresul activitatii respective.
OnRestart(): Aceasta metoda se apeleaza imediat dupa onStop(). Este urmata mereu de metoda OnStart();
onDestroy(): Aceasta metoda este ultima apelata inainte de distrugerea activitatii. Metoda cea mai bine optimizata de distrugere este finish();
Pentru a creea o activitate noua din meniu alegem: NewActivityType. In ce priveste tipul putem alege activitati simple, exemplu Blank Activity.
Sursa- http://www.raywenderlich.com/wp-content/uploads/2015/09/activity_lifecycle_pyramid.png
1.2.6 Bazele programarii android
Pentru a putea scrie cod in mediul de programare android studio trebuie sa stim ca:
Ceea ce vrem sa faca aplicatia trebuie sa scriem in limbajul de programare Java si avem fisiere speciale pentru fiecare activitate.
Cand aplicatia este gata o sa folosim o unealta de tip tool pentru a compila toate fisierele si a le impacheta intr-un singur fisier .apk care poate fi rulat pe telefonul mobil sau chiar pus pe Google Play.
Toate fisierele folosite sunt controlate de un IDE. Acesta este cel in care ne desfasuram toata activitatea.
Mediul standard de programare este Eclipse, dar in lucrarea de fata vom folosi Android Studio.
Cand dorim sa incepem constructia unui proiect nou ne intalnim cu trei notiuni:
New Project- notiunea familiara pentru inceperea unui proiect nou.
Gradle- este un instrument nou, usor de folosit, dar care ofera destul de multe optiuni avansate daca dorim sa il aprofundam. El este cel care ia codul nostru Java si continutul xml si il impacheteaza in fisierul cunoscut ca APK file.
Maven- este un instrument folosit impreuna cu Gradle.
Cu toate aceste notiuni intelese putem incepe constructia unui exemplu simplu “Hello World”. Pentru a putea functiona aplicatia trebuie sa scriem cod in doua fisiere. Unul numit activity_main.xml creeat automat cand alegem optiunea New Project si unul numit MainActivity.java creeat automat in acelasi moment.
Continutul fisierului activity_main.xml este urmatorul:
Continutul fisierului MainActivity.java este urmatorul:
Dupa ce avem codul in cele doua fisiere putem incepe compilarea programului. Alegem Run sau Debug si obtinem urmatorul rezultat:
Fig 1.4 Rezultatul compilarii aplicatiei Hello World
1.2.7 Elementele Widgets
Pentru a creea o aplicatie, Android Studio ne ofera o gama larga de elemente disponibile pe care noi le putem personaliza asa cum dorim, cateva dintre aceste elemente le voi prezenta in ceea ce urmeaza:
Large text- ne ofera posibilitatea de a insera in aplicatie un string de marime mare.
Medium text- acest element ne da posibilitatea sa inseram un text de marime medie.
Button- Acesta este cel mai folosit element si de obicei prin evenimentul OnClick trece de la o activitate la alta.
Radio Button- acest element ne ofera posibilitatea de a alege din una sau mai multe variante iar in functie de alegere codul merge pe o parte sau alta.
Check Box Button- acest element este folosit pentru a folosi ceea ce alege utilizatorul
ImageButton- acest element este foarte asemanator cu butonul, dar ca si fundal are o imagine pe care o dorim noi.
Progress Bar- este un element folosit pentru a ascunde incarcarea aplicatiei sau diferite procese din spatele ei.
Din punct de vedere al informatiilor aceste elemente pot fi clasificate astfel:
Elemente pentru prelucrarea informatiei- Sunt de obicei cele care ofera utilizatorului diferite informatii utile. De obicei sunt folosite in aplicatiile care arata ora si data sau aplicatiile de categorie sportive in cadrul carora arata diferite scoruri.
Elemente pentru colectie- Sunt de obicei acele elemente folosite pentru a arata diferite tipuri de date. Sunt folosite la aplicatiile de email sau de stiri in general, iar ca activitate cea principala este cea de scroll1.
Elemente pentru control- Sunt acele instrumente folosite pentru unele facilitate ale aplicatiei care se pot folosi direct din home screen1, fara a fi nevoie sa deschidem aplicatia in sine. Exemple de astfel de aplicatii sunt cele de muzica, in care utilizatorul poate folosi functiile start, stop si pause pentru a asculta muzica, inainte de a intra in aplicatia propriu zisa.
Elemente hybrid- Sunt acele elemente care combina cele trei categorii de mai sus in diferite moduri.
Scroll- Reprezinta activitatea de a muta partea vizuala a ferestrei in diferite parti, sus, jos, stanga sau dreapta pentru a vedea si alte informatii.
1.2.8 Design-ul unei aplicatii
Din punct de vedere al design-ului unei aplicatii, este foarte important modul in care combinam diferitele nuante de culori, dar si cat de mult scoatem in evidenta partiile mai importante din aplicatie.
Fig 1.5 Paleta de design a unei aplicatii
Codul pentru design-ul paletei:
<resource>
<style name="AppTheme" parent="android:Theme.Material">
<item name ="android:color/primary">@color/primary</item>
<item name ="android:color/primaryDark">@color/primary_dark</item>
<item name ="android:colorAccent/primary">@color/accent</item>
</style>
<resource>
Stilul unei aplicatii defineste formatul si modul in care arata partea de dialog cu utilizatorul. Un stil poate fi aplicat doar unei parti a aplicatiei folosind un fisier layout, sau intregii aplicatii folosind un fisier manifest. O tema este un stil android aplicat intregii aplicatii nu doar unei anumite zone. Platforma android ofera o gama larga de teme si stiluri pentru a personaliza fiecare aplicatie in functie de modul in care dorim sa o facem.
In clasa R.style putem gasi toate stilurile disponibile, dar ne putem creea si noi propriile stiluri cu ajutorul programarii. Daca totusi vrem sa folosim stilurile pe care ni le ofera aplicatia tot ce trebuie sa facem este sa ne uitam in continutul clasei mentionate mai sus sis a inlocuim numele stilului dorit. De exemplu putem alege tema Theme_NoTitleBar. Aplicarea temei se poate face in felul urmator:
“@android:style/Theme.NoTitleBar”.
1.2.9 Conectarea la baza de date
Pentru a folosi android studio conectat cu o baza de date, avem doua posibilitati: fie creem baza de date si toate tabelele ei folosind cod, fie utilizam o baza de date deja existenta. Conectarea android studio cu o baza de date se poate face in mai multe moduri si cu ajutorul mai multor programe. In ceea ce urmeaza o sa conectam android studio la o baza de date de tip MySQL. Pentru a conecta android studio la o baza de date MySQL putem folosi doua metode: Get si Post. Daca dorim sa folosim metoda Get o sa folosim doua functii ale acestei metode: HttpGet si HttpClient. Codul pentru aceste metode arata astfel:
URL url = new URL(link);
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(link));
Dupa ce folosim acest cod, trebuie sa apelam functia execute si o sa obtinem ca raspuns un obiect. Apoi trebuie sa folosim un stream pentru a primi datele:
HttpResponse response = client.execute(request);
BufferedReader in = new BufferedReader
(new InputStreamReader(response.getEntity().getContent()));
Pentru a pune informatiile in baza de date folosim urmatoarea metoda:
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(FeedEntry.COLUMN_NAME_ENTRY_ID, id);
values.put(FeedEntry.COLUMN_NAME_TITLE, title);
values.put(FeedEntry.COLUMN_NAME_CONTENT, content);
key value of the new row
long newRowId;
newRowId = db.insert(
FeedEntry.TABLE_NAME,
FeedEntry.COLUMN_NAME_NULLABLE, values);
Cu ajutorul metodei get luam datele din baza de date, apoi folosind operatorul new putem sa creem un obiect in care sa retinem valorile necesare. Apoi creem o noua mapa de valori in care numele coloanelor sunt cheile necesare, iar apoi declaram o variabila de tip long pentru a insera pentru fiecare inregistrare un rand nou. Pentru a afisa in aplicatie datele din baza de date folosim ca elemente fie ListView fie GridView. Diferenta intre cele doua component este ca cel de tip GridView afiseaza pe langa informatii si linii de grid.
Pentru a sterge un rand din tabel trebuie sa il selectam, apoi sa folosim un criteriu pentru identificarea randurilor dorite. Baza de date contine un mecanism pentru selectia automata a randurilor dorite. Pentru a sterge continutul selectat folosim comanda delete, iar codul pentru a face acest lucru arata astfel:
String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?";
String[] selectionArgs = { String.valueOf(rowId) };
db.delete(table_name, selection, selectionArgs);
Ceea ce se poate remarca este folosirea unui sir de caractere si a unei variabile de selectie numita selection. Foarte important este faptul ca in cazul utilizarii unui sir de tip string, lungimea lui poate sa fie oricat de mare, iar prin utilizarea comenzii SQL LIKE, putem selecta din baza de date doar ceea ce este asemanator cu datele introduse de noi. Practic, codul selecteaza un tabel ales de noi din baza de date, apoi folosind comanda delete sterge continutul acestuia.
1.3 MYSQL
Reprezinta un sistem de gestiune a bazelor de date produs de firma MySQL AB avand ca sediu central un oras din Suedia. Este cel mai folosit si popular SGBD1 si cea mai importanta componenta a stivei LAMP2. De cele mai multe ori este folosit impreuna cu limbajul de programare PHP, dar aceasta nu este singura optiune disponibila pentru a utiliza acest sistem de gestiune al bazelor de date. In aplicatia de citire a bibliei am folosit MySQL impreuna cu limbajul de programare c# si am putut utiliza toate facilitatile bazelor de date. Folosirea programului MySQL necesita existenta unui server care poate fi de diferite tipuri, iar baza de date trebuie urcata pe server si utilizatorul trebuie sa se conecteze la ea. Pentru conectare avem nevoie de un nume de utilizator si o parola, iar daca se face de pe un alt calculator avem nevoie si de host1 name. Initial, daca nu sunt facute schimbari, numele de utilizator este root, parola nu exista, iar host-ul este calculatorul pe care ne aflam. De ce este util acest sistem de gestiune al bazelor de date? Acest sistem este util in cazul in care avem un numar urias de date si vrem sa vedem doar o parte din acestea. De exemplu, la aplicatia de citire a bibliei am un table MySQL cu fiecare verset din biblie, iar undeva in program doresc sa afisez doar un verset anume si pot face acest lucru destul de usor cu ajutoriul Interogarilor SQL1.
Pentru a ne conecta la serverul SQL putem folosi direct comenzi scrise in command prompt:
[root@host]# mysql -u root -p
Enter password:******.
Utilizatorul se introduce in loc de -u si este de obicei root, dar poate fi inlocuit cu oricare altul, iar parola se introduce in loc de -p si de obicei lipseste. Daca avem totusi o parola, o introducem in a doua linie de comanda. Comenzile principale sunt:
SELECT- Selecteaza date din tabelul dorit al bazei de date
INSERT- Introduce date in tabelul dorit al bazei de date
UPDATE- Modifica date in baza de date
DELETE- Sterge anumite date din orice tabel al bazei de date
LIKE- Selecteaza din baza de date elemente asemanatoare cu un text dat
SGBD- Sistem de gestiune a bazelor de date
LAMP- Linux, Apache, MySQL si PHP
HOST- Numele locului unde ruleaza serverul
INTEROGARI SQL- Vezi 1.3.4
1.3.1 Utilizarea WAMP
Pentru a putea folosi MySQL avem nevoie de un server, iar una din variantele usoare pentru acest lucru este programul WAMP. Numele scoate in evidenta principalele puncte forte ale acestuia:
Windows- Sistemul de operare
Apache- Serverul Http
MySQL- Instrumentul pentru bazele de date
PHP- Limbajul de programare folosit pentru creearea aplicatiilor
Acest program ajuta la creearea de aplicatii web in combinatie cu alte instrumente ajutatoare ca Apache, PHP si baze de date MYSQL. La aplicatia de licenta am ales sa folosesc acest program, deoarece ofera o interfata cu utilizatorul usor de inteles si folosit si un sistem de management al bazelor de date destul de simplu si compact. Instalarea programului este foarte simpla, tot ce avem de facut este sa accesam siteul: http://www.wampserver.com/en/. De aici descarcam versiunea de WAMP dorita, parcurgem cativa pasi simpli de instalare si avem WAMP server pe calculatorul personal. Resursele necesare pentru rularea programului sunt minime, iar facilitatile pe care le ofera sunt numeroase. Dintre acestea putem lua in considerare:
Sistemul compact de gestiune al bazelor de date si al tabelelor fiecareia.
Managementul usor al setarilor serverului
Posibilitate de oprire si pornire a serverului permanenta
Rapiditate si reactualizare imediata
Instrumentul PhpMyAdmin pentru controlul bazelor de date
Odata instalat programul, trebuie sa il pornim. Acest lucru se realizeaza de la butonul Put Online, iar apoi trebuie sa alegem serviciile dorite sau dam StartAllServices. Apoi putem vedea rezultatele accesand http://localhost/. Totusi, programul ruleaza pe portul cu numarul 80, iar in cazul in care acesta este ocupat, programul va da eroare. De obicei portul 80 este folosit de catre Skype.
Putem urmarii foarte usor functionalitatea programului, doar urmarind culoarea acestuia. Astfel, daca fundalul programului este culoarea verde serverul functioneaza, iar daca este culoarea rosie nu functioneaza.
1.3.2 Localhost si phpmyadmin
Din punct de vedere al retelelor de calculatoare, localhost reprezinta un nume de host adica de gazda, care inseamna acest calculator si este utilizat pentru a accesa diferite servicii ale calculatorului pe care se lucreaza. Este foarte folosit in testarea de site-uri web deoarece poate sa ofere o imagine initiala a site-ului fara a fi nevoie de configurari ale retelelor si folosind doar serverul local de pe calculator. Adresa de IP rezervata pentru localhost este de obicei 127.0.0.1. Tot ce am folosit pentru licenta legat de baze de date si comunicare este testat pe localhost-ul laptopului pe care lucrez.
PhpMyAdmin este probabil cel mai folosit soft pentru gestionarea bazelor de date de tip MYSQL. Este un soft gratuit a carui cod a fost scris in PHP si permite efectuarea de operatii asupra bazelor de date MySQL, dintre acestea cele mai importante sunt: creearea, stergerea importarea, exportarea de tabele MySQL. Tot din interiorul acestui soft putem rula interogari SQL, putem modifica continutul bazei de date si al tabelelor, dar si sa stabilim o cheie primara pentru fiecare tabel. Cele mai importante avantaje ale PhpMyAdmin sunt:
Interfata cu utilizatorul foarte prietenoasa
Posibilitate de cautare in toate bazele de date
Posibilitate de a importa datele din alte fisiere
Posibilitate de a exporta datele in orice format
Rularea tuturor comenzilor MySQL
Daca dorim creearea unei baze de date, nu putem face acest lucru direct folosind cPanelPhpMyAdmin datorita faptului ca nu avem drepturi de administrator. Totusi, pentru a creea o baza de date cu drepturi de simplu utilizator, putem folosi cPanelMySQL Databases apoi alegem numele bazei de date si apasam butonul Create Database. Uneori, bazele de date au anumite erori, fie afiseaza datele in mod gresit, fie nu apar toate datele. Pentru aceste cazuri este utila functia PhpMyAdmin de repair. In meniul de jos al aplicatiei avem posibilitatea alegerii functiei de repair, iar odata aleasa se va executa, iar cand a terminat vom primi un mesaj de confirmare. Pentru lucrul cu tabelele bazei de date, acest soft ne ofera numeroase posibilitati pentru a creea, modifica, vizualiza si sterge continutul acestora. De asemenea, daca dorim sa creem mai multe tabele cu diferite relatii intre campurile lor, cu ajutorul acestui soft putem vedea exact ce tabele sunt implicate in relatii si ce tipuri de relatii avem si putem sterge oricand o relatie sau adauga alta noua. Pentru a face acest lucru este suficient sa dam click pe meniul Relation View.
1.3.3 Introducere date
Pentru a introduce date avem in mod obisnuit doua posibilitati: fie introducem datele prin intermediul softului PhpMyAdmin si selectam fiecare camp si ii introducem valoarea corespunzatoare, fie folosim comenzi SQL pentru a realiza acest lucru. Comanda SQL folosita pentru inserarea de date este INSERT INTO si se poate folosi in doua moduri. Prima posibilitate nu specifica numele coloanelor unde vor fi inserate datele ci doar valorile care se vor insera:
INSERT INTO table_name
VALUES (value1,value2,value3,…);
A doua posibilitate specifica atat numele coloanelor unde se insereaza date cat si valorile care se vor insera:
INSERT INTO table_name (column1,column2,column3,…)
VALUES (value1,value2,value3,…);
1.3.4 Comenzi SQL
O baza de date contine, in general, unul sau mai multe tabele. Fiecare tabel este identificat dupa un nume, iar ca si continut avem randuri de inregistrari. Majoritatea actiunilor legate de baze de date se realizeaza cu diferite comenzi SQL1. Daca avem un tabel numit angajati si vrem sa afisam toate inregistrarile din acest tabel, putem folosi urmatoarea comanda:
SELECT *FROM angajati;
Pe langa aceasta comanda, mai putem folosi multe altele dintre care cele mai importante sunt:
UPDATE- Duce la ultima versiune elementele bazei de date.
DELETE- Sterge date din baza de date.
INSERT INTO- Comanda care introduce date noi in baza de date
ALTER DATABASE- Modifica elementele unei baze de date
CREATE TABLE- Creeaza un tabel nou
ALTER TABLE- Modifica un tabel
DROP TABLE- Sterge un tabel
CREATE INDEX- Creeaza un index nou pentru cautare
SQL- Pentru mai multe informatii si exemple comparative- www.w3schools.com/sql
Comanda SQL pe care am folosit-o mult in cadrul aplicatiei este WHERE. Aceasta comanda este folosita pentru a extrage doar acele date care sunt conforme cu un anumit criteriu. Sintaxa pentru aceasta comanda este urmatoarea:
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
Daca vrem sa aplicam aceasta comanda pe baza de date angajati, o posibila varianta ar fi:
SELECT *FROM angajati
WHERE Judetul='Arad';
Aceasta varianta va selecta din baza de date toti angajatii care au ca judet de domiciliu Arad.
O alta varianta de aplicare poate fi urmatoarea:
SELECT *FROM angajati
WHERE ID=1;
Aceasta varianta va selecta din baza de date angajatul care are ID egal cu valoarea 1.
1.3.5 Tabele SQL
Pentru a creea un tabel SQL folosim comanda CREATE TABLE, iar o posibila aplicare a ei poate fi urmatoarea:
create table "tablename"
("column1" "data type"
[constraint]);
Putem avea ce nume de tabele dorim, cate coloane vrem, de ce tipuri vrem, iar ce este intre paranteze [] este optional. Exemplu:
create table employee
(first varchar(15),
last varchar(20));
Numele tabelelor si numele coloanelor trebuie sa inceapa cu o litera si pot sa continue cu alta litera, numar sau diferite alte caractere. Lungimea maxima acceptata pentru nume este de 30 de caractere si nu este permisa folosirea ca nume a cuvintelor rezervate SQL, adica diferitele comenzi discutate in 1.3.4. In creearea tabelelor putem folosi anumite reguli. Aceste reguli associate unui tabel, controleaza datele introduse in acel tabel. Astfel de reguli sunt :
Unique- Semnifica faptul ca nu pot exista in acel tabel doua inregistrari cu acelasi continut, fiecare trebuie sa fie unica.
Not null- Semnifica faptul ca acea inregistrare nu poate fi nula adica fara date.
Primary key- Reprezinta o identificare unica a fiecarui rand in tabel.
Cateva din tipurile de date foarte utilizate in constructia unui tabel sunt urmatoarele:
Char(size) – Un sir de lungime fixa specificata intre paranteze. Maxim 255 bytes.
Varchar(size) – Un sir de lungime specificata intre paranteze.
Number(size) – O valoare numerica, cu maximul specificat intre paranteze.
Ce este foate important atunci cand dorim sa creem un tabel?
Este foate important ca tabelul creat de noi sa aiba un nume care nu este folosit de catre altcineva. O optiune este sa folosim datele noastre personale ca si nume pentru tabel, putem folosi initialele numelui, ziua, luna si anul nasterii. De exemplu, Har Sergiu nascut in 28 martie va avea numele de tabel astfel:
Angajati_hs2803.
Tabelul odata creat de noi ramane asa pana cand dorim sa il stergem, sau daca nu il accesam catva timp programul il sterge automat. Este foarte important ca atunci cand nu mai avem nevoie de un tabel al bazei de date sa folosim comanda DROP TABLE pentru a sterge acel tabel din memorie.
Un alt element foarte important cand vorbim de tabele este relatia in care se afla unul cu celalalt. Aceste relatii pot ajunge sa fie foarte complexe si greu de urmarit, dar din punct de vedere al constructiei pot fi doar de trei tipuri:
Unu la unu- Fiecare inregistrare din primul tabel are o singura inregistrare potrivita in al doilea tabel.
Unu la mai multi- O inregistrare din primul tabel are oricate inregistrari potrivite in cel de al doilea tabel.
Mai multi la mai multi- Mai multe inregistrari din primul tabel au mai multe inregistrari potrivite in cel de al doilea tabel.
2. Tehnici de programare comparative
Scopul unui program este sa usureze munca utilizatorului si sa execute toate sarcinile care se repeta de un anumit numar de ori. Pentru a face acest lucru, programul are nevoie de prelucrarea unui numar foarte mare de date, iar pentru a realiza aceasta prelucrare, datele trebuie impartite in diferite categorii. De exemplu, daca dorim sa ordonam alfabetic toti studentii unei universitati vom folosi o structura de date. In interiorul structurii vom retine numele si prenumele studentilor, iar apoi ii vom ordona alphabetic. Ba chiar putem sa retinem si sa folosim si alte date despre ei, de exemplu media aritmetica, specializarea sau numarul de prezente la un anumit curs.
Din punct de vedere al evolutiei tehnicilor de programare, folosirea structurilor de date reprezinta o parte destul de avansata. Pentru a vedea eficienta tehnicilor de programare, putem clasifica evolutia lor astfel:
Programare nestructurata- Un program simplu ce utilizeaza doar cateva variabile si se executa doar din metoda Main. Totusi se poate dezvolta destul de mult prin utilizarea unor instructiuni incluse in altele.
Programarea procedurala- Un program ce foloseste pe langa metoda Main si alte subprograme cu diferiti parametri, apelati odata sau de mai multe ori in programul principal. Spre deosebire de programarea nestructurata ofera marele avantaj al faptului ca un cod care se repeta poate fi scris o singura data si refolosit. Un dezavantaj este faptul ca nu se poate lucra in echipa, deoarece pe un fisier nu pot lucra simultan doi programatori.
Programarea modulara – Un program ce imbina cele doua tehnici de programare prezentate mai sus si foloseste avantajele fiecaruia. Programul imparte codul in module, care pot fi studiate separate, astfel doi programatori pot lucre la acelasi modul.
Fig 2.1 Programarea unui ATM
2.1 Programare modulara
Mereu in programele noastre avem nevoie de date. Pentru a retine datele putem folosi o variabila, care este o locatie de memorie de diferite tipuri in care putem retine o singura valoare. Daca avem nevoie sa retinem mai multe valori putem folosi un vector sau o matrice care este o structura de date in care putem retine multe valori dar toate de acelasi tip. In cazul in care dorim sa retinem mai multe valori si de tipuri diferite putem folosi tipurile de date numite structuri. In cadrul acestor structuri putem retine oricate date, de orice tip. Problema apare atunci cand dorim ca datele retinute sa fie sigure, codul pe care il scriem sa poata fi refolosit usor si programele sa se poata organiza simplu. Pentru a acoperi toate aceste probleme a aparut notiunea de obiect.
Consideram cazul in care trebuie sa administram accesul utilizatorilor la un site. Pentru aceasta putem defini un tip de date abstract numit Utilizator. Vom observa ca un utilizator de internet va avea multe date diferite. Totusi, nu toate datele sunt relevante, “echipa de fotbal preferata, culoarea ochiilor, inaltimea” nu sunt relevante, pe cand data nasterii, sau numarul de comanda pot fi informatii utile. Operatiile care sunt disponibile din afara tipului formeaza interfata acestuia. Astfel diferitele operatii interne: calcule de pret, conversii ale datelor de nastere, inregistrarea pe site, nu fac parte din interfata tipului de date abstract, pe cand o operatie de genul “Plasati comanda dumneavoastra” face parte pentru ca interactioneaza cu alte obiecte( Exemplu: STOC).
In acest stil de programare modulara, codurile care ofera facilitate asemanatoare sunt grupate in unitati numite module. Un modul este o parte din program care separa interfata de implementare. Interfata modulului contine doar acele elemente de care utilizatorul are nevoie pentru a realiza functia respective. Codul sursa a unui modul nu este vizibil si celorlalte module, astfel pentru a realiza o anumita activitate, utilizatorul trebuie sa stie doar ce face modulul respectiv. Cateva din avantajele acestui tip de programare sunt:
Permite reutilizarea modulelor. Modulele care au fost folosite la ceva se pot refolosi cu success. Este foarte important ca programatorul sa realizeze modului cu character cat mai general posibil.
Permite lucrul mai multor echipe. Daca avem module diferite, ele pot fi testate sau scrise de persoane diferite apoi puse cap la cap.
Permite structurarea codului scris in mod inteligibil si usor de inteles.
Modulele folosesc adesea functii pentru a realiza ceea ce este nevoie. Aceste functii se mai numesc si subprograme si au cateva caracteristici speciale. Atunci cand in scrierea de cod apar portiuni care se repeta, pentru a nu scrie de mai multe ori acelasi lucruri se pot folosi aceste subprograme.
Din punct de vedere al tipurilor subprogramele pot fi:
De tip void- Nu returneaza nimic
De un anumit tip- Returneaza acel tip.
Din punct de vedere al parametriilor introdusi subprogramele pot avea:
Unul sau mai multi parametric
Nici un parametru
Vectori sau matrici ca parametric
Pointeri ca parametrii
Nu se pot introduce ca parametrii ai subprogramelor alte subprograme. In continutul unui subprogram se pot apela altele, dar nu se pot define sau da ca parametrii.
Un subprogram care realizeaza suma a doua numere arata in felul urmator:
Int adunare(int a, int b){
return a+b;
}
Undeva in programul principal o sa dorim sa folosim acest subprogram. Apelarea lui poate sa arate astfel:
int Main(){ int a,b;
cout<<adunare(2,3);
cin>>a;
cin>>b
cout<<adunare(a,b);
cout<<adunare(a,3);}
2.2.2 Programare orientata pe obiect
Programarea orientata pe obiect este unul din cele mai bine dezvoltate concept in mediul de programare visual studio, limbajul c#. Din punct de vedere al teoriei, Programarea orientata pe obiect :”a preluat cele mai bune idei de la programarea structurata combinandu-le in concepte noi” (Herbert Schildt C# A Beginner’s Guide). Acest concept a schimbat modul in care se organizeaza programele. Conform unei clasificari simple un program poate fi organizat in doua moduri:
In jurul codului “codul actioneaza asupra datelor” ca in programarea structurata.
In jurul datelor “datele controleaza accesul la cod” ca in programarea orientata pe obiect.
Toate limbajele de programare orientate pe obiect au cateva caracteristici comune: incapsularea, polimorfismul, mostenirea si reutilizarea.
Incapsularea este un mechanism care se ocupa cu combinarea si ascunderea datelor pe care le utilizeaza astfel incat acestea sa interfereze cat mai putin cu lumea exterioara. Cand codul programului si datele acestuia se incapsuleaza se creeaza un obiect. In acest obiect codul si datele pot fi publice sau private. Codul si datele private sunt accesibile doar in interiorul acelui obiect, pe cand codul si datele publice sunt accesibile in oricare parti ale programului care exista in afara acelui obiect. Unitatea principala in procesul de incapsulare este clasa. Ea specifica datele si tot codul care actioneaza asupra lor. O clasa arata forma unui obiect, cu alte cuvinte, clasa este tipul obiectului.
Mostenirea reprezinta un mechanism prin care un obiect poate primi caracterstici diferite ale altui obiect. Cel mai folosit exemplu in acest sens este cel legat de regnul animal. Spre exemplu sa consideram o pasare. Aceasta are toate caractersticile pe care le are un animal si in plus mai are si o alta: are aripi. Daca luam ca exemplu o rata, ea are toate caracteristicile unei pasari, dar le are si pe ale ei proprii. Asadar, o rata mosteneste toate caractersticile unei pasari.
Polimorfismul este o caracteristica clasica prin care se permite unei interfete sa aiba acces la un grup de actiuni. Termenul de polimorfism provine din limba greaca, unde cuvantul original insemna “cu mai multe forme”. Daca avem nevoie de un subprogram care sa ne returneze lungimea unui sir de caractere care poate fi oricat de lung, ea se calculeaza diferit in functie de datele pe care le primeste la intrare.
Astfel, subprogramul trebuie sa se adapteze la datele pe care le primeste de la intrare, adica la lungimea sirului si abia apoi sa calculeze lungimea acestuia.
Reutilizarea reprezinta o caracteristica prin care o clasa poate sa fie folosita ca tip pentru mai multe metode diferite. Marele avantaj al reutilizarii codului este ca acesta nu mai trebuie scris din nou, totusi, in cazul unor erori trebuie verificat tot pana se ajunge la zona cu probleme.
Structura generala a unei clase in mediul de programare Visual Studio limbajul C# este urmatoarea:
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}}}
Using reprezinta un atribut folosit pentru preprocesor. Acesta include anumite librari in care interpretorul se uita inainte de rularea programului si astfel permite folosirea de elemente din aceste librarii.
Namespace- Reprezinta un spatiu special in care definim un anumit gen de date. In acest caz, ceea ce este definit este un program de tipul WindowsFormsApplication.
In limbajul de programare c# clasele pot fi:
Public- vizibila peste tot in program
Private- Vizibila doar in interiorul programului respectiv.
Protected- Vizibila in interiorul programului si in alte anumite zone.
Pentru a putea initializa de la inceput continutul folosim functiile speciale constructor. Pentru a sterge initializarea folosim tot o functie speciala numita destructor.
3. Aplicatie de citire a bibliei in c#
Aplicatia de citire a bibliei pentru calculatorul personal este realizata cu ajutorul softului Microsoft Visual Studio in limbajul de programare C#. Scopul aplicatiei este de a permite utilizatorului sa aprofundeze studiul bibliei si al tuturor elementelor sale avand posibilitatea personalizarii modului in care doreste sa faca acest lucru. Modul de rulare al aplicatie este simplu, cu un singur click putem deschide aplicatia, iar tot ce facem se bazeaza in special pe interactiunea cu cateva elemente simple ale interfetei grafice. Astfel primul pas in utilizarea aplicatiei este fereastra de logare, in care fiecare utilizator trebuie sa introduca un nume si o parola cu ajutorul carora poate intra in meniul principal. Daca este prima data cand utilizatorul foloseste aplicatia, exista optiunea de inregistrare cont, unde se permite creearea unui cont nou care urmeaza apoi a fi folosit.
Odata intrat in aplicatie, utilizatorul se poate bucura de absolut toate facilitatile acesteia. In partea dreapta a interfetei grafice, utilizatorul poate vedea mereu numele de utilizator cu care este conectat si ora curenta. Apoi, poate alege daca vrea sa citeasca Noul Testament sau Vechiul Testament. In functie de alegerea facuta, programul va afisa cartile corespunzatoare si capitolele pentru fiecare carte. Odata aleasa o carte si un capitol, in centrul aplicatiei apare continutul capitolului sub un anumit format. Daca utilizatorul doreste personalizarea acestui format tot ce trebuie sa faca este sa foloseasca butonul Font care permite:
Schimbarea culorii capitolului afisat
Schimbarea marimii textului afisat
Sublinierea textului
Schimbarea fontului textului afisat
De asemenea, exista doua butoane de cautare in care utilizatorul poate sa caute in intreaga Bibliei dupa un cuvant introdus de el sau sa afiseze direct una din cartile principale ale Bibliei. Afisarea unei carti dureaza doar cateva secunde in functie de marimea ei, iar textul afisat este in limba romana cu diacritice. Pe langa aceste functii, avem si posibilitatea afisarii unui verset pentru fiecare zi. In partea dreapta avem un calendar, iar selectarea unei date din acest calendar ne face sa vedem in regiunea de text un verset din Bibliei corespunzator. Aplicatia mai ofera si planuri de citire a bibliei pe diferite durate, comentarii biblice atat text cat si audio, informatii despre personajele biblice, teste si butoane de stergere a continutului textului. Fiecare din aceste functii vor fi prezentate particular in ceea ce urmeaza.
3.1 Schema aplicatiei
Fig. 3.1 Schema aplicatiei de citire a bibliei
3.2 Design principal
Designul principal este alcatuit dintr-un singur formular in care sunt afisate majoritatea functiilor oferite de catre program.
Fig 3.2 Meniul principal al aplicatiei
In partea stanga a aplicatiei vedem un element de tip TreeView in care o sa apara cartile Noului sau Vechiului Testament si capitolele lor. Odata selectata o carte si un capitol al ei, in centrul meniului o sa apara continutul cartii. In partea superioara, avem cateva butoane care ne deschid difierite functii ale aplicatiei, acestea vor fi discutate in subcapitolul urmator. Butonul de help al aplicatiei ne ofera cateva informatii despre folosirea ei si despre modul in care actioneaza diferite module incluse in aplicatie.
Design-ul aplicatiei nu este unul classic de Microsoft visual studio windows form c#. Pentru a imbunatatii modul in care sunt afisate toate interfetele si toate elementele lor, am folosit o varianta noua de design numita Metro Form. Avantajele acestei variante de design sunt numeroase, fiecare element grafic este schimbat, luand o forma noua si mult mai atractiva pentru utilizator, dar cea mai importanta schimbare este aceea ca odata folosita aceasta varianta, toate butoanele si controalele o sa arate asemanator si vor avea aceleasi caracteristici.
Am ales sa folosesc acest design deoarece este unul inovativ si se potriveste mai bine pentru acest gen de aplicatie. Metro este un tip de design creat de Microsoft si foarte mult folosit pentru interfetele cu utilizatorul. Se bazeaza foarte mult pe continutul aplicatiei si nu atat de mult pe partea grafica, a aparut in special pentru design-ul unor versiuni de windows si pentru telefoanele Windows phone, iar pentru ca in aceasta aplicatie de citire a bibliei este foarte important continutul si trebuie sa fie cat mai simpla din punct de vedere al design-ului am ales sa folosesc acest tip de interfata.
3.2.1 Functii
Ce putem face cu aceasta aplicatie?
In primul rand, fereastra de logare ne permite sa intram in aplicatie cu ajutorul unei conexiuni la o baza de date de tip MySQL.
Fig 3.3 Formularul de Logare
Pentru creearea acestui formular, am folosit ca design Metro Form, iar ca instrumente:
Un Picture box pentru inserarea unei poze a bibliei visibila in partea stanga
Cinci elemente de tip Label pentru inserarea textului in aplicatie. Exemplu LOGARE.
Trei elemente de tip Button: IESIRE, LOGARE, Inregistrare.
Doua elemente de tip TextBox pentru a prelua datele introduse de utilizator.
Din punct de vedere al evenimentelor folosite cele mai importante sunt:
Button click pentru cele trei elemente de tip button
Mouse over pentru afisarea Textului Bine a-ti venit
Mouse leave pentru cresterea si scaderea dimensiunii butoanelor
Functionalitatea acestui formular este destul de simpla. Din punct de vedere al utilizatorului cand acesta deschide programul, acesta este primul formular pe care il vede, cand ajunge cu mouse-ul peste unul din butoane acesta isi modifica forma, iar cand ajunge cu mouse-ul peste titlu in partea de jos a formularului apare textul Bine a-ti venit. Dupa ce introduce date in textbox si da click pe logare, poate intra in meniul principal.
Daca foloseste pentru prima data aplicatia, in partea superioara este present un buton de inregistrare care la click va deschide un formular pentru cont nou care arata in felul urmator:
Fig 3.4 Formularul de Inregistrare
Din punct de vedere al constructiei, acest formular foloseste ca instrumente:
Doua butoane- Unul pentru Login, celalat pentru Inregistrare
Sase label-uri pentru inserarea de text. Exemplu: Utilizator nou.
Cinci elemente de tip textbox pentru preluarea datelor utilizatorului
Un picture box pentru a introduce imaginea din partea dreapta.
Din punct de vedere al utilizatorului, odata ce a intrat in acest formular, trebuie sa introduca datele in aceste campuri si apoi sa dea click pe unul din cele doua butoane. Cand se afla cu mouse-ul pe unul din butoane acesta isi modifica forma, cand mouse-ul paraseste butonul acesta revine la forma initiala. Din punct de vedere al programatorului, formularul acesta se conecteaza la baza de date MySQL, iar datele introduse de utilizator sunt automat adaugate in baza de date si folosite in cadrul formularului de logare. Programul se conecteaza la localhost folosind portul 3306, iar ca utilizator root. In spatele butonului de Login se afla o simpla ascundere a formularului de inregistrare si aparitia celui de logare. Codul care realizeaza aceasta operatiune este urmatorul:
Login log = new Login();
log.Show();
this.Hide();
Butonul de inregistrare executa o comanda SQL de tip INSERT INTO si introduce in baza de date ceea ce preia de la utilizator. In cazul in care inserarea reuseste apare mesajul “Inregistrare efectuata”. In caz contrar pe ecran va aparea mesajul “Eroare la inregistrare”.
Odata intrat in meniul principal putem folosi fiecare optiune de mai sus. Tot ce trebuie sa facem este sa dam click pe unul din butoanele din meniu si se va produce automat efectul dorit. Daca dorim sa citim biblia, alegem unul dintre urmatoarele butoane:
Vechiul Testament- Va deschide un element de tip TreeView in care sunt afisate toate cartile Vechiului Testament in ordinea in care se gasesc si in Bibliei.
Noul Testament- Va deschide alt element de tip TreeView in care gasim toate cartile Noului Testament in ordinea in care acestea se gasesc in Biblie.
Odata aleasa una din cele doua optiuni, ne apare optiunea de a alege un capitol al cartii dorite. Cand am ales un capitol al acestei carti, continutul text al acestuia apare in locul special numit RichTextBox. Continutul capitolului este integral in limba romana, cu diacritice. Din punct de vedere al codului, pentru a putea afisa acest continut am folosit mai multe tipuri de instructiuni si metode.
for (int i = 0; i < carti.Length; i++)
{
for (int j = 1; j <= int.Parse(capitole[i]); j++){
selection = carti[i] + j;
if (e.Node.Name == selection){
path = pathSergiu + carti[i] + "\\" + j + ".txt";
textCapitol = File.ReadAllText(path);
richTextBox1.Text +=textCapitol;
break; } } }
Am definit doi vectori de tip string in care retin numele fiecarei carti din Biblie si numarul de capitol specific pentru fiecare carte. De exemplu, cartiile Geneza si Exod au 50 respectiv 40 de capitole, iar vectorul retine Geneza 50 si Exod 40. Cu ajutorul instructiunii repetitive for am parcurs cu ajutorul contorului i toate valorile de la 0 pana la lungimea fiecarei carti. Cu ajutorul unei alte instructiuni de tip for, am parcurs numarul de capitole specific fiecarei carti, apoi am definit o variabila de tip string in care retin ceea ce a selectat utilizatorul.
Daca numele selectat de utilizator coincide cu cel din elementul graphic TreeView atunci o variabila de tip string numita path primeste valoarea locului unde se afla textul specific acelui capitol. Elementul de tip richTextBox primeste foloseste metoda ReadAllText pentru a citi tot textul aflat la locul repectiv. Apoi in interiorul elementului se pune continutul citit. In final, cu ajutorul instructiunii break iesim fortat din ciclul for. Daca nu foloseam instructiunea break, programul incerca din nou sa caute text si era posibila aparitia unei exceptii sau a unui continut nedorit.
Ceea ce am incercat cu modul acesta de accesare al bibliei a fost sa fac cat mai usor accesul utilizatorului la continutul Bibliei. Cu doar cateva click-uri cel care foloseste aplicatia poate sa ajunga la versetul dorit. Spre deosebire de alte aplicatii de citire a Bibliei, aceasta ofera si posibilitatea modificarii culorii si fontului textului citit. Am adaugat aceste optiuni deoarece, nu am putut sti exact modul in care o sa apara textul pe diferitele tipuri de ecrane. Astfel, prin selectarea textului folosind scurtatura CTRL+A, si apoi accesarea butonului font se poate modifica dupa dorinta fiecaruia. Din punct de vedere al codului folosit, tot ce am folosit a fost metoda FontDialog si atributul new. Pentru a se putea modifica si culoarea textului citit am folosit un obiect predefinit al limbajului c# si anume: ShowColor. In cele din urma, folosind instructiunea if am verificat daca se realizeaza comunicarea si continutul elementului de tip richTextBox. Daca nu avem dialogul activ, sau daca nu exista text nu are rost sa incercam sa modificam fontul si culoarea. Pentru a putea deschide de fiecare data formularul dorit de catre utilizator am folosit metoda c# numita Show. Codul folosit pentru deschiderea formularului de contact arata astfel:
Contact frm = new Contact();
frm.Show();
Atunci cand dorim sa stergem textul aflat pe ecran, putem realiza acest lucru foarte simplu folosind butonul Sterge text.
De asemenea, cu ajutorul unei tehnice de transferare a textului de a formularul de login la cel al meniului principal, in partea dreapta sus al meniului apare mereu numele utilizatorului pe care il folosim sa ne conectam. Dupa ce am terminat de folosit aplicatia, avem o optiune pentru a iesi din program. Aceasta este butonul Iesire. A fost nevoie de acest buton, pentru a creea un dialog cu utilizatorul in care acesta este intrebat daca doreste iesirea sau daca a fost doar o greseala accesarea butonului. Cu ajutorul unei instructiuni if se verifica raspunsul utilizatorului. Daca acesta este afirmativ, se iese din program, iar daca raspunsul este negativ se inchide dialogul si utilizatorul ramane conectat.
Din punct de vedere al design-ului formularul de contact este unul foarte simplu, fara efecte speciale. Avem aici cateva informatii necesare celui care foloseste aplicatia pentru a putea tine legatura cu cel care a realizat aplicatia. Astfel putem gasi: adresa, numarul de telefon, pagina de Facebook si alte informatii de contact. Pe langa acestea, se ofera posibilitatea utilizatorului de a trimite email celui care se ocupa de aplicatie. Pentru a evita ca utilizatorul sa isi introduca datele personale in aplicatie, emailul este trimis mereu de la aceeasi adresa si parola predefinite, iar utilizatorul este rugat sa isi introduca adresa de email pentru a putea primi email ca raspuns. Odata primit emailul, pe langa mesajul propriu-zis apare si adresa de email. De asemenea, se poate trimite impreuna cu emailul si un continut text sau video de o marime mai mica sau egala cu 20mb. Din punct de vedere al utilizatorului, dupa ce a completat toate datele necesare, trebuie sa dea click pe butonul trimite, iar timpul de asteptare este undeva in intervalul 1-3 secunde.
O alta functie a aplicatiei este de a genera un verset din Biblie in functie de fiecare zi. Aceasta functie este folosita si in alte aplicatii de citire a bibliei, dar de obicei se incarca automat odata cu deschiderea aplicatiei. Ce este diferit la aceasta aplicatie de citire a bibliei din acest punct de vedere este faptul ca ea ne ofera posibilitatea afisarii unui verset nou de fiecare data cand dorim acest lucru. Cu ajutorul unui element predefiniti al mediului de programare numit calendar, putem vedea toate datele necesare. Ceea ce afiseaza acest element este timpul, adica ziua curenta, luna curenta si anul curent. De fiecare data cand selectam o zi in elementul de tip TextBox v-a aparea un verset din o anumita carte a Bibliei. Modul in care acest verset apare este aleatoriu, nu se foloseste vreo functie speciala pentru a aparea dupa un anumit algoritm.
Din punct de vedere al constructiei, folosim cele doua elemente de tip Calendar si Text Box si urmatorul cod:
mcon.Open();
s = "select text FROM logo.biblia ORDER BY RAND() LIMIT 1";
mcd = new MySqlCommand(s, mcon);
Verset.Text = "";
MySqlDataReader reader = mcd.ExecuteReader();
Verset.Text += reader.GetString("text") + "\r\n";
Pentru a deschide conexiunea la baza de date folosim metoda predefinita de limbajul de programare c# numita Open. Apoi cu ajutorul comenzii SQL SELECT putem selecta din baza de date textul dorit. Functia RAND ne permite sa selectam un text la alegere fara sa fim nevoiti sa dam noi o valoare. Comanda LIMIT 1 ne permite sa alegem numarul de inregistrari la alegere pe care o sa le afisam, iar pentru a putea folosi aceasta interogare SQL inregistram in variabila mcd conexiunea si rezultatul inregistrarii alese. Dar, pentru a nu avea text deja introdus in interiorul elementului de tip textbox folosim o proprietate a sirurilor de caractere conform careia, un sir de caractere poate fi initializat cu o valoare nula la inceput. Astfel in elementul textbox numit Verset.Text punem valoarea nula, apoi dupa ce executam citirea informatiei din baza de date in elementul textbox o sa punem rezultatul acesteia. Folosim si doua caractere speciale pentru a personaliza textul: \r si \n.
O ultima functie a meniului principal este cea de cautare in text. Spre deosebire de celelalte functii de cautare, aceasta ne permite sa cautam doar in textul deja afisat de elementul de tip textbox. Este utila in unele carti sau capitole ale Bibliei de o lungime mai mare pentru a gasi rapid un anumit cuvant. De exemplu, psalmul 119 are 176 de versete, iar cu ajutorul acestei cautari putem gasi foarte repede tot ceea ce dorim in oricare din aceste versete. Codul functiei arata in felul urmator:
int index = 0;
while (index < richTextBox1.Text.LastIndexOf(textBox1.Text)) {
richTextBox1.Find(textBox1.Text, index, richTextBox1.TextLength, RichTextBoxFinds.None);
richTextBox1.SelectionBackColor = Color.Red;
index = richTextBox1.Text.IndexOf(textBox1.Text, index) + 1;}
Declaram o variabila index egala la inceput cu 0. Apoi verificam daca aceasta variabila este mai mica decat ultimul indice al textului din elementul textbox. Cat timp este mai mica, textul gasit se va colora in rosu, iar dupa fiecare parcurgere valoarea variabilei index creste cu 1. Cand nu mai este indeplinita conditia de la while se iese din ciclu si programul continua.
3.2.2 Teste
Aplicatia ofera si teste de verificare a cunostintelor biblice pentru utilizator cu posibilitatea inregistrarii scorului in baza de date. Pentru a acesa aceste teste, trebuie doar sa alegem din meniul principal optiunea Teste din biblie. Apoi alegem dificultatea dorita a testului si avem la dispozitie trei optiuni:
Usor- 15 intrebari din biblie in 10 minute
Mediu 20 de intrebari din bibliei in 15 minute
Greu 30 de intrebari din biblie in 20 de minute
Fig 3.5 Test Mediu
Din punct de vedere al utilizatorului, odata intrat in acest formular de test, poate sa raspunda la numarul dorit de intrebari, apoi poate sa isi salveze scorul. Fiecare intrebare are un singur raspuns correct, iar cand acesta a fost ales zona corespunzatoare lui se coloreaza cu verde. Daca este dat un raspuns gresit, testul se termina si utilizatorul nu mai poate continua decat daca reia de la inceput. In partea dreapta avem timpul ramas si scorul inregistrat, iar pentru fiecare raspuns correct scorul creste cu un punct. Butonul Inapoi ne permite sa alegem alta categorie de test, dar daca nu salvam scorul, acesta se va sterge. Instrumentele folosite aici sunt destul de numeroase: Label, Picture Box, Text Box, Group Box, Button, etc.
3.2.5 Planuri si personaje
Alte optiuni oferite de aplicatia de citire a bibliei sunt: Citirea bibliei in functie de diferite planuri de citire si informatii despre personajele bibliei.
Fig 3.6 Planuri de citire a bibliei
Din punct de vedere al utilizatorului, acest formular ofera patru tipuri diferite de planuri de citire a bibliei. In functie de preferinta utilizatorului, cu un simplu click, el poate avea la indemana aceste planuri de citire. Imediat dupa selectarea unui plan, in spatial de text apare continutul acestuia impreuna cu sursa lui. Din punct de vedere al programatorului, acest formular foloseste ca elemente: cinci butoane, un label si un instrument special pentru deschiderea unor fisiere PDF. Evenimentul folosit aici este: ButtonClick.
Daca dorim sa aflam mai multe informatii despre un anumit personaj al bibliei, avem aceasta optiune inclusa in program in formularul de personaje biblice. Pentru a deschide acest formular dam click in meniul principal pe optiunea Personaje biblice. Odata folosita aceasta optiune putem alege un personaj din doua liste, una pentru vechiul testament, alta pentru noul testament. Cand selectam un personaj fereastra de alegere dispare si ceea ce apare este informatia despre personajul respectiv.
Ca si elemente am folosit aici trei butoane, un label, doua liste si un textbox. Din punct de vedere al codului, fiecare personaj reprezinta elementul unui vector, iar pentru vizualizarea lor doar se afiseaza elementele vectorului.
Fig 3.7 Personaje biblice
Codul folosit pentru a afisa informatia este urmatorul:
textPersonaje.Show();// Scoate in prim plan formularul numit textPersonaje
backBttn.Show();// Scoate in prim plan butonul numit backBttn
string[] personaje = new string[] { "Adam", "Avraam", "David", "Ioan_Botezatorul", "Ioan_nou", "Iov", "Isaia", "Isus", "Luca", "Marcu", "Matei", "Moise", "Noe", "Pavel" };
string selection = personajeVT.SelectedItem.ToString();();// salveaza selectia
string pathSergiu = "C:\\Users\\fujitsu\\Dropbox\\Sergiu\\Licenta\\Personaje\\";
string path;
for (int i = 0; i < personaje.Length; i++)
{
if (personaje[i] == selection)
{
path = pathSergiu + personaje[i] + ".txt";
path = File.ReadAllText(path);
textPersonaje.Text = path; ();// Pune in textbox valoarea de la path-ul respectiv
break; } }
Vectorul personaje este de tip string si retine numele fiecarui personaj, apoi selectia facuta de utilizator este retinuta si se da locul in care se afla textul. Apoi folosind un for parcurgem tot vectorul de personaje si cand am ajuns la cel ales citim continutul fisierului si il afisam in text box. Apoi odata gasit folosim instructiunea break pentru a fortat din instructiunea for.
Trimiterea de email-uri se poate realiza direct din aplicatie dupa urmatorul parcurs:
LoginMeniuContactEmailTrimitere.
Fig 3.8 Formularul de trimitere email
Campurile obligatorii de completat pentru a se putea trimite emailul sunt urmatoarele:
ID email- Este completat automat de catre formular
Parola- Este completata automat cu parola de email
ID primitor- Completat automat cu un ID care v-a primi toate email-urile.
Emailul tau- Se completeaza de catre cel care trimite email-ul.
Continut- Ceea ce are de spus utilizatorul
Campurile optionale care se pot completa sau nu sunt:
Atasament- Poate fi completat de catre utilizator in cazul in care acesta doreste sa trimita impreuna cu emailul si diferite fisiere.
Subiect- Reprezinta titlul mesajului de email si poate fi completat de utilizator.
Codul c# care permite functionarea corecta a formularului de email este urmatorul:
try{
SmtpClient client = new SmtpClient("smtp.mail.yahoo.com", 587);
MailMessage message = new MailMessage();
message.From = new MailAddress(txtemail.Text);
message.To.Add(txtreceiver.Text);
message.Body = txtbody.Text+" "+txtbody2.Text;
message.Subject = txtsubject.Text;
client.UseDefaultCredentials = false;
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential(txtemail.Text, txtpassword.Text);
client.Send(message);
message = null;
MessageBox.Show("Emailul a fost trimis"); }
catch (Exception s) {
MessageBox.Show("Trimiterea a esuat");}
Folosim un eveniment de tip OnClick pe butonul Trimite. Cu ajutorul unui bloc de tipul try catch1 verificam daca rularea programului nu genereaza o exceptie, daca ceva nu functioneaza, programul va afisa pe ecran mesajul de eroare. Daca functionarea este normala, atunci mesajul de email va fi trimis.
Pentru a putea trimite mesaje de email cu ajutorul unei adrese de yahoo folosim metoda SmtpClient iar codul pentru yahoo este 587. Apoi creem un obiect nou de tip MailMessage si cu ajutorul operatorului ii atribuim textul introdus de catre utilizator in elementul de tip textbox. Apoi pentru fiecare camp obligatoriu sau optional al formularului de email folosim metoda Text pentru a primi datele introduse de utilizator. In final, tot ce trebuie sa facem este sa apelam metoda Send si sa ii dam ca parametru message in care retinem tot ceea ce a introdus utilizatorul in formularul de trimitere email.
Dupa ce trimitem mesajul, trebuie sa facem continutul fiecarui element nul, pentru a putea folosi din nou aceste campuri in trimiterea unui nou email. Daca programul parcurge toti acesti pasi, in final se ajunge la linia de cod in care se afiseaza pe ecran mesajul “Emailul a fost trimis. Dupa ce am trimis emailul, sau daca am intrat din greseala in acest formular si dorim sa il inchidem avem la dispozitie butonul iesire.
Try catch- Bloc de instructiuni folosit pentru a prinde anumite exceptii, adica unele cazuri in care functionarea programului poate fi eronata si a le rezolva cu un anumit mesaj sau o alta instructiune specifica acelui caz.
3.2.6 Baza de date
Baza de date folosita pentru acest program de citire a bibliei este una destul de simpla. Ea are numele logo si doua tabele: utilizatorii si biblia. Tabelul utilizatorii are urmatoarele campuri:
User_ID int(100) AUTO_INCREMENT Cheie primara
Username varchar(50)
Password varchar(50)
Nume- varchar(50)
Prenume- varchar(50)
Email- varchar(50)
Scor- int(100)
Tabela biblia1 are urmatoarele campuri:
Id- bigint(20) AUTO_INCREMENT Cheie primara
Testament tinyint(3)
Carte- varchar(40)
Capitol- int(10)
Verset- int(10)
Text- text
In interiorul aplicatiei folosesc tabela utilizatori pentru a inregistra datele pe care le introduce cel care doreste sa isi faca un cont nou. Dupa ce si a facut un cont nou, pentru a intra in aplicatie trebuie sa se logheze, iar in cadrul logarii folosesc in cod informatiile din tabela utilizatori. Tabela biblia este folosita in aplicatie in meniul principal atunci cand utilizatorul doreste sa afiseze anumite carti ale Bibliei sau sa caute in Biblie dupa anumite cuvinte. Pentru aceste operatii am folosit urmatoarele comenzi SQL.
"select* from logo.biblia where carte='" + Carte.Text + "'";
"SELECT* FROM logo.biblia where text like '"+cuvant_cautare.Text+"%'";
Ceea ce se poate observa este ca aceasta comanda SQL, SELECT nu este sensibila la modul in care este scrisa, indiferent daca o scriem cu litere mari sau mici rezultatul este acelasi.
Tabelul biblia a fost descarcat de la adresa: http://biblia.pentruviata.ro/bib_text.php
3.3 Modul de administrare
Administrarea aplicatiei este destul de simpla, presupune in special doar patru operatii:
Intretinerea bazei de date cu conturile utilizatorilor conectati la aplicatie
Intretinerea fisierelor cu informatia necesara rularii aplicatiei
Verificarea mesajelor de email pentru a raspund mereu cerintelor utilizatorilor.
Functionarea permanenta a serverului WAMP.
Baza de date are mai multi utilizatori conectati, iar pentru ca ei sa se poata conecta permanent la aplicatie, este nevoie de intretinerea bazei de date. Trebuie verificate in permanenta numele inregistrare pe site si datele introduse de utilizatori, pentru a nu fi prezente date care nu corespund. De exemplu, daca doi utilizatori au acelasi nume si parola ei se pot conecta in acelasi timp in aplicatie. Intretinerea fisierelor cu informatia este simpla, dar odata sters unul din aceste fisiere, partea din program care il foloseste va functiona eronat.
Functionarea permanenta a serverului WAMP este necesara pentru ca aplicatia sa poata functiona. Facilitatile de inregistrare, logare, cautare si trimitere email se bazeaza pe serverul acesta, iar viteza cu care ele se desfasoara depinde in mare masura si de viteza cu care informatia este trimisa. Pentru ca serverul WAMP sa functioneze permanent trebuie indeplinite urmatoarele conditii:
Existenta unui laptop sau desktop permanent in functiune.
Acces la internet pe unitatea respectiva.
Programul WAMP trebuie sa fie mereu deschis si cu toate procesele active.
Culoarea fundalului din program trebuie sa fie mereu verde.
De fiecare data cand trebuie oprita functionarea calculatorului pe care se afla instalat serverul WAMP, se opreste si functionarea serverului si cand repornim calculatorul trebuie repornit si serverul. Aceasta operatie poate fi dificila, de multe ori programul poate sa dea diferite erori de rulare in functie de diferiti parametrii. De exemplu daca avem active alte programe ale caror procese folosesc portul 80 este aproape sigur ca la deschiderea WAMP server acesta va avea o eroare deoarece acesta este portul pe care functioneaza. Pentru a scapa de aceste probleme, folosim consola programului WAMP in care putem verifica disponibilitatea porturilor si modul de rulare al programului. De aceea, atunci cand este nevoie de repornire, aplicatia poate sa nu fie disponibila o perioada mai mica sau mai mare de timp.
4. Aplicatia Android
4.1 Schema aplicatiei
4.2 Design principal
4.3 Implementare tehnica
Cele doua programe sunt usor de implementat din punct de vedere tehnic si resursele necesare pentru rularea lor sunt minime. In cele ce urmeaza o sa descriu cativa pasi simpli pentru a putea folosi aplicatiile de citire a bibliei in mod cat mai efficient si rapid. Pentru aplicatia android, pasii de urmat sunt foarte simpli, dar avem nevoie de un telefon cu sistem de operare android:
Instalam android studio conform instructiunilor din capitolul 1
Copiem aplicatia de citire a bibliei
Deschidem programul si introducem aplicatia de citire a bibliei.
Conectam telefonul prin USB.
Rulam aplicatia pe telefonul conectat.
Aplicatia se salveaza pe telefon si o putem folosi oricand dorim.
Oprim rularea aplicatiei
Inchidem aplicatia.
Pentru aplicatia desktop pasii de urmat sunt putin mai multi, dar implementarea este simpla si tot ce necesita este un calculator personal.
Instalam programul Wamp conform instructiunilor din capitolul 1.
Ne asiguram ca avem conexiune la internet.
Pornim programul Wamp.
Introducem baza de date “logo” in phpmyadmin.
Copiem continutul folderului resurse text pe desktop.
Copiem aplicatia de citire a bibliei.
Rulam aplicatia de citire a bibliei.
Folosim aplicatia in diferite moduri.
De asemenea, aplicatia de citire a bibliei ofera si pagina de Contact, pentru ca utilizatorul sa aiba posibilitatea de a comunica orice problema legata de aplicatie. Aceasta comunicare se poate face prin intermediul retelelor de socializare, telefonic sau prin email. Mesajul de email poate fi trimis direct din aplicatia desktop. Pentru a evita introducerea parolei utilizatorului,fiecare trimite email de pe o adresa folosita in mod special doar pentru acest scop, iar ceea ce se cere este doar emailul celui care trimite pentru a fi folosit ca raspuns la cererea lui.
4.3.1 Resurse necesare
Pentru a putea folosi aplicatia desktop de citire a bibliei, trebuie sa avem din punct de vedere al resurselor fizice un calculator cu sistem de operare Windows Xp, Vista, 7 8 sau 10. Cea mai recomandata versiune de Windows este 8 pentru ca ofera mai mult suport pentru stilul aplicatiei. Pentru a putea rula aplicatia desktop se recomanda urmatoarea configuratie minima a calculatorului:
PROCESOR: de 1 gigahertz (GHz) sau mai rapid
RAM: 1 gigabite pentru sistem de operare pe 32 de biti sau 2 gigabite-s pentru sistem de operare pe 64 de biti
SPATIU PE UNITATEA DE DISC: minim 1gigabyte(gb)
PLACA VIDEO: DirectX 9
ECRAN: Minim 800×600
In cazul in care configuratia calculatorului este mai slaba ca cea mentionata mai sus, aplicatia va rula, dar cu o viteza scazuta destul de mult.
Pentru a putea folosi aplicatia de android ne trebuie din punct de vedere al resurselor fizice un telefon cu sistem de operare android. Daca am citit cu atentie in capitolul 1, am observat ca fiecare versiune de android are un anumit nivel numit API. Pentru a putea rula corespunzator aplicatia de android este nevoie ca versiunea ne API sa fie minim 18, deci cea mai veche versiune a sistemului de operare android acceptata este JellyBean. Din punct de vedere al performantei telefonului mobil, configuratia minima pentru a rula aplicatia este:
CPU: quad core1.4 GHz
RAM 1gigabyte
ECRAN touchscreen
REZOLUTIE: 720x 1280 pixeli
SPATIU DISPONIBIL: 30 Megabytes
In cazul in care configuratia telefonului ste mai slaba ca cea mentionata mai sus, aplicatia va rula, dar cu o viteza scazuta mult. Dar, daca versiunea de android este sub 18 atunci aplicatia nu va rula deloc, deoarece nu este compatibila cu sistemul. De asemenea, aplicatia nu va rula pe nici un telefon care nu are sistem de operare android.
JellyBean- pentru informatii- https://developer.xamarin.com/guides/android/application_fundamentals/
5. Concluzii
Am ales sa fac aceasta aplicatie de citire a bibliei deoarece aceasta carte are cateva milioane de cititori zilnici in toata lumea si scopul meu a fost sa ofer continutul acesteia si celor care doresc sa il acceseze de pe calculatorul personal sau de pe propriul telefon mobil. In cadrul lucrarii am prezentat toate elementele de care am avut nevoie pentru constructia aplicatiei, pornind de la programele si cunostiintele necesare pana la tehnicile de programare folosite. De asemenea, am descris in detaliu fiecare mediu de programare utilizat si majoritatea functiilor folosite pentru constructia aplicatiei de licenta, dar si tehnicile de programare folosite pentru a optimiza cat mai mult codul aplicatiei.
Din punct de vedere al limbajelor de programare, pentru a realiza aceste doua aplicatii am combinat ceea ce am studiat in cei trei ani de facultate cu ceea ce am reusit sa invat in special de pe internet, dar si din carti de programare. Foarte util in realizarea aplicatiei a fost faptul ca in cei trei ani de facultate am avut cursuri de c# forms unde am invatat bazele acestei programari, iar eu am continuat pe acele baze si urmand sfaturile profesorului de la curs. De asemenea, pentru programarea android, mi a fost foarte util faptul ca in primi doi ani de facultate am avut cursuri de programare in Java, astfel a trebuit sa invat doar elementele specifice limbajului de programare android. Ca si complexitate, aplicatia pentru desktop contine foarte multe elemente si ofera o gama larga de posibilitati pentru utilizatorul ei. Aplicatia pentru android a fost realizata cu scopul strict de a putea citi biblia oriunde avem acces la un telefon mobil, iar pe partea de continut se poate imbunatatii in multe moduri. Din punct de vedere al sprijinului in realizarea aplicatiei, colaborarea cu doamna profesoara Mariana Nagy a fost una excelenta, am fost mereu ajutat de catre ea si mi a oferit informatii esentiale pentru design-ul aplicatiei si pentru partea scrisa a licentei.
Consider ca aplicatia de citire a bibliei este foarte utila, iar partea de desktop poate fi folosita chiar si in interiorul unei biserici pentru a se citi mai usor biblia sau anumite pasaje ale ei, iar aplicatia de mobil este utila cand nu avem acces la un calculator personal sau la internet. Toate functiile celor doua aplicatii au fost gandite special pentru cei ce doresc sa aprofundeze studiul bibliei, iar din punct de vedere al accesului la informatie totul se desfasoara rapid si cu un singur click. Cred ca aceasta aplicatie are ceva de oferit pentru fiecare cititor, fie ca doreste doar sa citeasca biblia, fie ca doreste sa asculte comentarii ale bibliei, fie ca doreste informatii despre anumite personaje, fie ca doreste sa isi verifice cunostiintele prin intermediul testelor din interiorul aplicatiei.
Bibliografie
MSDN. Libraries work Orcas”. 2 august 2006. Accesat la 10 mai 2016.
Visual Studio. 3 decembrie 2015. https://ro.wikipedia.org/wiki/Microsoft_Visual_Studio. Accesat la 18 aprilie 2016.
Eric McGinty și Eric Knorr. 18 februarie 2002. „Visual Studio .Net”. Accesat la 7 mai 2016.
Liviu Negrescu si Lavinia Negrescu. Limbajul c# pentru incepatori Editura Albastra, Bucuresti, 2009.
Index
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Aplicatie de Citire a Bibliei. Varianta Desktop (ID: 109924)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
