Sunteți pe pagina 1din 83

UNIVERSITATEA ROMNO-AMERICAN

FACULTATEA INFORMATIC MANAGERIAL

Dezvoltarea unei aplicaii Windows 8 pentru


administrarea activitilor unui studio de
dans,
cu backend n Azure

Coordonator tiinific,
Conf. Univ. dr. Botezatu Cezar
Student,
Coman Adrian-Alexandru

Bucureti 2014

Cuprins
Introducere .................................................................................................................................................... 4
1.

Studiul i analiza sistemului existent .................................................................................................... 6


1.1

Prezentarea succint a unitii economico-sociale ........................................................................ 6

1.2

Principalele activiti desfurate n unitatea economic .............................................................. 7

1.3

Studiul Sistemului de conducere ................................................................................................... 8

1.4

Studiul sistemului condus ............................................................................................................. 9

1.5

Prezentarea situatiei financiare ................................................................................................... 10

1.6

Studiul sistemului informaional ................................................................................................. 11

1.6.1

Descrierea sistemului informaional ................................................................................... 11

1.5.2

Modelul conceptual al datelor ............................................................................................. 12

1.5.3
Analiza critic a sistemului actual i identificarea neajunsurilor existente n funcionarea
sistemului existent ............................................................................................................................... 13
1.5.4
2

3.

Direcii de perfecionare a sistemului actual ....................................................................... 13

Proiectarea de ansamblu a sistemului informatic ................................................................................ 15


2.1

Obiectivele i oportunitatea aplicaiei informatice ..................................................................... 15

2.2

Locul aplicaiei informatice n sistem ......................................................................................... 15

2.3

Definirea rapoartelor finale ........................................................................................................ 16

2.4

Modelarea datelor i modelarea prelucrrilor ............................................................................. 17

2.5

Diagrama Entitate-Asociere ........................................................................................................ 18

2.6

Tehnologii utilizate ..................................................................................................................... 19

2.7

Arhitectura aplicaiei ................................................................................................................... 20

2.8

Tehnologie de prelucrare ............................................................................................................ 22

2.9

Calendarul de realizare ............................................................................................................... 24

Proiectarea de detaliu a aplicaiei informatice ................................................................................... 25


3.1 Structura aplicaiei pe clase i funcionaliti ................................................................................... 25
User ..................................................................................................................................................... 27
Cursant ................................................................................................................................................ 28
Instructor ............................................................................................................................................ 30
Administrator ...................................................................................................................................... 30
Cursant_partic..................................................................................................................................... 31
2

Cursant_copil ...................................................................................................................................... 32
3.2 Proiectarea logic i fizic a ieirilor ................................................................................................. 33
3.3 Proiectarea logic i fizic a intrrilor .............................................................................................. 36
3.4 Proiectarea bazei de date ................................................................................................................. 37
3.5 Proiectarea interfeei aplicaiei ........................................................................................................ 42
4.

Prezentarea produsului software ....................................................................................................... 44


4.1 Cerinele platformei hardware ......................................................................................................... 44
4.2 Descrierea funciilor aplicaiei .......................................................................................................... 45
Ecranul principal.................................................................................................................................. 45
nscrierea cursanilor .......................................................................................................................... 46
Seciunea nv i tu ....................................................................................................................... 48
Afiarea cursanilor ............................................................................................................................. 49
Pagina Cursuri de dans ........................................................................................................................ 52
Blog ..................................................................................................................................................... 53

5.

Eficiena i utilitatea sistemului informatic ........................................................................................ 54


5.1 Condiii privind implementarea aplicaiei......................................................................................... 54
Acceptarea termenilor .......................................................................................................................... 54
Modificarea termenilor ........................................................................................................................ 54
Crearea contului.................................................................................................................................... 55
Ce nu are voie s fac utilizatorul ....................................................................................................... 55
Datele care au caracter personal ......................................................................................................... 55
Limitarea rspunderii .......................................................................................................................... 55
5.2. Utilitatea aplicaiei ........................................................................................................................... 56

Bibliografie ................................................................................................................................................. 56
Anexa .......................................................................................................................................................... 58
CONTRACT DE PRESTRI DE SERVICII ..................................................................................................... 58
CONTRACT DE PRESTRI DE SERVICII ..................................................................................................... 62

Introducere
Succesul unei afaceri st n modul cum i foloseti resursele pe care le ai la dispoziie. n
lucrarea de fa se propune dezvoltarea unei aplicaii Windows 8 Modern UI pentru administrarea
unui studio de dans: Lotus Dance. Produsul software se adreseaz persoanelor moderne, cu
deschidere ctre noutatea tehnologic. Sistemul poate rula pe diferite medii: tablete, laptop-uri, pcuri cu sistem de operare Windows 8 i telefoane cu system de operare Windows Phone 8. Exist
patru categorii de utiliza-tori: guest, user, cursant i administrator, cu roluri specifice.
n dezvoltarea aplicaiei au fost utilizate tehnologii de ultim or: aplicaia principal este
realizat folosind framework-ul .NET pe baz de C# i XAML, serviciile Windows Azure se ocup
cu stocarea bazei de date SQL n cloud, serviciul Mobile Services asigur comunicarea ntre
aplicaia principal, baza de date i reelele de socializ-are (Facebook, Twitter, Google) care
furnizeaz profilul utilizatorului.
Aplicaia, care poate fi descarcat gratuit din Market Place, se constituie intr-un veritabil
instrument de promovare a activitii studio-ului Lotus Dance, beneficiind de oportunitile oferite
de caracterul viral al reelelor de socializ-are.
Trind n secolul XXI se poate vedea tendina din ce n ce mai accentuat a oamenilor de a fi
conectai, de a se ndrepta ctre lucruri care le fac viaa ct mai uoar. Oamenii se ndreapt ctre
lucruri accesibile oricrui tip de utilizator: de la un as al tehnicii avansate pn la un novice n ale
calculatoarelor.
Un aspect n care lumea virtuala i face simit prezena este facilitarea accesului
consumatorilor la servicii precum centre spa, sli de fitness i studiouri de dans.

n lucrarea de fa se propune dezvoltarea unei aplicaii Windows 8 pentru administrarea


unui studio de dans. Aplicaia este destinat exploatrii de ctre patru categorii de utilizatori: guest,
user, cursant i administrator. Fiecare dintre acetia au roluri specifice care vor fi descrise n
continuare.
Sunt foarte multe cazuri n care administratorii diverselor sli de dans se confrunt cu
probleme cnd vine vorba de gestionarea cursanilor i a grupelor, majoritatea alegnd
instrumentele tradiionale de notare a datelor: foaia i pixul. Acest lucru de datoreaz faptului c
n momentul de fa pe piaa mondial nu exist un soft specializat pentru aa ceva. Cu att mai
puin un soft care s foloseasc tehnologii de cloud i care s poat fi folosit att pe desktop ct i
pe instrumente portabile.
Pentru utilizatorul neautentificat (guest) aplicaia ofert acces la articolele de pe blog i la
informaiile publice de pe site. Pentru a se autentifica, user-ul va trebui s se logheze cu ajutorul
contului de facebook, google sau twitter, acesta fiind un element de mare noutate n rndul
utilizatorilor de reele sociale. Se permite de asemenea logarea utilizatorilor Micrososft prin
conturi dedicate. Din acest moment user-ul va avea posibilitatea de a se nscrie la cursuri de dans
i va primi acces la un pachet de baz cu videoclipuri n care sunt prezentai civa pai introductivi.
O alt categorie de utilizatori este cursantul care are acces la toate clipurile disponibile
n aplicaie, dar i la istoricul propriu n ceea ce privete cursurile de dans pe care le-a urmat, datele
edinelor i stilurile studiate.
n general, aplicaia se adreseaz persoanelor moderne, cu deschidere ctre noutatea
tehnologic. Produsul software poate rula pe tablete, laptop-uri i pc-uri cu sistem de operare
Windows 8. Dei Microsoft a intrat relativ de curnd pe piaa dispozitivelor mobile, se poate
remarca ritmul rapid de acaparare a pieei. Target-ul aplicaiei vizeaz persoanele care se pot
adapta uor noii schimbri de interfa a sistemului de operare, care se familiarizeaz cu interfaa
Modern UI i cu avantajele pe care aceasta le ofer. Toate aceste categorii de utilizatori pot
descrca gratuit aplicaia Lotus Dance din Market Place. Un rol important al aplicaiei este acela
de a promova activitatea studio-ului n rndul utilizatorilor Windows 8.

1. Studiul i analiza sistemului existent


1.1

Prezentarea succint a unitii economico-sociale

Asociaia Club de Dans Sportiv Lotus Dance a fost deschis n anul 2008 cu codul unic
de identificare fiscal 24548648. Are dou locaii n prezent: una n zona Pipera i cealalt ntr-o
zon mai central a Bucuretiului n zona Alba Iulia. Ambele zone sunt alese pentru a atrage
diferite categorii de persoane. Cea din zona Alba Iulia, fiind situat aproape de gura de metrou
Piaa Muncii i Dristor are avantajul c poate s ajung foarte multe persoane la cursuri i datorit
faptului c este situat n mijlocul unei zone rezideniale atrage foarte multe persoane care locuiesc
n apropiere i observ activitatea de la sal.
Sala din zona Pipera este aleas pentru c este un teren virgin, nemaiexistnd concuren
din partea colilor de dans mai mari astfel c a meninerea un monopolului n acea zon este fcut
cu uurin. Un alt factor important pentru deschiderea slii n acea zon este zon este distana
foarte apropiat de dou coli generale asigurnd astfel un flux de copii constant care se nscriu la
cursurile de dans organizate de noi.
Compania este condus de dou persoane, mam i fiu: Coman Vichy i Coman AdrianAlexandru avnd ca angajai un instructor de dans sportiv, un instructor de street-dance, un
contabil, un avocat i o persoan care s se ocupe de ntreinerea cureniei studioului. De
asemenea cele dou persoane care se ocup de conducerea studioului sunt i antrenori de dans la
Lotus Dance.
Activitile asociaiei sunt de tipul prestri de servicii i cursurile se desfoar ntr-un
studio amenajat pe strada Popa Stoica din Farca Nr 92 ntr-o sal modern amenajat cu aer
condiionat, acces wireless la internet, televizor, cabine de du, sal de ateptare, oglinzi, parchet
precum i spaiu amenajat pentru persoanele care vin direct de la serviciu i vor s serveasc o
scurt gustare, un ceai sau o cafea. Astfel c n sal exist i o mic spaiu amenajat vnzrii
produselor.
Scopul funcionrii este popularea dansului sportiv i predarea figurilor de dans diferitelor
categorii de persoane n funcie de vrst, nivel i venit. Pe lng cursurile de dans oferite de
6

studioul de dans, Lotus Dance presteaz i servicii de dans n cadrul evenimentelor corporate:
perechi de dansatori profesioniti care danseaz pe ritmuri de tangou, vals, cha-cha, samba etc.

Principalele activiti desfurate n unitatea economic

1.2

Cursurile de dans sunt organizate n primul rnd pe patru categorii de vrst:


1. Copiii ntre 3 i 5 ani;
2. Copii ntre 6 i 12 ani;
3. Adolescenii ntre 13 i 17 ani;
4. Adulii de la 18 ani n sus.
Dup aceast separare urmeaz mprirea n funcie de nivelul fiecruia, astfel formnd grupe
pentru:
1. nceptori
Persoanele care au n general mai puin de un an de dans i care cunosc un numr mic de
figuri i maxim patru stiluri de dans.
2. Intermediari
Persoanele care au ntre un an i trei ani experien, cunosc un numr mare de figuri i
maxim 6 stiluri de dans
3. Performan
Persoanele care fie au artat o afinitate ridicat pentru dans fie au peste trei ani experien,
ajungnd s stpneasc pn la 10 stiluri de dans.

Ultima separare se face n funcie de venitul, importana i scopul urmrii cursului de dans:
1. edinele de grup: Aceast variant este, n general, cea mai ieftin i cea mai popular.
Preul variaz ntre 100 i 150 RON pe lun i cuprinde 8 edine de dans n grupe formate
din maxim 16 persoane.
2. edinele particulare: Aceast variant este aleas de ctre persoanele care doresc s
dobndeasc cunotine avansate ntr-un interval de timp mai scurt. Preul unei edine
particulare de dans variaz ntre 70 i 110 RON pentru 90 de minute.
7

Pe lng aceste activiti, Lotus Dance ofer i spectacole de dans sportiv n cadrul business sau
pentru evenimente speciale. ntre dou i zece perechi de dansatori profesioniti mbrcai al patru
ace intr pe scen i prezint dansuri precum tango, vals, cha-cha, salsa, samba, charlestone etc.
Ultima activitate care ruleaz la sala Lotus Dance este aceea de vnzare a produselor semipreparate i a buturilor rcoritoare. Acestea se vnd n camer de ateptare fie pentru prinii care
i ateapt copii fie pentru persoanele care vin direct de la serviciu, coal i nu au avut timp s ia
o gustare sau s i cumpere o sticl de ap/suc.

1.3

Studiul Sistemului de conducere

Asociaia Club de Dans Sportiv Lotus Dance este condus de ctre o echip format din dou
persoane, mam i fiu, parteneri cu drepturi egale n cadrul studioului acetia ocup postul de
director general.
Directorul General este cel care are grij de toi instructorii, antrenorii i dansatorii studioului.
Acesta trebuie s caute noi investitori, s conteacteze diferite persoane i companii n vederea
crerii de parteneriate, decide ce coninut s fie trecut pe site-ul studioului, dac este cazul s
uneasc grupe sau s le separe, programul sub care vor rula grupele n cadrul studioului, programul
edinelor particulare. Directorul general ia i decizia asupra oricrui tip de implicre financiar i,
dac este cazul, nchide parteneriatele care se dovedesc a fi neeficiente. Tot directorul general este
cel care stabilete programa i data spectacolelor n anul care urmeaz precum i repartizarea
perechilor de dansatori n spectacolele organizate de ctre noi sau la care particip studioul.

Director
General
Antrenor

Contabil

Social Media
Manager
Instructor
Dansatori
evenimente
Fig. 1 Organigram

1.4

Studiul sistemului condus

Asociaia are cinci angajai fiecare cu rolurile pui specifice: doi instructori, un contabil, un
avocat i o persoan care se ocup de ngrijirea aspectului slii.
Cei doi instructori sunt tineri de 20 respectiv 22 de ani, cu deschidere ctre noutate i
tehnologie, fcnd astfel uoar implementarea unui sistem de gestiune pe care acetia s l poat
folosi, mai ales dac sistemul este accesibil de pe telefoanele mobile sau tabletele acestora.o
Instructorul se ocup cu predarea figurilor de dans syllabus dup un curriculum sistematic
i continuu, gradat i ataptat aptitudinilor i potenialului fizic i motric. Crearea de coregrafii
simple, instruirea dansatorilor, monitorizarea i evaluarea lor n vederea trecerii n cadrul unei
grupe mai avansate. De asemenea se ocup de cursanii care opteaz pentru ore particulare i
doresc s pregteasc dansul de deschidere a nunii. Postul imediat superior este cel de antrenor,
neexistnd post inferior.
Antrenorul se ocup cu predarea figurilor de dans avansate, de nivel C, B, A i S. Are
nevoie de cunotine pedagogice i se adapteaz cu uurin diferitelor tipuri de persoane crora le
pred. Se ocup de crearea de coregrafii complexe i colaje att pentru cuplurile care vin s se
9

pregteasc pentru dansul de nunt, dar i pentru cuplurile care doresc perfecionarea n arta
dansului sportiv. Decide de asemenea dac un dansator va fi avansat i trecut n cadrul unei grupe
superioare. Postul imediat superior este Director General, cel inferior este de instructor.
Dansatorii profesioniti sunt cei care se ocup de evenimentele organizate de Lotus Dance
sau n parteneriat cu studioul nostru. Se deplaseaz la locaia stabilit de client i presteaz unul
sau mai multe momente de dans care pot s conin unul din urmtoarele stiluri de dans: dansuri
clasice (vals, tango, quick step, slowfox), dansuri latino (samba, cha-cha, rumba, jive, passo
doble), dansuri de club (tango argentinian, salsa, merengue, bachata), dansuri de strad (street
dance, hip-hop).
Social Media Manager se ocup de integrarea activitii offline cu cea online asigurnduse c fiecare eveniment pe care-l organizm ajunge s fie populat pe reelele de socializare. De
asemenea se ocup cu redactarea articolelor pe blog pentru a mri reach-ul i engagement-ul n
mediul online i a se asigura de o mai bun fluiditate a link-juice-ului n cadrul site-ului de
prezentare.
1.5

Prezentarea situatiei financiare

Fig. 2 Veniturile aferente ultimilor cinci ani.


10

1.6

Studiul sistemului informaional

1.6.1 Descrierea sistemului informaional


n momentul cnd o persoan se nscrie la cursurile de dans aceasta trebuie fie s completeze
formularul prezent pe site-ul www.LotusDance.ro fie s ne contacteze telefonic n vederea
nscrierii. Pentru rezervarea locurilor att la orele de grup ct i la orele private, cursanii trebuie
s achite un avans de 20% n cazul orelor particulare pentru rezervarea primei edine sau s achite
abonamentul pentru luna ntreag n cazul orelor de grup i s completeze fia de nscriere la
cursurile de dans (Anexa 1, pagina 1).
Odat nscris persoana trebuie s atepte, n cazul orelor de grup, ca grupa s se formeze (1214 persoane) urmnd s fie ntiinata dup prin telefon i e-mail de nceperea noii grupe. Fia de
nscriere i este pus la dosar i este ntocmit o fi de prezen pentru fiecare persoan pe care
trebuie s vin i s o semneze la fiecare final de edin.
n momentul nceperii grupei se ntocmete i fia pentru gru unde n fiecare zi se va nota data
la care a fost predat figura, observaii cu referire la modul de predare, dac exist, i ct timp a
durat aproximativ s predea acea figur. Antrenorii vor completa o fi asemntoare, doar c
acetia nu mai urmeaz un tipar de predare a figurilor i trebuie s completeze ei n tabel figura pe
care au predat-o. Fia figurilor predate mpreun cu fia grupei i cea a cursantului intr la un
dosar separat unde vor fi anexate fiele de nscriere la cursurile de dans.
n cazul orelor particulare se formeaz o fi diferit n care se trece activitatea din cadrul
fiecrei edine: figuri predarte, ct timp a durat predarea figurilo, tehnici studiate.
Persoanele interesate de organizarea de spectacole acestea trebuie s vin cu cel puin o lun
nainte pentru semnarea contractului (Anexa 1, pagina 3), stabilirea datelor i alegerea perechilor
de dansatori care vor veni la data evenimentului s presteze momentul de dans.

11

Posibilul
client

Caut informaii
pentru cursuri

Site

Gsete
informaiile
complete

Telefon/
E-mail

Stabilim pre
nscreirea la cursuri

Studiou

nscrierea la
cursuri i achitarea
avansului
maxim dou
nceperea Dup
sptmni ncep
cursului cursurile

Fig. 3 Paii urmai pentru nscrierea la cursurile de dans

1.5.2 Modelul conceptual al datelor


n principiu exist trei tabele principale de care este legat ntreaga baz de date: cursant,
particular, copil. Acestea semnific cele trei tipuri de cursani care se pot nscrie la un moment la
cursurile de dans oferite de Lotus Dance.
n cazul cursantului, adult, avem relaie de M la N cu tabelul grupa care reprezint grupa din
care acesta face parte. n cazul cursantului ne intereseaz date precum: numele acestuia, telefonul,
e-mail-ul, sexul i grupa din care face parte. n tabelul grupa vom avea o relaia tot de M la N cu
stilurile de dans care vor fi predate n cadrul acelei grupe i de M la N cu tabelul instructori,
reprezentnd instructorii care vor fi alocai grupei. Grupa va avea ca proprieti cele dou zile n
care activeaz la sal, nivelul acesteia, stilul de dans predat i instructorul care i este alocat.
Ultimul tabel, instructor, vom avea nevoie de nume, telefon, e-mail i sex.
n cazul cursantului copil dispar anumite proprieti, rmnem astfel cu nume, telefon printe,
e-mail printe, vrst i grup. Avem o relaia de M la N cu tabelul grupa n care vom avea o relaia
tot de M la N cu stilurile de dans care vor fi predate n cadrul acelei grupe i de M la N cu tabelul
instructori, reprezentnd instructorii care vor fi alocai grupei.

12

Ultimul tip de cursant este cel care alege s fac edinele particular, tabelul are ca proprieti:
nume, telefon, e-mail, data edinelor i instructorul avnd relaii de M la 1 cu data deoarece ntro anumit or i o anumit dat nu poate fi dect un singur cuplu n sal i M la 1 cu instructorul
deoarece doar un instructor se poate ocupa de un cuplu.

1.5.3 Analiza critic a sistemului actual i identificarea neajunsurilor existente


n funcionarea sistemului existent

Principalul lucru la care trebuie renunat este sistemul de ndosariere care ocup spaiu i aduce
greuti atunci cnd vine vorba de cutarea unui document exact. De asemenea mai apar probleme
n cazul n care doi instructori i planific n acelai timp o edina de dans n acelai interval orar.
Acest lucru nefiind permis la Lotus Dance unul dintre acetia trebuie s sune clientul i s
stabileasc un alt interval pentru edine.
Un alt defect al sistemului actual este lipsa unei modaliti de a transmite live clienilor statusul
slii: locuri libere la grupe, intervale orare libere pentru edine particulare sau disponibilitate
pentru spectacole. La fiecare telefon trebuie s comunicm clienilor toate informaiile acestea.
Alta problem ridicat de sistemul actual este nevoie ca persoana nscris s vin pn la sal
pentru a achita avansul. De multe ori persoanelor le este greu s vin i renun fie la curs fie s
plteasc avansul ajungnd astfel la neplceri.

1.5.4 Direcii de perfecionare a sistemului actual

Sistemul va avea o baz de date unde se vor putea conecta att cursanii ct i instructorii
studioului de dans. Astfel se va renuna la nevoia de a avea toate informaiile pe hrtie eliminnd
spaiul ocupat de documente i reuind o mai bun gestionare a datelor.
Stocarea bazei de date ntr-un mediu online este o direcie bun de urmat pentru a elimina
problema programrii edinelor n acelai interval orar i va oferi o soluie pentru cursani s vad
cnd au programate edinele.

13

Pentru eliminarea drumului pe care cursanii trebuie s l fac la sal pentru achitarea primei
pri a cursului vom implementa un sistem de plat n cadrul aplicaiei. Plata se va face prin
Facebook, Paypal, Windows Store sau prin virament bancar. Factura se va emite n momentul n
care persoana a terminat nscrierea i detaliile de plat i vor fi livrate pe e-mail dup mpreun cu
chitana dac a decis s fac plata pe loc.

14

2.1

Proiectarea de ansamblu a sistemului informatic


Obiectivele i oportunitatea aplicaiei informatice

Ideea care va fi urmat n sistemul care urmeaz s fie conceput este simplitate: crearea
unui sistem cu o interfa grafic minimalist, dar care s aib toate informaiile necesare.
Direcia de urmat este crearea unei platforme cu baz e date online la care se vor putea
conecta att clienii pentru a verifica disponibilitatea locurilor libere, nscrierea la cursuri de dans
i urmrirea figurilor predate n timpul cursurilor de dans. Astfel vom elimina problema de a face
dou nscrieri n acelai interval de timp.
Pentru instructori sistemul va permite monitorizarea orelor pe care le-a fcut n luna n
curs, edinele pe care urmeaz s le in i s fac eventuale modificri n programul actual.
Datorit faptului c sistemul este conectat la o baz de date online vom evita cazul n care doi
instructori stabilesc o edin n cadrul aceluiai interval orar. De asemenea la fiecare modificare
fcut de oricare dintre pri att instructorul ct i cursantul vor fi atenionai printr-un notificare
de tip toast i un e-mail.

2.2

Locul aplicaiei informatice n sistem

Aplicaia va fi folosit ca mijloc de comunicare ntre instructori, ntre instructori i


cursani i ca mijloc de stocare a informaiilor. Informaiile vor fi stocate n cloud, putnd fi
accesate de oriunde n lume. Astfel eliminm nevoia de a fi prezent la studiou pentru a putea lua
un numr de telefon sau pentru a verifica cnd un instructor are programat o edin.
Aplicaia are trei pri care pot fi accesate: Partea de administrare accesibil directorilor
generali unde vor fi prezente statistici referitoare la numrul de persoane nscrise, stiluri preferate,
locuri libere, venit n luna curent sau n lunile care au trecut precum i s vad n ce moment i
eventual i de ce un cursant a renunat la cursurile noastre.

15

Partea accesibil de instructori i antrenori permite stabilirea cursurilor de dans,


modificarea lor, cverificarea grupei pentru a vedea cte persoane mai lipsesc pentru a forma o
grup i afiarea profilului personal pentru a afla cte edine a predat sau cnd urmeaz s in
urmtoarele cursuri.
A treia parte a aplicaiei este cea fcut pentru client. Acesta se poate nscrie la cursurile
de dans dac dorete, vede cte persoane sunt nscrise deja, cte locuri sunt libere precum i, dac
s-a nscris, figurile care au fost predate la studio. Aplicaia, parial, va rula i ca o oglind a siteului, mimnd informaiile din site: pre, informaii referitoare la cursuri, dar i blog-ul site-ului
care este oricum un punct de vnzare foarte puternic.
Scopul aplicaiei va fi i acela de a aduce posibili noi clieni la sal. Aceasta va fi
disponibil att pentru utilizatorii de Windows 8 ct i Windows Phone 8 iar prin faptul c
produsul software va implementa sistem de login prin Facebook ne va permite, cu acordul
utilizatorilor, s postm mesaje pe wall-urile celor care folosesc aplicaia s se nscrie la cursuri
cu scopul de a atrage posibili noi viitori clieni dup cum se poate observa n Img X.

2.3

Definirea rapoartelor finale

100

90
80
70
60
50
40
30
20
10
0
Noiembrie

Decembrie
Cursuri aduli

Ianuarie

Februarie

Cursuri copii

Martie

Aprilie

Cursuri particulare

Fig. 4. Situaia persoanelor care s-au nscris la cursurile de dans n ultimele ase luni

16

2.4

Modelarea datelor i modelarea prelucrrilor

Baza de date este realizat n Microsoft SQL Server i conine 13 tabele relaionate.
Tabelele sunt grupate n trei categorii: o categorie conine informaii despre cursanii aduli care
opteaz pentru orele de grup, cea de a doua fiind destinat celor care aleg edinele particulare i
a treia categorie pentru cursanii, aduli sau copii, care aleg orele particulare.
Atributele exprim caracteristici i proprieti a sistemului economic analizat i a asocierilor dintre
componente. n mod curent, atributele sunt asociate entitilor. Fiecare entitate conine un numr
de atribute:
CURSANT
Id, nume, telefon, e-mail, sex, rank, grupa, confirmat, pachet, containerName, resourceName,
sasQueryString, imageUri, channel.
COPIL
Id, nume, telefon, email, varsta, grupa.
PARTICULAR
Id, nume, telefon, email, sex, sedinte, instructor.
INSTRUCTOR
Id, nume, email, telefon, sex.
GRUPA
Id, zi1, zi2, nivel, id_instructor
STIL
Id_stil, stil.
DATA_SEDINTA
Id, data, ora
COPIL_GRUP
Id,, idCopil, idGrup
CURSANT_GRUP
idCursant, idGrup
17

REL_PARTIC_DATA
Id, DataId, particID
CURSANT_LUNA
IdCursant, idGrup
STIL_GRUP
IdStil, IdGrup

2.5

Diagrama Entitate-Asociere

Fig. 6. Diagrama entitate-asociere a bazei de date


18

O particularitate o reprezint tabela cursant. Aceasta are ca i cheie primar cmpul ID


generat automat printr-o secven javascript n momentul inserrii unei nregistrri. Urmtoarele
cmpuri din tabel sunt informaiile generale despre cursant (nume, sex, e-mail, telefon, grup i
rank). n cmpurile containerName, resourceName, sasQueryString i imageUri vor fi
stocate cmpurile necesare sustragerii informaiilor de tip blob pentru a afia poza de profil a
fiecrui cursant n parte.

2.6

Tehnologii utilizate

Windows Azure Mobile Service este un serviciu oferit de Microsoft lansat cu scopul de a
facilita dezvoltarea unor aplicaii mobile de top. Mobile Services unete un set de servicii Windows
Azure care creeaz un backend foarte puternic pentru aplicaii: sistem de gestionare a tabelelor,
integrarea notificrilor i serviciilor push i toast, integrarea providerilor de identitate pentru
autentificare, posibilitatea de integrare cu alte servicii de tip cloud, posibilitatea de scalarizare a
unei instane de servicii.
Baza de date Microsoft Windows Azure SQL extinde capabilitile unui server obinuit
prin gzduirea n cloud. Folosind serviciul Windows Azure SQL Database un utilizator i poate
crea o baz de date uor de relaionat i de ntreinut. Beneficiile sunt: manevrabilitate, grad foarte
mare de disponibilitate, posibilitatea scalarizrii, un model deja cunoscut de baze de date i un
model de baz de date relaional. Un alt atuu foarte important a stocri n baza de date Microsoft
Windows Azure SQL este replicarea datelor. Acestea fiind replicate de trei ori, tolernd astfel
eventuale greeli n lucrul cu date i uurin n cazul n dorim s revenim la un backup mai vechi
deoarece tergerea unei nregistrri, tabele sau a ntregii baze de date nu este o greeal fatal.
Serviciul de Storage furnizat de Microsoft ofer aplicaiei acces la servicii de tip blob
pentru date binare de dimensiuni mari, tabele pentru stocare non-relaional i queue pentru
transmiterea de mesaje ntre aplicaii. Un cont de storage poate s aib unul sau mai multe
containere care s conin diferite blob-uri. Blob-urile pot fi de dimensiuni mari de pn la 50
gigabii, i pentru transferul mai uor de blob-uri, acestea pot fi subdivizate n blocuri. Astfel c n
cazul unei erori de transmitere nu va fi nevoie s se retransmit ntregul blob ci o s se transmit
de la blocul de date de unde s-a tiat conexiunea.
19

XAML este un limbaj de programare declarativ folosit n framework-ul .NET pentru a


separa design-ul interfeei de funcionalitatea ei. Design-ul este controlat prin cod XAML, n timp
ce programarea funcionalitilor implementat n C# se realizeaz n partea de code-behind.
SDK-ul Facebook pentru Javascript are un set vast de instrumente pe care utilizatorii l pot
folosi pentru a aduga butoane de like sau alte plugin-uri sociale, pentru a implementa un sistem
de login prin intermediul Facebook, pentru a lansa csue de dialog prin care lumea s poat
mprtii diferite poveti, pentru a se folosi cu uurin de API-ul Graph al Facebook-ului i chiar
pentru a comunica prin intermediul unei aplicaii.

2.7

Arhitectura aplicaiei

Din punctul de vedere al tehnologiilor utilizate, aplicaia este structurat pe patru nivele:

Baza de date: Include partea de stocare i gestiune a informaiilor. Acest nivel este folosit
pentru prelucrri rapide pe volum mare de date oferind securitate sporit i posibilitatea
de export n diferite formate (excel, pdf, xml, text etc)

Serverul Mobile Services asigur legtura ntre nivelul 3, 4 i nivelul 1 (serverul SQL),
ocupndu-se de validarea informaiilor de logare, de prelucrarea datelor i inserarea lor n
baza de date.

Tehnologia .net i limbajul C# permit dezvoltarea de module flexibile, uor de adaptat la


cerinele particulare ale clienilor i la modificrile legislative. Acesta este nivelul care
implementeaz funcionalitatea aplicaiei, el primete datele, le analizeaz i le
serializeaz pentru a fi trimise la nivelul 3 unde vor fi prelucrate. Tot la acest nivel se
primesc i pachetele serializate din server i sunt descompuse pentru a fi servite listrii.

Limbajul XAML este cel care ajut la crearea unui sistem modern cu interfa
ergonomic i intuitiv. Este nivelul care determin interfaa produsului software,

utilizatorul interacionnd cu aplicaia prin intermediul controalelor definite prin XAML.

20

Interfaa

XAML
Logica i serializarea informaiilor

C#
Prelucarea i inserarea datelor

Windows Mobile Services


Baza de date

SQL
Fig.7 Cele patru nivele ale aplicaiei

n ceea ce privete transferul de informaie n cadrul aplicaiei Lotus Dance acesta se


realizeaz ntre cele patru componente principale (figura 2): Aplicaia client de tip Modern UI,
serviciul Mobile Services, baza de date SQL i sistemul de login Facebook, Google, Twitter i
Microsoft, urmnd paii:
1. Introducerea datelor de autentificare i transmiterea lor ctre Mobile Services;
2. Transmiterea datelor de logare ctre serviciul de autentificare al Facebook, Google, Twitter
sau Microsoft n vederea verificrii i identificrii utilizatorului.
3. Recunoaterea utilizatorului i transmiterea informaiilor de profil i a token-ului de acces
ctre Mobile Services.
4. Prin intermediul Mobile Services, aplicaia primete de la reeaua de socializare acreditarea
utilizatorului care s-a autentificat.
5. Odata logat aplicaia posteaz pe profilul utilizatorului, la opiunea acestuia, informaii despre
nscrierea sa la cursurile de dans.
6. Aplicaia local poate s comunice informaii serializate de la i ctre Mobile Services.

21

7. Pachetul de date este introdus n baza de date SQL numai dac pachetul vine cu token-ul de
acreditare potrivit din partea Facebook.

Fig. 8. Transferul de informaie ntre principalele componente ale aplicaiei

2.8

Tehnologie de prelucrare

Hardware:
Laptop: Procesor i3 2.40 GHz, 8GB ram, 1TB spaiu de stocare folosit att pentru a reda melodiile
ct i pentru gestionarea studioului de dans. Preul de achiziie este dou mii de lei.
Sistem audio: Aplificator audio conectat la laptop pentru citirea melodiilor i cinci boxe i un
subwoofer pentru redarea melodiilor. Preul ntregului sistem este trei mii de lei.
Router Wireless: Folosit datorit nevoii de a comunica cu baza de date din cloud pe care o are
aplicaia i datorit faptului c persoanele care vin la sal se pot conecta la internet n cazul n care
au pauz sau au ajuns prea devreme. Preul de achiziie este de dou sute lei.
Aparat foto Nikon D5100: Folosit pentru a livra coninut ctre Social Media Manager pe care
acesta l public n cadrul reelelor de socializare pentru a mri reach-ul studioului. Pre de achiziie
dou mii dou sute lei.
Software:
22

Toate pachetele Microsoft au fost achiziionate prin parteneriatul BizSpark pe care Lotus Dance l
are cu Microsoft. Astfel nct preurile au fost reduse la zero. Parteneriatul este valabil ntre doi i
cinci ani i dup terminarea perioadei de parteneriat o parte din produsele software pot fi folosite
n continuare.

Licen Windows Azure: Windows Azure este o platform creat de Microsoft pentru a crea, a
face deploy i a administra servicii i aplicaii de oriunde de pe glob prin intermediul centrelor de
date Microsoft. Alegerea de a lucra cu Windows Azure a fost fcut datorit faptului c nu exist
un abonament lunar ci plteti fix volumul de date pe care-l foloeti i, dac este cazul, s se poat
mri numrul de resurse alocate pentru susinerea aplicaiei n mod automat. Acest lucru
dovedindu-se un adevrat avantaj fa de metoda clasic de a avea o baz de date pentru care fie
ar fi trebui s se plteasc ntreaga arhitectur, mentenana, back-up-ul fiierelor i eventual plata
diferitelor defeciuni hardware care ar fi putut s apar dup un an sau doi de funcionare. Din
estimri preul pentru serviciul azure este de aproximativ cincizeci de euro / an, dar datorit
faptului c studioul Lotus Dance a fost ncadrat n programul BizSpark de startup-uri preul este
inexistent.
Visual Studio Professional 2013: Un mediu de programare integrat oferit de Microsoft a fost ales
datorit monopolului pe care-l prezint Windows-ul pe piaa calculatoarelor de birou i datorit
nivelului din ce n ce mai mare ca i cot de pia a telefoanelor mobile cu sistem de operare
Windows Phone 8. Folosit pentru dezvoltarea aplicaiei, viitoare update-uri, Visual Studio este o
unealt de importan maxim pentru dezvoltarea produsului software. Preul unei licene este de
aproximativ cinci sute de dolari, dar datorit programului BizSpark acesta este livrat n mod
gratuit.
Windows 8.1: Folosit ca sistem de operare pentru laptop-ul de la sal i ca sistem de rulare pentru
aplicaia care va fi folosit pentru administrarea studioului. Principalul motiv pentru care s-a ales
Windows 8.1 este noutatea tehnologic de care acesta d dovad fiind construit pentru touch,
interfa intuitiv i primit gratuit din programul BizSpark. O licen de Windows 8 are preul de
o sut dou zeci de dolari.
Suita de pachete Office 2013: Folosite pentru redactarea documentelor oficiale, a listelor de
prezen, a programului slii, programului spectacolelor i a fielor cursanilor. De asemenea
23

folosim outlook pentru citirea i trimiterea e-mail-urilor. Preul pentru suita Office 2013 Home i
Office este de o mie o sut lei.

2.9

Calendarul de realizare

Realizarea bazei de date: o lun.


Dezvoltarea produsului software: trei luni
Implementarea soluiei: o lun
Testarea i lansarea: o lun

Baza de date

Dezvoltarea produsului software

Implementarea aplicaiei

Fig. 9 Calendardul de realizare

24

Testarea i lansarea

3. Proiectarea de detaliu a aplicaiei informatice


3.1 Structura aplicaiei pe clase i funcionaliti
Aplicaia are la baz o clas abstract denumit USER. Din user motenim clasele:
instructor, cursant i administrator. Cele patru clase reprezint cele patru tipuri de utilizatori ai
aplicaiei.

user

instructor

cursant

administrator

Fig. 10. Clasa abstract USER i clasele care o motenesc

Cursanii sunt de trei feluri, cursanii care vin la orele de grup pentru aduli, cursanii care vin
la orele de grup pentru copii i cei care iau ore particulare, astfel nct, clasa cursant este motenit
de clasa particular i copii.
n cele ce urmeaz vom vedea mai n detaliu cum se formeaz legturile ntre clase, care
sunt proprietile acestora i metodele specifice fiecrei categorii de utilizator.

25

Fig. 11 Clasele aplicaiei cu proprieti i metode

26

User
User este o clas abastract care nu va fi propriu-zis folosit. n schimb, din aceasta deriv
principalele clase ale aplicaiei: cursant, instructor i administrator.
Ca i proprieti, clasa user are:

Nume: de tip string, loc unde va fi stocat numele i prenumele persoanei care va fi
nregistrat.

E-mail: de tip string, este modul principal de nregistrare n interiorul aplicaiei, pentru
user-ul normal aceasta este opional iar pentru userii care doresc s se nregistreze,
aceasta va fi sustras prin intermediul contului de Facebook, Google+ sau Twitter.

Rank: pentru a putea beneficia de anumite facilitii, am introdus proprietatea rank care
se updateaz automat la anumite perioade de timp. Cu ajutorul proprietii rank,
cursantul are acces la anumite reduceri sau la anumite evenimente pe care le
organizeaz Lotus Dance. De asemenea, prin intermediul proprietii RANK facem i
diferenierea la nivel de accesare de informaii cu referire la cine a fcut cererea (un
instructor, un administrator, un antrenor sau un cursant).

Sex: de tip string, aceast informaie este luat fie prin intermediul reelelor de
socializare (dac avem acces la aceast informaie), fie prin intermediul formularului
de nregistrare. Pentru cursani este un atribut obligatoriu i esenial pentru a verifica
proporionalitatea grupelor, iar pentru instructori un detaliu la fel de important pentru
a asigura sexe diferite n cadrul orelor particulare.

Telefon: de tip string, acesta va fi completat n momentul nscrierii cu ajutorul


formularului de contact. Este modalitatea principal de contact n cazul n care are loc
modificarea vreunei ore.

Image_url: de tip string, aici va fi stoca string-ul care va face trimitere ctre imaginea
profilului utilizatorului. Aceast informaie va fi luat fie de pe profilul de Facebook,
Google+ sau Twitter al utilizatorului sau, dac dorete, poate s ncarce el una
personalizat prin intermediul aplicaiei.

sasQueryString: din motive de siguran, avem nevoie de o semntur care s valideze


fiecare intrare i accesare a Blob-urilor, string-ul asociat fiecrei interogri va fi stocat
n sasQueryString. De specificat c fiecare semntur SAS este valid doar pentru cinci
27

minute de la validarea acesteia n contextul n care nu mai este apelat sau folosit, n
caz contrar aceasta mai primete nc cinci minute ca durat de via.

resourceName: n resourceName vom stoca fix adresa din blog a imaginii. Aceasta vine
sub forma de nume_poz + .jpg.

containerName: informaia legat de poza utilizatorului va fi stocat n Windows


Azure, aceasta este de tip Blob i pentru a fi accesat, avem nevoie de adresa de Blobului. Aceasta va fi stocat n containerName.

Ca un rezumat al modului de operare a stocrii de tip BLOB: Image_url ne va spune url-ul unde
se gsete imaginea, pentru accesarea url-ului avem nevoie de o semnturi de tip SAS care este
valabil doar 5 minute de la crearea acesteia, pentru accesarea fiierului trebuie s tim locul unde
aceasta este stocat (containerName) i numele exact (resourceName) pentru a o putea identifica
i a o folosi.
Metodele clasei:

void rezerva: o metod care va fi folosit de toate celelalte clase care motenesc pe USER.
Cursantul, instructorul sau administratorul pot s nscrie persoane la cursurile de dans
apelnd aceast metod. Ca parametrii de intrare, aceasta are: nume, sex, e-mail, telefon,
grupa, rank_i, rank_sender. n momentul apelrii aceste funcii, se va forma o clas cursant,
instructor sau administrator (n funcie de rank_i care i este atribuit), informaia va fi
serializat i trimit n Windows Azure pentru stocare, urmnd ca utilizatorul s i poat
aduga poz de profil ulterior sau s i modifice anumite date.

void rank: o metod de tip get/set pentru a putea stabili gradul de acces al utilizatorului n
cadrul aplicaiei.

void self_modi: o metod care permite utilizatorului s i modifice anumii parametrii din
cadrul profilului personal.

Cursant
Cursantul este persoana care s-a nscris la un curs, fie c a fost sau nu acceptat. n momentul
nscrierii, cursantul are acces la anumite statistici n cadrul aplicaiei. CURSANT fiind o clas
motenit din USER are aceleai proprieti specificate mai sus, dar i urmtoarele:

28

Confirmat: proprietate de tip boolean, n momentul nscrierii a unei persoane la un curs,


valoarea acesteia este false, n momentul n care un instructor, antrenor sau administrator
confirm nscrierea aceasta devine true i cursantul are acces la funciile suplimentare ale
aplicaiei.

Grupa: proprietate de tip string, vor fi stocate informaiile referitoare la grupa unde
cursantul dorete s fac cursurile de dans sau, n cazul orelor particulare, data primei
edine.

Pachet: o proprietate de tip string, aceasta arat pachetul pe care un cursant l-a ales. Acesta
face referire strict la ce fel de abonament a ales (clasificat n funcie de numrul de edine
sau numrul de luni, n cazul orelor de grup)

Stil: o proprietate de tip string, va arta stilurile de dans pe care cursantul a ales s le
urmeze.

Id_c_grup: pentru o mai bun indexare, fiecare cursant o s aib propriul lui ID, acesta va
fi generat automat, dac utilizatorul nu dorete s se nregistreze prin intermediul reelelor
de socializare, sau va fi folosit id-ul unic dat de Facebook, Google+ sau Twitter n
momentul primei nregistrri al utilizatorului pe una din cele trei reele de socializare. n
momentul nregistrrii, id-ul dispozitivului va fi asociat cu cel al userului, astfel nct se
vor putea trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai
rapid diferitele informaii.

Ca metode, clasa CURSANT are urmtoarele:

Void getVideo: fr parametrii de intrare, aplicaia permite descrcarea clipului selectat de


pe platforma YouTube i redarea acestuia n cadrul aplicaiei. Pentru o indexare mai bun
a filmelor urmrite, cererea se face prin intermediul serviciului de cloud.

Void signal: cu ajutorul acestei metode, cursantul poate s alerteze instructorul care i este
asignat sau administratorul cu referire la imposibilitatea de a ajunge la o edin. n cadrul
orelor particulare, acesta va fi pus s reprogrameze edina urmnd s primeasc
confirmare prin intermediul aplicaiei. Confirmarea va veni fie de la instructor fie de la
administrator.

29

Instructor
Clas motenit din USER, INSTRUCTOR are o parte din posibilitile de administrare ale unui
administrator, dar nu toate. Proprietile acestuia sunt:

Grupa: proprietate de tip string, aceasta arat grupa care i este asignat instructorului.

Id_instr: pentru o mai bun indexare, fiecare instructor o s aib propriul lui ID, acesta va
fi generat automat, dac nu dorete s se nregistreze prin intermediul reelelor de
socializare, sau va fi folosit id-ul unic dat de Facebook, Google+ sau Twitter n momentul
primei nregistrri al utilizatorului pe una din cele trei reele de socializare. n momentul
nregistrrii, id-ul dispozitivului va fi asociat cu cel al instructorului, astfel nct se vor
putea trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai rapid
diferitele informaii.

Metodele clasei INSTRUCTOR sunt:

Add_crs: instructorul poate s adauge un cursant direct n cadrul unei grupe, fr a fi nevoie
s fac nainte rezervarea locului. Ca parametrii de intrare, aceasta are: nume, sex, e-mail,
telefon, grupa, rank_i, rank_sender. n momentul apelrii aceste funcii, se va forma o clas
cursant, informaia va fi serializat i trimis n Windows Azure pentru stocare, urmnd ca
utilizatorul s i poat aduga poz de profil ulterior sau s i modifice anumite date prin
intermediul aplicaiei.

Modif: instructorul poate s modifice data programrii unei edine particulare sau ora
acesteia. n momentul n care orice tip de modificare a fost fcut, persoana implicat va
primi o notificare de tip toast pe dispozitiv precum i un e-mail care s l informeze cu
referire la modificarea fcut.

Administrator
Proprietile clasei sunt urmtoarele:

Id_admin: pentru o mai bun indexare, fiecare administrator o s aib propriul lui ID,
acesta va fi generat automat, dac nu dorete s se nregistreze prin intermediul reelelor
de socializare, sau va fi folosit id-ul unic dat de Facebook, Google+ sau Twitter n
momentul primei nregistrri pe una din cele trei reele de socializare. n momentul
nregistrrii, id-ul dispozitivului va fi asociat cu cel al instructorului, astfel nct se vor
putea trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai rapid
30

diferitele informaii. Specific administratorului este faptul c Id-ul poate fi generat doar
rulnd aplicaia din serviciul de cloud. Astfel c nu vor exista probleme de securitate prin
accesarea informaiilor de ctre persoane nedorite.
Metodele clasei:

Add_cursant: metod de tip void, este folosit pentru adugare instant a unei persoane la
cursuri fr a fi necesar confirmarea unei alte persoane. Ca parametrii de intrare, aceasta
are: nume, sex, e-mail, telefon, grupa, rank_i, rank_sender. n momentul apelrii aceste
funcii, se va forma o clas cursant, informaia va fi serializat i trimis n Windows Azure
pentru stocare, urmnd ca utilizatorul s i poat aduga poz de profil ulterior sau s i
modifice anumite date prin intermediul aplicaiei.

Add_instructor: metod de tip void, este folosit pentru adugarea unui instructor n sistem.
Fiind, de asemenea, i singura metod de a face aa ceva. Ca parametrii de intrare, aceasta
are: nume, sex, e-mail, telefon, grupa, rank. n momentul apelrii aceste funcii, se va forma
o clas instructor, informaia va fi serializat i trimis n Windows Azure pentru stocare,
urmnd ca utilizatorul s i poat aduga poz de profil ulterior sau s i modifice anumite
date prin intermediul aplicaiei.

Delete: metod de tip void, administratorul este singurul care are voie s tearg cursani,
date, edine din sistem. Folosim ghilimele deoarece datele nu vor fi terse ci doar mutate
ntr-un alt tabel fantom pentru generarea altor rapoarte suplimentare.

Modif: administratorul poate s modifice data programrii unei edine particulare sau ora
acesteia. n momentul n care orice tip de modificare a fost fcut, persoana implicat va
primi o notificare de tip toast pe dispozitiv precum i un e-mail care s l informeze cu
referire la modificarea fcut.

Cursant_partic
Clasa CURSANT_PARTIC este motenit din clasa CURSANT. Aceasta i ia toate proprietile
i metodele (pe care nu le vom mai discuta aici, fiind prezentate anterior), dar are n plus
urmtoarele proprieti:

Data_nunta: proprietate de tip date, va fi stocat data nunii sau data evenimentului pentru
care se pregtete cursantul n vederea repartizrii optime a orelor de curs. Aceast dat va

31

fi folosit i n alte ocazii pentru a trimite notificri cursantului propriu-zis cu urri de La


muli ani sau a altor urri specifice.

Id_p_grup: Proprietate de tip string, fiecare cursant o s aib propriul lui ID, acesta va fi
generat automat, dac utilizatorul nu dorete s se nregistreze prin intermediul reelelor de
socializare, sau va fi folosit id-ul unic dat de Facebook, Google+ sau Twitter n momentul
primei nregistrri al utilizatorului pe una din cele trei reele de socializare. n momentul
nregistrrii, id-ul dispozitivului va fi asociat cu cel al userului, astfel nct se vor putea
trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai rapid
diferitele informaii.

Melodie: proprietate de tip string, va stoca melodie pe care un cursant a ales-o pentru nunta
sau evenimentul acestuia.

Sedinta: proprietate de tip date, vor fi stocate datele edinelor pentru rezervarea locului n
sal i rezervarea orei instructorului.

Cursant_copil
Clas motenit din clasa CURSANT, CURSANT_COPIL motenete toate proprietile i
metodele prezentate mai sus, dar mai are trei proprieti aparte:

Id_coil_grup: Proprietate de tip string, fiecare cursant o s aib propriul lui ID. n
momentul nregistrrii, id-ul dispozitivului va fi asociat cu cel al userului, astfel nct se
vor putea trimite notificri de tip push i toast ctre acesta, asigurndu-ne c primete mai
rapid diferitele informaii. Datorit politicilor de folosire a aplicaiei, copilul nu are voie s
se nregistreze n aplicaie cu ajutorul reelelor sociale dect dac are vrsta minim de 13
ani.

Varsta: pentru crearea optima a grupelor, este nevoie s tim vrsta copilului. Aceasta va
fi completat n formularul de nscriere n momentul n care copilul sau printele l
nregistreaz la curs.

Nume_parinte: proprietate de tip string, va salva numele printelui sau tutorelui legat al
copilului.

32

3.2 Proiectarea logic i fizic a ieirilor


Ieirile sistemului conine rapoarte generate n cadrul sistemului ct i n exteriorul acestuia,
astfel nct putem s facem o mai bun evaluare n modul cum a evoluat produsul, s vedem rada
de adopie a aplicaiei, numrul de persoane nscrise prin intermediul aplicaiei i i a numrului
de persoane nscrise prin intermediul altor produse (site web).
Statisticile din cadrul aplicaiei pot fi vizualizate i analizate direct, din cadrul aplicaiei,
descrcate pentru a le vizualiza local sau trimise prin e-mail.

Raportul de adopie a aplicaiei: putem urmri cte persoane au instalat aplicaia ntr-o
perioad de timp, eventualele erori pe care utilizatorii le-au ntmpinat, numrul de
persoane care folosesc zilnic aplicaia i putem urmri numrul de dezinstalri a aplicaiei.

33

Raportul de activitate: putem urmri numrul de persoane nscrise din cadrul aplicaiei i
numrul de persoane care s-au nscris din afara acesteia. De asemenea, putem urmri
repartizarea cursanilor n funcie de grup i n funcie de stilurile pe care le-au ales precum
i Rata de abandon a cursurilor.

Raportul de activitate individual: Ca administrator putem urmri att raportul per ansamblu
al grupelor sau a ntregii activiti ct i activitatea individual pe care o are un anumit
cursant. Putem determina ce stiluri de dans a ales cineva s urmeze, orele la care acesta
dorete s vin, de ct timp vine la cursuri precum i detalii referitoare la metoda de plat
pe care o dorete.

34

Raportul de activitate personal: Ca i persoan nscris la cursuri poi vedea pe pagina


profilului tu, i poi extrage, raportul privind cursurile pe care le-ai urmat, stilurile de dans
pe care le-ai studiat cel mai mult. i poi edita datele personale, poi urmri de ct timp
urmezi cursurile i data scadent a urmtorului curs.

35

3.3 Proiectarea logic i fizic a intrrilor


n principiu, datele referitoare la activitatea aplicaiei este vizualizat cu ajutorul inserrii
codului de urmrire Google Analytics.
Pentru o mai bun funcionare a procesului de nscriere s-a urmrit ndeprtarea
elementelor de tip chrome i implementarea unei nscrieri secveniale. Astfel nct, n prim faz,
persoane care dorete s se nscrie trebuie s i completeze numele, sexul sau dac este cazul s
specifice c urmeaz s vin dou persoane, n cuplu, numrul de telefon, adresa de e-mail i ce
abonament dorete.
n funcie de abonamentul selectat, acesta va avea de mai multe opiuni:

36

n cazul unei persoane care se nscrie la cursurile de dans, pentru aduli, de grup, trebuie s
aleag stilurile de dans pe care le dorete, zilele i intervalul orar n care poate s urmeze
cursurile.

n cazul n care persoane a ales s se nscrie la cursurile de dans pentru nunt, aceasta va
trebui s aleag zilele i orele de la care este disponibil pentru a urma cursurile de dans
private.

Dac este vorba de nscrierea unui copil, trebuie specificat vrsta, dac mai are experien
de dans sau dac prefer o anumit zi i or pentru cursuri.

Al treilea pas const n alegerea metodei de plat, aceasta poate fi cash (la sediul Lotus Dance),
prin transfer bancar (prin emiterea unei facturi care va fi trimis prin e-mail) sau cu ajutorul
serviciului Microsoft de In An Purchase (IAP). Cu ajutorul serviciului de IAP, consumatorul
poate s achiziioneze direct din cadrul aplicaiei abonamentul pe o lun de zile la sala Lotus
Dance. Acesta vine sub form de serviciu n interiorul aplicaiei, urmnd ca persoana nscris s
vin la sal pentru a finaliza nscrierea direct n ziua cnd se ncep cursurile.

3.4 Proiectarea bazei de date


n capitolul precedent am nceput s studiem arhitectura bazei de date, acum vom intra n
detaliu cu referire la fiecare tabel n parte. Ce nregistrri are, de ce tip este data i orice alte
informaii vitale mai sunt. Dup cum am specificat, baza de date a fost dezvoltat n Microsoft
Windows Azure, tabelele care o compun sunt urmtoarele:

37

Fig. Tabela CURSANT

Fig Tabela COPIL

38

Fig Tabela INSTRUCTOR

Fig Tabela PARTICULAR


39

Fig Tabela CRS_GRP

Fig Tabela CRS_LUNA

Fig Tabela COPIL_GRUP

Fig Tabela GRUPA

40

Fig Tabela DATA

Fig Tabela LUNA

Fig. Tabela REL_PARTIC_DATA

Fig. Tabela STIL

Fig. Tabela STIL_GRUP

41

3.5 Proiectarea interfeei aplicaiei


n construirea aplicaiei s-au inut cont de anumite specificaii i sugestii care au venit cu sistemul
de operare Windows 8, acestea au fost urmate pentru a oferi utilizatorilor o experien ct mai
plcut i uoar:

Coninut nainte de elemente chrome: s-a renunat la orice element care ar putea s distrag
atenia utilizatorului de la funcia de baz a aplicaiei. S-au separat paii de nscriere i cei
de verificare a cursanilor pentru a mai bun tranziie ntre acestea.

Mai puin nseamn mai mult: am renunat la barele de marcaj care veneau cu interfaa
obinuit de Windows i am trecut pe un aranjament de tip grid de dimensiuni diferite, n
funcie de nivelul de administrare:
o Dup ce utilizatorul a intrat prima dat n aplicaie, acesta poate s vad aplicaia
n layout-ul clasic de 3 x 2, avnd acces la:

Informaiile legate de cursuri

Informaiile legate de echipa Lotus Dance

Tarifele practicate de ctre Lotus Dance

Posibilitatea de a vizualiza perechile disponibile pentru spectacole

Blog-ul site-ului

Modaliti de contact

Fig Ecranul pentru utilizatorul de tip guest


42

o Dac utilizatorul dorete s acceseze informaiile ulterioare oferite de ctre


aplicaie, acesta trebuie s se nregistreze cu ajutorul contului de Facebook,
Google sau Microsoft, astfel va avea acces la:

Posibilitatea de a se nscrie la cursuri

Posibilitatea de a urmri clipurile cu instruciuni video n care sunt


prezentai paii predai

Fig Ecranul pentru utilizatorul de tip cursant

o Dac utilizatorul care s-a nregistrat n aplicaie este i administrator, atunci


acesta va avea acces la fereastra de listare a cursanilor, precum i acces la
statisticile oferite.

43

Fig Ecranul pentru utilizatorul de tip cursant

Interfaa, de asemenea, poate fi adaptat pentru modul panoram i portret pentru


dispozitivele care vin cu giroscop sau poate fi mprit astfel nct s ocupe doar o poriune
din ecran.

Am renunat la elementele de gri sau alb clasic i am ncercat s i dm o not personal


aplicaiei prin gradientul de rou/viiniu specific site-ului.

4. Prezentarea produsului software


4.1 Cerinele platformei hardware
Pentru a rula aplicaia, n primul rnd, ai nevoie de sistemul de operare Windows 8. Pentru
acesta trebuie s ai urmtoarele cerine minime:

Procesor: Putere de 1GHz cu suport pentru PAE, NX i SSE2.

RAM: 1 gigabyte pentru un sistemul de operare pe 32 de bii sau 2 gigabyte dac rulezi
sistemul pe 64 de bii.

44

Spaiu hard disk: 16 GB pentru sistemul de operare pe 32 de bii sau 20 GB pentru sistemul
de operare pe 64 de bii.

Plac video: dispozitiv care s suporte minim Microsoft DirectX 9 cu driver WDDM.

Pentru a utiliza aplicaia la ntregul ei potenial ai nevoie i de urmtoarele:

Tablet sau monitor care s suporte gesturi multitouch.

Rezoluie minim de 1366 x 768 pentru a putea trimite aplicaie n modul snapped.

Cont Facebook, Microsoft sau Google.

Conexiune la internet (este posibil s existe taxe suplimentare n funcie de ISP)

4.2 Descrierea funciilor aplicaiei

Ecranul principal
Ecranul principal al aplicaiei este organizat sub form de tile, specific aplicaiilor
Windows 8 (Modern UI). De aici utilizatorul poate opta, prin selectarea unui tile, pentru
vizualizarea mai multor categorii de informaii: tarife practicate, locaia slii, detalii despre echip
i altele. De asemenea, n funcie de rank-ul user-ului, pot fi fcute nscrieri pentru diferite cursuri
sau poate fi confirmat participarea la evenimentele organizate, se poate face listarea i statistica
cursurilor, iar user-ul poate chiar s urmreasc blogul i s nvee diferii pai de dans.

45

nscrierea cursanilor
Tile-ul de adugare nscrie user-ul nregistrat n procesul de setare a profilului, proces
care const n parcurgerea a trei pai:
Pasul 1. n cadrul primului pas, utilizatorul are posibilitatea de a vizualiza datele preluate automat
din contul de facebook, microsoft, google sau twitter, identificate pe baza informaiilor de
autentificare. Datele ce pot fi preluate sunt: nume, sex i poz de profil. Utilizatorul poate efectua
modificri asupra numelui i pozei de profil, i va completa adresa de e-mail i va alege tipul
abonamentului, precum i dac urmeaz s vin la cursuri singur sau n cuplu.

46

Pasul 2.1. Dac tipul de abonament este de adult pentur or de grup, atunci pasul al doilea
presupune alegerea stilurilor de dans pe care le va studia precum i a programului de frecventare
a cursurilor.

47

Pasul 2.2 Dac programul ales este pentru a orelor particulare, pasul al doilea presupune stabilirea
primei edine i a numrului total de lectii pe care doreti s le achiziionezi.

Pasul 2.3 Dac doreti s i nscrii copilul la cursuri, trebuie s specifici vrsta, dac mai are
experien i ce stiluri de dans te-ar interesa pentru cel mic.
Pasul 3. Ultimul pas const n selectarea metodei de plat care poate fi: plat n numerar,
prin transfer bancar sau printr-un serviciu de plat electronic. Sistemul de plat electronic
prevede un procedeu de cumprare prin intermediul aplicaiei a unui abonament sub form de
licen a aplicaiei.
Seciunea nv i tu
n cadrul seciunii nv i tu sunt prezentate diferite figuri de dans structurate pe grad
de dificultate i pe stiluri. Acesta fiind unul dintre avantajele pe care le furnizeaz descrcarea
aplicaiei de ctre consumator: posibilitatea de a nva s danseze din confortul propriei case. Paii
sunt explicai din punctul de vedere al fetei, al biatului i din punctul de vedere al
cuplului.

Utilizatorul

autentificat

are acces

48

la o gam mai larg de

figuri de

dans.

Afiarea cursanilor
n pagina de afiare, administratorul poate vizualiza lista complet a persoanelor
nscrise, precum i detaliile fiecrui participant la cursurile de dans, poate aproba nscrieri i,
eventual, modifica anumite date. Pentru confirmarea i nregistrarea cursanilor, administratorul
sau instructorul doar trebuie s fac swipe din dreapta n stnga cu persoana pe care o dorete i
nreigstrarea este considerat efectuat.

49

50

Prin selectarea unui cursant se va afia pagina cu detalii despre profilul acestuia. Administratorul
poate modifica grupa la care este nscris cursantul.

Statistici
n seciunea avansat a paginii de listare administratorul va putea afia statistici foarte clare
asupra numrului de brbai vs numr de femei nscrise, suma total ncasat pentru fiecare lun
i chiar s vad dac veniturile sunt n cretere sau n urcare de la o lun la alta. Alt posibilitate
51

pe care o ofer pagina de statistici este aceea de a vizualiza n timp real ce pachete sunt cele mai
avantajoase, ce grupe i intervale orare sunt cele mai cutate i cte locuri libere sunt n cadrul
fiecrei grupe.

Pagina Cursuri de dans


Prin selectarea tile-ului Cursuri de dans utilizatorul poate vizualiza informaii despre
diferitele cursuri pe care le organizeaz studio-ul. Pagina are rol de promovare, ea lanseaz o
invitaie cititorilor de a se nscrie la anumite cursuri de dans grupate n trei
categorii: cursuri de dans aduli, cursuri de dans private i cursuri de dans pentru copii. Aceste
informaii sunt descrcate automat de pe site prin intermediul unui cititor de coninut de tip RSS
implementat n aplicaie.

52

Blog
Pe pagina Blog utilizatorul are acces la articolele postate. Accesul se realizeaz prin inter
mediul

unui

RSS

reader

implementat

XAML.

Gestiunea

articolelor

se

face

de ctre administrator prin intermediul platformei Wordpress. Articolele sunt vizibile tuturor catg
oriilor de utilizatori ai aplicaiei.

53

5. Eficiena i utilitatea sistemului informatic


5.1 Condiii privind implementarea aplicaiei
Acceptarea termenilor
Prin accesarea aplicaiei i prin continuarea folosirii acesteia utilizatorul este de acord cu termenii
i condiiile Lotus Dance. Dac utilizatorul n orice moment a rulrii aplicaiei nu este de acord cu
acestea, trebuie s nceteze s foloseasc serviciul de ndat.
Modificarea termenilor
Lotus Dance poate modifica termenii i condiiile fr s anune, dac acest lucru se va ntmpla,
toi utilizatorii vor primi o notificare, Lotus Dance va posta pe pagina website persoan un mesaj
care s fac cunoscute modificrile precum i n notele de instalare a aplicaiei n cazul unui update
de versiune pentreu aplicaie. Este foarte important ca utilizatorul s reciteasc termenii i
condiiile cnd acestea au fost modificate, deoarece prin accesarea serviciilor acetia sunt de acord
cu termenii pe care Lotus Dance i-a propus.

54

Crearea contului
Pentru a avea acces la ntreaga aplicaie, utilizatorul are nevoie de un cont Facebook, Google+,
Twitter sau Microsoft. Prin crearea conturilor care au ncorporat i partea de reea social,
utilizatorul este de accord c are minim 13 ani. Prin crearea contului este posibil s i se cear s
foloseasc un nume. Utilizatorul este de accord s trimit date complete i corecte legate de propria
persoan.
Ce nu are voie s fac utilizatorul

S creeze un cont n numele altei persoane fr ca aceasta s-i fi dat acordul;

S creeze un username cu scopul mpersonrii unei alte persoane;

S creeze un username care ar putea prin orice mod s deranjeze sau s insulte alte persoane
care se joac;

S creeze un username care s fie vulgar, obscen sau de prost-gust;

S foloseasc o poz de profil care s denote sexualitate, violen fizic sau verbal sau
care s poat deranja ali juctori.

Lotus Dance i rezerv dreptul de a suspenda i de a ntrerupe accesul la serviciul oferit oricrei
persoane care nu respect regulile fr a da un avertisment nainte i fr a da vreo explicaie
ulterioar asupra motivului.
Datele care au caracter personal
Scopul stocrii datelor care au character personal este acela de a mbuntii serviciile oferite.
Lotus Dance nu va vinde, nchiria sau mprumuta aceste date ctre o ter parte, datale utilizatorului
fiind folosite exclusive de ctre Asociaia Club de Dans Sportiv Lotus Dance.
Limitarea rspunderii
Lotus Dance i dezvoltatorii aplicaiei nu pot fi sub nici o form trai la rspundere pentru orice
problem creat de modul de utilizare a aplicaiei (incluznd pierdere de profit, pierderea datelor,
ntreruperea serviciilor, distrugerea telefonului sau a sistemului sau taxele suplimentare care pot
aprea prin folosirea aplicaiei datorit conectrii prin providerul de internet).
55

5.2. Utilitatea aplicaiei


Lucrarea de fa abordeaz un subiect puin explorat pe piaa aplicaiilor mobile din Romnia,
dezvoltarea unui sistem software pentru dispozitive PC, laptop i tablete. Beneficiarul, studio-ul
de dans Lotus Dance, dorete s i extind domeniul de activitate spre aceast ramur a industriei
IT att pentru c potenialul pieei este puin exploatat n ara noastr, ct i pentru c este o metod
foarte bun de promovare a studioului, beneficiind de viralitatea dat de facebook: se estimeaz
c o persoan care are cont pe facebook i agreeaz o aplicaie poate da post astfel nct 40% din
prietenii ei vor intra in contact cu Lotus Dance: pe wall-ul utilizatorilor este postat automat o
informare privind cursul pe care il urmeaza.

Pentru a realiza o aplicaie software care s aib succes pe pia este foarte important ca aceasta s
aib o interfa ct mai plcut i sugestiv. La fel de important n proiectarea oricrei aplicaii
este i flexibilitatea acesteia, uurina cu care se poate adapta la noi situaii care ar putea
s apar n cadrul sistemului informaional pe care l mapeaz. n acest spirit, aplicaia este de aa
natur nct printr-un update venit din Market Place se pot repara probleme sau implementa noi
soluii i capabiliti.

Bibliografie
1. Chappell, D., Introducing Windows Azure, Octombrie 2008
2. Smeureanu, I. , Drdal, M. , Reveiu, A., Visual C# .NET, CISON, Bucureti 2004
3. Richter, J. , Applied Microsoft .NETFramework Programming, Microsoft Pess 2002
56

4. Stnic, J.L. , Programarea aplicaiilor pentru dispozitive mobile, note de curs, 2013
5. Botezatu C, Proiectarea sistemelor informatice. Metode sistematice, Editura
ProUniversitaria, Buc, 2007
6. Chichernea V, Garais G, Baze de date. Sistemul FoxPro Vol II, Editura ProUniversitaria,
2006
7. Moise M., Sisteme informatice cu baze de date, Editura ProUniversitaria, Bucureti, 2008
8. Crian D., Limbajul C / C++. Fundamente, Vol. 1, Editura ProUniversitaria, 2006
9. Crian D., Limbajul C / C++. Programarea orientat obiect, Vol. 2, Editura
ProUniversitaria, 2006
10. Iacob I., SGBD Oracle - Ghid aplicativ pentru realizarea soluiilor informatice, Editura
ProUniversitaria, 2007
11. Iacob I., ORACLE 10g - Proiectarea i realizarea aplicaiilor cu baze de date utizliznd
limbajul SQL*PLUS, Editura ProUniversitaria 2009
12. Smeureanu I. Ivan I, Drdal M, Structuri i obiecte n C / C++, Editura CISON, Bucureti,
2000
13. Mulea I, C/C++ pentru avansai, Editura Microinformatica, Cluj, 1995.
14. Botezatu C, Iacob I, Proiectarea sistemelor informatice. Studii de caz pentru managementul
activitilor unei societi. Editura ProUniversitaria, 2007
15. Chichernea V, Botezatu C, Iacob I, Fabian G., Avram V., Oprea P, Crstea C, Baze de date
relaionale. Aplicaii n turism, Editura CISON, 1998
16. http://www.windowsazure.com/en-us/documentation/
17. http://www.windowsazure.com/en-us/home/features/mobile-services/

57

Anexa
CONTRACT DE PRESTRI DE SERVICII
ncheiat astzi ..................

I. PRILE CONTRACTANTE
1.1. ASOCIATIA CLUB DE DANS SPORTIV LOTUS DANCE, cu sediul social n Bucuresti,
Sos. Pantelimon, Nr. 309, Bl. 8, Sc. C, Ap. 119, Et. 10, Sector 2, cod fiscal 24548648,
reprezentat de Coman Paraschiva, cu funcia de Director, n calitate de prestator, pe de o parte,

1.2.. ..................................................................................................................................., cu sediul


social n (localitatea) .........................., str. ..................................... nr. ........................, bloc
............., scara ..........., etaj ........, apartament ......., jude/sector ........................................, n
calitate de beneficiar, pe de alt parte,

II. OBIECTUL CONTRACTULUI


2.1. Obiectul contractului l reprezint:
Prestarea de servicii sub forma de cursuri de dans.

2.2. Prestatorul oblig s predea lectii de dans beneficiarului intr-un numar de sedinte

III. DURATA CONTRACTULUI


3.1. Contractul se ncheie pe o durat de ........ ncepnd de la data semnarii lui
58

IV. PREUL CONTRACTULUI


4.1. Preul prestaiei este de
................................................................................................................
4.2. Preul se va plti n numerar, la data semnarii respectivului contract sau la prima sedinte de
curs.
4.3. n cazul n care, anterior efecturii prestaiei, vor interveni majorri de preuri care afecteaz
costul prestaiei:
a) prestatorul de servicii are dreptul s majoreze preul contractului, n raport cu majorarea
preurilor, cu obligaia ca prestatorul s notifice n termen de 5 zile beneficiarului hotrrea sa;
b) beneficiarul, n termen de 5 zile de la data primirii notificrii scrise a prestatorului are
obligaia s comunice acestuia dac preul majorat este acceptabil i s solicite continuarea
lucrrii. Dac beneficiarul nu rspunde la notificarea scris n termenul de mai sus, aceasta este
considerat o acceptare tacit a preului.
4.4. n cazul n care majorarea de preuri intervine n cursul executrii contractului, iar
beneficiarul nu accept majorarea, va notifica n scris refuzul prestatorului, acesta avnd dreptul
la cota-parte din pre echivalent cu prestaia executat i la preul convenit.
V. OBLIGAIILE PRILOR
5.1. Prestatorul de servicii se oblig:
Sa predea cursurile de dans in perioada stabilita de comun accord cu beneficiarul.

5.2. Beneficiarul serviciilor se oblig:


Sa plateasca pentru cursurile de dans oferite de prestator.

VI. NCETAREA CONTRACTULUI


6.1. Prezentul contract nceteaz de plin drept, fr a mai fi necesar intervenia unui/unei
tribunal arbitral/instane judectoreti, n cazul n care una dintre pri:

59

nu i execut una dintre obligaiile eseniale enumerate, din prezentul contract;


6.2. Rezilierea prezentului contract nu va avea nici un efect asupra obligaiilor deja scadente ntre
prile contractante.
VII. FORA MAJOR
7.1. Nici una dintre prile contractante nu rspunde de neexecutarea la termen sau/i de
executarea n mod necorespunztor - total sau parial - a oricrei obligaii care i revine n baza
prezentului contract, dac neexecutarea sau executarea necorespunztoare a obligaiei respective
a fost cauzat de fora major, aa cum este definit de lege.

VIII. LITIGII
8.1. Prile au convenit ca toate nenelegerile privind validitatea prezentului contract sau
rezultate din interpretarea, executarea ori ncetarea acestuia s fie rezolvate pe cale amiabil de
reprezentanii lor.
8.2. n cazul n care nu este posibil rezolvarea litigiilor pe cale amiabil, prile se vor adresa
instanelor judectoreti competente.

IX. CLAUZE FINALE


11.1. Modificarea prezentului contract se face numai prin act adiional ncheiat ntre prile
contractante.
11.2. Prezentul contract, mpreun cu anexele sale care fac parte integrant din cuprinsul su,
reprezint voina prilor i nltur orice alt nelegere verbal dintre acestea, anterioar sau
ulterioar ncheierii lui.
11.3. n cazul n care prile i ncalc obligaiile lor, neexercitarea de partea care sufer vreun
prejudiciu a dreptului de a cere executarea ntocmai sau prin echivalent bnesc a obligaiei
respective nu nseamn c ea a renunat la acest drept al su.
11.4. Prezentul contract a fost ncheiat ntr-un numr de 2 exemplare, din care unul a fost inanat
beneficiarului.

60

PRESTATOR

BENEFICIAR

61

CONTRACT DE PRESTRI DE SERVICII

ncheiat astzi ..................

I. PRILE CONTRACTANTE
1.1. ASOCIATIA CLUB DE DANS SPORTIV LOTUS DANCE, cu sediul social n Bucuresti, Sos. Pantelimon, Nr.
309, Bl. 8, Sc. C, Ap. 119, Et. 10, Sector 2, cod fiscal 24548648, reprezentat de Coman Paraschiva, cu
funcia de Director, n calitate de prestator, pe de o parte,

1.2.. ..................................................................................................................................., cu sediul social


n (localitatea) .........................., str. ..................................... nr. ........................, bloc ............., scara
..........., etaj ........, apartament ......., jude/sector ........................................, n calitate de beneficiar, pe
de alt parte,

II. OBIECTUL CONTRACTULUI


2.1. Obiectul contractului l reprezint:
Prestarea de servicii sub forma de spectacol de dans.

2.2. Prestatorul oblig s prezinte un scurt spectacol de dans beneficiarului.

III. DURATA CONTRACTULUI


3.1. Contractul este valabil de la senarea lui si pana la prestarea serviciului.

62

IV. PREUL CONTRACTULUI


4.1. Preul prestaiei este de
................................................................................................................
4.2. Preul se va plti n numerar, la data semnarii respectivului contract sau la prima sedinte de curs.
4.3. n cazul n care, anterior efecturii prestaiei, vor interveni majorri de preuri care afecteaz costul
prestaiei:
a) prestatorul de servicii are dreptul s majoreze preul contractului, n raport cu majorarea preurilor,
cu obligaia ca prestatorul s notifice n termen de 5 zile beneficiarului hotrrea sa;
b) beneficiarul, n termen de 5 zile de la data primirii notificrii scrise a prestatorului are obligaia s
comunice acestuia dac preul majorat este acceptabil i s solicite continuarea lucrrii. Dac
beneficiarul nu rspunde la notificarea scris n termenul de mai sus, aceasta este considerat o
acceptare tacit a preului.
4.4. n cazul n care majorarea de preuri intervine n cursul executrii contractului, iar beneficiarul nu
accept majorarea, va notifica n scris refuzul prestatorului, acesta avnd dreptul la cota-parte din pre
echivalent cu prestaia executat i la preul convenit.

.
V. OBLIGAIILE PRILOR
5.1. Prestatorul de servicii se oblig:
Sa prezinte un scurt spectacol de dans.

5.2. Beneficiarul serviciilor se oblig:


Sa plateasca pentru prestatie.

VI. NCETAREA CONTRACTULUI


6.1. Prezentul contract nceteaz de plin drept, fr a mai fi necesar intervenia unui/unei tribunal
arbitral/instane judectoreti, n cazul n care una dintre pri:
nu i execut una dintre obligaiile eseniale enumerate, din prezentul contract;
6.2. Rezilierea prezentului contract nu va avea nici un efect asupra obligaiilor deja scadente ntre prile
contractante.
63

VII. FORA MAJOR


7.1. Nici una dintre prile contractante nu rspunde de neexecutarea la termen sau/i de executarea n
mod necorespunztor - total sau parial - a oricrei obligaii care i revine n baza prezentului contract,
dac neexecutarea sau executarea necorespunztoare a obligaiei respective a fost cauzat de fora
major, aa cum este definit de lege.

VIII. LITIGII
8.1. Prile au convenit ca toate nenelegerile privind validitatea prezentului contract sau rezultate din
interpretarea, executarea ori ncetarea acestuia s fie rezolvate pe cale amiabil de reprezentanii lor.
8.2. n cazul n care nu este posibil rezolvarea litigiilor pe cale amiabil, prile se vor adresa instanelor
judectoreti competente.

IX. CLAUZE FINALE


11.1. Modificarea prezentului contract se face numai prin act adiional ncheiat ntre prile
contractante.
11.2. Prezentul contract, mpreun cu anexele sale care fac parte integrant din cuprinsul su, reprezint
voina prilor i nltur orice alt nelegere verbal dintre acestea, anterioar sau ulterioar ncheierii
lui.
11.3. n cazul n care prile i ncalc obligaiile lor, neexercitarea de partea care sufer vreun
prejudiciu a dreptului de a cere executarea ntocmai sau prin echivalent bnesc a obligaiei respective
nu nseamn c ea a renunat la acest drept al su.
11.4. Prezentul contract a fost ncheiat ntr-un numr de 2 exemplare, din care unul a fost inanat
beneficiarului.

PRESTATOR

BENEFICIAR

64

Pagina de administrare:
private ObservableCollection<cursant> crs_it;
private IMobileServiceTable<cursant> crs_tb = App.MobileService.GetTable<cursant>();
private ObservableCollection<partic> part_it;
private IMobileServiceTable<partic> part_tb = App.MobileService.GetTable<partic>();
private async void Refresh_grup()
{
try
{
var res = await crs_tb
.Where(cursantul=>cursantul.Complete==false)
.ToListAsync();
crs_it = new ObservableCollection<cursant>(res);
GrupRecN.ItemsSource = crs_it;
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyncOpResult = errormsg.ShowAsync();
}
}
private async void Refresh_partic()
{
try
{
var res = await part_tb
.Where(cursantul => cursantul.del == false)
.ToListAsync();
part_it = new ObservableCollection<partic>(res);
ParticRecN.ItemsSource = part_it;
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyncOpResult = errormsg.ShowAsync();
}
}
private async void Refresh_grup_c()
{
try
{
var res = await crs_tb
.Where(cursantul => cursantul.Complete == true)

65

.ToListAsync();
crs_it = new ObservableCollection<cursant>(res);
GrupRec.ItemsSource = crs_it;
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyncOpResult = errormsg.ShowAsync();
}
}
private async void Refresh_partic_c()
{
try
{
var res = await part_tb
.Where(cursantul => cursantul.del == true)
.ToListAsync();
part_it = new ObservableCollection<partic>(res);
ParticRec.ItemsSource = part_it;
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyncOpResult = errormsg.ShowAsync();
}
}
private async void list_del(object sender, RoutedEventArgs e)
{

}
private void val_list(object sender, RoutedEventArgs e)
{
if (partic.IsChecked == true)
{
Refresh_partic_c();
Refresh_partic();
}
else
{
Refresh_grup();
Refresh_grup_c();
}
}

66

private void ref_partic(object sender, RoutedEventArgs e)


{
valid.Visibility = Visibility.Visible;
GrupRec.Visibility = Visibility.Collapsed;
ParticRec.Visibility = Visibility.Visible;
ParticRecN.Visibility = Visibility.Visible;
GrupRecN.Visibility = Visibility.Collapsed;
Refresh_partic();
Refresh_partic_c();
}
private void ref_grupN(object sender, RoutedEventArgs e)
{
valid.Visibility = Visibility.Visible;
ParticRec.Visibility = Visibility.Collapsed;
ParticRecN.Visibility = Visibility.Collapsed;
GrupRecN.Visibility = Visibility.Visible;
GrupRec.Visibility = Visibility.Visible;
Refresh_grup();
Refresh_grup_c();
}
private void CBComplete(object sender, RoutedEventArgs e)
{
CheckBox cb = (CheckBox)sender;
cursant item = cb.DataContext as cursant;
UpdateCursant(item);
}
private async void UpdateCursant(cursant crs)
{
await crs_tb.UpdateAsync(crs);
}
private async void UpdatePartic(partic prt)
{
await part_tb.UpdateAsync(prt);
}

private void FlipView(object sender, TappedRoutedEventArgs e)


{
cursantDetalii add_page = new cursantDetalii();
this.Content = add_page;

}
private void CBComplete2(object sender, RoutedEventArgs e)
{
CheckBox cb = (CheckBox)sender;
partic item = cb.DataContext as partic;
UpdatePartic(item);
}

67

Pagina de adugare
namespace LotusDance_admin
{
public sealed partial class add_p : LotusDance_admin.Common.LayoutAwarePage
{
char sx = 'm';
int grupa = 0;
string pack;
int state = 0; //pt a vedea statusul meniurilor
int i = 0; //de folosit pt a crea mai multe instante
public add_p()
{
this.InitializeComponent();
}
protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{
}
protected override void SaveState(Dictionary<String, Object> pageState)
{
}
StorageFile media = null;
private ObservableCollection<cursant> items;
private IMobileServiceTable<cursant> crs_tb = App.MobileService.GetTable<cursant>();
//private IMobileServiceTable<stiluri> stil_ds = App.MobileService.GetTable<stiluri>();
private IMobileServiceTable<partic> partic_tb = App.MobileService.GetTable<partic>();
private async void InsertCursant(cursant crs_ob)
{
try
{
string errorString = string.Empty;
if (media != null)
{
// Set blob properties of TodoItem.
crs_ob.ContainerName = "todoitemimages";
crs_ob.ResourceName = media.Name;
}
await crs_tb.InsertAsync(crs_ob);
if (!string.IsNullOrEmpty(crs_ob.SasQueryString))
{
using (var fileStream = await media.OpenStreamForReadAsync())
{
StorageCredentials cred = new StorageCredentials(crs_ob.SasQueryString);
var imageUri = new Uri(crs_ob.imageUri);

CloudBlobContainer container = new CloudBlobContainer(


new Uri(string.Format("https://{0}/{1}",
imageUri.Host, crs_ob.ContainerName)), cred);

68

CloudBlockBlob blobFromSASCredential =
container.GetBlockBlobReference(crs_ob.ResourceName);
await blobFromSASCredential.UploadFromStreamAsync(fileStream.AsInputStream());
}
}
MessageDialog md = new MessageDialog("Cursantul " + nume_b.Text + " a fost inscris la grupa " +
grupa, "nscriere fcut cu succes!");
md.ShowAsync();

}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyinc = errormsg.ShowAsync();
}
}
private async void InsertPartic(partic partic_ob)
{
try
{
await partic_tb.InsertAsync(partic_ob);
}
catch (MobileServiceInvalidOperationException e)
{
MessageDialog errormsg = new MessageDialog(e.Response.Content,
string.Format("{0} (HTTP {1})",
e.Response.StatusDescription,
e.Response.StatusCode));
var ignoreAsyinc = errormsg.ShowAsync();
}
}

private void Next1(object sender, RoutedEventArgs e)


{
switch ((string)((Button)sender).Name)
{
case "step1":
if (Convert.ToString(abo_b.SelectedValue) == "Particular") anim_pas2_p.Begin();
else anim_pas2.Begin();
break;
case "step2":
state = 1;
anim_pas3.Begin();
break;
case "step22":
state = 1;
anim_pas3.Begin();

69

break;
}
}
private void sex_check(object sender, RoutedEventArgs e)
{
if (male.IsChecked == true)
{
sx = 'm';
}
if (female.IsChecked == true)
{
sx = 'f';
}
if (couple.IsChecked == true)
{
sx = 'c';
}
}

private void valid_partic(object sender, RoutedEventArgs e)


{
partic ad = new partic
{
id = 0,
nume = nume_b.Text,
telefon = tel_b.Text,
email = email_b.Text,
sex = Convert.ToString(sx),
rank = "cursant",
data_i = date_picker.Value.ToString() + hour_picker.Value.ToString(),
pak = "5 edine",
};
InsertPartic(ad);
MessageDialog md = new MessageDialog("Cursantul " + nume_b.Text + " a fost inscris la grupa " + grupa+
"nscriere fcut cu succes!");
md.ShowAsync();
}
private void valid_adult(object sender, RoutedEventArgs e)
{
try
{
cursant ad = new cursant
{
id = 0,
nume = nume_b.Text,
telefon = tel_b.Text,
email = email_b.Text,
sex = Convert.ToString(sx),
rank = "cursant",
Grupa = grupa,

70

pak = pack
};
InsertCursant(ad);
MessageDialog md = new MessageDialog("Cursantul " + nume_b.Text + " a fost inscris la grupa " +
grupa+ "nscriere fcut cu succes!");
md.ShowAsync();
i += 1;
}
catch { }
}
private void Back(object sender, RoutedEventArgs e)
{
switch ((string)((Button)sender).Content)
{
case "1":
if (state != 0)
{
anim_pas3_back.Begin();
}
if (Convert.ToString(abo_b.SelectedValue) == "Particular") anim_pas2_p_back.Begin();
else anim_pas2_back.Begin();
break;
case "2":
anim_pas3_back.Begin();
break;
}
}
private void Final(object sender, RoutedEventArgs e)
{
if (Convert.ToString(abo_b.SelectedValue) == "Particular")
{
partic ad = new partic
{
id = 0,
nume = nume_b.Text,
telefon = tel_b.Text,
email = email_b.Text,
rank = "cursant",
data_i = date_picker.Value.ToString() + hour_picker.Value.ToString(),
pak = "5 edine",
};
InsertPartic(ad);
MessageDialog md = new MessageDialog("Felicitri " + nume_b.Text + " ai fost inscris. n cel mai scurt
timp un reprezentant Lotus Dance te va contacta", "nscriere fcut cu succes!");
md.ShowAsync();
}
else
{

71

cursant ad = new cursant


{
id = 0,
nume = nume_b.Text,
telefon = tel_b.Text,
email = email_b.Text,
sex = Convert.ToString(sx),
rank = "cursant",
Grupa = grupa,
pak = pack
};
InsertCursant(ad);
}
}
private async void OnTakePhotoClick(object sender, RoutedEventArgs e)
{
CameraCaptureUI cameraCapture = new CameraCaptureUI();
media = await cameraCapture
.CaptureFileAsync(CameraCaptureUIMode.PhotoOrVideo);
}
private void grup_pick(object sender, RoutedEventArgs e)
{
switch ((string)((Button)sender).Name)
{
case "Grupa 1": grupa = 1;
break;
case "Grupa 2": grupa = 2;
break;
case "Grupa 3": grupa = 3;
break;
}
}
}
}

Clasa cursant
namespace LotusDance_admin
{
public class cursant
{
public int id { get; set; }
[DataMember(Name = "nume")]
public string nume {get;set;}
[DataMember (Name= "telefon")]
public string telefon {get;set;}
[DataMember (Name="email")]
public string email {get;set;}

72

[DataMember (Name="sex")]
public string sex {get;set;}
[DataMember (Name="rank")]
public string rank{get;set;}
[DataMember(Name="Grupa")]
public int Grupa{get;set;}
[DataMember(Name = "confirmat")]
public bool Complete { get; set; }
[DataMember(Name = "pack")]
public string pak { get; set; }
[DataMember(Name = "containerName")]
public string ContainerName { get; set; }
[DataMember(Name = "resourceName")]
public string ResourceName { get; set; }
[DataMember(Name = "sasQueryString")]
public string SasQueryString { get; set; }
[DataMember(Name = "imageUri")]
public string imageUri { get; set; }

public cursant(string _nume, string _telefon, string _email, string _sex, string _rank, int _grupa, bool
_Complete, string _pak)
{
nume = _nume;
telefon = _telefon;
email = _email;
sex = _sex;
rank = _rank;
Grupa = _grupa;
Complete = _Complete;
pak = _pak;
}
public cursant()
{
}
public cursant(string _nume, string _telefon)
{
nume = _nume;
telefon = _telefon;
}
}
}

73

Pagina de listare codul surs pentru partea grafic a paginii


<common:LayoutAwarePage
x:Name="pageRoot"
x:Class="LotusDance_admin.list_p"
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:LotusDance_admin"
xmlns:common="using:LotusDance_admin.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid Style="{StaticResource LayoutRootStyle}">


<Grid.RowDefinitions>
<RowDefinition Height="200"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.Background>
<LinearGradientBrush EndPoint="1.026,0.99" StartPoint="0.248,0.076">
<GradientStop Color="Black"/>
<GradientStop Color="Black" Offset="1"/>
<GradientStop Color="#FF670025" Offset="0.319"/>
</LinearGradientBrush>
</Grid.Background>
<!-- Back button and page title -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="350"/>
</Grid.ColumnDefinitions>
<Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack,
ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
<TextBlock x:Name="pageTitle" Grid.Column="0" Text="Listare" Style="{StaticResource
PageHeaderTextStyle}" Margin="98,115,12,45"/>
<Image VerticalAlignment="Center" HorizontalAlignment="Left" Source="ms-appx:///Assets/logo.png"
Grid.Column="1" Grid.Row="0" Height="200" Margin="97,0,123,0" Width="457" />
</Grid>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<RadioButton Name="partic" FontSize="30" Grid.Row="0" Grid.Column="2" Content="Particulare"


HorizontalAlignment="Center" Margin="306,31,791,16" Checked="ref_partic" Height="53"/>

74

<RadioButton Name="grup" Grid.Row="0" FontSize="30" Grid.Column="2" Content="Grup"


HorizontalAlignment="Center" Margin="661,31,491,16" Checked="ref_grupN" Height="53" Width="114"/>
<Button Name="valid" Grid.Row="1" Grid.Column="2" Visibility="Collapsed" Content=">>"
HorizontalAlignment="Center" Margin="607,104,604,326" Click="val_list"/>
<Button Content="tergere" HorizontalAlignment="Center" Margin="1048,31,128,31" Grid.Row="0"
Grid.Column="2" Click="list_del"/>
<Grid Grid.Row="1" Grid.Column="2">
<ListView Name="ParticRec" Margin="0,0,0,0" Width="500" HorizontalAlignment="Right"
Grid.Row="0" Grid.Column="0" Visibility="Collapsed">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Name="ID" Checked="CBComplete2" IsChecked="{Binding Complete,
Mode=TwoWay}" Content="{Binding id}" VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="10,0,0,0"/>
<TextBlock Name="Nume" Text="{Binding nume}" VerticalAlignment="Center"
HorizontalAlignment="Left" Margin="10,0,0,0"/>
<TextBlock Name="Telefon" Text="{Binding telefon}" VerticalAlignment="Center"
HorizontalAlignment="Left" Margin="10,0,0,0"/>
<TextBlock Name="Email" Text="{Binding email}" HorizontalAlignment="Left"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Sex" Text="{Binding sex}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Rank" Text="{Binding rank}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Data" Text="{Binding data_i}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Pack" Text="{Binding pack}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView Name="ParticRecN" HorizontalAlignment="Left" Width="500" Margin="0,0,0,0"
Grid.Row="0" Grid.Column="0" Visibility="Collapsed">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Name="ID" Checked="CBComplete2" IsChecked="{Binding del,
Mode=TwoWay}" Content="{Binding id}" VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="10,0,0,0"/>
<TextBlock Name="Nume" Text="{Binding nume}" VerticalAlignment="Center"
HorizontalAlignment="Left" Margin="10,0,0,0"/>
<TextBlock Name="Telefon" Text="{Binding telefon}" VerticalAlignment="Center"
HorizontalAlignment="Left" Margin="10,0,0,0"/>
<TextBlock Name="Email" Text="{Binding email}" HorizontalAlignment="Left"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Sex" Text="{Binding sex}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Rank" Text="{Binding rank}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>

75

<TextBlock Name="Data" Text="{Binding data_i}" HorizontalAlignment="Center"


VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Pack" Text="{Binding pack}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView FontSize="25" Name="GrupRecN" Margin="0,0,0,0" Width="600"
HorizontalAlignment="Left" Grid.Row="0" Grid.Column="0" Visibility="Visible">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox FontSize="30" Name="ID" Checked="CBComplete" IsChecked="{Binding
Complete, Mode=TwoWay}" Content="{Binding id}" VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="10,0,0,0" />
<Image Name="IMG" Source="{Binding ImageUri, Mode=OneWay}" Margin="10,0,0,0"/>
<TextBlock Name="Nume" Text="{Binding nume}" VerticalAlignment="Center"
HorizontalAlignment="Left" Margin="10,0,0,0"/>
<TextBlock Name="Telefon" Text="{Binding telefon}" VerticalAlignment="Center"
HorizontalAlignment="Left" Margin="10,0,0,0"/>
<TextBlock Name="Email" Text="{Binding email}" HorizontalAlignment="Left"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Sex" Text="{Binding sex}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Abonament" Text="{Binding abonament}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Grupa" Text="{Binding Grupa}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Rank" Text="{Binding rank}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView Name="GrupRec" HorizontalAlignment="Right" Width="600" Margin="0,10,0,0"
Grid.Row="0" Grid.Column="0" Visibility="Visible" Tapped="FlipView">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Name="ID" Checked="CBComplete" IsChecked="{Binding Complete,
Mode=TwoWay}" Content="{Binding id}" VerticalAlignment="Center" HorizontalAlignment="Left"
Margin="10,0,0,0" />
<TextBlock Name="Nume" Text="{Binding nume}" VerticalAlignment="Center"
HorizontalAlignment="Left" Margin="10,0,0,0"/>
<TextBlock Name="Telefon" Text="{Binding telefon}" VerticalAlignment="Center"
HorizontalAlignment="Left" Margin="10,0,0,0"/>
<TextBlock Name="Email" Text="{Binding email}" HorizontalAlignment="Left"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Sex" Text="{Binding sex}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Abonament" Text="{Binding abonament}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>

76

<TextBlock Name="Grupa" Text="{Binding Grupa}" HorizontalAlignment="Center"


VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock Name="Rank" Text="{Binding rank}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Grid>
<VisualStateManager.VisualStateGroups>
<!-- Visual states reflect the application's view state -->
<VisualStateGroup x:Name="ApplicationViewStates">
<VisualState x:Name="FullScreenLandscape"/>
<VisualState x:Name="Filled"/>
<!-- The entire page respects the narrower 100-pixel margin convention for portrait -->
<VisualState x:Name="FullScreenPortrait">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton"
Storyboard.TargetProperty="Style">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PortraitBackButtonStyle}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<!-- The back button and title have different styles when snapped -->
<VisualState x:Name="Snapped">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton"
Storyboard.TargetProperty="Style">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedBackButtonStyle}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="pageTitle"
Storyboard.TargetProperty="Style">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource
SnappedPageHeaderTextStyle}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</common:LayoutAwarePage>

Pagina de adugare codul surs pentru partea grafic a paginii


<common:LayoutAwarePage
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:LotusDance_admin"
xmlns:common="using:LotusDance_admin.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

77

xmlns:Input="using:Telerik.UI.Xaml.Controls.Input"
x:Name="pageRoot"
x:Class="LotusDance_admin.add_p"
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Mode=Self}}"
mc:Ignorable="d">
<common:LayoutAwarePage.Resources>
<x:String x:Key="AppName">My Application</x:String>
</common:LayoutAwarePage.Resources>

<Grid Style="{StaticResource LayoutRootStyle}">


<Grid.RowDefinitions>
<RowDefinition Height="200"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.Background>
<LinearGradientBrush EndPoint="1.026,0.99" StartPoint="0.248,0.076">
<GradientStop Color="Black"/>
<GradientStop Color="Black" Offset="1"/>
<GradientStop Color="#FF670025" Offset="0.319"/>
</LinearGradientBrush>
</Grid.Background>
<!-- Back button and page title -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="350"/>
</Grid.ColumnDefinitions>
<Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack,
ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
<TextBlock x:Name="pageTitle" Grid.Column="0" Text="Adugare" Style="{StaticResource
PageHeaderTextStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="98,115,12,45"/>
<Image HorizontalAlignment="Left" VerticalAlignment="Center" Source="ms-appx:///Assets/logo.png"
Grid.Column="1" Grid.Row="0" Height="200" Margin="150,0,123,0" Width="457" />
</Grid>

<Grid Grid.Row="1">
<!--Noul add-->
<Grid x:Name="Pasul1_1" Width="670" Background="#FF80012E" Height="400" Margin="400,100,0,0"
VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock Grid.Column="0" Text="Informaii de baz" HorizontalAlignment="Left"
VerticalAlignment="Top" Margin="100,35,0,0" FontSize="30"/>
<TextBox x:Name="nume_b" Grid.Column="0" Text="Nume" Margin="100,94,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top" Height="50" Width="350" FontSize="30"/>
<RadioButton Name="male" Content="M" HorizontalAlignment="Left" Margin="100,149,0,0"
VerticalAlignment="Top" Checked="sex_check" FontSize="30"/>

78

<RadioButton Name="female" Content="F" HorizontalAlignment="Left" Margin="161,149,0,0"


VerticalAlignment="Top" Checked="sex_check" FontSize="30"/>
<RadioButton Name="couple" Content="Cuplu" HorizontalAlignment="Left" Margin="222,149,0,0"
VerticalAlignment="Top" Checked="sex_check" FontSize="30"/>
<TextBox x:Name="tel_b" Grid.Column="0" Text="Telefon" Margin="100,193,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top" Height="50" Width="350" FontSize="30"/>
<TextBox x:Name="email_b" Grid.Column="0" Text="E-mail" Margin="100,248,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top" Height="50" Width="350" FontSize="30"/>
<ComboBox x:Name="abo_b" Grid.Column="0" Margin="100,303,0,0" HorizontalAlignment="Left"
VerticalAlignment="Top" Height="50" Width="350" SelectionChanged="abo_b_SelectionChanged"
FontSize="30">
<x:String>Ab Copil</x:String>
<x:String>Ab Adult</x:String>
<x:String>Particular</x:String>
</ComboBox>
<Button Name="btnTakePhoto" Style="{StaticResource PhotoAppBarButtonStyle}" Width="100"
Height="100" Click="OnTakePhotoClick" Margin="531,93,0,207" />
<Button x:Name="step1" Content=">>" HorizontalAlignment="Right" Click="Next1"
Margin="309,301,0,10" FontSize="30" Height="68" Width="79"/>
<Button Content="1" Margin="0,317,0,0" FontSize="30" Height="62" Width="55" Click="Back"/>
</Grid>
<Grid x:Name="Pasul2_1" Width="670" Height="400" Margin="2504,90,-1808,0"
Background="#FF57001F" VerticalAlignment="Top" HorizontalAlignment="Left"
RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<CompositeTransform/>
</Grid.RenderTransform>
<CheckBox Name="Pack1" Margin="60,50,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"
Content="Pachetul 1:" FontSize="15" Checked="pack1_check" />
<CheckBox Name="Pack2" Margin="260,50,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"
Content="Pachetul 2:" FontSize="15" Checked="pack2_check"/>
<CheckBox Name="Pack3" Margin="460,50,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"
Content="Pachetul 3:" FontSize="15" Checked="pack3_check"/>
<ListBox x:Name="pack1" Grid.Row="1" Grid.Column="1" Margin="60,85,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top" Height="222" Width="147" SelectionMode="Extended"
SelectionChanged="pack_detail1">
<x:String>Vals Vienez</x:String>
<x:String>Tango Argentinian</x:String>
<x:String>Cha-Cha</x:String>
<x:String>Salsa</x:String>
</ListBox>
<ListBox x:Name="pack2" Grid.Row="1" Grid.Column="1" Margin="260,85,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top" Height="222" Width="147" SelectionMode="Extended"
SelectionChanged="pack_detail2">
<x:String>West Coast Swing</x:String>
<x:String>Rock'n'Roll</x:String>
<x:String>Vals Vienez</x:String>
<x:String>Tango Argentinian</x:String>
</ListBox>
<ListBox x:Name="pack3" Grid.Row="1" Grid.Column="1" Margin="460,85,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top" Height="222" Width="147" SelectionMode="Extended"
SelectionChanged="pack_detail3">
<x:String>Vals Vienez</x:String>
<x:String>Salsa</x:String>
<x:String>Bachata</x:String>

79

<x:String>Merengue</x:String>
</ListBox>
<Button Content="Grupa 1" Margin="75,322,0,26" Height="52" Click="grup_pick"/>
<Button Content="Grupa 2" Margin="274,322,0,26" Height="52" Click="grup_pick"/>
<Button Content="Grupa 3" Margin="474,322,0,26" Height="52" Click="grup_pick"/>
<Button Content=">>" x:Name="step2" HorizontalAlignment="Right" Click="Next1"
Margin="309,301,0,10" FontSize="30" Height="68" Width="79"/>
<Button Content="2" Margin="0,317,0,0" FontSize="30" Height="62" Width="55" Click="Back"/>
</Grid>
<Grid x:Name="Pasul2_2" Width="670" Height="400" Margin="2589,91,-1893,0"
Background="#FF57001F" VerticalAlignment="Top" HorizontalAlignment="Left"
RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<CompositeTransform/>
</Grid.RenderTransform>
<Input:RadDatePicker Name="date_picker" HorizontalAlignment="Left" Margin="70,63,0,0"
VerticalAlignment="Top" Width="150" EmptyContent="Selecteaz data"/>
<Input:RadTimePicker Name="hour_picker" HorizontalAlignment="Left" Margin="70,162,0,0"
VerticalAlignment="Top" Width="150" EmptyContent="Selecteaz ora"/>
<ListView x:Name="partic_tip" Margin="371,63,0,0" HorizontalAlignment="Left"
VerticalAlignment="Top" Height="233" Width="192">
<x:String>O edin</x:String>
<x:String>5 edine</x:String>
<x:String>6 edine</x:String>
<x:String>7 edine</x:String>
<x:String>10 edine</x:String>
</ListView>
<Button Content=">>" x:Name="step22" HorizontalAlignment="Right" Click="Next1"
Margin="309,301,0,10" FontSize="30" Height="68" Width="79"/>
<Button Content="2" Margin="0,317,0,0" FontSize="30" Height="62" Width="55" Click="Back"/>
</Grid>
<Grid x:Name="pasul3" Width="670" Height="400" Background="#FF340013" Margin="2866,91,-2170,0"
VerticalAlignment="Top" HorizontalAlignment="Left" RenderTransformOrigin="0.5,0.5" >
<Grid.RenderTransform>
<CompositeTransform/>
</Grid.RenderTransform>
<TextBlock Text="Medot de plat" FontSize="30"/>
<RadioButton VerticalContentAlignment="Center" Content="Plat n numerar" FontSize="30"
Margin="10,49,-10,286"/>
<RadioButton VerticalContentAlignment="Center" Content="Prin transfer bancar" FontSize="30"
Margin="10,93,-10,242"/>
<RadioButton VerticalContentAlignment="Center" Content="Serviciu de plat electronic"
FontSize="30" Margin="10,137,-10,198"/>
<Button Content=">>" HorizontalAlignment="Right" Click="Final" Margin="309,301,0,10"
FontSize="30" Height="68" Width="79"/>
<Button Content="3" Click="Back" Margin="0,317,0,0" FontSize="30" Height="62" Width="55"/>
</Grid>
</Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ApplicationViewStates">
<VisualState x:Name="FullScreenLandscape"/>

80

<VisualState x:Name="Filled"/>
<VisualState x:Name="FullScreenPortrait">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton"
Storyboard.TargetProperty="Style">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PortraitBackButtonStyle}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)"
Storyboard.TargetName="Pas2_2">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Thickness>481,20,-808,169</Thickness>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Grid.Row)"
Storyboard.TargetName="Pas2_2">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<x:Int32>1</x:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Grid.Column)"
Storyboard.TargetName="Pas2_2">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<x:Int32>2</x:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Grid.ColumnSpan)"
Storyboard.TargetName="Pas2_2">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<x:Int32>1</x:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>

</VisualStateGroup>
<VisualStateGroup x:Name="pas2">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0">
<Storyboard x:Name="anim_pas2">
<DoubleAnimation Duration="0:0:1" To="-2044"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_1" d:IsOptimized="True"/>
<DoubleAnimation Duration="0:0:1" To="10"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_1" d:IsOptimized="True"/>
</Storyboard>

81

</VisualTransition>
<VisualTransition From="pas2_back" GeneratedDuration="0">
<Storyboard x:Name="anim_pas2_back">
<DoubleAnimationUsingKeyFrames
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_1">
<EasingDoubleKeyFrame KeyTime="0" Value="-2042"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="577"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimation Duration="0" To="10"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_1" d:IsOptimized="True"/>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
<VisualState x:Name="pas2_back"/>
</VisualStateGroup>
<VisualStateGroup x:Name="pas2_p">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0">
<Storyboard x:Name="anim_pas2_p">
<DoubleAnimation Duration="0:0:1" To="-2136"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_2" d:IsOptimized="True"/>
<DoubleAnimation Duration="0:0:1" To="8"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_2" d:IsOptimized="True"/>
</Storyboard>
</VisualTransition>
<VisualTransition From="pas2_p_back" GeneratedDuration="0">
<Storyboard x:Name="anim_pas2_p_back">
<DoubleAnimation Duration="0:0:1" To="40"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_2"/>
<DoubleAnimation Duration="0:0:1" To="0"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_2"/>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
<VisualState x:Name="pas2_p_back">
<Storyboard>
<DoubleAnimation Duration="0" To="-2136.666"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="Pasul2_2" d:IsOptimized="True"/>
<DoubleAnimation Duration="0" To="8"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="Pasul2_2" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="pas3">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0">
<Storyboard x:Name="anim_pas3">

82

<DoubleAnimation Duration="0:0:1" To="-2356"


Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="pasul3" d:IsOptimized="True"/>
<DoubleAnimation Duration="0:0:1" To="10"
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="pasul3" d:IsOptimized="True"/>
</Storyboard>
</VisualTransition>
<VisualTransition From="pas3_back" GeneratedDuration="0">
<Storyboard x:Name="anim_pas3_back">
<DoubleAnimationUsingKeyFrames
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"
Storyboard.TargetName="pasul3">
<EasingDoubleKeyFrame KeyTime="0" Value="-2358"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="462"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames
Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
Storyboard.TargetName="pasul3">
<EasingDoubleKeyFrame KeyTime="0" Value="9.332"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="-8.668"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
<VisualState x:Name="pas3_back"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</common:LayoutAwarePage>

83

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