Sistem Informatic de Gestiune a Activitatii Unui Restaurant

PROIECT PRACTICĂ

Sistem informatic de gestiune a activității unui restaurant

Definirea problemei

Lucrarea de față își propune să constituie baza proiectării și implementării unui sistem informatic de gestiune a activității unui restaurant.

Ca regulă generală, restaurantul este o unitate de alimentație publică în care se servesc preparate culinare, produse de cofetărie-patiserie, băuturi, caracterizându-se prin aceea că în cadrul lui se îmbină activitatea de pregătire/preparare cu activitatea de comercializare, însoțită de servicii specifice care asigură consumul acestora pe loc. De obicei mâncărurile sunt preparate în bucătăria proprie de către o echipă specializată (bucătar, ajutor de bucătar), în coordonarea și supravegherea unui șef-bucătar.

Evidența restaurantelor este o preocupare importanta a patronilor si administratorilor. Modelul multinationalelor sau a firmelor straine este o sursa de inspiratie in abordarea unei metode moderne de management. Utilizarea calculatorului in gestionarea activitatii restaurantelor a devenit o realitate si o necesitate.

Sistemul informatic este un ansamblu de elemente intercorelate funcțional în scopul automatizării obținerii informațiilor necesare fundamentării deciziilor. Acesta are ca obiect de activitate, în general, procesul de culegere, verificare, transmitere, stocare și prelucrare automată a datelor (datele sunt materia primă, iar informațiile sunt produsul finit).

Sistemele informatice sunt destinate deservirii conducerii unității economice, deci se poate aprecia că obiectivul principal al SI coincide cu obiectivul general al activităților economice de bază.

Obiectivul principal urmărit prin introducerea unui sistem informatic îl constituie asigurarea selectivă și în timp util a tuturor nivelurilor de conducere cu informații necesare și reale pentru fundamentarea și elaborarea operativă a deciziilor cu privire la desfășurarea cât mai eficientă a întregii activități din unitatea economică.

Avantajele utilizarii unui sistem informatic de gestiune a activitatii restaurantelor, pizzeriilor, etc sunt multiple:

– detinerea controlului asupra vanzarilor, incasarilor, stocurilor si consumurilor, ce conduce la eliminarea intr-o foarte mare masura a pierderilor si la adoptarea unor decizii mai bune in administrare.

– reducerea costurilor prin eficientizarea forței de munca

– optimizarea timpului de lucru

– scăderea volumului de muncă depus de contabil, bucatar sau alte persoane pentru realizarea evidențelor contabile și emiterea documentelor;

– reducerea efortului administrativ de supraveghere, coordonare si control.

– ospatarul are un instrument de lucru eficient si usor care il face mai operativ si ii reduce volumul de munca privind documentele contabile si descarcarea de gestiune la sfarsitul schimbului sau zilei de lucru.

– claritate si urmarirea usoara a informatiilor

– rapoarte in timp real

– siguranta informatiilor

Aceste avantaje asigura o administrare mai buna a activitatii, o apreciere si remunerare justa a angajatilor, precum si respectarea legii.

Dezavantajele au doar caracter funcțional, și se evidențiază în cazul în care sistemul suferă o pană de curent sau prezinta erori de functionare, ceea ce inseamnă că nu se pot accesa și nu se pot introduce date pe acest interval de timp. Dar si in aceste cazuri exista metode de combatere sau prevenire.

Dacă sunt puse în balanță avantajele și dezavantajele se poate observa că utilizarea unui sistem informatic este cea mai bună soluție. Pe de altă parte, utilizarea instrumentelor moderne în gestionarea afacerii reprezintă un avantaj competitiv, iar cei care nu se vor adapta practicilor moderne, vor dispărea de pe piață. Din experiență a zeci de restaurante reducerea pierderilor a fost urmată și de creșterea vânzărilor și a numărului de clienți.

Analiza mecanismului economic

Alimentația publică este un sector al comerțului cu amănuntul având ca specific al activității transformarea unor materii prime alimentare într-o gamă variată de preparate culinare și produse de cofetărie-patiserie, precum și alte mărfuri alimentare. Restaurantele iși desfasoara activitatea în 2 direcții principale și anume:

– activitatea de producție prin care se obțin preparatele culinare și produsele de cofetărie-patiserie;

– activitatea de desfacere prin care se asigură oferirea și vânzarea către clienți a preparatelor culinare și produsele de cofetărie-patiserie și a altor preparate sau nepreparate, precum și servirea pe loc a acestora.

Principalul obiectiv al activității restaurantelor constă în sporirea continuă a producției proprii, diversificarea sortimentală, îmbunătățirea permanentă a calității preparatelor astfel încat să poată fi satisfăcute preferințele și dorințele clienților asigurându-se totodată creșterea volumului vanzarilor.

Restaurantele prezintă urmatoarele caracteristici:

– desfășoară concomitent o activitate de producție și o activitate de servire a clienților

– asigură consumul preparatelor și produselor din activitatea proprie, de regulă pe loc în cadrul unor spații special amenajate în cadrul unitatii de alimetație;

– dispun de o rețea de unitati specializate (amenajate și dotate), precum și de un personal specializat pentru obținerea producției și servirea clienților;

– pregătesc o gamă diversificată de preparate pentru mai multe segmente de consumatori într-un timp foarte scurt, ceea ce nu e posibil în bucătăria casnică;

– utilizează în mod rațional materiile prime, combustibilul, semipreparatele, precum și economicos ca rezultat direct al posibilităților de mecanizare a proceselor de producție asociate cu posibilitatea de concentrare și specialzare a producției.

În cadrul restaurantelor se intalnesc 3 tipuri de activitati:

– producție

– servirea consumatorilor

– aprovizionare, depozitare și păstrare a mancarurilor

1. Activitatea de producție

Constă în transformarea materiei prime alimentare în produse finite aplicând anumite procedee tehnologice conform rețetelor stabilite și desfacerea acestora prin unitati sau secții de servire. Organizarea proceselor de producție cuprinde 2 etape:

– prelucrarea primară la rece a materialelor prime și a semipreparatelor care constă în sortare,spălare, curățare, divizare în porții etc

– prelucrarea la cald a materialelor prime și semipreparatelor rezultate din operațiile primare și realizarea de preparate finite, operații ce se desfășoară în bucătării sau laboratoare. Documentul principal pe baza căruia se organizează procesul de producție în unitatile de alimentatie publica este planul meniu, întocmit de mâncare și numarul de porții ce urmează a fi pregătite în ziua respectivă.

Bucătăria este considerată unitatea de producție de bază. Aceasta își desfășoară activitatea în baza planului de producție culinară și pregătește preparate la comandă sau meniuri complete. Compartimentarea și dotarea bucătăriei pe fluxuri tehnologice este determinată de capacitatea de producție și profilul restaurantului.

Într-o bucătărie se întâlnesc următoarele activitati distinctive:

– prelucrarea preliminară-bucătăria rece-bucătăria caldă-cofetăria (obținerea produselor pentru mic dejun, deserturi, băuturi nealcoolice calde)

– spălarea obiectelor de inventar utilizate (spălător vase mari, veselă, tacâmuri, pahare) Uniformitatea producției și calitatii produselor culinare în bucătărie este asigurata prin elaborarea și controlul respectării fișelor tehnice de preparare. Acestea permit stabilirea cu precizie și rapiditate a cantităților de materiale prime necesare, reprezentând totodată un instrument de lucru în aprovizionarea acestora și gestionarea stocurilor.

Din categoria fișelor tehnologice fac parte:

-fișa propriu-zisă care vizează materialele prime, prescrie gramajele și precizează costul unitar al materiei prime permițând astfel stabilirea prețului de achiziție a acestora

-fișa tehnologică este o adaptare a rețetei de bucătărie, incluzând procedurile de fabricație

-fișa de compoziție (de serviciu) care corespunde prezentării finale a produselor

-fișa tehnologică de fabricație care grupează prevederile fișei anterioare inclusiv fotografia produsului sau schema de prezentare a acestuia

2. Servirea consumatorilor

Procesul de servire a clientilor incepe la intrarea acestora in local de unde sunt preluati de catre personalul de servire si condusi catre o masa libera.

Cerinta clientului este stabilita prin prezentarea meniului, sugerarea anumitor preparate sau exprimarea unei optiuni personale a clientului.

Dupa primirea comenzii, ospatarul anunta personalului de la bucatarie necesarul si tipul de portii comandate de client. Odata preparate mancarurile, acesta este servit, urmand ca la sfarsitul consumatiei sa fie prezentata nota de plata. In cazul in care clientul semnaleaza erori in nota de plata care sunt justificate, acestea sunt corectate.

Mai jos este diagrama de flux pentru procesul de servire:

3. Aprovizionare, depozitare și păstrare a mancarurilor

Unitatile de depozitare, prin specificul lor, sunt destinate depozitării, păstrării și conservării marfurilor în condițiile optime în vederea aprovizionării în mod continuu a unitatii pentru producție și servire. Ca unitati de depozitare și păstrare a marfurilor sunt depozitele și magaziile. În funcție de profil și condițiile de funcționalitate, depozitele sunt specializate în depozite pentru marfuri alimentare și nealimentare. În depozitele alimentare se gasesc mezeluri, brânzeturi, carne, legume-fructe, pește etc.

Ca depozite nealimentare exista depozite pentru veselă, mobilier, utilaje, produse de întreținere și reparații etc. Magazia este un depozit care funcționează în cadrul unitatii pentru păstrarea alimentelor și a marfurilor nealimentare și contribuie la aprovizionarea corespunzatoare a unitatii de alimente. Atât depozitele cât și magazia trebuie să corespunda capacității și profilului unitatii, să asigure condiții optime de păstrare, igienă, temperatură, să dispună de rafturile necesare, de spații frigorifice pentru alimente, să ofere un acces ușor și să dispună de o rampă de încărcare-descărcare.

Procesul de aprovizionare se realizeaza astfel:

În urma comenzilor realizate, marfa sosește la depozitul de materii prime, ambalaje, marfuri, și este recepționată de către Comisia de Recepție, pe game de produse.

Cantitățile fizice reale se confruntă cu cele înscrise în factura externă care însoțește marfa.

În cazul în care se constată diferențe calitative și cantitative, se consemnează diferențele în nota de intrare receptie – NIR.

Recepția se face în zona de recepție a depozitelor, unde se verifică produsele din punct de vedere cantitativ, calitativ si al documentelor de insotire, iar diferențele se consemnează în NIR. Apoi produsele se introduc în gestiunea depozitelor, fiind etichetate corespunzător și fiind însoțite și de instrucțiuni ale furnizorului/producătorului referitoare la modul de folosire/pastrare.

După efectuarea recepției calitative și cantitative, Responsabilul Aprovizionare introduce datele privitoare la marfă în baza de date a organizației.

In cazul în care produsul aprovizionat nu se încadrează în condițiile specificate, se izoleaza și se identifica corespunzător, pană la stabilirea deciziei de tratare.

Funcționalitățile proiectului

Cum activitățile de bază ale unui restaurant sunt producția, servirea și aprovizionarea, sistemul informatic va trebui să conțină soluții pentru ajutarea îndeplinirii scopurilor propuse. Ca funcționalități de bază, în procesul de producție vor exista module pentru salvarea fișelor tehnice de preparare, pentru procesul de servire va exista posibilitatea salvării, manipulării comenzilor, gestiunii meselor, notelor de plată, iar pentru aprovizionare vor exista formulare NIR și stocul curent pentru orice produs.

Toate functionalitatie vor putea fi accesate doar după autentificarea în sistem.

Pe lângă funcționalitățile de bază vor exista module de rapoarte, posibilitatea salvării clienților în baza de date eventual prin crearea unui card de fidelitate sau crearea unor promoții.

Mai jos este prezentată o lista cu functionalitățile care vor fi implementate:

– Acces utilizatori pe bază de parola

Definire utilizatori și acces limitat în funcție de categorie: administrator, manager, director, ospătar, alți utilizatori.

– Alocare mese pe ospătari;

– Preluare comenzi la secții ( bucătărie, bar, pizzerii etc ) cu ajutorul imprimantelor departamentale

– Rezervări mese și preluare comenzi telefonice.

– Posibilitatea închiderii unei note de plată pe protocol

– Posibilitate transfer produse între mese sau locații

– Trimiterea comenzilor specifice către imprimantele departamentale (bar,bucătărie,etc)

– Posibilitate acordare discount Ad-Hoc

– Emitere notă de plată sau/și bon fiscal

– Generare factură pe baza bonului de casă

– Evidența strictă a comenzilor și încasărilor pe ture și ospătari

– Monitorizare restaurant cu ajutorul interfeței de vânzări: note deschise/închise/la plată, timp de așteptare, ospătari etc.

– Controlul retururilor, evidențierea clară a retururilor pe ospătar

– Controlul protocolurilor, evidențierea clară a protocolurilor pe ospătar

– Evidențierea vânzărilor pe fiecare tură și ospătar

– Controlul și gestiunea stocurilor, evidențierea clară a retururilor – avertizare stoc limită al unui produs sau ingredient

– Emitere NIR (Notă Intrare Recepție) și evidența intrărilor

– Rețetar, modalități de preparare, indicații de preparare

– Avertizări pentru produse expirate sau stoc sub pragul minim.

– Căutare produse după : meniu, cod.

– Gestiune clienți

– Identificare clienți după card de fidelitate.

– Posibilitate definire tipuri de clienți, acordare discount după tipul de client

– Gestionare carduri de fidelitate acordate clienților

– Generare promoții valabile pe anumite perioade

– Generare și gestionare promoții gen HappyHour

– Diverse tipuri de rapoarte: stocuri, intrări, ieșiri, diferențe, balanță, inventar, expirare produse, statistică vânzări, necesar aprovizionare, rezervări, fișe de magazie, niruri, avize, clienți, etc.

– Rapoarte privind activitatea angajaților.

– Grafice pentru rapoarte

Stabilirea intrărilor în concordanță cu ieșirile

Definirea iesirilor sistemelor informatizate – prin iesirile unui subsistem informatic se va intelege totalitatea informatiilor furnizate de acesta beneficiarilor interni si externi, respectiv rapoarte, note de informare.

Definirea intrarilor sistemelor informatice – prin intrarile unui sistem informatic se intelege totalitatea datelor primare necesare obtinerii informatiilor de iesire ale sistemului. Datele primare se pot clasifica in date interne si in date externe. La nivelul fiecarui subsistem informatic este necesar ca intrarile sistemului sa fie conditionate de iesirile acestuia.

Diagrama de activitate pentru logarea in sistem:

Diagrama de activitate pentru crearea unui angajat:

Diagrama de activitate pentru emiterea notei de plata:

Analiza și proiectarea structurilor de date

Ca si structuri de date vor exista urmatoarele clase: persoana din care se vor deriva angajati si clienti, angajati_salarii, angajati_functii, utilizatori, grupuri, ingrediente, categorii, produse, retete, reteta_ingrediente, oferte, oferte_produse, stoc, stoc_expirare, nir, comenzi, comenzi_oferte, comenzi_status, tip_plata, mese, activitati, rezervari, rezervari_mese, ture, ture_angajati, tip_client, client_comenzi, cardFidelitate_tip, cardFidelitate, promotii, um

Toate clasesele vor avea trei atribute in comun: id de tip Integer sau Short si data crearii si data modificarii de tip Date.

Clasa Mese (id int, nume_masa string, numar_locuri double)

Clasa Ingrediente (id short, nume_ingredient string, um string)

Clasa Grupuri (id short, nume_grup string)

Clasa Comenzi_status (id short, nume_status string)

Clasa Angajati_functii (id short, nume_functie string)

Clasa Categorii (id short, nume_categ string, id_parinte short)

Clasa CardFidelitate_tip (id short, nume_card string, descriere string, reducere double, puncte double)

Clasa Um (id short, nume_um string)

Clasa Rezervari (id int, nume_client string, ora_inceput time, ora_sfarsit time, numar_telefon string, numar_persoane short)

Clasa Oferta_tip (id short, nume_tip string)

Clasa Ture (id short,nume_tura string,ora_inceput time,ora_sfarsit time)

Clasa TipPlata (id short,nume_plata string)

Clasa Rezervari_mese (id int, id_rezervare int, id_masa int )

Clasa Comenzi(id int, id_masa int,id_status short,id_tipPlata short,total double,reducere double)

Clasa CardFidelitate (id int,id_card_tip short, data_expirare date, status byte)

Clasa Angajati(id short,nume string,prenume string, email string, telefon string, adresa string, id_functie short)

Clasa Produse(id short, nume_produs string, id_categ short )

Clasa Oferte(id int,nume_oferta string, pret double, status byte,id_oferta_tip short)

Clasa Comenzi_oferte(id int,id_comanda int, id_oferta int, cantitate double)

Clasa Activitati (id int,id_masa int, ora_inceput time, ora_sfarsit time, id_angajat short)

Clasa Angajati_salarii (id int,id_angajat short,salariu double)

Clasa Utilizatori(id short, id_angajat short,nume_utilizator string, parola string,id_grup short)

Clasa Ture_angajati (id int,data date,id_tura short,id_angajat short)

Clasa Oferta_produse (id int,id_oferta int,id_produs short,cantitate double)

Clasa Clienti(id int,nume string, prenume string, email string, telefon string, adresa string, id_cardFidelitate int)

Clasa Retete (id short,nume_reteta string, id_produs short)

Clasa Stoc(id short,id_ingredient short, id_produs short, cantitate double, id_um short, pret_actual double)

Clasa Promotii(id short, nume_promotie string, id_oferta int, data_inceput date, data_sfarsit date, ora_inceput time, ora_sfarsit time, status byte)

Clasa Stoc_expirare (id int, id_stoc short, numar_lot string, data_expirare date, data_intrare date, pret double, status byte)

Clasa Reteta_ingrediente (id short, id_reteta short, id_ingredient short, cantitate double)

Clasa Clienti_comenzi (id int, id_client int, id_comanda int)

Mai jos este prezentata diagrama claselor care contine atat atributele cat si operatiile ce vor fi implementate. De asemenea, toate clasele vor avea metode de ’set’ si ’get’ pentru atribute.

Stabilirea necesarului de resurse software și hardware

Sistemul informatic preconizat este elaborat în mediul de programare Java – limbaj de programare orientat-obiect.

În calitate de Sistem de Gestiune a Bazelor de Date a fost ales Microsoft SQL Server. Decizia alegerii acestui sistem este bazată pe următoarele particularități:

Arhitectura Client-Server – MSSQL are o arhitectură Client-Server care permite prelucrarea masivelor mari de date într-un mod bine organizat.

Suportul standardului SQL (Structured Query Language) permite adresarea la baza de date prin interpelări ale clienților formate din operatori SQL – un limbaj evoluat de adresare la baza de date, accesibil utilizatorilor finali.

Distribuirea liberă și gratuită a SGBD-ului

MSSQL este performant pentru aplicatiile mici si mijlocii

Structural, sistemul informatic privind activitatea de asigurare constă din două părți:

1. Interfața client

2. Serverul de baze de date

Referindu-ne la condițiile și restricțiile tehnice înaintate de program pentru a-și asigura un lucru normal sau cel puțin un regim de funcționalitate minim, ca și orice alt sistem informatic, produsul program preconizat are și el anumite condiții/restricții tehnice. Menționăm însă că față de restricțiile tehnice, programul nu este pretențios și că mai ales din partea interfeței client, restricțiile sunt înaintate nu de program, ci însuși de sistemul de operare din familia Windows, care de regulă are și el restricțiile tehnice ale sale.

Resurse software pentru rularea aplicației:

a. pentru interfata client:

JRE6 (Java Runtime Environment)

Windows XP/2000/Vista/7 sau Linux

b. pentru serverul de baze de date

SQL Server 2005/2008

Windows Server 2003/2008

Resurse hadware necesare pentru rularea aplicației:

a. pentru interfata client:

– Calculator sau dispozitiv cu touchscreen:

Procesor: 2Ghz +

Memorie: minim 1GB (recomandat 2GB+ pentru Windows Vista si Windows 7)

Placă video

Placă de rețea

– Imprimante bucatarie si bar

b. pentru serverul de baze de date

– Server de baze de date

Procesor: Dual/quad core 3Ghz +

Memorie: 8GB

Pentru configurația tehnică recomandată, serverul poate deservi simultan circa 1000 clienți în regim real-time, mult mai mult decat este necesar in cazul aplicatiei de fata.

Diagrama de desfasurare a sistemului informatic:

Analiza și proiectarea codurilor (inclusiv aspecte ale validării datelor)

Validarea datelor introduse se poate realiza prin 2 metode:

Restricții de integritate aplicate la nivelul câmpurilor din baza de date;

Verificarea datelor la nivelul aplicației în timpul introducerii datelor de catre utilizator sau la final inainte de a salva datele in baza de date.

Urmatoarele exemple de validare a datelor pot fi aplicate atât la nivelul bazei de date pe fiecare câmp individual cât si la nivel de aplicație:

DataCreare si dataModificare sa fie de tip date

Nume_ingredient, nume_status, nume_functie, nume_client, nume si prenume persoana, email, nume_produs, nume_oferta, nume_reteta, nume_promotie si numar_lot sa fie siruri de caractere alfanumerice cu dimensiunea maxima de 50

Nume_masa, nume_card, nume_um, telefon, nume_tip (oferta_tip), nume_tura, um sa fie siruri de caractere alfanumerice cu dimensiunea maxima de 20

Nume_grup, nume_categorie, nume_plata, nume_utilizator sa fie siruri de caractere alfanumerice cu dimensiunea maxima de 30

Parola sa fie un sir de minim 8 caractere si maxim 30 de caractere si sa contina cel putin o litera mare si o cifra sau un simbol

In clasa Categorii, id_parinte trebuie sa fie un intreg care sa existe deja in aceeasi tabela, in coloana id

In clasa cardFidelitate_tip, valoarea reducerii trebuie sa fie un numar intre 1 si 100

In clasele rezervari si ture, ora_inceput si ora_sfarsit trebuie sa fie in formatul hh:mm, hh sa fie un numar intre 0 si 23, iar mm un numar intre 0 si 59

In claseele cardFidelitate, oferte, promotii si stoc_expirare, status trebuie sa aiba valoarea 0 sau 1 (true sau false)

Atributele total si reducere din Comenzi, pret din Oferte, salariu din Angajati_salarii, pret_actual din Stoc si pret din Stoc_expirare, trebuie sa fie numere reale (tip double)

Atributul cantitate din Comenzi_oferte trebuie sa fie un numar intre 1 si 99, iar cel din Oferta_produse si cel din Stoc trebuie sa fie un numar intre 0 si 99999

Proiectarea bazei de date

Baza de date va contine urmatoarele tabele:

Tabelul Mese

id int

nume_masa nvarchar(20)

numar_locuri numeric

dataCreare datetime

dataModificare datetime

Tabelul Ingrediente

id smallint

nume_ingredient nvarchar(50)

um nvarchar(10)

dataCreare datetime

dataModificare datetime

Tabelul Grupuri

id tinyint

nume_grup nvarchar(30)

dataCreare datetime

dataModificare datetime

Tabelul Comenzi_status

id tinyint

nume_status nvarchar(50)

dataCreare datetime

dataModificare datetime

Tabelul Angajati_functii

id tinyint

nume_functie nvarchar50)

dataCreare datetime

dataModificare datetime

Tabelul Categorii

id tinyint

nume_categ nvarchar(30)

id_parinte tinyint

dataCreare datetime

dataModificare datetime

Tabelul CardFidelitate_tip

id tinyint

nume_card nvarchar(20)

descriere nvarchar(50)

reducere numeric

puncte numeric

dataCreare datetime

dataModificare datetime

Tabelul Um

id tinyint

nume_um nvarchar(20)

dataCreare datetime

dataModificare datetime

Tabelul Rezervari

id int

nume_client nvarchar(50)

ora_inceput time(7)

ora_sfarsit time(7)

numar_telefon nvarchar(20)

numar_persoane smallint

dataCreare datetime

dataModificare datetime

Tabelul Oferta_tip

id tinyint

nume_tip nvarchar(20)

dataCreare datetime

dataModificare datetime

Tabelul Ture

id tinyint

nume_tura nvarchar(20)

ora_inceput time(7)

ora_sfarsit time(7)

dataCreare datetime

dataModificare datetime

Tabelul TipPlata

id tinyint

nume_plata nvarchar(30)

dataCreare datetime

dataModificare datetime

Tabelul Rezervari_mese

id int

id_rezervare int

id_masa int

dataCreare datetime

dataModificare datetime

Tabelul Comenzi

id int

id_masa int

id_status tinyint

id_tipPlata tinyint

total money

reducere money

dataCreare datetime

dataModificare datetime

Tabelul CardFidelitate

id int

id_card_tip tinyint

data_expirare datetime

status bit

dataCreare datetime

dataModificare datetime

Tabelul Angajati

id smallint

nume nvarchar(50)

prenume nvarchar(50)

email nvarchar(50)

telefon nvarchar(20)

adresa nvarchar(100)

id_functie tinyint

dataCreare datetime

dataModificare datetime

Tabelul Produse

id smallint

nume_produs nvarchar(50)

id_categ tinyint

dataCreare datetime

dataModificare datetime

Tabelul Oferte

id int

nume_oferta nvarchar(50)

pret money

status bit

id_oferta_tip tinyint

dataCreare datetime

dataModificare datetime

Tabelul Comenzi_oferte

id int

id_comanda int

id_oferta int

cantitate numeric

dataCreare datetime

dataModificare datetime

Tabelul Activitati

id int

id_masa int

ora_inceput time(7)

ora_sfarsit time(7)

id_angajat smallint

dataCreare datetime

dataModificare datetime

Tabelul Angajati_salarii

id int

id_angajat smallint

salariu money

dataCreare datetime

dataModificare datetime

Tabelul Utilizatori

id smallint

id_angajat smallint

nume_utilizator nvarchar(30)

parola nvarchar(30)

id_grup tinyint

dataCreare datetime

dataModificare datetime

Tabelul Ture_angajati

id int

data date

id_tura tinyint

id_angajat smallint

dataCreare datetime

dataModificare datetime

Tabelul Oferta_produse

id int

id_oferta int

id_produs smallint

cantitate numeric

dataCreare datetime

dataModificare datetime

Tabelul Clienti

id int

nume nvarchar(50)

prenume nvarchar(50)

email nvarchar(50)

telefon nvarchar(20)

adresa nvarchar(100)

id_cardFidelitate int

dataCreare datetime

dataModificare datetime

Tabelul Retete

id smallint

nume_reteta nvarchar(50)

id_produs smallint

dataCreare datetime

dataModificare datetime

Tabelul Stoc

id smallint

id_ingredient smallint

id_produs smallint

cantitate numeric

id_um tinyint

pret_actual money

dataCreare datetime

dataModificare datetime

Tabelul Promotii

id smallint

nume_promotie nvarchar50)

id_oferta int

data_inceput date

data_sfarsit date

ora_inceput time(7)

ora_sfarsit time(7)

status bit

dataCreare datetime

dataModificare datetime

Tabelul Stoc_expirare

id int

id_stoc smallint

numar_lot nvarchar(50)

data_expirare datetime

data_intrare datetime

pret money

status bit

dataCreare datetime

dataModificare datetime

Tabelul Reteta_ingrediente

id smallint

id_reteta smallint

id_ingredient smallint

cantitate numeric

dataCreare datetime

dataModificare datetime

Tabelul Clienti_comenzi

id int

id_client int

id_comanda int

dataCreare datetime

dataModificare datetime

Elaborarea algoritmilor

Logarea utilizatorilor:

se afiseaza modulul de login care contine un camp pentru nume, unul pentru parola si un buton de login

cand este apasat butonul de login, se preiau datele introduse de utilizator si se stocheaza in anumite variabile

se creeaza o conexiune la baza de date

se realizeaza un query care are ca parametri username-ul si parola introduse

daca este returnata o inregistrare, se verifica grupul din care face parte utilizatorul si in functie de acesta este afisata pagina de start pentru administratori sau pentru clienti

daca nu este returnata nici o inregistrare, atunci se afiseaza din nou modulul de login, cu un mesaj de eroare adecvat

Variabile:

pentru afisarea modulului se va folosi un JFrame

numele utilizatorului se va introduce intr-un camp de tip JTextField

parola se va introduce intr-un camp de tip JPasswordField

un buton de login de tip JButton

2 variabile de tip String pentru a retine valorile introduse de utilizator

o lista in care fiecare element este un vector de obiecte de tip ‚utilizator’ si ‚grupuri’

un iterator care sa parcurga lista de obiecte

Modul pagina de start clienti – va contine mesele disponibile si cele ocupate sub forma de butoane

se creeaza o conexiune la baza de date

se aduc date despre mese si despre comenzile deschise si se stocheaza intr-o lista

se parcurge lista si pentru fiecare element se adauga un buton pe pagina, colorat in verde daca nu exista nicio comanda deschisa pe masa respectiva sau rosu daca exista

se adauga un buton pentru rezervari

Variabile:

pentru afisarea modulului se va folosi un JFrame

fiecare masa va fi un element de tip JButton

un buton pentru a accesa pagina de rezervari

o lista in care fiecare element este un vector de obiecte de tip ‚mese’ si ‚comenzi’

un iterator care sa parcurga lista de obiecte

Modul comanda – functionalitatea pentru comenzi este impartita astfel:

Afisare comanda pentru o anumita masa

Creare/modificare comanda/adaugare oferte

Inregistrare comanda

Aplicare discount

Inregistrare card de fidelitate

Inregistrare tip plata

Inchidere comanda

c.1. Afisare comanda pentru o anumita masa

se creeaza o conexiune la baza de date

se verifica in baza de date daca pentru masa respectiva exista o comanda deschisa

daca exista o comanda deschisa, se preiau datele, se stocheaza intr-o lista de obiecte (A) si se afiseaza in tabelul de oferte comandate din pagina de comanda

se interogheaza baza de date cu privire la numele categoriilor de produse

se afiseaza categoriile de produse sub forma de butoane

Variabile:

o lista de obiecte de tip ‚categorii’

un iterator care sa parcurga lista categoriilor

cate un element de tip JButton pentru fiecare categorie

c.2. Creare/modificare comanda

cand este selectata o categorie, se creeaza o conexiune la baza de date, se iau toate ofertele care apartin acelei categorii, se stocheaza si se afiseaza in pagina de comanda sub forma de butoane

cand este selectata o oferta, dupa id, se iau toate datele despre oferta respectiva din baza de date si se adauga intr-o lista de obiecte (B), dupa care se afiseaza in tabelul de oferte comandate

Variabile:

o lista de obiecte de tip ‚oferte’

un iterator care sa parcurga lista ofertelor

cate un element de tip JButton pentru fiecare oferta

c.3. Inregistrare comanda

se afiseaza un mesaj de confirmare si daca se confirma, se realizeaza pasii de mai jos

daca exista o comanda deja deschisa, atunci se salveaza doar ofertele noi adaugate si se trimit la printare

daca nu exista o comanda, atunci se creeaza una noua si se adauga ofertele selectate, care sunt apoi trimise spre printare

Variabile:

un JDialog pentru mesajul de confirmare

un iterator pentru lista de oferte nou-creata

un iterator pentru lista ofertelor deja achizitionate

c.4. Aplicare discount

se preia valoarea introdusa de utilizator si tipul discountului (suma fixa sau procent)

se valideaza datele introduse: daca discountul este de tip procent atunci valoarea trebuie sa fie mai mica de 100, iar daca este de tip suma fixa, valoarea trebuie sa fie mai mica decat totalul comenzii

daca datele nu sunt valide se afiseaza un mesaj de eroare

altfel se calculeaza valoarea efectiva in cazul discountului de tip procent

se actualizeaza inregistrarea in baza de date

se afiseaza pe pagina comenzii reducerea aplicata si noul total de plata

Variabile:

un JTextField pentru valoarea discountului

un JComboBox pentru tipul discountului

un JButton pentru aplicare discount

un double pentru valoarea discountului

un JLabel pentru mesajul de eroare

c.5. Inregistrare card de fidelitate

se preia numarul cardului introdus de utilizator

se cauta in baza de date detaliile cardului respectiv

daca nu este valabil sau nu s-au gasit date, se afiseaza un mesaj de eroare

daca este valabil, se actualizeaza comanda cu id-ul cardului

daca este cazul, se actualizeaza detaliile cardului precum numarul de puncte

se afiseaza pe pagina comenzii datele despre cardul folosit si despre client

Variabile:

un JTextField pentru numarul cardului de fidelitate

un JButton pentru adaugarea cardului

o lista de obiecte de tip ‚cardFidelitate’

un iterator pentru lista de carduri

un JLabel pentru mesajul de eroare

c.6. Inregistrare tip plata

se preiau metodele de plata din baza de date si se afiseaza selectbox

dupa ce se selecteaza o metoda, se actualizeaza comanda

Variabile:

un JComboBox pentru metodele de plata

un int pentru id-ul metodei de plata alese

c.7. Inchidere comanda

se afiseaza un mesaj de confirmare

daca este confirmata inchiderea, se actualizeaza statusul comenzii

se afiseaza pagina de start

Variabile:

un JDialog pentru mesajul de confirmare

Variabile globale:

pentru afisarea modulului se va folosi un JFrame

un JPanel pentru categorii, unul oferte si unul pentru partea de total a comenzii

un JTable pentru afisarea ofertelor selectate

o lista in care fiecare element este un vector de obiecte de tip ‚oferte’, ‚comenzi’ si ‚comenziOferte’ pentru ofertele achizitionate deja si care se afla in baza de date

o lista de obiecte pentru ofertele nou-adaugate

Modul rezervari

d.1. Rezervare masa

d.2. Afisare rezervari

d.1. Rezervare masa

dupa ce se selecteaza data si ora, se interogheaza baza de date pentru a gasi mese deja rezervate in acel interval orar; daca nu exista, atunci in pagina de rezervari vor fi afisate toate mesele; daca sunt anumite mese ocupate, atunci se afiseaza doar cele libere

odata introduse toate datele, acestea sunt salvate astfel: intai se creeaza inregistrarea pentru rezervare, se preia id-ul acesteia si pentru fiecare masa, se adauga in baza de date cate o inregistrare care contine id-ul rezervarii si id-ul mesei

Variabile:

un JFrame pentru afisarea modulului

cate un JTextField pentru nume client, numar telefon si numar persoane

un control specializat pentru alegerea datei

un control specializat pentru alegerea orei

un JList pentru mese

o variabila de tip date pentru stocarea datei

cate o variabila String pentru ora de inceput, ora de sfarsit, nume client si numar telefon

un int pentru stocarea id-ului generat la salvarea rezervarii

d.2. Afisare rezervari

se iau toate rezervarile viitoare din baza de date si se adauga intr-o lista

se afiseaza in ordine crescatoare dupa data si ora

Variabile:

un JFrame pentru afisarea modulului

un JTable pentru afisarea rezervarilor

o lista de obiecte de tip ‚rezervari’

un iterator pentru lista de rezervari

cate 2 butoane pentru fiecare rezervare – unul pentru anulare si unul pentru reprogramare

Creare/editare in backend

Rationamentul pentru creare/editare este acelasi pentru toate tipurile de obiecte, diferenta facandu-se din punct de vedere al variabilelor, al validarilor si in unele cazuri al salvarii in baza de date

se afiseaza modulul de creare/editare astfel: pagina de creare va contine campurile necesare fara ca acestea sa aiba initial valori, iar pentru pagina de editare vor fi preluate datele corespunzatoare din baza de date, si campurile afisate vor fi prepopulate cu aceste valori. De asemenea va exista un buton pentru salvare

odata ce este apelata salvarea, se preiau datele introduse de utilizator

daca datele sunt valide se creeaza o conexiune la baza de date si se adauga/modifica inregistrarea/inregistrarile in baza de date (in cazul obiectelor angajati, oferte si retete este necesara preluarea id-ului generat la salvarea lor si adaugarea separata in baza de date a inregistrarilor pentru angajati_salarii, oferta_produse respectiv reteta_ingrediente tinandu-se cont de id-urile generate pentru obiectele principale)

daca datele nu sunt valide, se afiseaza modulul de editare cu datele introduse de utilizator anterior si un mesaj de eroare

Variabile:

pentru afisarea modulului se va folosi un JFrame

un JButton pentru salvare si altul pentru anulare

Generare raport

se alege unul din rapoartele predefinite

se interogheaza baza de date

se creeaza o lista de obiecte cu inregistrarile obtinute

se creeaza tabelul si se adauga inregistraile in el

Variabile:

pentru afisarea modulului se va folosi un JFrame

un JTable pentru afisarea rezultatelor

o lista in care fiecare element este un vector de obiecte

un iterator pentru lista

Gestionare stocuri

g.1. Afisare lista stocuri

g.2. Modificare stoc produs

g.1. Afisare lista stocuri

se iau datele referitoare la stocuri din baza de date si se stocheaza intr-o lista

se creeaza un iterator pe baza listei

se parcurge lista si se afiseaza intr-un tabel datele referitoare la stocuri

Variabile:

un JTabel pentru afisarea datelor

o lista de obiecte de tip ‚stoc’

un iterator

cate un element de tip JButton pentru fiecare stoc produs/ingredient pentru modificare

g.2. Modificare stoc produs

se preia noua cantitate introdusa de utilizator

se actualizeaza in baza de date

se salveaza intr-un log modificarea facuta

se afiseaza lista de stocuri

Variabile:

un int pentru cantitatea introdusa de utilizator

Elaborarea specificațiilor de programare

Logarea utilizatorilor

Definire obiectiv

Logarea utilizatorilor in sistem

Date de intrare

nume utilizator

parola

Rezultatele obtinute

Se afiseaza pagina de start pentru administratori sau clienti, in functie de grupul din care face parte utilizatorul

Situatii de exceptie

utilizatorul nu introduce numele, parola sau numele si parola

numele sau parola introdusa are o lungime mai mare de 30 de caractere

Creare si inregistrare comanda

Definire obiectiv

Crearea unei comenzi in baza de date

Date de intrare

id oferta, cantitate

Rezultatele obtinute

Comanda pe o anumita masa este creata si adaugata in baza de date

Situatii de exceptie

id-ul ofertei nu exista

cantitatea este 0 sau negativa

Aplicare discount unei comenzi

Definire obiectiv

Reducerea totalului de plata pentru o nota si inregistrarea in baza de date a discount-ului

Date de intrare

tip discount (suma fixa/procent)

valoare discount

Rezultatele obtinute

Situatii de exceptie

nu este selectat tipul discountului

nu este introdusa valoarea discountului

discountul este un numar negativ

discountul ca suma fixa este mai mare decat totalul notei de plata

discountul ca procent depaseste 100

valoarea introdusa pentru discount nu este o data numerica

Asociere card de fidelitate cu o comanda

Definire obiectiv

Inregistrarea unui card de fidelitatea pentru o comanda si adaugarea de puncte pentru acel card

Date de intrare

numar card

Rezultatele obtinute

Comanda este asociata unui client, iar id-ul cardului este stocat in campul aferent din tabela comenzi

Situatii de exceptie

nu este introdus niciun caracter in campul pentru card

cardul nu exista in baza de date

Rezervare masa

Definire obiectiv

Crearea si stocarea unei rezervari in baza de date

Date de intrare

nume client

numar de telefon

numar de persoane

ora inceput

ora sfarsit

data

masa rezervata

Rezultatele obtinute

Inregistrarea in baza de date a unei rezervari

Situatii de exceptie

nu este introdus numele clientului, numarul de telefon, ora inceput, ora sfarsit, data sau masa rezervata

numele clientului are mai mult de 50 de caractere

numarul de telefon are mai mult de 20 de caractere

numarul de persoane este mai mare decat 2^15 sau este negativ

ora de inceput sau ora de sfarsit nu este in format hh:mm (ora depaseste 24)

Creare/editare in backend

Definire obiectiv

Creare/editare angajati si salvare in baza de date

Date de intrare

nume

prenume

email

telefon

adresa

functie

salariu

Rezultatele obtinute

Inregistrarea datelor despre un angajat in baza de date

Situatii de exceptie

nu este introdus numele, functia sau salariul

numele, prenumele sau emailul depasesc 50 de caractere

numarul de telefon depaseste 20 de caractere

adresa depaseste 100 de caractere

Definire obiectiv

Creare/editare functii ale angajatilor si salvare in baza de date

Date de intrare

nume functie

Rezultatele obtinute

Inregistrarea functiilor din cadrul unitatii in baza de date

Situatii de exceptie

nu este introdus numele functiei

numele functiei are mai mult de 50 de caractere

Definire obiectiv

Creare/editare carduri de fidelitate si salvare in baza de date

Date de intrare

tip card

data expirare

status

Rezultatele obtinute

Inregistrarea datelor despre carduri in baza de date

Situatii de exceptie

nu este introdus tipul cardului

tipul cardului introdus nu exista

Definire obiectiv

Creare/editare categorii de produse si salvare in baza de date

Date de intrare

nume categorie

id categorie parinte

Rezultatele obtinute

Inregistrarea tipurilor de categorii de produse in baza de date

Situatii de exceptie

nu este introdus numele categoriei

numele categoriei are mai mult de 30 de caractere

id-ul categoriei parinte nu exista in tabela

Definire obiectiv

Creare/editare clienti si salvare in baza de date

Date de intrare

nume

prenume

email

telefon

adresa

card de fidelitate

Rezultatele obtinute

Inregistrarea datelor despre un client in baza de date

Situatii de exceptie

nu este introdus numele sau cardul de fidelitate asociat

id-ul cardului de fidelitatea asociat nu exista in baza de date

numele, prenumele sau emailul depasesc 50 de caractere

numarul de telefon depaseste 20 de caractere

adresa depaseste 100 de caractere

Definire obiectiv

Creare/editare grupuri de utilizatori si salvare in baza de date

Date de intrare

nume grup

Rezultatele obtinute

Inregistrarea datelor despre grupuri in baza de date

Situatii de exceptie

nu este introdus numele grupului

numele grupului depaseste 30 de caractere

Definire obiectiv

Creare/editare ingrediente si salvare in baza de date

Date de intrare

nume ingredient

unitate de masura

Rezultatele obtinute

Inregistrarea datelor despre ingrediente in baza de date

Situatii de exceptie

nu este introdus numele ingredientului sau unitatea de masura

numele depaseste 50 de caractere

Definire obiectiv

Creare/editare mese si salvare in baza de date

Date de intrare

nume masa

numar locuri

Rezultatele obtinute

Inregistrarea datelor despre mese in baza de date

Situatii de exceptie

nu este introdus numele sau numarul de locuri

numele depaseste 20 de caractere

numarul de locuri este negativ sau mai mare de 99

numarul de locuri contine caractere nenumerice

Definire obiectiv

Creare/editare produse si salvare in baza de date

Date de intrare

nume produs

categorie

Rezultatele obtinute

Inregistrarea datelor despre produse in baza de date

Situatii de exceptie

nu este introdus numele produsului sau categoria

numele depaseste 50 de caractere

Definire obiectiv

Creare/editare promotii si salvare in baza de date

Date de intrare

nume promotie

oferta

data inceput

data sfarsit

ora inceput

ora sfarsit

status

Rezultatele obtinute

Inregistrarea datelor despre promotii in baza de date

Situatii de exceptie

nu este introdus numele, oferta sau statusul

numele depaseste 50 de caractere

ora de inceput sau ora de sfarsit nu este in format hh:mm (ora depaseste 24)

Definire obiectiv

Creare/editare retete si salvare in baza de date

Date de intrare

nume reteta

produs

descriere

ingrediente

Rezultatele obtinute

Inregistrarea datelor despre retete in baza de date

Situatii de exceptie

nu este introdus numele, produsul sau ingredientele necesare

numele depaseste 50 de caractere

descrierea depaseste 300 de caractere

Modificare stoc produs

Definire obiectiv

Ajustarea stocului produselor

Date de intrare

stocul curent

Rezultatele obtinute

Modificarea in baza de date a cantitatii curente a unui produs/ingredient

Situatii de exceptie

nu este introdus stocul curent

valoarea introdusa este negativa

valoarea introdusa este un numar mai mare de 99999

Scrierea programelor

Pentru realizarea proiectului se vor folosi urmatoarele tehnologii: ca mediu de programare va fi limbajul orientat-obiect Java, iar ca sistem de gestiune a bazelor de date vom avea Micorsoft SQL Server. De asemenea se va folosi tehnologia Hibernate pentru crearea

Java

Java este un limbaj de programare orientat-obiect, puternic tipizat, conceput de Sun Microsystems (acum filială Oracle) la începutul anilor ʼ90, fiind lansat în 1995. Cele mai multe aplicatii distribuite sunt scrise in Java, iar noile evolutii tehnologice permit utilizarea sa si pe dispozitive mobile gen telefon, agenda electronica, palmtop etc. In felul acesta se creeaza o platforma unica, la nivelul programatorului, deasupra unui mediu eterogen extrem de diversificat. Acesta este utilizat in prezent cu succes si pentru programarea aplicatiilor destinate intranet-urilor.

Limbajul împrumută o mare parte din sintaxă de la C și C++, dar are un model al obiectelor mai simplu și prezintă mai puține facilități de nviel jos. Un program Java compilat, corect scris, poate fi rulat fără modificări pe orice platformă care e instalată o mașină virtuală Java (engleză Java Virtual Machine, prescurtat JVM). Acest nivel de portabilitate (inexistent pentru limbaje mai vechi cum ar fi C) este posibil deoarece sursele Java sunt compilate într-un format standard numit cod de octeți (engleză byte-code) care este intermediar între codul mașină (dependent de tipul calculatorului) și codul sursă.

Java reprezinta in momentul de fata nu numai un simplu limbaj de programare ci insumeaza o serie de tehnologii ce pot fi folosite pentru a crea aplicatii complexe structurate pe mai multe nivele si care sa implice resurse variate.

Sunt multe motive pentru a folosi Java, printre acestea fiind:

Simplitatea – elimina supraincarcarea operatorilor, mostenirea multipla si toate ”facilitatile” ce pot provoca scrierea unui cod confuz.

Usurinta in crearea de aplicatii complexe ce folosesc programarea in retea, fire de executie, interfata grafica, baze de date, etc.

Robustetea – elimina sursele frecvente de erori ce apar in programare prin renuntarea la pointeri, administrarea automata a memorieisi elim narea pierderilor de memorie printr-o procedura de colectare a obiectelor care nu mai sunt referite, ce ruleaza in fundal (”garbage collector”).

Complet orientat pe obiecte – elimina complet stilul de programare procedural.

Securitatea – este un limbaj de programare foarte sigur, furnizˆand mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamica a codului pentru detectarea secventelor periculoase, impunerea unor reguli stricte pentru rularea proceselor la distanta, etc.

Neutralitatea arhitecturala – comportamentul unei aplicatii Java nu depinde de arhitectura fizica a masinii pe care ruleaza.

Portabililtatea – Java este un limbaj independent de platforma de lucru, aceeasi aplicatie rulˆand fara nici o modificaresi fara a necesita recompilarea ei pe sisteme de operare diferite cum ar fi Windows, Linux, Mac OS, Solaris, etc. lucru care aduce economii substantiale firmelor dezvoltatoare de aplicatii.

Este compilatsi interpretat, aceasta fiind solutia eficienta pentru obtinerea portabilitatii.

Performanta – desi mai lent decat limbajele de programare care genereaza executabile native pentru o anumita platforma de lucru, compilatorul Java asigura o performanta ridicata a codului de octeti, astfel incat viteza de lucru putin mai scazuta nu va fi un impedimentin dezvoltarea de aplicatii oricat de complexe, inclusiv grafica 3D, animatie, etc.

Este modelat dupa C si C++, trecerea de la C, C++ la Java facandu-se foarte usor

Microsoft SQL Server

Microsoft SQL Server este un sistem de gestionare de baze de date relaționale (RDBMS) produs de compania americană Microsoft Corp. Limbajele primare de interogare sunt MS-SQL și T-SQL.

Suportă versiunea companiei Microsoft de SQL (Structured Query Language – limbaj structurat de interogări), cel mai răspândit limbaj pentru bazele de date. Este un sistem pentru întreprinderi – se poate aplica bazelor de date de dimensiuni foarte mari si se poate folosi pentru dezvoltarea unor aplicații la scară mare, extensibile și performante.

Decizia alegerii acestui sistem este bazată pe următoarele particularități:

Arhitectura Client-Server – MSSQL are o arhitectură Client-Server care permite prelucrarea masivelor mari de date într-un mod bine organizat.

Suportul standardului SQL (Structured Query Language) permite adresarea la baza de date prin interpelări ale clienților formate din operatori SQL – un limbaj evoluat de adresare la baza de date, accesibil utilizatorilor finali.

Distribuirea liberă și gratuită a SGBD-ului

MSSQL este performant atat pentru aplicatiile mari cat si pentru cele mici si mijlocii

Java Hibernate

Hibernate este o librarie ORM (Object-Relational Mapping) pentru limbajul Java, folosind la maparea modelului orientat pe obiecte peste bazele de date relationale.

Aceasta tehnologie este gratuita si open source, distribuita sub licenta GNU Lesser General Public License.

Principala caracteristica a Hibernate este maparea intre clasele Java si tabelele bazelor de date precum si intre tipurile de date Java si SQL. Hibernate pune la dispozitie posibilitatea redactarii de query-uri si interogari ale bazei de date.

Caracteristica principală a tehnologiei Hibernate o reprezinta cartografierea de la clasele Java la tabelele bazei de date. Hibernate oferă interogarea bazei de date și prezinta facilități de recuperare. Acesta generează, de asemenea, apelurile SQL și conversia obiect-tabela .

Maparea claselor Java la tabele de baze de date este realizată prin configurarea unui XML fișier sau prin utilizarea de adnotări Java . Când este utilizat un fișier XML, Hibernate poate genera scheletului codului sursă pentru clasele de persistenta. Acest lucru este necesar atunci când sunt utilizate adnotări. De asemenea Hibernate poate folosi fișierul XML sau adnotările pentru a menține schema bazei de date.

Hibernate oferă un limbaj SQL numit Hibernate Query Language (HQL), care permite interogări SQL

Testarea și implementarea proiectului

Pentru testarea unui produs trebuie realizati urmatorii pasi:

Exista mai multe tipuri de testare dar cel mai important este testarea functionala care se aplica pentru a verifica daca un produs se comporta si functioneaza corect, conform specificatiilor din proiect. Pentru aceasta se realizeaza cazuri de testare bazate pe specificatii.

Astfel vom avea urmatoarele cazuri de testare:

In momentul in care se realizeaza testarea, mai pot fi adaugate cel putin 2 coloane in tabel: una pentru descrierea rezultatului efectiv si alta care confirma sau infirma daca scenariul a trecut testul.

Implementarea

Obiectivul principal al implementarii este intrarea noului sistem in productie. De asemenea, daca este cazul, se va realiza si migrarea datelor din sistemele existente.

In aceasta etapa are loc intai elaborarea planului general de implementare: definirea etapelor, cu resursele necesare, responsabilii, durata estimata, legaturile intre faze, documentele fiecarei etape, precum si calendarul implementarii.
Urmeaza apoi implementarea incrementala propriu-zisa a solutiei alese.
Se valideaza fiecare etapa inainte de a trece la urmatoarea. Abordarea incrementala va permite detectarea din timp si evitarea oricarui risc care pericliteaza implementarea.

Planul de implementare va cuprinde :

Instalare pilot a sistemului achizitionat

Efectuare configurari necesare

Pregatire baze de date demonstrative si pt. training

Determinare si definire tipuri de utilizatori ai sistemului cu drepturi in sistem

Organizare training pe tipuri de utilizatori si scenarii de utilizare specifice fiecarui tip de utilizator

Intocmire documentatie de utilizare in plus daca este cazul (mai amanuntita, customizata pe tipurile de utilizator si operatiile specifice fiecaruia)

Planificare in detaliu si realizare start productiv efectiv (lansarea in productie a nolui sistem) – introducere / migrare date generale

Elaborare metodologii de utilizare si mentenanta sistem

Stabilire cerinte aplicatii software complementare daca este cazul

Definirea activităților de întreținere a funcționării proiectului

Activitatile de intretinere, sau mentenanta unui produs software, reprezinta totalitatea masurilor luate de persoane specializate din cadrul unei companii pentru asigurarea functionarii sistemului la un grad cat mai ridicat, fara intreruperi si fara erori.

Mentenanta poate fi definita prin urmatoarele patru activitati:

Mentenanta corectiva: diagnosticarea si corectarea erorilor

Mentenanta adaptiva: activitate care modifica software-ul pentru a interactiona corect cu un mediu in schimbare (hardware sau software)

Mentenata perfectiva: activitati pentru adaugarea de noi capabilitati, modificarea functionalitatii existente si aducerea de imbunatatiri generale. Aceasta reprezinta cea mai mare parte din efortul investit in mentenanta, in jur de 75%

Mentenanta preventiva: activitati care pregatesc produsul software pentru o mai buna mentenabilitate sau fiabilitate in viitor, sau pentru a pune baza unor viitoare imbunatatiri

Lista activitatilor de intretinere:

Diagnoza, consultanta si audit IT de specialitate

Back-up si recuperare de date – modificarile efectuate in baza de date vor fi replicate zilnic

Interventii de tip helpdesk (prin telefon,e-mail sau chat)

Asistența remote

Instalare si suport hardware si software

Mentenanta si suport retea

Mentenanta si suport echipamente periferice (imprimante, multifunctionale)

Devirusare, scanare virusi, update antivirus

Optimizare si update sistem de operare

Similar Posts

  • Tehnologii de Securitate pe Internet. Semnatura Digitala

    CUPRINS INTRODUCERE CAPITOLUL 1 TEHNOLOGII PRIVIND SECURITATEA INTERNET-ULUI 1.1. Vulnerabilitățile mediului Internet 1.2. Analiza riscurilor legate de Securitate 1.3 Tipologia riscurilor care afectează securitatea comerțului electronic 1.4 Consecințele securității inadecvate 1.5 Asigurarea securității tranzacțiilor online CAPITOLUL 2 SEMNĂTURA DIGITALĂ 2.1 Concept și definiție 2.2Funcționarea sistemului de semnare si verificare a semnaturii electronice 2.3. Certificatele digitale…

  • Implementarea Unui 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…

  • Sabloane de Proiectare Ui Pentru Aplicatii Web

    Sabloane de Proiectare UI pentru Aplicatii Web Cuprins 1. Introducere 2. Sabloane orientate obiect 2.1 Tipuri de sabloane orientate obiect 3. Clasificarea sabloanelor orientate obiect (Badea Alexandru-Victor) 4. Rolul sabloanelor de proiectare in rezolvarea problemelor de proiectare 4.1 Identificarea obiectelor adecvate 4.2 Determinarea granularitatii obiectelor 4.3 Specificarea interfetelor obiectelor 4.4 Specificarea implementarii obiectelor 4.4.1 Mostenirea…

  • Sistem Informatic Pentru Gestiunea Activitatilor Unei Scoli de Fotbal

    CAPITOLUL 1. INTRODUCERE Tema proiectului Tema aleasă de mine pentru acest proiect reprezintă crearea unui sistem informatic cu baze de date și gestiunea acestuia prin intermediul unei aplicații dezvoltate pe baza tehnologiei .NET, cu ajutorul căreia am creat o interfață grafică care facilitează manipularea datelor. Interfața va fi realizată în WindowsFormsApplication, cu ajutorul mediului de…

  • Internetul, O Retea Globala de Informatii

    Cuprins CAPITOLUL I NOȚIUNI GENERALE 1.1. INTERNET-generalități Ființa umană este făcută să comunice. În noua societate, cea de tip informațional, comunicarea, transferul și schimbul de informații se desfășoară prin intermediul sistemelor informaționale. Punerea la un loc a datelor stocate digital, textelor, sunetului și imaginii multimedia au condus la răspândirea utilizării sistemelor moderne de telecomunicații, a…