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
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
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
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Sistem Informatic de Gestiune a Activitatii Unui Restaurant (ID: 150490)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
