Sistem Informatic Online Pentru Managementul Unui Restaurant
Cuprins
Introducere
În zilele noaste este foarte greu de conceput viața fară internet. El e considerat de unii oameni ca fiind „cea mai mare descoperire a secolului XX”. Internetul a luat naștere din necesitatea marilor centre de cercetare de a comunica. Primul proiect de elaborare a internetului a fost susținut de un laborator militar de cercetare și s-a derulat sub denumirea de „ARPANET”. Internetul se extinde pe plan mondial cu o viteză extraordinară, fiind tot mai mulți utilizatori care se conectează zilnic la el, doritori de informație. După o perioadă de cațiva ani de utilizare a internetului și o mulțime de pagini web care a ajuns la un număr impresionant de zeci de milioane de utilizatori care nu mai caută la întamplare, ci ei doresc ca aceste cautări sa aibă o logică, să fie rapide și să se finalizeze cu găsirea acelui lucru căutat. Internetul este o rețea de calculatoare. O rețea de calculatoare este un grup de calculatoare care pot să transmită între ele date. Din acest punct de vedere există mai multe metode de transmitere a datelor: prin cablu telefonic, cablu TV, fibră optică, radio, etc, fiecare având caracteristici specifice ( distanța maximă de transmitere, viteza de transmitere, rezintența la interferențe, etc). Din punct de vedere hardware, Internetul este format din mai multe rețele de calculatoare conectate între ele, o rețea de rețele. Din punct de vedere software, Internetul este un grup de tehnologii de transmisie a datelor între calculatoare din întreaga lume. În prezent în toate domeniile de activitate sunt din ce în ce mai legate de rețeaua mondială. Până la ora actuală nu se știe numărul total de dispozitive conectate la internet, dar se estimează valori de câteva miliarde. În prezent la Internet sunt nu doar calculatoare, ci și alte dispozitive: de dirijare a traficului de date (swich, router), de comunicare sau gestionare date personale (telefoane mobile, PDA), de altă natură (camere video, dispozitive de monitorizare).
Proiectul pe care eu l-am ales se numește „Sistem informatic online pentru managementul restaurantelor” și constă în dezvoltarea unei aplicații Java utilizând tehnologiile: JAVA, SQL, MYSQL, XML, prin intermediul căruia se dorește o gestiune foarte complexă, ce ajută ca o afacere să fie mai bine organizată, mai simplu de administrat, dar si mai profitabilă. Având o interfață foarte simplă, aplicația dispune de numeroase funcționalități, grupate dupa scop si rol. Interfața este complexă dar este usor de folosit, ea având un design elegant. Putem descărca în timp real atât cantitativ cât și valoric, pentru ca cel care folosește aplicația să aibă oricând control asupra afacerii. Aplicația mai dispune de un registru de casă pentru a avea evidența încasărilor și plăților efectuate într-un interval de timp.
În continuare voi prezenta studiul efectuat pentru această temă, el fiind structurat pe trei capitole.
În primul capitol voi vorbi despre „Noțiuni generale despre internet”, capitol în care voi trata complexitatea și evoluția treptată a internetului.
În capitolul al II-lea al lucrării voi face o prezentare a conceptelor întălnite în limbajele de programare, și a sistemelor de gestiune a bazelor de date utilizate.
În capitolul al III-lea voi face o descriere detaliată a aplicației (proces de funcționare, implementare).
Capitolul 1
Noțiuni generale despre internet
Termentul „Internet” provine din împreunarea artificială și spațială a doua cuvinte englezești: interconnected = interconectat și network = rețea.
Internetul este o vastă rețea de calculatoare (mai multe calculatare interconectate între ele). La rețeaua Internet se pot conecta toate tipurile de calculatoare. Toate calculatoarele care sunt conectate la Internet fac schimb de informatii. Această rețea uriașă de calculatoare nu este controlată de nici o instituție, guvern , el nu are un administrator unic. La început rețeaua de calculatoare a fost construită pentru a-i ajuta pe cercetători si pe cei cere lucrau în domeniul educațional să lucreze mai eficient, în sensul schimbului de date și al documentației.
Din punct de vedere al numărului și distribuției calculatoarelor, rețelele se împart în:
LAN – Local Area Network: rețea de mici dimensiuni aflată de obicei într-o singură încăpere sau instituție;
MAN – Metropolitan Area Network: rețea la nivelul unui oraș;
WAN – Wide Area Network: rețea de mari dimensiuni cu calculatoare repartizate la nivelul unei țari;
GAN – Global Area Network: rețea globală, răspandită la nivelul întregii planete. Un exemplu de astfel de rețea este Internetul.
Odată cu creșterea explozivă a informațiilor și a bazelor de date a dus inevitabil la implicarea sistemelor de gestiune a bazelor de date în dezvoltarea site-urilor și aplicațiilor online. Pentru funcționarea internetului au fost necesare dezvoltarea de limbaje de programare cum ar fii limbajul PHP. Aceste noi tehnologii permit scrierea de programe care rulează în contextul serviciului Web și facilizează acestuia extragerea datelor din baza de date și transmiterea acestor date către clienți sub formă de pagini HTML. Odată cu apariția HTML-ului, el a fost îmbunătațit prin introducerea stilurilor CSS, introducerea limbajului Java Script, care rulează în cadrul browserului Web și un nou limbaj a fost creat: XML.
Pentru ca un site web sa funcționeze stau la bază patru protocoale:
HTTP – Hypertext Transfer Protocol, stiva de protocoale OSI prin care serverul web și browserul clientului (utilizatorului) comunică între ele;
HTML – Hypertext Markup Language, standard de definire și prezentare a paginilor web;
URL – Uniform Resource Identifier, sistem universal de identificare a resurselor din web, folosit pentru a identifica și regăsi paginile web;
WWW – World Wide Web, este totalitatea documentelor și informațiilor de tip hipertext legate între ele, care pot fi accesate prin rețeaua mondială de Internet.
World Wide Web (cunoscut și sub numele de WWW) a făcut ca accesul pe Internet la o informație pentru o persoană obișnuită sa fie mult mai ușor. WWW-ul este serviciul Internet care s-a dezvoltat cel mai mult în ultimii ani. Pe Web poți găsii o gamă largă de informații, practic toate cunoștințele omenirii sunt adunate acolo. Strict vorbind WWW-ul este un sistem pentru accesul la hypertext pe Internet. El este făcut din documente, imagine, sunete și link-uri către alte documente sau servere. Un document Web poate conține și link-uri către alte servicii cum ar fi FTP, TELnet etc. Un mod mai bun de a privi Internetul este să-l vezi interactiv, să aibă o interfață grafică, să fie ușor de folosit. Cum a aparut WWW-ul Tim Berners-Lee a propus un protocol care să fie folosit pentru distribuirea informațiilor în domeniul fizicii pe Internet, protocol ce va fii adoptat și de alte organizații.
HTTP (Hypertext Transfer Protocol) Cel mai important motiv pentru care WWW poate funcționa pe diferite tipuri de calculatoare este Hypertext Transfer Protocol. HTTP-ul este setul standard de comenzi ce permite comunicarea pe Internet. Fără HTTP browserul pe care îl folosim nu ar ști dacă informația care a venit este HTML sau un document.
HTML (Hypertext Markup Language) este codul care stă la baza paginilor web. Paginile HTML sunt formate din etichete sau tag-uri și au extensia .html. În marea lor majoritate aceste etichete sunt pereche, una de deschidere <eticheta> și alta de închidere </eticheta>, mai există și cazuri în care nu se închid, atunci se folosește <eticheta/> browserul interpretează aceste etichete afișând rezultatul pe ecran. Pagina principală a unui domeniu este fisierul index.html.
URL (Uniform Resource Identifier), este o secvență de caractere standardizată, folosită pentru denumirea, localizarea și identificarea unor resurse de pe Internet, inclusiv documente text, video, imagini, clipuri video etc. Standardul a fost introdus de Tim Berners-Lee pentru a fi utilizat în World Wide Web, specificațiile actuale fiind cuprinse in RFC1738. URL-ul este un caz particular al unei specificații mai ample numite URI (Identificator Uniform de Resurse), standardizat de același W3C.
Pentru a naviga pe internet este nevoie de un program numit browser. Acesta este o aplicație software ce permite utilizatorilor să afișeze text, grafică, video, muzică și alte informații. O altă definiție: prin browser se înțelege un program de navigare în web. De aceea, în loc de cuvântul „browser” se poate folosi și termenul general „navigator” (a nu se confunda cu aplicația browser a companiei Netscape, numit tot „Navigator”, acum învechit și nefolosit).
1.1 Scurt istoric al evoluției internetului
În perioada anilor `60 Departamentul de Apărare a Statelor Unite avea nevoie de o rețea de comunicare în cazul unui atac nuclear. RAND o corporație militară a propus centralizarea comunicațiilor într-o rețea. Această rețea conținea noduri capabile să transmită și să primească mesaje. Departamentul Apărării pentru proiecte avansate (The Defense Department`s Advanced Research Projects Agency) cunoscut sub numele de ARPA sau DARPA a decis să extindă această rețea. În 1969 primul „Interface Message Processor”, predecesorul router-ului de azi a fost instalat la UCLA (University of California in Los Angeles), încât ARPANET-ul a început să se extindă. ARPANET-ul include câteva servicii care sunt foarte importante în Internetul de azi, cum ar fi FTP-ul (File Transfer Protocol), remote login (TELNET) și E-mail (poșta electronică). În timp ce ARPANET-ul începe să crească, companii ca Xerox dezvoltă tehnologia rețelor locale (LAN). Rețeaua cu cel mai mare impact a fost Ethernet-ul, rețea ce permitea conectarea mai multor calculatoare împreună. Prima versiune avea teoretic o rată de transfer de 3 Mbps și mai târziu 10 Mbps. Cercetătorii de la ARPANET au început să creadă că ar fi folositor să conecteze LAN-urile la ARPANET. Pentru a putea realiza acest lucru a fost dezvoltat un protocol pentru a putea conecta tipuri diferite de echipamente. Astfel TCP-ul (Protocolul de Control al Transmisiei) și IP (Internet Protocol). În 1983 creșterea internetului a fost impulsionată de apariția versiunii 4.2 BSD de UNIX care conținea și protocolul TCP/IP.
1.2 Protocol de rețea
Un protocol de rețea este, într-o rețea de telecomunicații, o descriere formală a regulilor și convențiilor care stau la baza comunicării între dispozitivele atașate de rețea. Protocolul determină formatul sau structura mesajului, metode prin care dispozitivele din rețea schimbă informații privitoare la căile către alte rețele, temporizarea, ordinea, și controlul erorilor în comunicațiile de date, inițierea și finalizarea sesiunii pentru transferul de date. Fără protocoale calculatoarele nu ar putea construi sau reconstrui în format original șirul de biți (mesajul) transmis de la un alt calculator.
Protocoalele controlează toate aspectele comunicațiilor de date, incluzând:
Cum e construita rețeaua fizică
Cum sunt conectate între ele calculatoarele din rețea
Cum sunt formatate datele pentru transmitere
Cum sunt trimise datele
Ce se întampla când apar erori și cum se pot corecta erorile
Aceste reguli sunt, sau au fost create și dezvoltate permanent de diferite organizații și comitete internaționale. Printre acestea figurează Institute of Electrical and Electronic Engineers (IEEE), American National Standards Institute (ANSI), Telecommunications Industry Association (TIA), Electronic Industries Alliance (EIA) și International Telecommunication Union (ITU), cunoscută inițial drept Comite Consultatif International Telephonique et Telegraphique (CCITT).
Cele patru principale protocoale de rețea sunt:
TCP/IP – (Protocolul de control al transmisiei) este un protocol folosit de obicei la aplicații care au nevoie de confirmare de primire a datelor. TCP (Tansmission Control Protocol) este unul dintre protocoalele de bază ale suitei e protocoale Internet. TCP este unul dintre cele două componente originale ale suitei, asalculatoarele nu ar putea construi sau reconstrui în format original șirul de biți (mesajul) transmis de la un alt calculator.
Protocoalele controlează toate aspectele comunicațiilor de date, incluzând:
Cum e construita rețeaua fizică
Cum sunt conectate între ele calculatoarele din rețea
Cum sunt formatate datele pentru transmitere
Cum sunt trimise datele
Ce se întampla când apar erori și cum se pot corecta erorile
Aceste reguli sunt, sau au fost create și dezvoltate permanent de diferite organizații și comitete internaționale. Printre acestea figurează Institute of Electrical and Electronic Engineers (IEEE), American National Standards Institute (ANSI), Telecommunications Industry Association (TIA), Electronic Industries Alliance (EIA) și International Telecommunication Union (ITU), cunoscută inițial drept Comite Consultatif International Telephonique et Telegraphique (CCITT).
Cele patru principale protocoale de rețea sunt:
TCP/IP – (Protocolul de control al transmisiei) este un protocol folosit de obicei la aplicații care au nevoie de confirmare de primire a datelor. TCP (Tansmission Control Protocol) este unul dintre protocoalele de bază ale suitei e protocoale Internet. TCP este unul dintre cele două componente originale ale suitei, astfel încât întreaga suită este fregvent menținută ca stivă TCP/IP. Aceste cerințe au condus la alegerea a patru niveluri pentru modelul TCP/IP: nivelul aplicație, nivelul transport, nivelul rețea, nivelul acces la rețea.
IPX/SPX – (Comutare de pachete între rețele) este un protocol de rețea bazat pe datagrame și lipsit de conexiuni.Termenul „fară conexiuni” înseamnă că atunci când o aplicație folosește IPX pentru a comunica cu alte aplicații din cadrul rețelei, între cele două aplicații nu se stabilește nicio conexiune la nivelul „Legătură de date”. IPX execută funcții echivalente nivelului rețea (nivelul 3) din modelul OSI.
NetBIOS/NetBEUI – dezvoltat inițial de IBM și preluat de Microsoft, utilizat în sisteme de operare predecesoare lui Windows NT 4.0 (W 95, W98) – protocol foarte eficient, rapid și ușor de instalat.
Apple Talk – este o suită de protocoale de rețea dezvoltate de Apple Inc. pentru calculatoarele Macintosh. Apple Talk a inclus un număr de caracteristici care au permis rețelelor locale să se conecteze fară nici o configurare prealabilă sau nevoia de un router sau un server .
1.3 Cele mai cunoscute protocoale de rețea
Un protocol de rețea reprezintă un standard sau o convenție asupra modului de desfașurare a unui anumit lucru în cazul rețelelor: protocoalele permit calculatoarelor să comunice între ele printr-un limbaj comun. Prin protocol se înțelege o stivă de protocoale ce lucrează împreuna (de exemplu TCP/IP). Protocoalele nu sunt identice din punct de vedere al eficienței, vitezei de lucru, consumul de resurse (în funcție de dimensiunea header-ului, de exemplu), ușurinței în instalare, ușurinței în administrare. Diferențele sunt date de tipul rețelei, tipul infrastructurii acesteia, dacă protocolul este rutabil sau nu, de tipul clienților din rețea.
Punctul de început pentru toți la conectarea la Internet este ISP – ul (Internet Service Protocol). Un ISP oferă acces la rețeaua înternet (poșta electronică, știri, web etc.), folosind servere, routere și modem-uri conectate permanent la noduri Internet. Un ISP denotă de asemenea o companie sau o instituție care oferă acces la o conexiune directă (linie închiriată). Un exemplu de ISP: Romtelecom, RCS & RDS, UPC. Unii utilizatori pot fi conectați în LAN, alții pot avea acces la Internet prin alte ISP-uri. La cel mai de jos nivel un ISP local este conectat cu un alt ISP local. Urmatorul nivel este reprezentat de ISP-urile care fac legatura cu alte ISP-uri din exterior.
Capitolul 2
Sisteme informatice pentru managementul restaurantelor
2.1 Prezentare sisteme informatice pentru managementul restaurantelor
2.1.1 Exemple de aplicații Java din domeniul managementului restaurantelor
În ziua de astăzi de când tehnologia online s-a dezvoltat, utilizarea calculatorului în gestiunea activitații restaurantelor a devenit o realitate și o necesitate. În cele ce urmează am să prezint o parte din site-urile unde putem găsi aplicații Java folosite pentru o bună desfășurare a activității de management în restaurante, baruri, cafenele etc.
Un prim site este http://www.softgestiunerestaurant.ro/, aici găsim aplicația „Freya Restaurant”. Acest site ne pune la dispoziție o serie de pachete de software:
Pachetul „Fast Food din Freya Restaurant ” oferă cumparatorului toate funcționalitațile și beneficiile softului de restaurant cu o interfață care va spori considerabil viteza de marcare a utilizatorilor.
Figura 2.1 Modulul Fast Food din Freya Restaurant
Pachetul „Freya Kitchen” este un soft de gestiune, un modul de administrare al secțiilor de preparate/ producție, soft care ajută la eficientizarea afacerii prin monitorizarea angajaților, de la ospătari la bucătari. Aplicația a fost dezvoltată cu scopul de a înlocui imprimantele de selecție din bucatarie cu monitoare touch screen.
Avantajele folosirii aplicației Freya Kitchen
Se poate ține o evidență constantă a necesarului de ingrediente în stoc;
Softul va mări eficiența în servire;
Se va stabili un plan zilnic de activitate;
Există posibilitatea unei monitorizări complexe a activității în unitate.
Figura 2.2 Modulul Kitchen din Freya Restaurant
Un alt site de specialitate în care putem găsi un soft pentru managementul restaurantelor este http://www.posnet.ro. Acest site pune la dispoziția cumpărătorului un software special conceput pentru restaurante, baruri, localuri, cluburi si fast food-uri. Fiind ușor in utilizare POSnet Soft Restaurant reprezintă alegerea corectă pentru orice activitate ospitalieră.
Figura 2.3 Modulul POSnet
2.1.2 Avantajele utilizării unui sistem informatic pentru managementului restaurantelor
deținerea controlului asupra vânzărilor, încasărilor, stocurilor, ce conduce la eliminarea într-o foarte mare masură a pierderilor și la adaptarea unor decizii mai bune în administrare;
evitarea amenzilor pentru evaziune fiscală;
reducerea efortului administrativ de supraveghere, coordonare și control;
Aceste avantaje asigură o administrare mai buna a activitații, o apreciere și remunerare justa a angajaților, precum și respectarea legii. Dacă punem în balanța avantajele și dezavantajele putem observa că utilizarea unui sistem informatic este cea mai bună soluție.
2.1.3 Exemple de aplicații pentru telefonul mobil din domeniul managementului restaurantelor
De o perioadă de timp de când au apărut pe piața romanească telefoanele inteligente cu diverse sisteme de operare, au apărut și aplicații mobile pentru diverse domenii de activități: sănătate, știri, IT, muzică, filme, restaurante etc.
În cele ce urmează voi prezenta o serie de aplicații mobile făcute de diverse restaurante și folosite de posesorii de telefoane inteligente pentru comandarea online a diverselor meniuri de mâncare.
O primă aplicație este „foodME”, aplicație pentru comenzi de mâncare cu livrare în Bucuresti. Aplicația „foodMe” este o aplicație gratuită disponibilă pentru platformele IOS și Android. Prin intermediu aplicației utilizatorii pot plasa comenzi fără a pierde timp pentru efectuarea unei comenzi telefonice.
Figura 2.4 Modulul foodMe
O altă aplicație este „Oliviera”. Aplicație în care restaurante de renume din Bucuresti își pun la dispoziție ofertele. Oliviera aduce oferte direct pe telefonul mobil și oferă o modalitate rapidă și modernă de a comanda desertul perfect. Aplicația este gratuită și nu există costuri suplimentare de livrare. Aplicația pune la dispoziție vizualizarea restaurantelor, informații actualizate despre disponibilitatea de livrare si promoțiile existente.
Figura 2.5 Modulul Oliviera
2.2 Tehnologii utilizate pentru dezvoltarea sistemelor informatice necesare managementului restaurantelor
2.2.1 Limbaje de programare, sisteme de gestiune a bazelor de date
2.2.1.1 SQL
Limbajul SQL (Structured Query Language) este un limbaj de programare specific pentru manipulare a bazelor de date relaționale (RDBMS), iar la origine este un limbaj bazat pe algebra relațională. Acesta are ca scop inserarea datelor, interogațiilor, actualizarea și ștergerea, modificarea si crearea schemelor, precum și controlul accesul la date. A devenit un standard în domeniu (standardizat ANSI-ISO), fiind cel mai popular limbaj utilizat pentru creearea, modificarea, regăsirea si manipularea datelor de către SGBD-urile (Sistemele de gestiune a bazelor de date) relaționale. Pe lânga versiunile standardizate ale limbajului, există o mulțime de dialecte și variante, unele proprietare, fiind specifice anumitelor SGBD-uri și de asemenea conținând extensii pentru a suporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-relaționale). SQL permite atât accesul la conținutul bazelor de date, cât și la structura acestora.
Instrucțiuni SQL
"SELECT ID, TAXID, SEARCHKEY, NAME, CARD, TAXCATEGORY, NOTES, MAXDEBT, VISIBLE, CURDATE, CURDEBT" + ", FIRSTNAME, LASTNAME, EMAIL, PHONE, PHONE2, FAX" + ", ADDRESS, ADDRESS2, POSTAL, CITY, REGION, COUNTRY" + " FROM CUSTOMERS WHERE ID = ?
Această instrucțiune selectează câmpurile din tabela clienți pe baza id-ului.
"SELECT ID, REFERENCE, CODE, NAME, ISCOM, ISSCALE, PRICEBUY, PRICESELL, TAXCAT, CATEGORY, ATTRIBUTESET_ID, IMAGE, ATTRIBUTES " +"FROM PRODUCTS WHERE ID = ?"
Această instrucțiune selectează câmpurile din talela produse pe baza id-ului.
2.2.1.2 MySQL
MySQL este un sistem de gestiune a bazelor de date relațional, produs de compania suedeză MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai polular SGBD open-surce la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP). Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj de programare. Există multe scheme API disponibile pentru MySQl ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL cum ar fi: C, C++, C#, Java, PHP, Python.
Secvențe MySQL
Structura de tabel pentru tabelul `categorii`
CREATE TABLE IF NOT EXISTS `categorii` (
`ID` varchar(255) NOT NULL,
`NAME` varchar(255) NOT NULL,
`PARENTID` varchar(255) DEFAULT NULL,
`IMAGE` mediumblob,
PRIMARY KEY (`ID`),
UNIQUE KEY `CATEGORIES_NAME_INX` (`NAME`),
KEY `CATEGORIES_FK_1` (`PARENTID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Salvarea datelor din tabel `categorii`
INSERT INTO `categorii` (`ID`, `NAME`, `PARENTID`, `IMAGE`) VALUES
('09328fb5-3b15-47c9-aea9-652f6b2e834e', 'Preparate Traditionale Romanesti', NULL, NULL),
('1734334f-f668-44f4-b214-e729bbaee225', 'Desert', NULL, NULL),
('6f00aeb2-fdd2-4030-9402-8d8674c83d17', 'Cafea', NULL, NULL),
('b7266659-c797-4fa2-b30f-0a1a18762c38', 'Preparate carne porc', NULL, NULL),
('b881b3fd-8693-44b1-be0c-fbe6781ce0c8', 'Bauturi', NULL, NULL),
('cb124507-bdc4-4dbe-8964-da7329f10816', 'Preparate carne pui', NULL, NULL),
('ccf19d7d-fcaf-4a86-bbf1-f4184186e036', 'Varietati culinare', NULL, NULL),
('d778e1b3-52a8-4179-8a11-49d8be9b8b8b', 'Preparate carne oaie', NULL, NULL),
('e2cc5490-c6cc-4eeb-b28b-f3c7941cbe85', 'Garnituri', NULL, NULL),
('efeed978-20c9-4d18-82e2-d11157250068', 'Salate', NULL, NULL),
('f0774fcc-3ba2-45da-8e65-81b8aa5ee75e', 'Specialitati', NULL, NULL),
('f75914a4-f46f-4f47-87b2-b45dd8509bf4', 'Aperitive', NULL, NULL),
('fa81870d-7cba-462f-8982-36c79f529eba', 'Ciorbe', NULL, NULL);
2. Structura de tabel pentru tabelul `clienți`
CREATE TABLE IF NOT EXISTS `clienți` (
`ID` varchar(255) NOT NULL,
`SEARCHKEY` varchar(255) NOT NULL,
`TAXID` varchar(255) DEFAULT NULL,
`NAME` varchar(255) NOT NULL,
`TAXCATEGORY` varchar(255) DEFAULT NULL,
`CARD` varchar(255) DEFAULT NULL,
`MAXDEBT` double NOT NULL DEFAULT '0',
`ADDRESS` varchar(255) DEFAULT NULL,
`ADDRESS2` varchar(255) DEFAULT NULL,
`POSTAL` varchar(255) DEFAULT NULL,
`CITY` varchar(255) DEFAULT NULL,
`REGION` varchar(255) DEFAULT NULL,
`COUNTRY` varchar(255) DEFAULT NULL,
`FIRSTNAME` varchar(255) DEFAULT NULL,
`LASTNAME` varchar(255) DEFAULT NULL,
`EMAIL` varchar(255) DEFAULT NULL,
`PHONE` varchar(255) DEFAULT NULL,
`PHONE2` varchar(255) DEFAULT NULL,
`FAX` varchar(255) DEFAULT NULL,
`NOTES` varchar(255) DEFAULT NULL,
`VISIBLE` bit(1) NOT NULL DEFAULT b'1',
`CURDATE` datetime DEFAULT NULL,
`CURDEBT` double DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `CUSTOMERS_SKEY_INX` (`SEARCHKEY`),
KEY `CUSTOMERS_TAXCAT` (`TAXCATEGORY`),
KEY `CUSTOMERS_TAXID_INX` (`TAXID`),
KEY `CUSTOMERS_NAME_INX` (`NAME`),
KEY `CUSTOMERS_CARD_INX` (`CARD`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Salvarea datelor din tabel `clienți`
INSERT INTO `clienți` (`ID`, `SEARCHKEY`, `TAXID`, `NAME`, `TAXCATEGORY`, `CARD`, `MAXDEBT`, `ADDRESS`, `ADDRESS2`, `POSTAL`, `CITY`, `REGION`, `COUNTRY`, `FIRSTNAME`, `LASTNAME`, `EMAIL`, `PHONE`, `PHONE2`, `FAX`, `NOTES`, `VISIBLE`, `CURDATE`, `CURDEBT`) VALUES
('b1eb3b41-b894-4249-916b-394416b447c9', '', '', 'ion dumitru', NULL, 'c148878385234', 0, NULL, NULL, NULL, NULL, NULL, NULL, 'ion ', 'dumitru', '[anonimizat]', '0238574159', NULL, NULL, '', b'1', NULL, NULL);
2.2.1.3 JAVA
Java este un limbaj de programare orientat – obiect, puternic tipizat, conceput de catre James Gosling la Sun Microsystems (acum filială Oracle) la începutul anilor ’90, fiind lansat în 1995. Cele mai multe aplicații distribuite sunt scrise în Java, iar noile evoluții tehnologice permi utilizarea sa și pe dispozitive mobile gen telefon, tabletă, agendă telefonică. Limbajul împrumută o mare parte din sintaxa de la C și C++, dar are un model al obiecteor mai simplu și prezintă mai puține facilități de nivel jos.
Java conține o mulțime de clase predefinite și metode care pot trata majoritatea cerințelor fundamentale ale unei aplicații. Unul dintre punctele forte ale lui Java este independența de platformă (mașină + sistem de operare). O aplicație Java scrisă pe o platformă poate fi dusă și rulată pe orice altă platformă. Facilitatea este deseori referită ca „write once, run anywhere”. Ea este dată de folosirea Mașiniii Virtuale Java – Java Virtual Machine (JVM). Aceasta rulează pe o mașină locală și interpreteaza codul de biți convertindu-l într-un cod mașină specific platformei. La compilarea unei aplicații într-un limbaj tradițional, cum ar fi C, codul scris de programator este convertit în limbajul mașină al platformei pe care are loc compilarea. Programul compilat poate fi rulat numai pe mașini care au același procesor (Intel), cu cea pe care s-a făcut compilarea.
Programele sursă Java sunt în fișiere cu extensia .java. Mașina virtuală Java asigură mediul de execuție pentru programele Java. JVM interpretează codul de biți în instrucțiuni mașină native ale mașinii pe care programul este în curs de rulare.
2.2.1.4 XML
Extensible Markup Language (XML) este un meta-limbaj de marcare recomandat de Consorțiul Web pentru crearea de limbaje de marcare, cum ar fi XHTML, RDF, RSS, MathML, SVG, OWL etc. Aceste limbaje formează familia de limbaje XML. Meta- limbajul XML este o simplificare a limbajului SGML (din care se trage si HTML) și a fost proiectat în scopul transferului de date între aplicații pe internet, descriere structură date. Prin date structurate înțelegem lucruri ca spreadsheets, liste de contacte, parametrii de configurație, tranzacții financiare sau desene tehnice. XML este un set de reguli (poți sa le consideri și convenții) pentru a crea formate text care îți permit să structurezi datele. XML nu este un limbaj de programare și nu trebuie sa fii programator pentru a-l învața și folosi. Cu XML, unui calculator îi este ușor să genereze și să citească datele, cât și să se asigure că structura datelor este corectă. XML evită problemele obișnuite ale limbajelor de programare: este extensibil, independent de platformă și suportă internaționalizarea și localizarea. Scopurile proiectate pentru XML sunt:
XML trebuie să fie simplu de utilizat pe Internet;
XML trebuie să suporte o mare varietate de aplicații;
Trebuie să fie ușor să fie scrise programe ce vor procesa documente XML;
Documentele XML trebuie să fie citibile de către utilizatori și clare într-un mod rezonabil;
Designul XML ar trebui să fie pregătit rapid;
Documentele XML trebuie să fie ușor de creat.
2.2.1.5 Interpretoare
Interpretorul este o tehnică software, un program special prin care se citește, se analizează și se execută (interpretează pe loc) comenzile și instrucțiunile dintr-un program sursă și anume pas cu pas, una după alta, fără o compilare anterioară. Eventualele erori de programare din programul sursă devin evidente abia în momentul când interpretorul încearcă să-l execute și evident se blochează. Interpretarea unui program sursă durează mai mult decât executarea programului (același) compilat. Aceasta se explică prin aceea că instrucțiunile unui program compilat sunt direct executate, în timp ce interpretorul citește și analizează mai întâi instrucțiunile, după care le poate executa.
2.2.1.5.1 NetBeans
NetBeans este un proiect open-source, cu o bază de utilizatori foarte mare, o comunitate în creștere și peste 100 de parteneri (în creștere!) din toată lumea. Caracteristici principale:
1. Open source
2. Suport pentru următoarele limbaje de programare: C, C + +, Java, PHP, Groovy, JavaScript etc
2. Capacitatea de a crea diferite tipuri de aplicații
Astăzi există două produse: NetBeans IDE și platforma NetBeans.
NetBeans IDE este un mediu de dezvoltare – un instrument pentru programatori, pentru scrierea, compilarea, testarea, depanarea, proiectarea și instalarea programelor. Este scris în Java – dar poate accepta orice limbaj de programare. De asemenea, există un număr imens de module pentru extinderea NetBeans IDE. NetBeans IDE este un produs gratuit, fără restricții legate de modul de utilizare.
Platforma NetBeans este o bază modulară și extensibilă, utilizată drept conector software pentru crearea aplicațiilor desktop puternice. Partenerii ISV oferă Plugin-uri cu valoare adăugată, care se integrează ușor în platformă și care pot fi utilizate, de asemenea, la dezvoltarea propriilor instrumente și soluții.
Ambele produse sunt open-source și gratuite pentru uz comercial și necomercial. Codul sursă este disponibil pentru reutilizare, conform Common Development and Distribution License (CDDL – Licența de distribuție și dezvoltare comună).
Figura 2.6 Modulul NetBeans IDE 7.4
2.2.1.5.2 WampServer
WampServer este un pachet de programe free software, open source și cross-platform web server, care constă în Apache HTTP Server, MySQL database și interpretare pentru scripturile scrise în limbajele de programare PHP și Perl. Pachetul de aplicații WampServer a fost folosit pentru a verifica funcționalitatea website-ului utilizând serverul Apache și stocarea informațiilor în baza de date cu ajutorul serverului MySQL , dar și editarea conținutului acesteia cu aplicația integrată phpMyAdmin. Acest program este lansat sub termenii licenței GNU și acționează ca un web server capabil de a servi pagini dinamice. WampServer este disponibil pentru Microsoft Windows, Linux, Solaris și este utilizat în principal pentru dezvoltarea proiectelor web. Acest software este util pentru crearea paginilor dinamice, utilizând limbaje de programare ca PHP, JSP. În mod oficial, designerii WampServer au avut intenția de a-l utiliza numai ca utilitar de dezvoltare, pentru a permite designerilor și programatorilor web să își testeze munca pe calculatoarele proprii, fără a avea nevoie de acces la Internet. Pentru a face posibil acest lucru, multe caracteristici de securitate importante sunt dezactivate în mod implicit. În practică, totuși, WampServer este uneori utilizat pentru a servi pagini web în World Wide Web. Un utilitar special este asigurat pentru a proteja prin parolă cele mai importante părți ale pachetului.
Figura 2.7 Modulul WampServer
Pentru a ne conecta la o bază de date trebuie să accesăm din meniul WampServer sectiunea phpMyAdmin.
PhpMyAdmin
PhpMyAdmin este un instrument gratuit open source, scris în PHP destinat să se ocupe de administrarea MySQL cu utilizarea unui browser web. Cu ajutorul lui phpMyAdmin se poate efectua diferite sarcini, cum ar fi crearea, modificarea și ștergerea unei baze de date, unor tabele, câmpuri sau rânduri, executarea de declarații SQL, sau gestionarea de utilizatori și permisiuni.
Figura 2.8 Modulul phpMyAdmin ecranul principal
Capitolul 3
Studiu de caz- Sistem informatic online pentru managementul restaurantelor
3.1 Structura bazei de date
3.1.1 Diagrama Entitate-Legătură
Subcapitolul prezintă structura din baza de date utilizată pentru dezvoltarea aplicației. Aceasta a fost creată utilizând comanda SQL: CREATE TABLE nume_tabel, precum și diagrama entitate-legătură.
Tabelele sunt următoarele:
Contabilitate cu următoarele atribute: id [int], sumă_bani [int] (cheia primară a entității), host [varchar], host_secventă [int], data_start [datetime], data_sfârșit [datetime];
Clienți cu următoarele atribute: id [int] (cheia primară a entității), nume [char], card [varchar], max_debit [varchar], adresă [varchar], adresă_2 [varchar], cod_poștal [varchar], oraș [varchar], nume [varchar], prenume [varchar], e-mail [varchar], telefon [int], data_curentă [datetime], debit_curent [double];
Locație depozit cu următoarele atribute: id [int] (cheia primară a entității), nume [varchar], adresă [varchar];
Plați cu următoarele atribute: id [int] (cheia primară a entității), primire [int], plata [varchar];
Produse cu următoarele atribute: id [int] (cheia primară a entității), nume [varchar], tip_cod [varchar], preț_cumpărare [int], preț_vânzare [int], categorie [varchar], cat_taxă [varchar], stoc_cost [int], stoc_volum [varchar], imagine [mediumblob];
Categ_produs cu următoarele atribute: id [int] (cheia primară a entității), produs [varchar], ordinea_categ [varchar];
Rol_angajat cu următoarele atribute: id [int] (cheia primară a entității), nume [varchar];
Stoc cu următoarele atribute: id [int] (cheia primară a entității), locație [varchar], produs [varchar], unitați [double];
Angajat cu următoarele atribute: id [int] (cheia primară a entității), nume [varchar], parolă [varchar], card [varchar], rol [varchar],imagine [mediumblob];
Figura 3.1 Diagrama entitate-legatura
3.2 Prezentarea soluției
3.2.1 Scop si exigențe funcționale
Se urmarește eficientizarea comandării unui meniu la un restaurant, folosindu-se tehnologii moderne existente.
Pentru ca aplicația să funcționeze este nevoie de:
Calculator, tableta;
Internet – opțional;
3.2.2 Identificarea actorilor și a cazurilor de utilizare
Actor extern:
Angajat: este el care inițializează cazurile de utilizare în vederea satisfacerii obiectivelor;
Actori interni:
Dezvoltator: este cel ce a creat elementele ce se regăsesc în aplicație și are în vedere dezvoltarea și mentenanța aplicației;
Descrierea cazurilor de utilizare
Logare angajat: acest caz începe în momentul în care angajatul introduce datele în formular și se termină atunci când a dat click pe butonul de autentificare;
Alege pagina: acest caz începe atunci s-a dat click pe pagina „Vânzări;
Caută meniul: acest caz începe atunci când intrat pe pagina „Vânzări”, se caută în lista de categorii și se găseste produsul căutat;
Alege meniul: acest caz începe atunci când produsul este găsit;
Finalizează meniul: acest caz începe atunci când se da click pe butonul egal;
Dezvoltator: acest caz aparține dezvoltatorului aplicației.
3.2.3 Diagrama cazurilor de utilizare
Figura 3.2 Diagrama cazurilor de utilizare
3.3 Implementare secțiune înregistrare
3.3.1 Înregistrarea
Înregistrarea presupune, în primul rând permiterea accesului pentru fiecare utilizator (angajat al restaurantului) la serviciile oferite de aplicație, de un sistem de administrare în functie de identitatea utilizatorului.
Înregistrarea se face pe baza unui nume de utilizator, pentru identificarea vizitatorului și pe baza unei parole. Pentru această aplicație înregistrarea se face prin adăugarea de nume si adăugarea unei parole care poate să fie de orice dimensiune care conține atât cifre cât si litere.
În continuiare este descris formularul de înregistrare al angajatului:
Figura 3.3: Formular de înregistrare
Nume: câmp de tip text, în care trebuie introdus numele;
Prin apasarea butonului „Parola” apare o fereastra în care v-a fi introdusă parola;
Parola contului: câmp de tip text, în care trebuie specificată parola;
Optional poate fi introdusa o poză a angajatului;
Butonul „OK”- prin apasarea acestui buton sunt salvate datele introduse anterior.
Dacă utilizatorul dorește să își schimbe parola, el poate accesa butonul „schimbare parola” introducandu-și o noua parolă.
Figura 3.4 Formular schimbare parola
Nume: câmp de tip text, în care trebuie introdus numele;
Prin apasarea butonului „Schimbare parola” apare o fereastra în care v-a fi introdusa parola;
Parola contului: câmp de tip text, în care trebuie specificată parola;
Optional poate fi introdusa o poză a angajatului;
Butonul „OK” – prin apasarea acestui buton sunt afișate datele introduse anterior.
3.3.2 Autentificarea
După ce v-ați înregistrat, când se selectează tipul de angajat „Administrator”, „Manager”, apare o fereastră în care se cere să fie introdusă parola. După ce au fost introduse corect datele, sunteți redirecționat pe pagina personală, în caz contrar va apărea un msesaj: „Warning! Parola invalidă! Încearcă iar…”
Figura 3.5 Formular de autentificare
3.3.3 Securitatea
Aplicația are momentan câteva limitări de proiectare, unele dintre probleme ar fi că datele introduse de angajați să fie incorecte și aceștia să întâmpine de fiecare dată mesaje de avertizare.
În acest sens, dacă angajatul și-a uitat parola, singura posibilitate de a avea din nou acces la serviciul de administrare, este să își creeze un nou cont. Momentan aplicația nu este prevazută cu un sistem prin care să genereze o nouă parolă în cazul uitării parolei vechi.
3.4 Implementarea sistemului de servire
Aplicația întampină angajatul cu o interfată prietenoasă. Acesta alegându-și din listă rolul pe care îl deține: administrator, manager sau simplu angajat.
Figura 3.6 Pagina principală
Dacă un angajat se loghează ca administrator îi va apărea formularul de autentificare prezentat în figura 3.5 si este direcționat pe pagina vânzări .
Figura 3.7 Pagina vânzări
În figura 3.7 este afișată pagina vânzări a administratorului. Accesând una din categoriile: aperitive, băuturi, cafea, ciorbe, desert, garnituri, preparate carne oaie, preparate carne porc, preparate carne pui, salate, specialități, el poate adăuga un meniu din acea categorie, afișandu-i-se numele produsului, numărul de unități, prețul și taxa.
Figura 3.8 Pagină meniu vânzări
Sunt prezentate categoriile de produse;
Sunt prezentate produsele care fac parte dintr-o anumită categorie;
Lista cu produsele selectate dintr-o anumită categorie;
Prin apasarea butonului de la cifra 4 se pot introduce clienți fideli. Aceștia pot beneficia de reducere de fidelitate.
În figura de mai jos este prezentat modul de introducere al clienților:
Figura 3.9 Fereastra introducere clienți
Buton de ștergere a chitanței;
Buton de împartire a chitanței;
Afișare număr și ora chitanței;
Buton de printare chitanță;
Buton de deschidere casa de marcat.
Prin apăsarea butonului , angajatul poate să comande același produs de mai multe ori, aplicația calculând pentru numărul de unități selectate.
Figura 3.10 Pagina număr unități produs
După ce comanda a fost făcută urmează nota de plată. Se selectează apasând pe bagnota de 50 Lei pentru a plăti suma de 34,43 Lei pe meniu, aplicația calculează și afisează restul comenzii. Clientul își poate achita nota de plată sub mai multe forme:
Plata cu cash;
Plata cec;
Plata cu voucher;
Plata card;
Figura 3.11 Pagina Plata comanda
În pagina „Clienți”, angajatul poate să introducă clienți fideli. Fiecarui client fidel i se afisează suma de bani pe care a cheltuit-o.
Figura 3.12 Pagina clienti
Numar de înregistrare client;
Numele clientului;
Numărul de înregistrare al cardului;
Note: aici se scrie numele și prețul produsului comandat;
Suma totală.
În pagina „Plăți” angajatul introduce banii care au intrat/ieșit în/din casa de marcat.
Figura 3.13 Pagina Plăti
În pagina „Contabilitate” apare afișat suma de bani care a intrat în casa de marcat, fiind afisată data și ora.
Figura 3.14 Pagina Contabilitate
În pagina „Taxe” angajatul pune o anumită taxă pe produsele din stoc.
Figura 3.15 Fereastra Taxe
În pagina „Editează vânzări” administratorul poate vizualiza lista cu chitanțe. Prin apăsarea butonului „Caută” se afișează o fereastră în care pot fi căutate chitanțe pe un interval de timp sau chitanțele unui client fidel.
În următoarea figură este prezentată căutarea chitanțelor:
Figura 3.16 Fereastra căutare chitanțe
În următoarea figură este afișată chitanță.
Figura 3.17 Fereastra chitanță
În pagina „Editează Vânzări” angajatul poate să anuleze o notă de plată în cazul în care un client renunță la un anumit produs. Angajatul selectează comanda și apasă butonul returnează, apoi apasă pe butonul returneaza tot, apoi pe butonul egal, apoi apasă pe butonul OK și returnarea este gata.
Figura 3.18 Fereastra returnare comandă
În cazul în care doi clienți fac acceași comandă, și doresc chitanțe individuale, aplicația este creată pentru acest lucru.
Apăsând butonul apare fereastra „Împarte chitanța”.
Figura 3.19 Fereastra împarte chitanță
Buton de selectare a clienților;
Buton de împartire a chitanței;
Salvare date.
În pagina „Clienți” din sectiunea Administrare, angajatul introduce clienții fideli.
Figura 3.20 Fereastra Clienți
Număr înregistrare client;
Număr de căutare client;
Nume client;
Număr de înregistrare al cardului;
Suma totală de plată;
Date de contact ale clientului;
Adresa clientului;
Note: aici se scrie numele si prețul produsului comandat.
În pagina „Categorii” din secțiunea Stoc, angajatul introduce categoriile produselor oferite de restaurant.
Figura 3.21 Fereastra Categorii
Numele categoriei;
Se afișează categoria introdusa la nume prin apăsarea butonului „Adaugă în catalog”;
Se introduce o poză;
Lista cu categorii;
Prin apăsarea butonului „Adaugă în catalog” se adaugă categorii în lista de categorii;
Prin apăsarea butonului „Șterge din catalog” se șterge categoriile din lista de categorii.
În pagina „Produse” din secțiunea Stoc, angajatul produsele pentru fiecare categorie: desert, cafea, preparate carne porc, bauturi, preparate carne pui, preparate carne oaie, garnituri, salate, specialitati, aperitive, ciorbe.
Figura 3.22 Fereastra Produse
Numele produsului;
Lista cu produse;
General: sunt afișate prețul de cumpărare și prețul de vânzare al produsului;
Stoc: se afișeaza volumul stocului;
Se introduce poza.
În pagina „Jurnalul stocului” din secțiunea Stoc, angajatul introduce numărul de unitați pentru fiecare produs.
Figura 3.23 Fereastra Jurnalul stocului
În pagina „Cash pe utilizator” din secțiunea Vânzări Administrare, un angajat poate vizualiza ce sume de bani a încasat la un interval de timp.
Figura 3.24 Ferastra Cash pe utilizator
Selectare data de început a căutării ;
Selectare data de sfârșit a căutării;
Prin apăsarea butonului „Executare raport” se afișează lista cu rezultate;
Lista cu rezultatele căutării.
În pagina „Depozite” din secțiunea Întretinere, angajatul introduce depozite de unde se aprovizionează pentru restaurant.
Figura 3.25 Fereastra Depozite
Concluzii
Scopul acestui proiect a fost proiectarea și implementarea unei aplicații Java folosite în managementul restaurantelor cu ajutorul software-ului NetBeans 7.4. Software-ul NetBeans s-a dovedit a fi un instrument eficient și practic pentru dezvoltarea aplicației.
Pentru aplicația Java „Sistem informatic online pentru managementul restaurantelor” am stabilit o serie de obiective care au acționat precum niste linii directoare în timpul procesului de implementare al aplicației. La sfârșitul procesului toate obiectivele au fost atinse.
A fost implementată o modalitate ușoară de căutare și navigare printre documentele aplicației, astfel încât utilizatorul să poată accesa și găsi într-un mod eficient și practic orice material căutat.
S-a reușit dezvoltarea unei aplicații Java cu o interfață utilizator prietenoasă care să il ajute pe utilizator în timpul folosirii aplicației.
Comparativ cu alte aplicații Java folosite în domeniul managementului restaurantelor, un avantaj al aplicației „Sistem informatic online pentru managementul restaurantelor” este dat de modalitățile de căutare care oferă soluții superioare pentru găsirea comenzilor dorite, cât și introducerea într-o baza de date a unor clienți fideli cu scopul de a le acorda anumite reduceri la diferite produsuri.
Comunicarea cu utilizatorul este un alt aspect care ar putea fi imbunatațit. O primă etapă ar fi introducerea unui sistem de evaluare, utilizatorul va putea să evalueze informatiile oferite despre un anumit produs. Următoarea etapă ar fi acceptarea de sugestii din partea angajatilor, administratorul va avea capacitatea de a propune adăugarea unei categorii de produse în aplicație.
Domeniul aplicațiilor pentru managementul restaurantelor este un domeniu aflat în plină evoluție, sistemele și soluțiile informatice salvează la ora actuală mult timp în aproape oricare domeniu.
Glosar de termeni
Un browser sau un navigator este o aplicație software (program) ce permite utilizatorilor să afișeze text, video, muzică, și alte informații situate pe o pagină din World Wide Web, dar și să comunice cu furnizorul de informații și chiar și ei intre ei.
Termenul World Wide Web, abreviat WWW sau și www, numit scurt și web, care în engleză înseamnă „pânză” (de păianjen); de multe ori este confundat cu „rețea” (net) și se pronunță /ˌwɝːld waɪd wɛb/ respectiv /wɛb/ (v. AFI), iar pe românește [ pron. ŭeb ] , este un sistem de documente și informatii de tip hipertext legate ele între ele care pot fi accesate prin rețeaua mondială de Internet.
Un server este un program de aplicație care furnizează servicii altor aplicații (numite aplicații client), aflate pe același calculator sau pe calculatoare diferite.
FTP (File Transfer Protocol) este un protocol server/client utilizat pentru accesul la fișiere aflate pe servere din rețelele de calculatoare particulare sau din Internet.
ARPANET a fost la origini un proiect american care a fost publicat in 1967 (Lawrence Roberts).
ETHERNET este denumirea unei familii de protocoale de rețele de calculatoare bazată pe transmisia cadrelor și utilizată la implementarea rețelelor locale de tip LAN. Numele provine de la cuvantul englez ether (tradus: eter), despre care multa vreme s-a screzut că este mediul în care acționau și comunicau zeitățile.
ANSI este o organizație privată non-profit, care supraveghează dezvoltarea de standarde voluntare consens pentru produse, servicii, sisteme.
TELNET este un protocol de rețea care se foloșeste în Internet precum și în rețele de calculatoare tip LAN .
Bibliografie
Cristian Frăsineanu – Curs practic de programare pe platforma Java, Editura Matrix Rom, 2005
Wikipedia (http://ro.wikipedia.org/wiki/XAMPP)
Wikipedia (http://ro.wikipedia.org/wiki/Internet)
Wikipedia (http://ro.wikipedia.org/wiki/Www)
Wikipedia (http://ro.wikipedia.org/wiki/Interpretor)
Wikipedia (http://ro.wikipedia.org/wiki/Browser)
Wikipedia (http://ro.wikipedia.org/wiki/SQL)
Wikipedia (http://ro.wikipedia.org/wiki/MySQL)
Wikipedia (http://ro.wikipedia.org/wiki/Limbajul_Java)
Wikipedia (http://ro.wikipedia.org/wiki/HTML)
Wikipedia (http://ro.wikipedia.org/wiki/Url)
Wikipedia (http://ro.wikipedia.org/wiki/Protocol_de_rețea)
Wikipedia (http://ro.wikipedia.org/wiki/Protocol_de_control_al_transmisiei)
Wikipedia (http://ro.wikipedia.org/wiki/IPX)
Wikipedia (http://en.wikipedia.org/wiki/AppleTalk)
Anexe
Cod sursă pentru Înregistrare/Autentificare:
public class JEditorPassword extends JEditorText {
private static final char ECHO_CHAR = '*';
/** Creaza o noua instanta JEditorPassword */
public JEditorPassword() {
super();
}
protected final int getMode() {
return EditorKeys.MODE_STRING;
}
protected int getStartMode() {
return MODE_Abc1;
}
protected String getTextEdit() {
StringBuffer s = new StringBuffer();
s.append("<html>");
s.append(getEcho(m_svalue));
if (m_cLastChar != '\u0000') {
s.append("<font color=\"#a0a0a0\">");
s.append(ECHO_CHAR);
s.append("</font>");
}
s.append("<font color=\"#a0a0a0\">_</font>");
return s.toString();
}
public final String getPassword() {
String sPassword = getText();
return sPassword == null ? "" : sPassword;
}
protected String getTextFormat() throws BasicException {
return "<html>" + getEcho(m_svalue);
}
private String getEcho(String sValue) {
if (sValue == null) {
return "";
} else {
char[] c = new char[sValue.length()];
for(int i = 0; i < sValue.length(); i++) {
c[i] = ECHO_CHAR;
}
return new String(c);
}
}
}
Cod sursă pentru Schimbare parolă:
public class JDlgChangePassword extends javax.swing.JDialog {
private String m_sOldPassword;
private String m_sNewPassword;
private JDlgChangePassword(java.awt.Frame parent, boolean modal) {
super(parent, modal);
}
private String init(String sOldPassword) {
initComponents();
getRootPane().setDefaultButton(jcmdOK);
m_sOldPassword = sOldPassword;
m_sNewPassword = null;
//arata();
setVisible(true);
return m_sNewPassword;
}
private static Window getWindow(Component parent) {
if (parent == null) {
return new JFrame();
} else if (parent instanceof Frame || parent instanceof Dialog) {
return (Window)parent;
} else {
return getWindow(parent.getParent());
}
}
public static String showMessage(Component parent, String sOldPassword) {
Window window = getWindow(parent);
JDlgChangePassword myMsg;
if (window instanceof Frame) {
myMsg = new JDlgChangePassword((Frame) window, true);
} else {
myMsg = new JDlgChangePassword((Dialog) window, true);
}
return myMsg.init(sOldPassword);
}
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jcmdOK = new javax.swing.JButton();
jcmdCancel = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jtxtPasswordOld = new javax.swing.JPasswordField();
jLabel2 = new javax.swing.JLabel();
jtxtPasswordNew = new javax.swing.JPasswordField();
jtxtPasswordRepeat = new javax.swing.JPasswordField();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(AppLocal.getIntString("title.changepassword"));
setResizable(false);
jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
jcmdOK.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/button_ok.png")));
jcmdOK.setText(AppLocal.getIntString("Button.OK"));
jcmdOK.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jcmdOKActionPerformed(evt);
}
});
jPanel2.add(jcmdOK);
jcmdCancel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/button_cancel.png")));
jcmdCancel.setText(AppLocal.getIntString("Button.Cancel"));
jcmdCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jcmdCancelActionPerformed(evt);
}
});
jPanel2.add(jcmdCancel);
getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH);
jPanel1.setLayout(null);
jPanel1.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(5, 5, 5, 5)));
jLabel1.setText(AppLocal.getIntString("label.passwordold"));
jPanel1.add(jLabel1);
jLabel1.setBounds(20, 20, 120, 14);
jPanel1.add(jtxtPasswordOld);
jtxtPasswordOld.setBounds(140, 20, 180, 20);
jLabel2.setText(AppLocal.getIntString("label.passwordnew"));
jPanel1.add(jLabel2);
jLabel2.setBounds(20, 50, 120, 14);
jPanel1.add(jtxtPasswordNew);
jtxtPasswordNew.setBounds(140, 50, 180, 20);
jPanel1.add(jtxtPasswordRepeat);
jtxtPasswordRepeat.setBounds(140, 80, 180, 20);
jLabel3.setText(AppLocal.getIntString("label.passwordrepeat"));
jPanel1.add(jLabel3);
jLabel3.setBounds(20, 80, 120, 14);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-416)/2, (screenSize.height-205)/2, 416, 205);
}
// </editor-fold>
private void jcmdCancelActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}
private void jcmdOKActionPerformed(java.awt.event.ActionEvent evt) {
if (new String(jtxtPasswordNew.getPassword()).equals(new String(jtxtPasswordRepeat.getPassword()))) {
if (Hashcypher.authenticate(new String(jtxtPasswordOld.getPassword()), m_sOldPassword)) {
m_sNewPassword = Hashcypher.hashString(new String(jtxtPasswordNew.getPassword()));
dispose();
} else {
JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.BadPassword")));
}
} else {
JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.changepassworddistinct")));
}
}
// Declararea variabilelor nu a suferit mofificari
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JButton jcmdCancel;
private javax.swing.JButton jcmdOK;
private javax.swing.JPasswordField jtxtPasswordNew;
private javax.swing.JPasswordField jtxtPasswordOld;
private javax.swing.JPasswordField jtxtPasswordRepeat;
// Sfarsit declarare de variabile
}
Bibliografie
Cristian Frăsineanu – Curs practic de programare pe platforma Java, Editura Matrix Rom, 2005
Wikipedia (http://ro.wikipedia.org/wiki/XAMPP)
Wikipedia (http://ro.wikipedia.org/wiki/Internet)
Wikipedia (http://ro.wikipedia.org/wiki/Www)
Wikipedia (http://ro.wikipedia.org/wiki/Interpretor)
Wikipedia (http://ro.wikipedia.org/wiki/Browser)
Wikipedia (http://ro.wikipedia.org/wiki/SQL)
Wikipedia (http://ro.wikipedia.org/wiki/MySQL)
Wikipedia (http://ro.wikipedia.org/wiki/Limbajul_Java)
Wikipedia (http://ro.wikipedia.org/wiki/HTML)
Wikipedia (http://ro.wikipedia.org/wiki/Url)
Wikipedia (http://ro.wikipedia.org/wiki/Protocol_de_rețea)
Wikipedia (http://ro.wikipedia.org/wiki/Protocol_de_control_al_transmisiei)
Wikipedia (http://ro.wikipedia.org/wiki/IPX)
Wikipedia (http://en.wikipedia.org/wiki/AppleTalk)
Anexe
Cod sursă pentru Înregistrare/Autentificare:
public class JEditorPassword extends JEditorText {
private static final char ECHO_CHAR = '*';
/** Creaza o noua instanta JEditorPassword */
public JEditorPassword() {
super();
}
protected final int getMode() {
return EditorKeys.MODE_STRING;
}
protected int getStartMode() {
return MODE_Abc1;
}
protected String getTextEdit() {
StringBuffer s = new StringBuffer();
s.append("<html>");
s.append(getEcho(m_svalue));
if (m_cLastChar != '\u0000') {
s.append("<font color=\"#a0a0a0\">");
s.append(ECHO_CHAR);
s.append("</font>");
}
s.append("<font color=\"#a0a0a0\">_</font>");
return s.toString();
}
public final String getPassword() {
String sPassword = getText();
return sPassword == null ? "" : sPassword;
}
protected String getTextFormat() throws BasicException {
return "<html>" + getEcho(m_svalue);
}
private String getEcho(String sValue) {
if (sValue == null) {
return "";
} else {
char[] c = new char[sValue.length()];
for(int i = 0; i < sValue.length(); i++) {
c[i] = ECHO_CHAR;
}
return new String(c);
}
}
}
Cod sursă pentru Schimbare parolă:
public class JDlgChangePassword extends javax.swing.JDialog {
private String m_sOldPassword;
private String m_sNewPassword;
private JDlgChangePassword(java.awt.Frame parent, boolean modal) {
super(parent, modal);
}
private String init(String sOldPassword) {
initComponents();
getRootPane().setDefaultButton(jcmdOK);
m_sOldPassword = sOldPassword;
m_sNewPassword = null;
//arata();
setVisible(true);
return m_sNewPassword;
}
private static Window getWindow(Component parent) {
if (parent == null) {
return new JFrame();
} else if (parent instanceof Frame || parent instanceof Dialog) {
return (Window)parent;
} else {
return getWindow(parent.getParent());
}
}
public static String showMessage(Component parent, String sOldPassword) {
Window window = getWindow(parent);
JDlgChangePassword myMsg;
if (window instanceof Frame) {
myMsg = new JDlgChangePassword((Frame) window, true);
} else {
myMsg = new JDlgChangePassword((Dialog) window, true);
}
return myMsg.init(sOldPassword);
}
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jcmdOK = new javax.swing.JButton();
jcmdCancel = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jtxtPasswordOld = new javax.swing.JPasswordField();
jLabel2 = new javax.swing.JLabel();
jtxtPasswordNew = new javax.swing.JPasswordField();
jtxtPasswordRepeat = new javax.swing.JPasswordField();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(AppLocal.getIntString("title.changepassword"));
setResizable(false);
jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
jcmdOK.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/button_ok.png")));
jcmdOK.setText(AppLocal.getIntString("Button.OK"));
jcmdOK.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jcmdOKActionPerformed(evt);
}
});
jPanel2.add(jcmdOK);
jcmdCancel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/button_cancel.png")));
jcmdCancel.setText(AppLocal.getIntString("Button.Cancel"));
jcmdCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jcmdCancelActionPerformed(evt);
}
});
jPanel2.add(jcmdCancel);
getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH);
jPanel1.setLayout(null);
jPanel1.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(5, 5, 5, 5)));
jLabel1.setText(AppLocal.getIntString("label.passwordold"));
jPanel1.add(jLabel1);
jLabel1.setBounds(20, 20, 120, 14);
jPanel1.add(jtxtPasswordOld);
jtxtPasswordOld.setBounds(140, 20, 180, 20);
jLabel2.setText(AppLocal.getIntString("label.passwordnew"));
jPanel1.add(jLabel2);
jLabel2.setBounds(20, 50, 120, 14);
jPanel1.add(jtxtPasswordNew);
jtxtPasswordNew.setBounds(140, 50, 180, 20);
jPanel1.add(jtxtPasswordRepeat);
jtxtPasswordRepeat.setBounds(140, 80, 180, 20);
jLabel3.setText(AppLocal.getIntString("label.passwordrepeat"));
jPanel1.add(jLabel3);
jLabel3.setBounds(20, 80, 120, 14);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-416)/2, (screenSize.height-205)/2, 416, 205);
}
// </editor-fold>
private void jcmdCancelActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}
private void jcmdOKActionPerformed(java.awt.event.ActionEvent evt) {
if (new String(jtxtPasswordNew.getPassword()).equals(new String(jtxtPasswordRepeat.getPassword()))) {
if (Hashcypher.authenticate(new String(jtxtPasswordOld.getPassword()), m_sOldPassword)) {
m_sNewPassword = Hashcypher.hashString(new String(jtxtPasswordNew.getPassword()));
dispose();
} else {
JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.BadPassword")));
}
} else {
JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.changepassworddistinct")));
}
}
// Declararea variabilelor nu a suferit mofificari
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JButton jcmdCancel;
private javax.swing.JButton jcmdOK;
private javax.swing.JPasswordField jtxtPasswordNew;
private javax.swing.JPasswordField jtxtPasswordOld;
private javax.swing.JPasswordField jtxtPasswordRepeat;
// Sfarsit declarare de variabile
}
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 Online Pentru Managementul Unui Restaurant (ID: 150502)
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.
