Virtual Coach Portal Online de Analiza a Alimentatiei Si Activitatilor Fizice pe Aportul Caloric

LUCRARE DE LICENȚĂ

VirtualCoach – Portal online de analiză a alimentației și activităților fizice pe aportul caloric

Cuprins

1. INTRODUCERE

1.1. TEMA PROIECTULUI

2. TEHNOLOGII UTILIZATE

1.1 ECHIVALENTUL METABOLIC

1.2 DOZA ZILNICĂ RECOMANDATĂ

1.3 INFLUENȚA SPORTULUI ȘI AL ALIMENTAȚIEI ASUPRA SĂNĂTĂȚII

1.4 WORLD WIDE WEB

1.5 LIMBAJ HTML5

1.6 SERVER WEB

1.7 PAGINI WEB

1.8 PORTAL WEB

1.9 FORMATAREA ELEMENTELOR PRIN CSS

1.10 DESIGN CU JAVASCRIPT

1.11 NOȚIUNI FRAMEWORK ASP.NET

1.12 LIMBAJUL C#

1.13 MOTORUL RAZOR

1.14 MODELUL MVC

1.14.1 Model

1.14.2 View

1.14.3 Controller

1.15 BAZE DE DATE

1.15.1 Noțiuni de bază

1.15.2 Utilizarea bazelor de date in ASP.NET MVC

2. ANALIZA APLICAȚIEI

2.1 PREZENTARE GENERALĂ

2.2 STUDIU DE CAZ MYFITNESSPAL

2.3 SCOPUL APLICAȚIEI

2.4 DOMENIUL DE ACTIVITATE

2.5 PUBLICUL ȚINTĂ

2.6 FUNCȚIONALITĂȚI

2.6.1 Sfaturi

2.6.2 Jurnalele de activitate

2.6.3 Jurnalele de alimentație

2.6.4 Istoric al masei

2.6.5 Raport alimentație

2.6.6 Analiza alimentație

2.6.7 Setarea dozei zilnice recomandate

2.6.8 Editare datelor din baza de date

3. DEZVOLTAREA APLICAȚIEI

3.1 CREAREA BAZEI DE DATE

3.2 STRUCTURA BAZEI DE DATE

3.2.1 Tabelul utilizatori

3.2.2 Tabela alimente

3.2.3 Tabela activități

3.2.4 Tabele cu rol de referință sau de stocare a informației

3.3 INTERFAȚA CU UTILIZATORUL

3.3.1 Head_pannels

3.3.2 Body_pannels

3.4 STRUCTURA APLICAȚIEI

3.4.1 Models

3.4.2 Controllers

3.4.3 Views

3.4.4 Helpers

3.4.5 Scripts

3.4.6 Content

3.5 TIPURI DE UTILIZATORI

3.5.1 Utilizatorul

3.5.2 Adminul

3.6 SCALABILITATE

4. CONCLUZII

4.1 CONCLUZII

4.2 DEZVOLTĂRI ULTERIOARE

5. ANEXA A. DIAGRAMA DE CONTROLLER

6. ANEXA B. DIAGRAMA BAZEI DE DATE

7. BIBLIOGRAFIE

Ideea de a construi această aplicație a pornit după observarea intereselor comune a mai multor oameni, care sunt confruntați cu un stil de viața haotic și care nu își permit să trăiască sănătos și echilibrat. Astfel s-a născut dorința de a veni cu un produs atractiv și util, care să vină în ajutorul acestui public țintă și să ofere o soluție modernă pentru o problemă veche.

Lucrarea de față prezintă un mod nou și interactiv de a ține un jurnal personal, detaliat, dinamic și interactiv. Jurnalul digital va fi total diferit de orice altă formă fizică de consemnare a unor date. Nu va mai exista un carnețel în care se vor scrie întâmplările de zi cu zi, va fi un jurnal alimentar și de efort fizic, va fi o modalitate de a deveni dependent în mod practic și folositor de calculele și ajustările necesare, realizate de noul antrenor virtual.

Introducere

Progresul tehnologic reprezintă principala temă de cercetare și de discuție din ultimii treizeci de ani. Datorită acestui lucru, s-au dezvoltat într-un ritm accelerat tehnologii digitale, tehnologii de calcul automat, sisteme adaptive și automate. Cu cât tehnologia a ajuns să fie mai răspândită și costul dezvoltării acesteia a scăzut, aceasta a devenit accesibilă și pentru omul de rând. Astfel, acesta se poate bucura de tehnologii care au ca scop să îi ușureze viața de zi cu zi.

Acest fapt a dus în special la răspândirea calculatoarelor personale. Inițial acestea erau folosite doar cu scopuri militare sau industriale, dar așa cum am spus, scăderea costului de producție a dus la înmulțirea lor. În ziua de azi, aproape orice familie deține cel puțin un calculator personal sau o tabletă, un gadget sau un telefon mobil inteligent, ultimul fiind distribuit chiar gratuit la încheierea unui contract.

Înmulțirea și interconectarea acestor electronice a avut drept consecință o apropiere fără precedent a oamenilor. Orice mesaj, poză sau filmuleț este transmis cu întârzieri de secunde între oricare două sau mai multe locații de pe Pământ. Acest fapt a dus la crearea așa numitelor site-uri de socializare. Se știe însă că, înainte de apariția site-urilor de socializare, calculatoarele erau folosite pentru a stoca informații personale sau a ale instituțiilor (ex. contabilitate).

Tema proiectului

Evoluția tehnologică continuă a reușit să ușureze și viața omului de rând și să îi ofere soluții alternative. În orice domeniu au fost implementate calculatoarele. Acestea au fost folosite pentru a ține registre, pentru a face calculate contabile, în medicină, poliție, învățământ, comunicații, armată, modă, dacă e să amintim doar o mică parte din domeniile care nu mai pot exista fără calculatoare. Niciun om care a cunoscut avantajele folosirii computerului, de la cea mai mică vârstă până la cel mai bătrân, nu mai poate scăpa de acest “microb”.

Pentru omul simplu, la început, calculatorul a fost un loc unde se putea distra sau relaxa cu diverse jocuri simple, cum ar fi un joc de cărți. Lăsând jocurile și făcând un salt calitativ, a apărut Blog-ul. Un loc unde fiecare poate să își scrie ideile și să le facă publice sau nu. La fel ca un jurnal. Această idee de jurnal a fost ulterior dezvoltată.

Un exemplu în acest sens este și portalul VirtualCoach care va fi esența acestei lucrări. Portalul este un jurnal personal de alimentație și activitate. El combină aceste două activități așa cum și omul le combină în viața de zi cu zi.

Mereu a trebuit să existe un echilibru între ce mâncăm, cât mâncăm și ceea ce facem. Dacă nu avem o alimentație sănătoasă, rezultatul va fi reflectat în randamentul de zi cu zi. Aplicația are două aspecte de analizat:

Alimentația: se analizează alimentația zilnică, ținându-se cont de calorii, lipide, glucide și proteine.

Activitatea zilnică: se vor calcula caloriile arse în funcție de activitățile zilnice pe care un individ le face și se vor face sugestii legate de numărul de calorii pe care o persoană trebuie să le ardă, în funcție de ce a mâncat.

Aplicația este la rândul ei împărțită în 2 categorii de utilizatori:

Admin: se ocupă de mentenanța alimentelor și a activităților din baza de date;

Utilizator: persoana care se folosește de resursele puse la dispoziție de site pentru a avea o evidență personală a regimului alimentar și a alimentației;

Cele două tipuri de utilizatori au privilegii diferite și roluri diferite. Accesul pe site se face doar după o înregistrare în prealabil și toate datele introduse în site sunt personale.

Această aplicație are ca scop oferirea unui mod simplu și exact de evidență a stilului de viață al unei persoane, prin oferirea mijloacelor de analiză a alimentației și a efortului fizic personal.

Tehnologii utilizate

În dezvoltarea aplicației s-a urmărit folosirea de tehnologii moderne și cu aplicabilitate largă. S-a încercat o fuziune între cunoștințe deja existente și cunoștințe în faza de testare, care sunt susținute de instituții recunoscute și celebre. Pentru dezvoltarea din punct de vedere al limbajului folosit, s-a ales conceptul de model-view-controller, regăsit în Framework-ul ASP.NET MVC4, un stil modern și foarte bine structurat de dezvoltare al aplicației. Analiza caloriilor arse a fost făcută pe baza echivalentului metabolic și a datelor culese și studiate de Universitatea Stanford în colaborare cu diverse centre de studiu al efortului fizic.

Echivalentul metabolic

Echivalentul metabolic de activitate sau MET este o unitate de mărime fiziologică ce exprimă costul energetic necesar pentru a face o activitate fizică. Acesta are o formulă matematică simplă reprezentată de o relație între kcal, kilograme și durata de timp.

(2.1)

„The Compendium of Physical Activities” reprezintă o culegere de date în care au fost stocate numeroase activități împreună cu coeficientul lor MET. Aceasta a fost creată pentru a fi folosită în studii epidemiologice și să standardizeze atribuire de coeficienți MET pentru activitățile fizice din chestionare. Dr Bill Haskell de la Universitatea Stanford a conceptualizat colecția și a dezvoltat un prototip al acesteia. Inițial această colecție de coduri MET a fost folosită în cadrul studiului „Survey of Activity, Fitness and Exercise” între anii 1987 și 1989. De atunci, această colecția a fost folosită în numeroase studii internaționale pentru a aloca intensitatea diferitelor activități fizice în chestionare. Prima versiune de compendium a fost lansată în 1993.

Doza zilnică recomandată

Doza zilnică recomandată se referă la cantitatea de nutrimenți alimentari pe care o anumită persoană trebuie să o acumuleze într-o singură zi. Valorile acestea au fost stabilite în anul 1998 ca urmare a unei colaborări între Guvernul Angliei, industria alimentelor și organizațiile consumatorilor. Acest proces a fost supravegheat de IGD (Institute of Grocery Distribution). Acest lucru a fost făcut din dorința de informare a consumatorilor spre a înțelege cu exactitate ce reprezintă valorile nutriționale de pe ambalajele produselor.

Doza zilnică recomandată reprezintă un mod de ghidare spre sănătate pentru adulți și copii, sugerând cantitatea de calorii, proteine, lipide și carbohidrați care trebuie asimilată. Ea a fost introdusă în marile corporații și acestea au început să afișeze pe produsele lor procentul din doza zilnică recomandată pe care acestea le oferă. Începând cu 2014, Uniunea Europeană a decis să schimbe denumirea din GDA(Guideline Daily Amout) în RIs(Reference intakes), dar valorile rămânând neschimbate.

Figura 1.1 Doza zilnică recomandată pe ambalaje

Influența sportului și al alimentației asupra sănătății

“Sănătatea este un cuvânt mare. Ea cuprinde nu numai corpul, ci și mintea și spiritul  și perspectiva unui om. “ James H. West

Sănătatea fizică este generată de echilibrul dintre alimentele mâncate și stilul de viață ales. O dietă echilibrată va duce mereu la o stare de spirit și un confort personal bun. Nu este suficient să mâncam ceva, ci este necesar să avem o alimentație sănătoasă și echilibrată. O alimentație echilibrată nu înseamnă întotdeauna să se consume câte puțin din toate. Există studii care au determinat exact cantitatea de substanțe nutritive necesare pentru a avea o sănătate bună și o alimentație corectă. Astfel a fost concepută așa numita „piramidă alimentară”. În ea se pot regăsi alimentele grupate în funcție de importanța lor directă în dieta alimentară. Astfel, se poate observa cu ușurință ce alimente trebuie consumate mai des și ce alimente trebuie consumate mai rar.

Dulciurile : Fiind situate mai sus, alimentele precum grăsimile, prăjiturile, zahărul sau chiar si carnea grasă trebuie consumate in cantități reduse si cu o frecventa redusă.

Carnea: Carnea mai slabă, fie ea de pui sau de fie ea roșie, trebuie consumată cu măsură.

Lactatele: Produsele lactate reprezintă o sursa de vitamine si ar trebui sa fie consumate regulat.

Legumele: Legumele reprezintă sursa principala de vitamine, fapt ce implica o consumare zilnica a acestor produse.

Cerealele: Baza alimentație ar trebui sa fie constituita din produse pe baza de cereale si astfel ar trebui consumate zilnic.

Figura 1.2 Piramida alimentară

Mișcarea fizică ajută la o bună circulație sangvină, inclusiv în zona creierului, stimulând activitatea cerebrală. Astfel se împiedică formarea de cheaguri de sânge și se oxigenează tot corpul mult mai bine. Dar nu orice fel de mișcare are un impact considerabil asupra sănătății. Pentru a obține un efect benefic în urma mișcării, trebuie să depășim o anumită durată (10 minute) de efort fizic constant, iar efectele fiind optime abia după ce ajungem la o durată de 30 de minute pe zi. Pentru a menține o condiție fizică bună, ar trebui să facem acest lucru de cel puțin cinci ori pe săptămână.

World Wide Web

World Wide Web ( sau pe scurt WWW) reprezintă o rețea de informații interconectate și reprezintă totalitatea site-urilor, documentelor și informațiilor de tip hipertext. Toate acestea pot fi accesate prin rețeaua mondială Internet. Inițial a fost doar o modalitate de transmitere a datelor pentru fizica energiilor înalte, dar ulterior a crescut la o aplicație despre care oamenii credeau a fi Internetul. Popularitatea acestui fenomen s-a datorat vitezei de transmiterrecum grăsimile, prăjiturile, zahărul sau chiar si carnea grasă trebuie consumate in cantități reduse si cu o frecventa redusă.

Carnea: Carnea mai slabă, fie ea de pui sau de fie ea roșie, trebuie consumată cu măsură.

Lactatele: Produsele lactate reprezintă o sursa de vitamine si ar trebui sa fie consumate regulat.

Legumele: Legumele reprezintă sursa principala de vitamine, fapt ce implica o consumare zilnica a acestor produse.

Cerealele: Baza alimentație ar trebui sa fie constituita din produse pe baza de cereale si astfel ar trebui consumate zilnic.

Figura 1.2 Piramida alimentară

Mișcarea fizică ajută la o bună circulație sangvină, inclusiv în zona creierului, stimulând activitatea cerebrală. Astfel se împiedică formarea de cheaguri de sânge și se oxigenează tot corpul mult mai bine. Dar nu orice fel de mișcare are un impact considerabil asupra sănătății. Pentru a obține un efect benefic în urma mișcării, trebuie să depășim o anumită durată (10 minute) de efort fizic constant, iar efectele fiind optime abia după ce ajungem la o durată de 30 de minute pe zi. Pentru a menține o condiție fizică bună, ar trebui să facem acest lucru de cel puțin cinci ori pe săptămână.

World Wide Web

World Wide Web ( sau pe scurt WWW) reprezintă o rețea de informații interconectate și reprezintă totalitatea site-urilor, documentelor și informațiilor de tip hipertext. Toate acestea pot fi accesate prin rețeaua mondială Internet. Inițial a fost doar o modalitate de transmitere a datelor pentru fizica energiilor înalte, dar ulterior a crescut la o aplicație despre care oamenii credeau a fi Internetul. Popularitatea acestui fenomen s-a datorat vitezei de transmitere a datelor, interfețelor atractive și accesul nelimitat la orice fel de informație.

World Wide Web-ul a luat ființă oficial in 1994 când CERN și MIT au semnat o înțelegere pentru a înființa WWW-ul, organizație care are ca rol dezvoltarea continuă a Web-ului, standardizarea și compatibilitatea între site-uri.

Pentru un utilizator, WEB-ul reprezintă o colecție de documente interconectate și răspândite peste tot în lume, numite pagini. Fiecare pagină conține date diferite, dar poate conține de asemenea și legături către alte pagini, aflate oriunde în lume. Aceste pagini pot fi accesate cu un simplu click pe un așa numit HyperText sau link.

Inițial, paginile Web erau formate doar din text simplu, fără să includă imagini. Aceste pagini erau vizionate prin intermediul unui client, numit browser. In 1993 a apărut primul browser grafic care oferea posibilitatea de vizualizare a imaginilor, moment în care Web-ul a început sa devina din ce in ce mai popular.

Programul de navigare încarcă textul HTML primit și interpretează acest text pentru a putea oferi o interfață grafică. O pagină Web este formată din două părți: head și body. În interiorul acestora se pot găsi legături către alte pagini numite hyperlegături. În general acestea sunt afișate diferit, fiind subliniate și având o culoare diferită.

Tehnologia folosită de World Wide Web este una client-server, ceea ce implică mai multe componente. Inițial un calculator (clientul) formulează o cerere, care este apoi expediată unui server. Acesta, analizează această cerere și formulează un răspuns, care urmează a fi trimis înapoi la client.

Limbaj HTML5

HyperText Markup Language este un limbaj de marcare cu care se construiesc pagini web astfel încât un browser de internet să poată fisa o pagină web. El stă la baza oricărui site și reprezintă un limbaj de programare simplu și pe înțelesul tuturor. Totuși, dezvoltarea unei pagini web reprezintă un proces destul de complex care consumă mult timp. Există editoare grafice care fac posibilă editarea paginii web ca pe un simplu document Word, dar această programare generează de cele mai multe ori un cod HTML greoi și cu multe „improvizații”.

Limbajul HTML este unul derivat din SGML( Standard Generalized Markup Language) și reprezintă un set de tag-uri, care oferă directiva asupra modului în care este afișat textul. Aceste taguri sunt cuprinse între caracterele „<” și „>”, iar textul introdus între aceste taguri nu are voie să conțină aceste simboluri. Singura posibilitate de afișare fiind cea a metacaracterelor.

Textul unui document html este cuprins între tagurile <html> și </html>. El cuprinde o secțiune de „head” și una de „body”. În secțiunea „head” se vor întroduce date despre document ce nu vor fi afișate în pagina Web. În secțiunea „body”, se va introduce descrierea paginii propriu-zise.

URL(Uniform Resource Location) reprezintă un șir de caractere care constituie o referință către o resursă. El conține de la dreapta la stânga, locul unde acea informație se află o mașină aflată la distanță, numele mașini și protocolul de accesare a acesteia. El a fost standardizat de Tim Berners-Lee in 1994. Acesta a susținut că regretă că a separat numele domeniului cu „.” în loc să-l separ cu „/”.

Limbajul HTML5 are la baza limbajul foarte reușit HTML4. De aceea nu trebuie să se considere că trecerea de la HTML4 la HTML5 este una revoluționară și care necesită studiu amănunțit. HTML5 propune doar câteva funcționalități noi cum ar fi, canvas, redare video sau geolocatie precum și alte câteva noi tipuri de <input>. (Pilgrim, 2011)

Server Web

Serverul web este un calculator pe care se stochează și rulează un site web. Acesta trebuie să fie capabil să răspundă rapid și consistent cererilor de pagini web create de clienți. Pentru ca acest lucru să fie posibil, pe server trebuie să ruleze o aplicație numită httpd (HyperText Transfer Protocol Demon).

Astfel apare și noțiunea de arhitectură client-server care se referă la ansamblul format dintr-un calculator cu rolul de server și mai multe calculatoare cu rolul de client. Toate acestea sunt conectate prin intermediul unei rețele, prin intermediul căreia fac schimb de informații.

Figura 1.3 Comunicația Server-Client

Pagini Web

O pagină web este un document web care este făcut special pentru World Wide Web și care poate fi randat de un browser. Această pagină va fi afișată pe monitorul unui calculator sau pe ecranul unui telefon. În general acest document este scris într-un limbaj HTML (HyperText Markup Language). Pagina este accesată prin introducerea unei adrese URL și ea poate conține text, poze sau alte URL-uri către alte pagini web. Prima pagină web a fost creata de Tim Berners-Lee și a fost publicată pe 6 August 1991.

Figura 1.4 Prima pagină Web

Portal web

Un portal web reprezintă în general o colecție de pagini Web făcută special pentru a deservi un scop anume, toate având un design uniform. Într-un portal web, se pot găsi mai multe arii de interes, fiecare având un scop anume. Astfel se por regăsi motoare de căutare, știri, email-uri, dar și multe alte unelte, fiecare având totuși un numitor comun.

Portalurile web nu au apărut odată cu apariția internetului. Inițial nu existau decât simple motoare de căutare ce căutau anume cuvinte sau fraze pe toate paginile care erau existente in momentul respectiv. Ulterior s-au adăugat opțiuni precum căutarea pe un anumit site sau într-o anumită categorie de interes.

Există atât portaluri de uz general cât și portaluri cu acces limitat. Un exemplu în acest sens fiind portalurile de la diverse corporații, guverne sau instituții de învățământ. Angajatul sau utilizatorul de rând va avea un acces diferit față de un administrator sau chiar de un alt utilizator, limitând astfel accesul la rețea și la informație.

Dezvoltarea continuă a internetului nu poate sugera decât o creștere a portalurilor. Vor apărea idei noi, funcționalități noi și design-uri noi. Astăzi există deja mult mai multe portaluri cu mult mai multe funcționalități decât existau acum câțiva ani.

Formatarea elementelor prin CSS

Foile de stil în cascadă oferă instrumentele de a rafina paginile Web, fără să se piardă compatibilitatea cu browserele mai vechi. CSS(Cascading Style Sheet- foi de stil in cascada) este un standard acceptat de Consorțiul World Wide Web.

În esență, foile de stil reglează modul în care sunt formatate etichetele HTML. „Rândurile autorilor Web sunt tot mai populate de oameni din domeniile design-ului grafic sau al tehnoredactării computerizate, iar a controla diferențele fine de stil devine partea a apropierii naturale de design. Totuși, primele versiuni de HTML nu ofereau un instrument comun pentru controlul stilului, iar dezvoltările ulterioare conțineau unul limitat”. (Darnell, 2001)

body {

font-size: .85em;

font-family: "Arial", Verdana, Helvetica, Sans-Serif;

color: #232323;

margin: 0px;

/* float: left; */

width: 100%;

display: table;

opacity: 1.5;

height: 100%; }

Design cu JavaScript

JavaScript este un limbaj de programare orientat obiect, dinamic. Este folosit cu precădere în introducerea de funcționalități în pagini web, codul fiind rulat exclusiv de browser. O altă utilizare a acestui limbaj este cea de a accesa obiecte incastrate(embedded objects) în alte aplicații. A nu se confunda cu limbajul Java cu care nu are nicio legătură, limbajul JavaScript fiind mai apropiat de limbajul C.

Limbajul JavaScript a fost creat de Brendan Eich, atunci când lucra pentru Netscape Communication Corportaion. În acea vremea limbajul Java era în competiție directa cu C++, și astfel s-a dorit să se creeze un limbaj ca să completeze limbajul Java și să fie ușor de folosit. Inițial a fost conceput sub numele de Mocha, iar când a fost lansat oficial a purtat numele de LiveScript. După ce s-a lansat browserul Netscape 2.0B3 care a introdus suport pentru Java în browser, limbajul și-a schimbat numele în cel actual, JavaScript. De aici există și coincidența de nume, JavaScript lăsând falsa impresie că este un limbaj asemănător cu Java.

Există confuzia că limbajul JavaScript a fost derivat din C–, un limbaj mai vechi de script pentru pagini web, dezvoltat de Nombas. Dar, Berndan Eich, susține că nu a auzit niciodată de limbajul C– înainte să creeze LiveScript, lucru greu de crezut totuși.

Astăzi, JavaScript este unul dintre cele mai populare limbaje de programare pentru pagini web. Inițial, JavaScript nu a fost agreat de programatori, deoarece limbajul are ca public țintă administratorii de pagini web și alți programatori „amatori”. Totuși, după introducerea suportului pentru Ajax, JavaScript a reintrat în grațiile programatorilor care au găsit noi metode profesionale de a utiliza acest limbaj. JavaScript este un limbaj dinamic, orientat obiect care oferă multe posibilități de animații, elemente grafice pentru o pagina web.

<script type="text/javascript" language="javascript">

document.getElementById("upfile1").onclick = function () {

document.getElementById("file1").click();

}

</script>

Noțiuni framework ASP.NET

.NET este un framework de dezvoltare care stă la baza realizării de aplicații desktop cât și aplicații Web. Aceasta este compusă dintr-o colecție de tehnologii (ASP, OOP, SOAP, XML, LINQ) și limbaje de programare (VB, C++, C#, F#) toate acestea asigurând o portabilitate crescută a codului, atât pe diferite calculatoare căt și în interiorul aceluiași program.

.NET framework este o componentă integrată în sistemul de operare Windows. Astfel pentru a putea dezvolta aplicații .NET sunt necesare doar 3 componente:

Un limbaj sau un set de limbaje de programare (C#, VB, SmallTalk)

Un mediu de dezvoltare (Visual Studio)

Biblioteci de clase precompilate

ASP.NET este un framwork dezvoltat de Microsoft și pune mare accent de pagini web dinamice, aplicații web dinamice și servicii web dinamice. A fost făcut public in ianuarie 2002 cu versiunea 1.0 .NET Framework, acesta fiind succesorul tehnologiei ASP de la Microsoft.

Paginile web ASP.NET cunoscute ca Web Forms, sunt principala unealtă de construcție a aplicațiilor de dezvoltare. Acestea au o extensie „.aspx” și în general conține un cod static HTML, dar și un cod dinamic care va fi rulat pe server și apoi trimis la browser ca și cod static pentru a fi randat.

Printre avantajele acestui framework se regăsesc avantajul accesului ușor la baze de date și posibilitatea de a realiza desene și elemente grafice.

Limbajul C#

Limbajul C# a fost dezvoltat de o echipa restrânsa de la Microsoft, condusă de Anders Hejberg și a fost lansat în iunie 2000. Limbajul a fost conceput ca un succesor al limbajului C++, având o formă mai simplă, cu aproximativ 80 de cuvine cheie și 12 tipuri de date predefinite.

C# urmărește stilul modern de programare orientat obiect, cu forma structurată și modulară. Dar moștenește cu succes sintaxa și principiile fundamentale de programare de la C++, în defavoare accesului direct la memorie folosind pointeri, care a fost considerat nesigur.

Motorul Razor

La fel ca și paginile ASP.NET, motorul Razor reprezintă un motor de randare bazat pe limbajul C#. Acesta a fost lansat ca parte din pachetul ASP.NET MVC3 în ianuarie 2011, fiind o tehnologie foarte nouă de programare.

Scopul principal pentru dezvoltarea motorului Razor a fost cea de a oferi o metodă optimă de generarea a codului HTML, având tranziții minime între HTML și cod. Acest lucru a dus la diminuarea caracterelor folosite pentru scrierea unui pagini web, oferind astfel un mod fluid de lucru, fără a modifica radical un limbaj deja cunoscut. In continuare se poate observa o secțiune view-ul _Layout.cshtml unde se poate vedea foarte bine cum se face tranziția de la cod C# la cod HTML, fără să fie anunțate într-un mod prea complicat anterior.

<div class="top_pannel">

@{

if (Request.Cookies["userid"] == null)

{

<div>

@Html.Partial("~/Views/User/Login.cshtml")

</div>

}

string[] splitStr = Advice.Split(new string[] { "$pl17" }, StringSplitOptions.None);

<div class="adviceBox">

<div class="advice">

@splitStr[0]

<img src="@Url.Content("~/Content/Images/logo.png")" style="padding-right:30px; z-index:-1;float:right; width:400px;" >

</div>

<div class="timesSeen">

Acest sfat a fost vazut de @splitStr[1] ori

</div>

</div>

}

</div>

Modelul MVC

MVC (Model View Controller) este un framwork de dezvoltare web utilizând platforma Microsoft .NET care oferă dezvoltatorilor o modalitate de a crea aplicații web bine structurate. A fost introdus ca o alternativă a Web Forms și a crescut mult în popularitate de când a fost lansat publicului în 2007.

Deși Microsoft a dezvoltat unelte și framework-uri pentru dezvoltarea web, ASP.NET MVC a oferit o mare schimbare de la eforturile anterioare, bazându-se pe un cod curat, bine structurat și ușor de testat. (JEFFREY PALERMO, 2012)

Structura acestui framework se împarte în 3 componente esențiale. Prima componentă este modelul, unde sunt stocate clasele cu care se lucrează în aplicație. Clasele acestea sunt procesate și prelucrate în partea de controller, urmând ca acestea să fie afișate utilizatorului prin interfața grafică oferita de view.

Figura 1.5 Interacțiunea elementelor MVC

Model

Modelul reprezintă domeniul în jurul căruia este construită aplicația. Modelul va reprezenta o clasă de obiecte în care se vor preciza atribute care le identifică și reguli de funcționare relevante.

View

View-ul este reprezentarea grafică a modelului într-un anumit context. Acesta este randat în urma interpretării codului scris în Razor. Informațiile din View vor fi analizate și procesate de către Controller, urmând ca acesta să afișeze utilizatorului date clare și concise.

Controller

Controller-ul oferă legătura între Model și View. Acesta este responsabil pentru procesarea ieșirilor, acțiunii asupra modelului și deciziei asupra cărei acțiuni să fie efectuată, cum ar fi randarea unui View sau redirecționarea către o altă pagină. (JEFFREY PALERMO, 2012).

Baze de date

Pentru baza de date s-a adoptat la fel o formă nouă de dezvoltare, fiind folosită metoda „code-first” în care, baza de date se creează utilizând linii de cod, sub forma unor clase de date. În urma creării acestor clase de date, împreună cu relațiile dintre ele, baza de date SQL a fost generată automat de framework-ul ASP.NET MVC.

Noțiuni de bază

„O bază de date este o colecție persistentă de informații structurate, organizată și construită pentru facilitarea accesului și prelucrării eficiente.” (Carstoiu)

Bazele de date au devenit o componentă indispensabilă în ziua de astăzi. În orice domeniu, datele sunt stocate în baze de date. Fie el domeniu bancar, fie el un magazin sau competiție sportivă. Dar cu toate acestea, o bază de date trebuie să respecte anumite reguli.

Orice bază de date trebuie să fie supusă procesului de normalizare. Acest proces a fost propus de Codd în 1972 și astfel există 3 forme normale. Normalizarea datelor poate fi văzută ca un proces în care schemele de relație nesatisfăcătoare sunt descompuse și astfel atributele sunt împărțite în scheme relație mai mici ce au proprietăți dorite.

Forma normală primară este considerată ca fiind partea a definiției formale a unei relație. Astfel nu sunt acceptate atribute cu valori multiple, atribute compuse sau orice alta combinație asemănătoare. Astfel atributele nu pot avea decât valori atomice .

Forma normală secundară se bazează pe conceptul dependenței funcționale complete. „O dependență funcțională XY este completă dacă eliminarea oricărui atribut A din X distruge dependența funcțională” (Carstoiu)

Forma normală de ordinul trei are la baza conceputul dependenței tranzitive. „O dependență funcțională XY în relația R este tranzitivă dacă există un set de atribute Z ce nu sunt un subset al oricărei chei R, pentru care există ambele dependințe: XZ și ZY.” (Carstoiu)

Utilizarea bazelor de date in ASP.NET MVC

Framework-ul oferit de Microsoft in ADO.NET Entity Framework simplifică accesul la date prin eliminarea nevoii de acces direct la baza de date în cod. În schimb, se pot extrage date din baza de date prin interogări deja existente în clasele Framework-ului. Astfel interacțiunea cu baza de date nu este făcută de către utilizator, ci de către Framework.

Legăturile dintre tabele sunt de asemenea făcute de către Framework, nefiind necesar scrierea de cod special. Codul necesar, creări, editării și ștergerii de date este generat automat în urma apelării anumitor funcții precompilate.

public class FoodCategory

{

public int id { get; set; }

public string name { get; set; }

[InverseProperty("FoodCategory")]

public virtual List<Food> Foods { get; set; }

}

public class BaseController : Controller

{

protected DataContext db = Arnold.Helpers.AnalysisHelper.db;

public float CalculateCalories(int id, float Quantity)

{

Food f = db.Foods.FirstOrDefault(food => food.id == id);

return (f.calories * Quantity) / f.quantity;

}

}

Analiza aplicației

Aplicația este dezvoltată in Frameworkul ASP.NET MVC 4 și constituie un portal dinamic și interactiv care vine in ajutorul utilizatorului de a salva date personale sub forma unui jurnal alimentar și a unui jurnal de activitate. În urma introducerii acestor date, utilizatorul va primi înapoi date analizate cu statistici și recomandări astfel încât să aibă un stil de viață sănătos.

Prezentare generală

Odată cu evoluția omului, acesta a simțit nevoia de ordine și de înregistrare a cunoștințelor acumulate. Acest lucru se poate observa cel mai bine în domeniul istoriei, locul unde s-au notat toate evenimentele importante din existența omenirii. Omul a notat, a analizat, a făcut statistici, o realizat ce a fost bine și ce a fost rău și astfel astăzi exista posibilitatea evitării greșelilor din trecut.

Tot acest conținut informațional este în zilele de azi convertit într-o formă digitală și stocat în arhive. Acest lucru are mult mai multe avantaje decât o stocare clasica pe hârtie sau alt suport. Unul din aceste avantaje este cel al spațiului ocupat, lucru ce implică direct ușurința de transport a informației. Orice dată digitală se poate transmite oriunde în lume în doar câteva secunde, făcând astfel posibilă o răspândire a datelor foarte rapidă.

Oamenii au început să beneficieze de aceste avantaje majore în momentul în care calculatorul a devenit accesibil pentru oricine, datorită costului de producție relativ scăzut. Acesta a fost momentul când toți au realizat că această unealtă este un ajutor de neprețuit în viața lor, fie că îl folosesc în scopuri personale fie pentru nevoile comunității.

Așa cum am mai spus, oamenii simt nevoia de a înregistra datele și de a le analiza. Calculatorul devine astfel cel mai bun mijloc de a face acest lucru. Utilizat în scopuri personale, calculatorul a ținut loc inițial de mijloc de agrement prin jocuri. Ulterior a fost folosit pentru a scrie jurnale, cărți sau de a stoca amintiri sub forma de fotografii. Toate acestea sunt lucruri personale. Sănătatea este de asemenea un aspect personal pentru orice individ.

Sănătatea personală este un lucru important. Fiecare om are mereu grija de el și de sănătatea lui. Doar că nu totdeuna își ocupă timpul să se gândească la ce a mâncat și ce efort fizic a făcut. Ar implica un tabel făcut pe o hârtie în care să își noteze exact ce a mâncat și să calculeze, ținând cont de alt tabel cu valori nutriționale, ce substanțe a introdus în corp. Acest lucru nu ar fi deloc complicat, dar ar ocupa foarte mult timp și ar fi anevoios.

Același lucru este valabil și cu efortul fizic. La televizor apar mesaje de interes public în care se recomandă să se facă mișcare regulat. Dar nimeni nu iți spune câtă mișcare trebuie să faci sau să iți spună că ai făcut prea multă sau prea puțină mișcare. Ar înseamnă la fel, să se noteze într-un tabel, pe o hârtie, ce mișcare ai făcut și să se calculeze caloriile arse. Lucru, de asemenea, nu complicat, dar anevoios.

Portalul VirtualCoach a fost proiectat pentru a veni în ajutor oamenilor care sunt curioși și doresc să țină o contabilitate a ceea ce sunt și ceea ce fac. A fost conceput cu un accent foarte mare pe ușurința de utilizare, un aspect plăcut, natural și aerisit. Acest lucru face posibilă utilizarea acestei aplicații de persoane cu cunoștințe minimale în domeniul informaticii. Portalul conține butoane și câmpuri de ales sau completat cu cifre simple și exacte, utilizarea lor fiind una intuitivă și ușoară.

Studiu de caz MyFitnessPal

Aplicația a fost dezvoltată în urma unui studiu de piață amănunțit. Au fost căutate aplicații care activează în același domeniu și au fost analizate atât punctele lor puternice cât și cele slabe. În primul rând au fost găsite foarte mult site-uri care realizează o înregistrare a dietei în mod special, dar contra cost. Prețurile variază între 10 dolari pe lună până la 100 de dolari pe lună. Un cost pe care nu orice utilizator este dispus să-l plătească.

În spațiul virtual românesc, nu a fost găsită nicio astfel de aplicație. Nu există decât site-uri unde sunt prezentate rețete de slăbit, sfaturi de urmat, dar nici un site nu a prezentat un mod dinamic de interacțiune, toate fiind doar locuri de informare.

Acest studiu de caz a fost făcut asupra aplicației web MyFitnessPal. Aceasta este una din cele mai complete aplicații web cu un astfel de caracter. Aplicația prezintă la rândul ei mai multe secțiuni unde se pot înregistra alimente, exerciții și se pot observa rapoarte.

Aplicația VirtualCoach a folosit câteva din aceste idei, pe care le-a îmbunătățit și la care a adus noi funcționalități. Dintre acestea se pot menționa:

Un mod mai simplu de a caută prin alimente sau activități, acestea fiind grupate pe categorii într-un dropdown. Toate aceste dropdown-uri posedă posibilitate de a caută în ele prin simpla apăsare a literelor.

Un mod simplu și la îndemână de a modifica masa corporală, fără a fi nevoie de navigarea prin meniuri.

Existenta unor rapoarte extinse asupra nutrimentelor. Graficele generate sunt făcute pentru ultimele date calendaristice în care au existat înregistrări. Acest lucru face posibilă observarea unei evoluții și în cazul în care există o zi necompletată.

Analiza alimentației oferă informații asupra nutrimenților acumulați, utilizatorul putând astfel observa dacă a depășit sau nu doza zilnică recomandată. Tot aici se pot regăsi și sfaturi asupra alimentației.

Aplicația nu necesită alegerea momentului în care un utilizator a consumat un produs. În schimb, utilizatorul trebuie să introducă doar ora la care a făcut acest lucru, eliminând astfel modul subiectiv de a interpreta de exemplu ce înseamnă prânz sau mic dejun.

Scopul aplicației

Ideea aplicației a venit din dorința de a ușura și de a promova un stil de viață sănătos. Ușurința este oferită de introducerea calculatorului în gestionarea și înregistrarea datelor cu caracter personal. Acest lucru elimină nevoia de a scrie într-un caiet sau registru zilnic diverse informații. Odată cu introducerea în calculator, mai exact, pe site, a datelor, acestea sunt analizate și calculate în funcție de mai mulți factori generali sau subiectivi, și apoi oferite utilizatorului pentru a putea fi interpretate subiectiv.

Promovarea unui stil de viața sănătos vine ca un adaos suplimentar și neforțat. Prin oferirea de date exacte și concrete, utilizatorul își poate stabili obiective personale și astfel să se autoambiționeze să le atingă, fără o presiune exterioară. Faptul că aplicația se întoarce cu exactitate unde există un exces alimentar, este de asemenea o unealtă de a promova sănătatea.

Domeniul de activitate

Aplicație se vrea să atingă domeniul alimentar, sportiv, educativ și al sănătății. Alimentația este un aspect important al fiecărui individ. O alimentație proastă va duce mereu la o sănătate proastă. Pentru a avea o alimentație sănătoasă, trebuie să ținem mereu cont de ceea ce mâncăm și să fim mereu atenți la cantitățile de alimente pe care le consumăm.

Pentru a avea o sănătate generală bună trebuie să facem sport sau cel puțin să avem un stil de viața activ. Orice urmă de sedentarism se adaugă la problemele de sănătate deja existente. În momentul în care facem efort, organismul are posibilitate de a arde caloriile suplimentare și de elimina toxinele acumulate. Absența exercițiului fizic va duce la o acumulare de calorii și de toxine care vor dăuna.

Partea educativă a acestei aplicații se reflectă prin prezența sfaturilor și recomandărilor în urma analizei datelor introduse în sistem. Astfel utilizatorul va putea să învețe cât trebuie să mănânce, ce trebuie să mănce și câtă mișcare trebuie să facă pentru a duce un stil de viață sănătos.

Publicul țintă

Publicul țintă este cel cuprins între 14 și 30 de ani. În această perioadă se formează stilul de viață personal și convingerile proprii. În această perioadă oamenii sunt cel mai interesați de modul în care arată și de modul în care se simt, deoarece aceasta este perioada cea mai încărcată din viața unui individ.

Se mizează pe o pondere mai ridicată a utilizatorilor de sex feminin, dar nu se va ignora prezența utilizatorilor de sex opus. Acest lucru este important și pentru o funcționalitate corecta a aplicației. Rapoartele oferite și recomandările date sunt conforme categoriei de utilizator, acestea diferind de la un bărbat la o femeie și de la un copil la un adult.

Funcționalități

Aplicație conține un număr ridicat de funcționalități. Aceste funcționalități se împart in doua categorii, în funcție de utilizator:

Utilizatorul standard: Are acces la jurnalele de activitate și alimentație cât și la analiza datelor introduse în sistem.

Angajat: angajatul are rol de administrator care are acces la cele mai multe funcționalități. În plus față de utilizatorul standard, administratorul are dreptul de a modifica și adaugă alimente sau activități, de a introduce sfaturi și de a adaugă alți administratori.

Sfaturi

A fost implementat un mod de a selecta aleatoriu din baza de date un sfat care a fost introdus în prealabil de un angajat. Este un sfat cu caracter general legat sau nu de sănătate, având un rol educativ și încurajator. Împreună cu acest sfat este afișat și numărul de apariții al acestui sfat, care se modifica la fiecare încărcare a paginii.

Figura 2.1 Sfaturi aleatorii

Jurnalele de activitate

Jurnalele de activitate sunt înregistrări personale ale utilizatorilor în care, fiecare va adaugă ce efort fizic a făcut într-o anumită zi. Se pot introduce oricâte activități într-o singură zi, fie ele din zile diferite. Astfel se creează posibilitatea introducerii de activități din trecut. Baza de date cuprinde peste 3000 de activități specifice, în părți de câteva zeci de categorii. Ea a fost importată de la Ainsworth BE, Haskell WL, Herrmann SD, Meckes N, Bassett Jr DR, Tudor-Locke C, Greer JL, Vezina J, Whitt-Glover MC, Leon AS. The Compendium of Physical Activities Tracking Guide. Healthy Lifestyles Research Center, College of Nursing & Health Innovation, Arizona State University.

Jurnalele de alimentație

Jurnalele de alimentație sunt înregistrări personale ale utilizatorilor în care, fiecare va adaugă ce alimente a consumat într-o anumită zi. Se pot introduce oricâte alimente într-o singură zi, fie ele din zile diferite. Baza de date de alimente conține înregistrări simple cum ar fi un măr, până la alimente de tip fast food de la diverse lanțuri de fast food consacrate sau chiar mâncare gătită în casă.

Istoric al masei corporale

Utilizatorul are posibilitate de a ține un istoric al masei corporale personale. O masă exactă este foarte importantă pentru a putea calcula cu exactitate numărul de calorii consumate în timpul unei activități.

Raport alimentație

Prin raportul de alimentație, utilizatorul are posibilitatea de a vedea evoluția nutrimenților asimilați în organism în ultime șapte zile în care a introdus date în sistem. Nu este necesară introducerea zilnică a alimentelor. Raportul se face pentru calorii, proteine, lipide, glucide și carbohidrați.

Figura 2.2 Grafic Calorii

Analiza alimentație

Analiza de alimentație seamănă cu funcționalitatea raportului de alimentație. Diferența majoră este că aici nu se va desena un grafic, ci se va explica graficul și se vor oferi explicații referitoare la asimilarea de nutrimente. Dacă într-o anumită zi din perioada analizată se va observa o depășire a dozei zilnice recomandate cu mai mult de 10%, se va afișa ziua și numărul total de nutrimente cu care s-a depășit doza zilnică recomandată. Tot în această pagină se vor analiza caloriile, iar la sfârșit se va oferi o recomandare de reducere zilnică a caloriilor în cazul depășirii dozei zilnice recomandate. Analiza și recomandările se vor face pentru calorii, proteine, lipide, glucide și carbohidrați.

Figura 2.3 Analiza nutrimente

Setarea dozei zilnice recomandate

Ca și angajat, utilizatorul are dreptul de a modifica dacă este necesar doza zilnică recomandată pentru fiecare tip de utilizator. Există astfel 4 tipuri de utilizatori: femei, bărbați, copii cu vâstă între 5 și 10 ani și copii până în 5 ani. În această secțiune se vor seta caloriile, proteinele, carbohidrații, zaharurile, grăsimile, grăsimile saturate, fibrele și sărurile.

2.4 Setarea dozei zilnice recomandate

Editare datelor din baza de date

Angajatul are permisiunea de a edita sau adăuga date despre alimentație, activități, angajați, sau sfaturi. În meniul angajatului există trei butoane speciale de unde un angajat poate interacționa cu 5 date diferite:

Alimente – în această secțiune un angajat poate adăuga o categorie de alimente sau un aliment, împreună cu categoria din care face parte și cu valorile nutriționale.

Angajați – aici se poate adaugă un nou angajat.

Activități – secțiunea de activități este asemănătoare cu cea de alimente. Aici se pot adăuga sau edita o categorie de activități sau o activitate. Deoarece a fost importată o colecție, deja există date care erau sub forma unui .xls, există posibilitate de a importa un .xls complet care respectă un anumit format.

Setarea DZR – funcționalitate detaliată mai bine in secționa 2.3.7.

Sfaturi – s-a implementat posibilitatea de a adăuga sfaturi noi în baza de date.

Figura 2.5 Meniu angajat

Dezvoltarea aplicației

Aplicația a fost dezvoltată în mediul Visual Studio 2012 utilizând framework-ul ASP.NET MVC. S-a pornit cu o dezvoltare paralelă în funcționalități și baza de date, amândouă crescând în paralel. Acest lucru a fost util pentru a elimina posibilitatea de a concepe o bază de date și apoi urmând a o modifica pentru a se potrivi cu dorința existenței anumitor funcționalități.

Prima parte din aplicație a fost dezvoltată secțiunea de admin pentru a putea implementa cu ușurință funcțiile de editare a elementelor din baza de date. Astfel s-au implementat funcțiile de adăugare și editare pentru alimente și activități. A doua secțiune a fost implementată progresiv astfel încât să fie posibilă adăugarea de funcționalități noi.

Crearea bazei de date

Baza de date a fost creata in interiorul mediului Visual Studio, fără a se folosi un alt program cum ar fi SQL Server Management Studio. Acest lucru a facilitat lucrul dinamic și rapid al aplicației cât și o compatibilitate foarte crescută între aplicație și baza de date. Legătura dintre baza de date și aplicație se făcea prin introducerea legăturii din fișierul web.config.

<connectionStrings>

<add name="DataContext" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Arnold;Integrated Security=True; Connect Timeout=15; Encrypt=False; TrustServerCertificate=False; MultipleActiveResultSets=True" />

</connectionStrings>

Crearea bazei de date se face prin popularea cu clase a fișierului DataContext.cs, declarant în conexiunea de mai sus. În acest fișier se declară fiecare table in baza de date sub forma unei clase, aceasta putând fi utilizată ulterior și ca o simplă clasă. Un exemplu de astfel de clasă este MajorHeading care reprezintă categorii de activități.

public class DataContext : Context

{

public DbSet<User> Users { get; set; }

public DbSet<Employee> Employees { get; set; }

public DbSet<Food> Foods { get; set; }

public DbSet<FoodCategory> FoodCategories { get; set; }

public DbSet<SpecificActivity> SpecificActivities { get; set; }

public DbSet<MajorHeading> MajorHeadings { get; set; }

public DbSet<Picture> Pictures { get; set; }

public DbSet<ActivityJurnal> ActivityJurnals { get; set; }

public DbSet<FoodJurnal> FoodJurnals { get; set; }

public DbSet<UserStats> UserStats { get; set; }

public DbSet<GDA> GDAs { get; set; }

public DbSet<RandomAdvice> RandomAdvices { get; set; }

public DbSet<SpecificTimeWeight> SpecificTimeWeights { get; set; }

}

Structura bazei de date

Baza de date conține un număr de 13 tabele unele cu chei externe. Acest lucru face posibil accesul facil la date și existența consistenței bazei de date. În acest mod se poate accesa cu ușurință după extragerea din baza de date al unui utilizator, ce poza de profil are sau ce activitate a avut într-o anumită zi, fără a mai fi nevoie de scrierea unei interogări.

Tabelul utilizatori

Unul din cele mai complexe noduri din baza de date este tabelul utilizatori sau cum este el numit în aplicație Users. Acesta conține toate datele personale ale utilizatorului cât și cinci chei străine către alte tabele. Acest lucru oferă bazei de date o consistență ridicată și elimină orice posibilitate de a exista date introduse greșit. Aceste chei fac legătura cu tabelele jurnal de activități, jurnal alimente, poze, poza de profil și istoric greutate. O diagramă cu tabela utilizatori și tabelele de care acesta este legată se poate observa în anexa B.

public class User

{

public int id { get; set; }

public string email { get; set; }

public byte[] salt { get; set; }

public byte[] key { get; set; }

public string Name { get; set; }

public string surname { get; set; }

public DateTime bday { get; set; }

public int kg { get; set; }

public int age { get; set; }

public int sex { get; set; } //1- Woman, 2- Men

public int UserType { get; set; } //1- Woman, 2- Men, 3- Children (5-10yo), 4-under 5yo

public virtual Picture ProfilePic { get; set; }

[InverseProperty("User")]

public virtual List<Picture> Pictures { get; set; }

[InverseProperty("User")]

public virtual List<ActivityJurnal> ActivityJurnals { get; set; }

[InverseProperty("User")]

public virtual List<FoodJurnal> FoodJurnals { get; set; }

[InverseProperty("User")]

public virtual List<SpecificTimeWeight> SpecificTimeWeights { get; set; }

}

Tabela alimente

Baza de date stochează date despre fiecare aliment în parte. Aceste date sunt formate din calorii, lipide, proteine, grăsimi și cantitatea la care se raportează nutrimentele. Fiecare aliment face parte dintr-o categorie de alimente, legat printr-o cheie externă de tipul one-to-many. Legată de tabela food este o tabelă jurnal alimentație.

Figura 3.1 Tabela alimente

Tabela activități

În mod asemănător există o grupă de două tabele care stochează o colecție de activități împreună cu date despre acele activități cum ar fi numele activității sau al categoriei, codul din baza de date MET și codul MET. Tabela activități este de asemenea legată printr-o cheie externă de tabela de categorii de activități și cu o altă cheie de tabela jurnal activități.

Figura 3.2 Tabela activități

Tabele cu rol de referință sau de stocare a informației

În cadrul aplicației a fost necesar stocarea anumitor date cu caracter de referință. Un exemplu în acest sens este tabela cu doza zilnică recomandată. Această tabelă are rolul de a putea analiza datele introduse de utilizator și de a formula astfel rapoarte.

A mai fost utilizată o tabelă în care au fost introduse sfaturi cu caracter general, care apar în partea de sus a paginii.

Interfața cu utilizatorul

Interfața cu utilizatorul a fost concepută încât să fie intuitivă și aerată. S-au introdus cât mai puține elemente grafice, ce crează o impresie de minimalism. Astfel s-au evitat situațiile în care un utilizator s-ar fi simțit „sufocat” sau momentele în care există afișate mai multe informații decât ar fi necesare într-un anumit moment.

Structura paginii html este una clasică formată din head și body. Body-ul la rândul lui este structurat în două părți head_pannel și body_pannel. Acest lucru a facilitat o consistență a design-ului indiferent de rezoluția folosită.

Figura 3.3 Structura interfeței

Head_pannels

Acest div este format din secțiunea denumită „top_pannel” și „meniu”. În „top_pannel” se poate regăsi sfatul aleatoriu care este schimbat la fiecare încărcare a paginii, având un fundal verde. În „meniu” se poate așeza meniul fiecărui tip de utilizator, fie el „user” fie el „admin”. Tot aici au fost definite în atributele de stil, borduri și umbre pe marginea stângă și marginea dreaptă.

Sfatul aleatoriu este un concept venit din dorința de a oferi utilizatorului câteva informații utile și simple, care dacă sunt urmărite, pot oferi beneficii substanțiale. Acestea nu sunt doar din domeniul alimentației sau cel al mișcării, ele sunt sfaturi care ar trebui urmate indiferent de activitatea pe care o facem sau indiferent de situația în care ne aflăm.

Body_pannels

„Body_pannels” este o secțiune complexă formată din multe câmpuri. A fost folosit aici un mic artificiu pentru o așezare facilă. Acesta a fost folosirea unui div de dimensiune fixă, acesta fiind de 60px.

Left_pannel

În „left_pannel” se regăsește randarea parțială a view-ului SideBar_Details.cshtml. Acesta are la fel ca div-ul head_pannels boruri în partea de sus și în partea dreaptă. Suprapunerea lor creează astfel un design care separă oarecum următoarele secțiuni.

Pagina SideBar_Details este o secțiune cu poziție fixă, aceasta rămânând mereu în același loc pe interfața utilizatorului, indiferent dacă acesta derulează sau nu imaginea. Aici se pot regăsi date despre utilizator cum ar fi poza de profil, numele, prenume, caloriile acumulate, caloriile arse și procent din cât ar fi putut înconjura Pământul utilizând caloriile arse.

Figura 3.4 Detalii utilizator

Middle_pannel

Secțiunea centrală și cea mai importantă din interfața cu utilizatorul este secțiunea „middle_pannel” aici vor urma să fie randate view-urile din aplicație.

Right_pannel

Utilizatorului i se mai pune pe interfața vizuală o secțiune care cuprinde informații despre masa corporală și o modalitate rapidă de a o modifica. Acest lucru are intenția de a motiva utilizatorul de a menține acestă informație foarte exactă. Tot aici se poate observa și diferența dintre masa corporală la momentul înregistrării pe site și masa corporală actuală. Acest lucru are ca scop motivarea utilizatorului de a atinge o anumită greutate și de a controla îndeaproape acest indice. Aceasta este poziționată asemănător și opus secțiunii de detalii, în partea dreaptă, având la fel o poziție fixă, indiferent de poziția utilizatorului în aplicație.

Figura 3.5 Masa corporala

Structura aplicației

Fiind o aplicație făcută în framework-ul ASP.NET MVC, aplicația are 3 mari secțiuni de codare: models, controllers și views, fiecare având cate un rol bine stabilit. Există de asemenea și alte componente suplimentare care urmează să fie detaliate.

Models

Aplicația are mai multe modele folosite pentru a transmite date între views și controllers. Acestea sunt niște clase predefinite cu date predefinite (int, string) sau cu alte clase deja predefinite în proiect (User, Employee). Tot aici se regăsește și clasa DataContext.cs de unde se generează baza de date, astfel aceasta fiind generată în urma scrierii de cod, nu prin apăsarea de butoane într-o interfața. Acest lucru determină existența unei baze de date mult mai riguroasă. Interacțiunea dintre cele trei componente se poate vedea în următoarea diagramă UML generalizată.

Diagrama 3.6 Diagrama secvențială generalizată

Controllers

Fiecare secțiune din aplicație este controlată de o clasă numită controller. Aplicația în cauza are mai multe controllers fiecare având rolul lui și metodele lui specifice. Toate acestea sunt derivate dintr-o clasă precompilată în framework, numită Controller. Există totuși posibilitatea să le derivăm dintr-o altă clasă făcută de dezvoltator, așa cum este cazul la aplicația VirtualCoach. S-a ales o abordare ce oferă avantaje în sensul existenței unor așa numite variabile globale, care pot fi folosite în interiorul tuturor claselor de tip controller. O diagramă a claselor de tip controller se poate observa in Anexa A.

public class BaseController : Controller

public class ChartController : BaseController

S-au implementat astfel câteva variabile globale cum ar fi IsUser. Acesta este o variabilă de tip bool care returnează true sau false în funcție de tipul de user care este logat in urma unei cereri de aflare al cookie-ului.

public bool IsUser

{

get

{

if (Request.Cookies["userid"] == null)

{

return false;

}

else if (Request.Cookies["userid"].Value.StartsWith("u"))

{

return true;

}

return false;

}

}

Un alt avantaj care apare odată cu utilizarea acestei metode este cel de scrie metode apelabile din orice controller. Astfel exista de exemple CalculateCaloriesAdded (float calories, float Quantity, float referenceQuantity) care calculează caloriile pe care un anumit tip de mâncare le conține.

Views

Interfața cu utilizatorul este dată de randarea de către browsere a fișierelor de tip cshtml. Acestea fișiere, înainte de a fi trimise efectiv la browser, sunt procesate de către motorul Razor, urmând să se genereze codul html final pentru ca acesta să fie randat de browser.

Fișiere de tip view seamănă foarte mult cu cele de tip html. Sunt compuse tot din head și body, singura diferență fiind posibilitatea de a insera cu mare ușurință cod C# în interiorul acestora.

Fiecare View este grupat într-un anumit folder care se identifică prin nume cu controllerul aferent. Astfel, de exemplu, View de editare al userului se află în folderul User din folderul Views. Există un folder denumit Shared în care este prescris un view denumit _Layout.cshtml. Acest view este prin natura framework-ului view-ul care este la baza oricărui aplicație web. El va constitui baza oricărei pagini din aplicația prezentată. Avantajul dat de acest lucru este consistența designului site-ului web. În interiorul acestuia se găsește apelul @RenderBody() care va genera codul html pentru fiecare view pe care vrem să-l afișam la un anumit moment pe site.

Asemănător cu metoda de variabile globale de la controller și la view există o posibilitate de a declara variabile globale, datorită framework-ului. Acest lucru este posibil prin crearea unei clase numită în aplicație BaseWebPage.cs. Aceasta degrevează din clasa de bază precompilată WebViewPage și asemănător cu BaseController, tot ce se scrie aici este accesibil în orice view. Singura setare suplimentară care trebuie făcută, fiind o declarare în fișierul Web.config.

<pages pageBaseType="Arnold.Helpers.BaseWebPage">

<namespaces>

<add namespace="System.Web.Helpers" />

<add namespace="System.Web.Mvc" />

<add namespace="System.Web.Mvc.Ajax" />

<add namespace="System.Web.Mvc.Html" />

<add namespace="System.Web.Optimization" />

<add namespace="System.Web.Routing" />

<add namespace="System.Web.WebPages" />

<add namespace="Arnold.Models" />

</namespaces>

</pages>

Helpers

Clasele din folderul Helpers vin ca un ajutor și reprezintă funcții grupate după secțiunea în care sunt folosite. Există în aplicație 3 astfel de helpers. Primul este AnalysisHelper.cs, care are cate o funcție pentru fiecare substanță nutritivă analizată în aplicație. Următorul helpers este ImageHelper.cs care conține numeroase metode de formatare a imaginii în scopul standardizării pozelor din interiorul site-ului. Ultimul helper este BaseWebPage.cs despre care s-a discutat deja.

public class AnalysisHelper

public abstract class BaseWebPage<T> : WebViewPage<T>

public class ImageHelper

Scripts

Frameworkul pune la dispoziție dezvoltatorului posibilitatea de a grupa toate clasele de tipul .js într-un sigur loc, din nou organizând aplicația. În plus față de clase de JavaScript consacrate se regăsește clasa jquery.reveal.js care conține funcții necesare pentru animația ferestrei de editare al user-lui.

Figura 3.7 Editarea utilizatorului

Content

În folderul content se regăsesc foile de stil .css și pozele din interiorul site-ului. Din acest folder merită menționată existența foilor de stil pentru:

Butoanele animate : button.css conține designul butoanelor care au un efect atunci când se apasă sau când se pune mouse-ul peste ele.

Meniu: meniul aplicației este unul făcut strict din cod html și introdus in stiluri. Principiul este unul simplu, toate sub-nivelurile din tagu-ul nav sunt ascunse și la acțiunea de „hover” al mouse-ului, acestea devin vizibile. Acest lucru este regăsit în „dropdown.css”.

Animație editare user: Animația de editare a user-ului este una bazată pe JavaScript, dar are nevoie de componenta reveal.css

Site-ul în întregime : în interiorul site-ului se pot regăsi multe elemente de stil diferite și multe care se repetă. Pentru a menține o consistență în design și pentru a scurta cu mult timpul necesar pentru a face o pagină bine structurată și cu un aspect plăcut, s-a folosit o foaie de stil, denumită în aplicație Site.css

Atât foile de stil cât și script-urile de JavaScript sunt declarate în head-ul fișierul _Layout.cshtml, astfel ele fiind recunoscute în orice View, înainte ca acesta să fie randat la apelul funcției Render.Body().

<head>

<meta charset="utf-8" />

<meta name="viewport" content="width=device-width" />

<title>@ViewBag.Title</title>

<link href="@Url.Content("~/Content/themes/base/jquery.ui.all.css") rel="stylesheet" type="text/css" />

<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css"/>

<link href="@Url.Content("~/Content/dropdown.css")" rel="stylesheet" type="text/css" />

<link href="@Url.Content("~/Content/buttons.css")" rel="stylesheet" type="text/css" />

<link href="@Url.Content("~/Content/reveal.css")" rel="stylesheet" type="text/css" />

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"> </script>

<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.js")" type="text/javascript"> </script>

<script src="@Url.Content("~/Scripts/jquery.reveal.js")" type="text/javascript"> </script>

</head>

Tipuri de utilizatori

Aplicația este dezvoltată pentru a fi utilizată de 2 tipuri de persoane. Primul tip este cel cu rol de admin. Acesta are privilegii speciale referitoare la accesul de date și de funcții din aplicație. Utilizatorul, este persoana care va înregistra date personale în aplicație, pe baza cărora se vor face analize.

Utilizatorul

Utilizatorul este clientul care se va folosi în mod direct de serviciile oferite de aplicație. Acesta va avea un acces limitat comparat cu admin-ul, având doar dreptul de a introduce date personale care urmează să fie analizate și interpretate.

Înregistrare

Un utilizator nou va fi nevoit să se înregistreze pe site, folosind un email și o parolă. Acestuia i se vor cere și câteva date personale care ulterior vor fi utilizate la analiza și interpretarea datelor. Acestea includ masa corporală, data nașterii și sexul. Pagina folosește un design standard, fiecare având aceeași clasă „input”, definită în Site.css. Aceeași situație este și pentru butonul „Înregistrare”, acestea folosind clasa „button green” din buttons.css.

Figura 3.8 Pagina de înregistrare

Tot in figura de mai sus se vede și cadrul unde se pot introduce email-ul și parola pentru logarea user-ului. Parola utilizatorului este stocată în baza de date în două câmpuri denumite salt și key. Acest lucru păstrează parola criptată, oferind astfel o securitate sporită. Parola este derivată pe 20 de bytes.

using (var deriveBytes = new Rfc2898DeriveBytes(model.password, 20))

{

byte[] salt = deriveBytes.Salt;

byte[] key = deriveBytes.GetBytes(20); // derive a 20-byte key

// save salt and key to database

user.salt = salt;

user.key = key;

}

Pagina Home

Pagina de home este compusă din meniul specific user-ului în partea din mijloc, sub sfatul de viață. Aceasta conține mai multe secțiuni, cum ar fi Alimente, Activități și Analiza nutriției.

Figura 3.9 Meniul utilizator

Secțiunea Alimente

Secțiunea de alimente prezinta o scurtă documentație despre principalele categorii de alimente și sfaturi alimentare. Un submeniu din acesta categorie este cea de adăugare a unei înregistrări în jurnalul personal.

Aici, utilizatorul poate observa ce alimente a introdus în ziua curentă pentru a evita astfel orice fel de eroare. Sub această secțiune există un input de tip dropdown, în care utilizatorul poate alege categoria de aliment care urmează a fi introdus. După alegerea categoriei de alimente, se va popula un al doilea dropdown în care se vor regăsi alimente individuale. Utilizatorul va fi nevoit să introducă ce cantitate din acel aliment a mâncat și data, precum și ora la care a mâncat acel aliment. Salvarea în baza de date se face printr-o metoda de tip post, în urma apăsării butonului „Salvează în jurnal”.

Cele două dropdown-uri folosesc o metodă nouă de cascadare, astfel încât în urma modificării primului dropdown se face o apelare de tip „post” în care se trimite id-ul categoriei de alimente, astfel încât să se poată popula al doilea dropdown. Acest lucru se face prin apăsarea unui buton „hidden”, folosind o funcție de JavaScrip minimală.

<script type="text/javascript">

document.getElementById("MajorHeadingId").onchange = function () {

document.getElementById("MajorHeadingSubmit").click();

}

</script>

Secțiunea Activități

Secțiunea de activități este compusă la fel ca și cea de alimente, dintr-o pagină cu informații generale despre sănătatea mișcării, cât și dintr-o subcategorie asemănătoare cu cea din secțiunea alimente, în care utilizatorul va introduce, ce activitate a făcut într-o anumită zi. Utilizatorul va fi nevoit sa aleagă astfel o categorie de activități, urmând ulterior ca al doilea dropdown să fie populat cu activități mai exacte. Pentru a salva activitatea în baza de date, utilizatorul va fi nevoit să apese butonul „Salvează în jurnal” după ce a introdus durata activității în minute și data când a făcut acea activitate. Toate câmpurile conțin restricția required, care este verificată în browser.

Figura 3.10 Adăugare de activități

Această funcție „required” este un atribut HTML5 care degrevează server-ul de sarcini. În momentul în care browser-ul întâlnește acest atribut în codul HTML, nu va face nicio apelare la server decât abia după ce acel câmp a fost completat. Mesajul de eroare este afișat în limba în care este sistemul de operare, iar mesajul personalizat este introdus în atributul „title”. Pentru a elimina un format de tipul Informație: <input>, s-a folosit atributul placeholder, care va afișa un text cu transparența in interiorul căsuței, conținând explicația pentru date ce trebuie introdusă în acea căsuța.

<input type="text" name=" activityDuration" class="input" required title="Obligatoriu!" placeholder="Durata in minute" />

Analiza Date

Ultime secțiune din aplicație este cea de analiza de date. Aici utilizatorul va găsi o analiza a datelor introduse de el în ultimele șapte zile în care există înregistrări. Aceasta îi oferă posibilitate de a observa evoluția și tendințele personale de alimentație și efort fizic.

Prima subsecțiune se numește Grafic Nutrimente. Aici se vor genera grafice pentru calorii, proteine, lipide și glucide acumulate în ultimele șapte zile în care există înregistrări. Toate aceste grafice au fost generate în controllerul lor dedicat, CharController. În această clasă se găsește câte o metodă pentru fiecare grafic în parte. Datele de generare al graficelor sunt obținute folosind helperul AnalysisHelper.

public ActionResult CaloryChart()

{

var data = Arnold.Helpers.AnalysisHelper.CaloriesData();

new System.Web.Helpers.Chart(1000, 300, GetTheme()).AddSeries(xValue: data, yValues: data, xField: "Key", yFields: "Value", chartType: "Line").AddTitle("Calorii").Write();

//new System.Web.Helpers.Chart(1000, 300, theme: ChartTheme.Green).AddSeries(xValue: data, yValues: data, xField: "Key", yFields: "Value", chartType: "Line").Write();

return null;

}

În secțiunea de cod de mai sus se pot observa două apelări ale desenării de grafic. Funcția returnează de fapt o simplă poză generată de metoda System.Wb.Helpers.Chart(…).Write(); Diferența dintre cele doua apelări este cea a temei folosite. Librăria Helpers.Chart conține câteva teme predefinite de grafic, dar în aplicație a fost scrisă o temă care poate fi personalizată. Acestă temă este de fapt un xml care este inserat într-o variabilă de tipul ChartArea, care conține culori, stiluri și alte atribute, astfel încât se pot obține grafice diferite. Apelul acestei imagini în codul HTML este una consacrată.

<img src="@Url.Action("CaloryChart", "Chart")" style=" width:70%; padding-left: 170px;" />

Pentru a evita orice fel de coliziune a datelor în momentul extragerii lor în baza de date, s-a folosit un mic artificiu. În momentul în care se face apel la o pagină de analiză, se va încărca lista de jurnale pentru user-ul logat, într-o listă globală din helperul Analysis. Acest lucru degrevează server-ul de operații asupra bazei de date, optimizând astfel aplicația substanțial.

public ActionResult AlimentationCharts()

{

Arnold.Helpers.AnalysisHelper.SetFoodJurnalForUser(intLoggedUserID);

return View();

}

Sfatul aleatoriu

Sfatul se extrage în mod aleatoriu din baza de date la fiecare încărcare a paginii. Împreună cu acest sfat apare și numărul de apariții, extras la fel din baza de date. Sfatul și numărul de apariții este format dintr-un string compus într-un BaseWebPage.cs și parsat ulterior în motorul Razor. Acest lucru îl face accesibil cu ușurință fără a fi nevoită trimiterea lui manuală către pagina de _Layout.cshtml.

public string Advice

{

get

{

Random rnd = new Random();

RandomAdvice randomAdvice = db.RandomAdvices.OrderBy(c => c.id).Skip(new Random().Next(db.RandomAdvices.Count())).First();

randomAdvice.timesSeen++;

db.SaveChanges();

return randomAdvice.text+ "$pl17 " + randomAdvice.timesSeen;

}

}

Adminul

Utilizatorul de tip admin are acces la o secțiune din aplicație unde poate modifica date esențiale rulării corecte a site-ului. Asemănător cu logarea utilizatorului, admin-ul are nevoie de o adresă de email și o parolă pentru a se loga pe site. Meniul admin-ului diferă de cel al utilizatorului, așa cum se poate observa in Figura 2.5. Acesta prezintă de altfel și secțiunile administratorului.

Alimente

În aceasta secțiune, administratorul poate adaugă sau edita alimente din baza de date în funcție de subsecțiunea în care se află: „Adaugă” sau „Editează”. Adăugarea și editarea unui aliment din baza de date se face folosind uneltele puse la dispoziție de Framework-ul .NET, nefiind necesară folosirea de cod SQL. Administratorul are posibilitatea de a introduce în baza de date atât categorii de alimente cât și un aliment care aparține unei categorii anume.

public ActionResult AddFood(FoodModel model)

{

Food food = new Food();

food.name = model.name;

food.calories = model.calories;

food.proteins = model.proteins;

food.lipids = model.lipids;

food.carbohydrates = model.carbohydrates;

food.quantity = model.quantity;

food.FoodCategory = db.FoodCategories.FirstOrDefault(fc => fc.id ==

model.FoodCategoryId);

db.Foods.Add(food);

db.SaveChanges();

return RedirectToAction("Add", "Food");

}

Activități

Asemănător cu secțiunea Alimente, în secțiunea activități se regăsesc cele două subsecțiuni Adaugă și Editează care funcționează după aceleași principii ca cele explicate anterior, cu o singură observație. Deoarece compendiul de activități conține un număr foarte mare de elemente și deoarece acestea sunt oferite sub forma unui .xls care are o structură relativ consistentă, s-a dezvoltat o metodă de importare directă a activităților din această colecție, nefiind necesară intervenția unei persoane. Acest lucru a eliminat orice fel de eroare de introducere și a eliminat orice pierdere de timp prin introducerea datelor manual. S-a folosit pentru această metodă librăria Microsoft.Office.Interop.Excel. După importarea fișierului xls în aplicație, acesta a fost parsat ținând cont de anumite elemente.

var excel = new Microsoft.Office.Interop.Excel.Application();

Workbook wb = excel.Workbooks.Open(@"C:\met.xls");

Doza zilnică recomandată

În această secțiune admin-ul are posibilitatea de a schimbat eventuala modificare a dozei zilnice recomandate. Această secțiune a fost implementată pentru a evita “hardcodare” variabilelor în sistem.

Sfaturi

Adminul are posibilitatea în această secțiune să adauge în baza de date sfaturi care urmează să fie afișate ulterior în partea din stânga sus a interfeței. Porțiunea aceasta de interfață este compusă dintr-un câmp de tipul textarea și un buton normal de „submit”.

Figura 3.11 Adăugarea de sfaturi

Scalabilitate

Sunt mai multe moduri de a măsura scalabilitatea unei aplicații. În mod ideal, o aplicație cu adevărat scalabilă ar trebui să:

funcționeze pentru un utilizator la fel de bine ca pentru sute sau mii de utilizatori simultan;

funcționeze de două ori mai bine la instalarea pe un calculator de două ori mai performant (de două ori mai multe resurse), de trei ori mai bine pe un calculator de trei ori mai performant și așa mai departe;

Totuși, acești factori sunt radical schimbați în momentul în care intervin factori de hardware. Dacă aplicația nu este gestionată de un sistem de calcul puternic, conceput pentru astfel de aplicații, pot apărea probleme serioase atunci când spre exemplu, baza de date este accesată simultan de o mie de utilizatori.

Faptul că aplicația este concepută după un Framework modern, oferă siguranța că în perioada ce urmează, acesta o să fie complet compabilă și nu va avea probleme în momentul scalării. Totodată, în momentul dezvoltării s-a ținut cont de acest aspect și s-a încercat să se folosească metode și funcții care nu solicită fără motiv sistemul pe care rulează. De altfel, baza de date este apelată doar pentru a extrage date deja filtrate, interogările fiind gestionate de baza de date, nu de serverul pe care rulează aplicația. O să fie mult mai rapid și mult mai putină putere de calcul utilizată dacă se va trimite o interogare la baza de date, iar informația primită va fi deja filtrată, decât dacă se va extrage informația iar apoi aceasta va fi analizată în interiorul aplicației.

Concluzii

Concluzii

În ultimul deceniu, tehnologia a avansat într-un ritm alert. Acest lucru a determinat o evoluție accelerată a modului și stilului de viața al omului. Au apărut calculatoarele personale, internetul și de aici amplificarea nevoii omului de cunoaștere. Acest fapt este observat cu ușurința în explozia de noi site-uri și de noi aplicații care oferă utilizatorului posibilitate de interacțiune și de cercetare.

Eu consider că acestă aplicație vine ca un ajutor pentru toți cei care au un stil de viață alert, care nu au timp de o masă sănătoasă, care nu au timp de mișcare fizică și, în esență, timp pentru ei. Aplicația le oferă astfel un mod dinamic și la îndemâna de a tine un jurnal sau o evidență a stilului de viață, prin prisma alimentației și a efortului fizic. Dacă azi, omul are o viață activă, plină de provocări, aplicația vine pentru a oferi un mod în care utilizatorul își poate trage sufletul și este încurajat (prin instrumentul indispensabil-calculatorul, chiar la biroul de lucru! ) să reflecteze și asupra propriei persoane.

Aplicația VirtualCoach este un mic semnal de alarmă pentru cei care duc o viața activă și nu își acordă suficient timp pentru propria persoană. El oferă date exacte și concrete care se reflectă direct asupra calității vieții pe care o persoană o are. Deși poate părea o distracție la început, rezultatele obținute de cei perseverenți vor recomanda acestă aplicație pentru descoperirea unui nou hobby – un stil de viață sănătos.

Dezvoltări ulterioare

Versiunea de față este una preliminară. Ea nu reflectă produsul final, ba din contră este mai mult un schelet pe care se poate dezvolta pe viitor un adevărat portal, așa cum este și titlul lucrării. Așadar, aplicație poate fi îmbunătățită, adăugând noi facilitați, dintre care se pot menționa:

Aplicația ar putea fi dezvoltată să ofere sprijin unei organizații de slăbit. Există astfel de cabinete la care clientul trebuie să se prezinte săptămânal și să fie cântărit, întrebat ce a mâncat și ce efort fizic a făcut. Aplicația ar putea elimina nevoia de hârtie și pix, oferind un suport perfect pentru o astfel de organizație.

Adăugarea posibilității de înregistrare cu telefonul mobil ar putea contribui substanțial la popularitatea aplicației. Deși nu se vrea a fi o aplicație pe mobil, cu un aspect încărcat și un meniu greoi din cauza multitudinii de funcționalități, o aplicație pe mobil care să ofere posibilitatea înregistrării cu un receptor GPS și apoi, în funcție de viteza și durata deplasării să calculeze caloriile sau doar să ofere un istoric de călătorii, ar fi un plus.

Rețelele sociale au avut un mare succes în ultima perioadă, fapt care ar putea să ajute în mod pozitiv aplicația. Introducerea posibilității de a împărți cu un prieten regimul tău alimentar sau regimul tău de exerciții fizice ar putea avea un efect de comunitate pentru aplicație. S-ar naște conceptul de „puterea exemplului”. Astfel un utilizator ar putea lua drept model un alt utilizator și astfel să se motiveze în a-și îmbunătăți situația generală.

S-ar putea implementa secțiuni speciale de dietă pentru fiecare categorie de oameni: femei, bărbați, copii, sportivi, gravide, diabetici. Fiecare are nevoie de un anumit regim alimentar, diferit atât prin cantitatea de nutrimente asimilată cât și prin tipul lor.

Fiind vorba despre un portal, aplicația ar trebui să conțină un motor de căutare intern, un motor de adresă de email cât și o secțiune de informare generală legată de domeniul în care activează și anume, sport și alimentație.

Anexa A. Diagrama de controller

Anexa B. Diagrama Bazei de date

Bibliografie

Carstoiu, D. (fără an). Curs Baze de Date.

Darnell, R. (2001). Totul despre HTML4. Bucuresti: Teora.

JEFFREY PALERMO, J. B. (2012). ASP.NET MVC 4. Shelter Island, NY: Manning Publications Co.

Pilgrim, M. (2011). HTML5: Up and Running. O'Reilly Media.

Taylor, D. (1997). Crearea paginilor web cu HTML4. Iasi: Teora.

Castro, E. (2003). HTML pentru World Wide Web cu XHTML și CSS – Ghid de învățare rapidă prin imagini. Corint.

Perzold, C.(2014). Programare windows cu C#. Teora.

Pollan, M. (2009). Food Rules: An Eatert’s Manual. Penguin Books.

Crockford, D.(2008). JavaScript: The Good Parts. O'Reilly Media.

http://www.asp.net/mvc

http://www.w3schools.com/html/html5_intro.asp

http://stackoverflow.com/

Bibliografie

Carstoiu, D. (fără an). Curs Baze de Date.

Darnell, R. (2001). Totul despre HTML4. Bucuresti: Teora.

JEFFREY PALERMO, J. B. (2012). ASP.NET MVC 4. Shelter Island, NY: Manning Publications Co.

Pilgrim, M. (2011). HTML5: Up and Running. O'Reilly Media.

Taylor, D. (1997). Crearea paginilor web cu HTML4. Iasi: Teora.

Castro, E. (2003). HTML pentru World Wide Web cu XHTML și CSS – Ghid de învățare rapidă prin imagini. Corint.

Perzold, C.(2014). Programare windows cu C#. Teora.

Pollan, M. (2009). Food Rules: An Eatert’s Manual. Penguin Books.

Crockford, D.(2008). JavaScript: The Good Parts. O'Reilly Media.

http://www.asp.net/mvc

http://www.w3schools.com/html/html5_intro.asp

http://stackoverflow.com/

Anexa A. Diagrama de controller

Anexa B. Diagrama Bazei de date

Similar Posts

  • Implementarea Internetului In Retelele Fara Fir

    CUPRINS Cap. 1. Structuri și Modelele de Referință în Rețelele de Calculatoare Subsisteme de Comunicație 1.1.1. Rețele locale 1.1.2. Rețele metropolitane 1.1.3. Rețele larg răspândite geographic 1.1.4. Rețele radio 1.2. Programele de Rețea 1.2.1. Ierarhiile de protocoale 1.2.2. Interfețe și servicii 1.2.3. Servicii orientate pe conexiune și servicii fara conexiune 1.3. Modelul de Referință OSI…

  • Proiectarea Unei Aplicatii Magazin Online Folosind Php Si Mysql

    Cuprins Capitolul 1. Introducere 1.1. Tehnologia in ziua de azi…………………………………………………………………..2 1.2. Site-uri si aplicații web………………………………………………………………………….3 1.3. Introducere a conținutului lucrării……………………………………………..7 Capitolul 2. Prezentarea tehnologiilor utilizate 2.1. Internet…………………………………………………………………………………………………9 2.2. World Wide Web…………………………………………………………………………………..11 2.3. HTML…………………………………………………………………………………………………..12 2.4. JavaScript……………………………………………………………………………………………..18 2.5. CSS……………………………………………………………………………………………………….22 2.6. XAMPP…………………………………………………………………………………………………25 2.7. PHP……………………………………………………………………………………………………….26 2.8.MySql……………………………………………………………………………………………………..31 2.9. Apache……………………………………………………………………………………………………40 Capitolul 3. Proiectarea și Implementarea aplicației 3.1. Baza de date utilizată………………………………………………………………………………42…

  • Tehnologii Web

    PROIECT DE DIPLOMĂ CUPRINSUL 1 INTRODUCERE 2 TEHNOLOGII WEB 2.1 SCURT ISTORIC 2.2 HTML 2.3 CSS 2.4 PHP 2.5 MYSQL 3 APLICAȚIA WEB 3.1 BOOTSTRAP 3.2 DESCRIEREA APLICAȚIEI 3.2.1 Modulul de înregistrare/autentificare al utilizatorilor 3.2.2 Modulul de interfață al site-ului 3.2.3 Modulul de vânzare 3.2.4 Modulul de licitații 4 BIBLIOGRAFIE 5 REFERINȚE WEB A. CODUL…

  • Aplicatie Web Pentru Monitorizarea Echipamentelor Intr O Retea de Tip Gnon

    Cuprins Abrevieri Stadiul actual Noțiuni indroductive Servicii oferite prin intermediul rețelelor de date Telefonia fixă, Voip Date si internet Rețea CaTV Aplicații software existente Fundamentare teoretică Reteaua de tip PON Fibra Optica GPON – rețele optice passive Echipamente Traficul și managementul în rețeaua GPON Formatul cadrelor pe Downstream în GPON Formatul cadrelor pe Upstream în…

  • . Aplicatie Online Pentru Recrutarea Si Facilitarea Comunicatiei Intre Membrii Programului

    I. Tema lucrării Se cere implementarea unei aplicații online pentru recrutarea și facilitarea comunicației între membrii unei companii multinationale. Aplicația oferă următoarele facilități: permite căutarea (după nume, prenume, țara și orașul în care aceștia își desfășoară activitatea, precum și cateva din datele lor personale); permite vizualizarea si actualizarea datelor personale: nume, prenume, locul si data…