SPECIALIZAREA INFORMATICĂ ECONOMICĂ LUCRARE DE DISERTAȚIE Platforma online de cumparaturi pentru S.C. SYSNEC BLUE S.R.L Conducător științific Lector…. [308052]
[anonimizat]
S.C. SYSNEC BLUE S.R.L
Conducător științific
Lector. Univ. Dr. Ionel IACOB
Autor
Necula Lucian Marian
BUCUREȘTI 2017
CUPRINS
INTRODUCERE
CAPITOLUL 1 [anonimizat], [anonimizat] 2 TEHNOLOGII SI LIMBAJE DE PROGRAMARE UTILIZATE IN APLICATIE
Sisteme de gestiune a bazelor de date
Proiectarea unei baze de date
SQL ca limbaj de programare
Limbajul PHP
Serverul pentru WEB APACHE
HTTP si CSS
LIMBAJUL JAVA VS JAVA SCRIPT
CAPITOLUL 3 ARHITECTURA PROGRAMULUI
Descrierea componentelor
Functiile JavaSCRIPT
Structuri de baze de date și tabele
CAPITOLUL 4 PREZENTAREA APLICATIEI
CAPTOLUL 4 UTILITATEA APLICATIEI SI EFICIENTA ACESTEIA
INTRODUCERE
Comertul online prin promovarea diferitelor categorii de afaceri se afla inr-o continua dezvoltare. Prin definitie comertul online se defineste ca o vanzare si cumparare de produse si servicii pe internet.
Pentru a se putea realiza comertul online avem nevoie de 4 puncte vitale:
Un client
Un comerciant
Un sistem tranzactional
Un dispecer de plati
Clientul trebuie sa detina un echipament it (telefon, laptop, tableta, calculator) conectat la internet printro retea de comunicatii conectata la internet.
Comerciatul trebuie sa detina o platforma hardware si software ce gazduieste o gama de produse si servicii ce poate fi actualizata .
Sistemul tranzactional format dintr-o platforma hardware si software pentru a [anonimizat], memorarea comenzilor si alte obiective pentru sustinerea activitatii firmei implicte in procesul de tranzactionare.
Dispecer de plati (Gateway Payment) platforma software pentru tranzactionarea sumelor de bani alocate produselor si serviciilor.
Scopul aplicatiei il constitue promovarea si vanzarea produselor online folosind o baza de date de catre administratorii unui magazin online. Prelucrarea si onorarea comenzilor se va face de catre administratorii magazinului. [anonimizat].
CAPITOLUL 1 ANALIZA SI PREZENTAREA SISTEMULUI EXISTENT
1.1 [anonimizat]
S.C. SYSNEC BLUE S.R.L. este o societate cu raspundere limitata.
Prin cererea de inregistrare nr. 14567 din data de 04.07.2016 societatea a fost inmatriculata prin declaratie pe proprie raspundere cu numele S.C. SYSNEC BLUE S.R.L. La ONRC s-a [anonimizat]. Societatea a fost inregistrata la Registrul Comertului cu nr j10/708/2016. In data de 30.08.2016 Ministerul Finantelor Publice a deliberat DECIZIA privint inregistrarea societatii in scopuri de t.v.a. atribuindui codul de indentificare fiscala RO36278696.
[anonimizat]-gros.
Societatea își are sediul social si punctul de lucru in Buzău pe strada Alexandru Marghiloman la nr 29 .
Principalele criterii care definesc societatea comerciala pe piata sunt:
Asumarea responsabilitatilor sociale si economice
Raport superior intre pret si calitate
Dezvolarea prin imbunatatirea serviciilor dorintelor clientului
Comunicarea si ndrumarea clientului pentru a alege cele mai bune solutii
1.2 ACTIVITATI DESFASURATE IN CADRUL UNITATII ECONOMICE
Principalele activitati desfasurate in unitatea economica:
Vanzarea produselor en-gros si en-detail
Promovarea tuturor produselor de pe standuri
Asigurarea consultantei pentru client asupra produselor
Depozitarea acestora in cele mai bune conditii de pastrare
Asigurarea suportului logistic la comenzile en-gros pentru livrarea produselor
Vanzarea produselor online si distribuirea acestuia catre client
1.3 STUDIUL SISTEMULUI DE CONDUCERE
Sistemul de conducere este bazat pe o structura organizatorica de tip piramida ce asigura buna desfasurare a activitatii magazinului.
Societatea are un numar de 28 de angajati dintre care 5 sunt cu rolul de decizii de conducere cheie a afacerii.
1.4 ORGANIGRAMA S.C. SYSNEC BLUE S.R.L.
Director general
Stabileste strategiile de dezvoltare a societatii
Monitorizeaza activitatea intregii activitati la nivel de coducere
Directorul economic
Responsabil pentru activiatea financiar-contabila a intregii societati.
Responsabil pentru efectuarea platilor catre furnizori fara a depasi termenul scadent.
Lunar si trimestrial va intocmi bilantul contabil privind situatia financiara.
Respunsabil de plata angajatilor societatii.
Director de vanzari
Elaborarea planului de vanzari, profit, pierderi.
Raspunde se activitatea angajatilor din cadrul compartimentului de vanzari.
Analizeaza tendintele de piata propunand directorului general politica de preturi.
Ia parte cu dirctorul general la intalnirile cu furnizorii de produse si servicii pentru negocierea ofertelor din piata.
Se consulta cu managerul pentru adoptarea de noi politici de vanzari si marketing.
Director logistic
Asigura monitorizarea activitatilor de aprovizionare si transport produse.
Raspunde de activitatea angajatilor din cadrul compartimentului logistic.
Stabileste activitati de coordonare din punct de vedere administrativ al magazinului.
Ofera consultanta personalului din conducere in ceea ce priveste activitatile de management ale depozitarii stocurilor, logisticii si a serviciilor de transport.
Aduce propuneri de organizare si management conducerii din care face parte.
Director HR
Asigura politicile de elaborare si implementare de resurse umane necesare (angajari, promovari, scolarizare la locul de munca, organizare in relatiile de munca).
Coordoneaza si propune evaluarea angajatilor in functie de vechime, experieta si target atins in vederii promovarii acestora.
Responsabil in activitatile de securitatea si sanatate in munca
In domeniul PSI si protectiei in munca realizeaza activitatea de instruire.
DIRECTORUL GENERAL are in subordine 5 angajati:
Secretara
Un Director HR
Un Director Logistic
Un Director Vanzari
Un Director Economic
SECRETARA – programeaza si tine evidenta intalnirilor personalului de conducere.
DIRECTORUL DE VANZARI are in subodine 5 angajati:
Un manager
Patru agenti de vanzari
DIRECTORUL LOGISTIC are in subordine 9 angajati:
Un manager logistic
Patru merchandiseri
Patru soferi
DIRECTORUL ECONOMIC are in subordine 7 angajati:
Un contabil
Patru casieri
DIRECTORUL HR are in subordine 1 angajat:
secretara
CONTABILUL – opereaza si contabilizeaza toate facturile emise catre clienti. Tine evidenta in registrul de casa al incasarilor. Face plata facturilor furnizorilor interi si externi.
CASIERII – colecteaza incasarile in numerar si prin card a cientilor pe toate categoriile de produse. Elibereaza bonil fiscal aferent fiecarui client. Tine evidenta valorilor monetare din casa. Preda incasarile contabilului.
SOFERII- asigura transportul si integritatea marfurilor comandate cu livrare la domiciliu de catre clienti.
MERCHANDISERII- au ca atributii aranjarea si aprovizionarea rafturilor si stturilor din magazin. Preluarea comezilor de la clienti si distribuirii acestora managerului de vanzari si logistic.
AGENTII DE VANZARI – promoveaza produsele de la standuri si rafturi clientilor pentru a e cumpara. Stabilesc preturile de la raft propuse de manager si directorul de vanzari.
MANAGERUL DE VANZARI- coordoneaza activitatea agentilor de vanzari si raporteaza directorului eventualele probleme aparute cat si activitatea din magazin.
MANAGERUL LOGISTIC- are responsabilitatea raportarii catre superiori activitatea ce se desfasoara in plan logistic din cadrul societatii.
1.6 Componenta sistemului informational condus al S.C. SYSNEC BLUE S.R.L.
Departamentul ce tine de Logistica
Departamentul ce tine de Vanzari
Departamentul ce tine de HR
Departamentul ce tine de Economic
1.7 Organizarea, studiul si analiza sistemului informational
Proceduri de prelucrare si curentele informationale:
Comanda
Lista ce se cere unui anumit furnizor, in care trebuie specificat pretul, cantitatea, termenul de livrare, calitatea produsului si garantia acestuia.
Registrele de evidenta pentru efectuarea comenzilor
In acest registru se specifica numele clientului, suma valorii produselor ce le-a comandat, data si numarul de ordine.
Registrul de predare si primire a clientului ce a efectuat comenzile
Acest document este detinut de agentii de vanzari cand primesc comenzile. Mai contine si numele agentului care a inscris comanda, numele clientului ce a facut comanda impreuna cu semnatura acestuia.
Fisa de magazie/depozit
Aici se detine evidenta unui anumit tip de produs, cantitatea, data si documentele pe baza carora s-au facut intrarile si iesirile.
Fișa se va completa de gestionar – numele unității, denumirea produsului, data intrării, numărul documentului de intrare, felul documetului, cantitatea intrărilor, cantitatea iesirilor, numarul produselor ramase pe stoc, data și semnătura operării in fișă.
Factura
Folosita ca document pentru cumpararea vanzarea produselor in si din magazin.
Factura conține urmatoarele date
Detalii completate de furnizor – nume furnizor, cod de identificare fiscală, sediul societații, contul bancar, banca unde are contul, nr de la registrul comerțului, numarul facturii, data când a fost emisă,numarul avizului de insoțire, cota t.v.a -taxa pe valoarea adăugată, denumirea produselor vandute, numarul acestora, prețul total fără t.v.a, prețul unitar fără t.v.a., valoarea t.v.a.-ului pe fiecare produs, valoarea totala a t.v.a.-ului, valoarea totală a produselor insumate fara t.v.a.,
Detalii completate de cumpărător – nume comparator, nr inregistrare de la registrul comerțului, cod de indentificare fiscală, banca cumparatorului, contul bancar al cumpărătorului, semnătura datele personale și numele delegatului.
Aviz de insotire a marfurilor expediate
Serveste la insotirea produsului pe durata transportului.
Detalii completate de catre furnizor – numele furnizorului, numarul de inregistrare la registrul comerțului, codul de identificare fiscală, sediul societății, contul bancar, capitalul social, numarul avizului, seria acestuia, data emiterii, cantitatea de produse livrată fara t.v.a, denumirea produselor livrate, valoarea produselor livrate totale, semnătura și stampila furnizorului.
Detalii completate de compărător – numele cumpărătorului, numarul de inregistrare la registrul comerțului, codul de identificare fiscală, contul bancar, denumirea unitații bancare, semnătura cumpărătorului la livrarea produselor, datele persoanei delegate din partea cumpărătorului.
Contractul aferent vânzării și cumpărării produselor
Se defineste ca un document ce are valoare juridică intre s.c. sysnec blue s.r.l. și oricare cumpărător.
Dotari tehnice S.C. SYSNEC BLUE S.R.L.
Societatea detine 20 de laptopuri ce au urmatoarele caracteristici de performata:
Modelul procesorului este AMD
Memoria RAM este de 4GB
HDD-ul cu o capacitate de 2 T
Sistem de operare pe laptopuri WINDOWS 7
Imprimanta HP MP 5100
1.8 Perfectionarea, promovarea si extinderea afacerii
S.C. SYSNEC BLUE S.R.L pentru a se putea extinde si a se face cunoscuta pe piata clientilor sai are nevoie de o platforma web prin intermediul careia isi poate creste vanzarile online. Pe site vor fi distribuite toate produsele comercializate facand posibila comandarea acestora si plata online.
CAPITOLUL 2 TEHNOLOGII SI LIMBAJE DE PROGRAMARE UTILIZATE PENTRU APLICATIE
2.1 SGBD- SISTEME DE GESTIUNE A BAZELOR DE DATE
Cand spunem baze de date ne referim la o posibilitate de stocare a datelor pe un suport de stocare, avand posibilitatea de a o accesa rapid. Ea poate fi stocata intr-un singur fisier sau mai multe in functie de tipul si marimea ei. Sistemul in sine este folosit pentru a vizualiza o structura de date centralizata pentru a fi accesata de unul sau mai multi utilizatori. Un S.G.B.D poate limita datele pe care le vede un utilizator.
Un sistem S.G.B.D contine:
Limbaj de descriere date (LDD)- in care sunt descrise structura, componenta, relatiile aferente dintre acestea, cat si drepturile de acces ale utilizatorilor la baza de date.
Limbajul de cereri ( LD)- in care se scriu programele necesare in vederea prelucrarii datelor
Limbajul de prelucare date (LPD) ce poate contine operatiuni editare, upload, raportare statistici.
Un administrator de baze de date are printre atributii urmatoarele sarcini:
Sa idendifice informatiile comune pentru a putea alcatui un sistem aplicatie eficienta
Utilizatorii sa poata folosi datele simultan
Sa asigure o standardizare cat mai buna a informatiilor
Sa compuna un sistem de securitate integru pentru utilozatori cat mai eficient
Bazele de date pot fi exploatate de catre doua tipuri de utilizatori astfel:
Utilizatori ce nu detin cunostinte de programare ce pot gestiona baza de date
Programatori ce compun limbajul de cereri pentru aplicatii, urmand ca ulterior sa fie memorate in fisiere program, iar accesarea datelor se va face prin excutia lansarii numelor acestora.
Un administrator de baze de date contureaza schema , modul in care aceste date ar putea fi memorate la nivel fizic, acesul utilizatorilor, permisiunile acestora, modul in care acestea pot fi modificate, backup-ul acesteia, restabilirea sistemului in caz de erori.
2.2 PROIECTAREA UNEI BAZE DE DATE PENTRU SITE
In realizarea unei aplicatii S.G.B.D un proiectant trebuie sa organizeze in tabele informatiile. O baza de date simpla se poate gasi intrun singur tabel, fiecare rand purtand o inregistrare iarfiecare coloana avand denumirea de camp.
Pentru a realiza baza trebuie sa se tina cont de anumite considerente:
Informatiile redundante (dubluri) pot genera erori. Informatiile incorecte genereaza rapoarte incorecte.
Caracterul complet al informatiilor si corectitudinea acestora.
Intrun proces de proiectare se va tine cont de urmatoarele:
Scopul pentru conceperea bazei de date
Colectarea informatiilor necesare
Organizarea acestora
Reducerea redundantelor
Asigurarea sincronizarii atunci cand folosesc mai multi utilizatori acceseaza simultan aplicatia, distribuirea in timp real.
Asigurarea standardizarii informatiilor si integritatea lor.
Specificarea cheilor primare. Aceasta cheie primara se va alege pentru fiecare tabel. O coloana este constituita dintro cheie primara, utilizata pentru a identifica si defini fiecare rand intrun mod unic.
2.3 SQL ca limbaj de programare.
MySQL este cel mai des intalnit limbaj de programare. Este usor de inteles si folosit intro varietate de aplicatii cheie bine cotate pe piata cum ar fi Facebook, Twitter, Instagram, Youtube, Yahoo si multe alte asemenea. Mai multe organizatii internationale ce au o evolutie rapida in crestere precum Google, Alcatel, Zapp, sunt bazate pe acesta platforma deoarece ofera o gama variata de solutii pentru site-uri cu capacitati mari de date, sisteme critice de business, la un cost calitate pret redus. Acesta este distribuit sub forme Open Source dar si sub licente comerciale. Poate fi aplicat pe platforma Windows cat si Unix cu nenumarate posibilitati de modificare a codului sursa. Pentru a avea acces la bazele de date utilizatorul va trebui sa se autentifice facand MySQL sigur. Cu ajutorul acestui program un utilizator sau programator poate face:
Modificari in structura
Configurarea valorilor si modificarea sistemului pentru o mai buna securizare
Acordare de permisiuni si drepturi utilizatorilor
Informatiile din bazele de date pot fi interogate
Actualizari in de continut manual sau automat
In linia de comanda printre cele mai utilizate expresii sunt:
Pentru expunerea continutului SHOW DATABASE
Utilizarea unei baze din lista afisata USE (NUME BD)
Creatia unei baze noi cu nume CREATE DATABASE (nume)
Crearea unui tabel cu nume cu un camp_b de tip text CREATE TABLE tabel_doi (camp_b TEXT)
Stergerea unui tabel anume DROP TABLE tabel_doi
Stergerea tuturor inregistrarilor din tabel TRUNCATE TABLE [table]
Stergerea inregistrarilor DELETE FROM [table] WHERE [column] = [value]
Updatarea inregistrarilor UPDATE [table] SET [column] =’[updated_value]’ WHERE [column] = [value]
Listarea tuturor utilizatorilor SELECT user
Crearea unui nou utilizator CREATE User, Host FROM mysql.user;
Adaugarea de coloane sau midoficarea unei coloane ALTER TABLE
Aflarea adresei ip SHOW VARIABLES WHERE Variable_name=’host_name’
Iesire EXIT
Figura 1 Diagrama flux MySQL-SERVER-PHP-BROWSER
Pentru a putea afla toate inregistrarile ce ii sunt atribuite unui criteriu folosim combinatia parantezelor () denumite count.
In SQL asterixul * are semnificatia toate sau tot.
Pentru a nu vedea eventualele dubluri folosim GROUP BY.
2.4 LIMBAJUL PHP
PHP este un limbaj de scripting open source sub forma unor seturi de instructiuni de programare interpretat in timpul executiei. In timpul rularii acest limbaj este interpretat in alte medii software. Scopul scripturilor este de a efectua sarcini de rutina pentru o aplicatie si de ai imbunatati performanta. Poate fi incorporat in pagini HTML. Se poate conecta la mai multe baze de date, iar prescurtarea PHP vine de la Personal Home Page. El este difera de alte limbaje de programare cum ar fi JAVA deoarece codul sau este executat de catre un server, care va genera un cod HTML iar in final va fi trimis catre client.
Scripturile php sunt utilizate in trei categorii:
In linia de comanda -se poate rula fara navigator web si server doar cu analizator php in windows se foloseste Task Scheduler , Iar pe Linux sau Unix cu cron.
Aplicatii de birou- cu PHP GTK fiind posibil rularea aplicatiilor pe mai multe platforme.
Scripting pe server- ce ruleaza avand la baza un web broser, web server si un php analizer.
Cu php se pot vizualiza pdf-uri, imagini, filme flash.
Protocoale folosite in php:
POP3
COM
NNTP
SNMP
IMAP
HTTP
LDAP
In afara de manipularea continutului web, autentificrea se face prin trimiterea headerelor, utilizatorii pot fi redirectionati, iar cookie-urile pot fi setate. Un text este identificat ca un cod php in momentul in care interpretorul php parcurge documentul si intalneste un marcaj de deschidere pana marcajul de inchidere. Cele mai des folosite marcaje pentru inceperea unei secvente de cod php sunt:
<html>
<head>
<title>sysnec blue</title>
</head>
<body>
<?php
echo("Exemplu de script in PHP");
?>
</body>
</html>
Prin separarea cu caracterul ” ; ” instructiunile php sunt interpretate corect.
Comentariile sunt reprezentate prin aparitia caracterelor ”//” si ”#”.
Caracterele de delimitare /* la inceput si */ la sfarsit sunt folosite la inserarea de comentarii pe mai multe linii.
2.5 SERVERUL PENTRU WEB APACHE
Apache este un server web distribuit gratuit fiind cel mai utilizat. Rulajul pe serverele din intreaga lume este de peste 67%. Majoritatea furnizorilor de servicii de gazduire folosesc servere apache. Apache Web Server este conceput pentru a crea servere Web care au capacitatea de a găzdui unul sau mai multe site-uri HTTP. Caracteristicile notabile includ capacitatea de a suporta mai multe limbi de programare, scripting-ul de pe server, un mecanism de autentificare și suport pentru baze de date.
Serverul Apache Web poate fi îmbunătățit prin manipularea bazei de coduri sau adăugarea mai multor extensii / suplimente.
Este, de asemenea, utilizat pe scară largă de companiile de găzduire web pentru a furniza găzduire virtuală partajată / virtuală, deoarece, în mod implicit, Apache Web Server suportă și distinge între diferite gazde care se află pe aceeași mașină.
Începând cu ianuarie 2013, cea mai recentă versiune a serverului Apache Web Server este versiunea 2.4.3. Principalul avdersar competitiv al acestui servel îl constutuie Microsoft Internet Information Service.
Figura 2 Arhtecura unui server apache open source
2.6 HTTP SI CSS
HyperText Markup Language (HTML) este folosit pentru crearea de pagini web ce se afiseaza intrun browser. Este protocolul de baza implicit al lui word wide web, de tip text.
Protocolul HTTP se bazează pe o paradigmă de solicitare / răspuns. Un client stabilește o conexiune cu un server și trimite o cerere către server sub forma unei metode de solicitare, a unui URI și a unei versiuni de protocol, urmată de un mesaj asemănător MIME care conține modificatori de solicitare, informații despre clienți și conținut posibil al corpului. Serverul răspunde cu o linie de stare, inclusiv versiunea de protocol a mesajului și un cod de succes sau de eroare, urmată de un mesaj asemănător MIME care conține informații despre server, metainformația entității și conținutul posibil al corpului.
Orice browser web comunica prin http//: caruia ii este arondat portul 80. Browser-urile de astăzi nu mai au nevoie de HTTP în fața adresei URL, deoarece este o metoda implicită de comunicare. Cu toate acestea, este păstrat în browsere din cauza necesității de a separa protocoale, cum ar fi FTP. Mai jos sunt câteva din faptele majore despre HTTP.
Coduri de stare HTTP
Mai jos este o listă a codurilor de stare HTTP definite în prezent de Computer Hope. Aceste coduri permit unui client să acceseze alt computer sau dispozitiv prin HTTP pentru a ști cum să procedeze sau să nu procedeze.
De exemplu:
– 404 indică browserului că cererea nu există pe server.
– 401 autorizare ceruta
– 408 cerere expirata
– 404 bad request
Structura oricarui fisier HTML este urmatoarea:
<html>
<head>
<title> Titlul </title>
</head>
<body>
</body>
</html>
Intre tagurille <body> </body> se scriu instructiuni.
Culorile hiperlinkurilor si stabilirea fundalului sunt permise de tagul <body>
Fundalurile, culorile, fondurile, bordurile se stabilsc se realizeaza din css (cascading style sheet).
CSS-urile pot fi interne si externe:
Interne – Codul CSS va fi inserat intre tagurile <head></head> in interiorul fiecarei pagini. La schimbarea de stil dorita de utilizator sau programator va trbui ca modificarea sa fie facuta in toate paginile cu acel stil continut. Se constituie un dezavantaj pentru folosirea acestei metode cand avem de modificat zeci sau sute de pagini.
Externe – cu orice editor de text (word, notepad, dreamweaver) poate fi realizat un fisier CSS. In momentul in care dorim sa facem schimbari in interiorul tuturor paginilor , este suficient sa modificam fisierul de stil (.css) . indiferent cate pagini ar avea site-ul, schimbarile sunt rapide in tot continutul. Intretinerea este mult mai usor de facu cu aceasta metoda. Ca avantaje avem reducerea dimensinarii paginilor si o mare flexibilitate.
2.7 LIMBAJUL JAVA VS JAVA SCRIPT
Acesta ese folosit pentru a anima cu elemente interactive pagina utilizatorului. Folosit de exemplu pentrua verifica scorulunui meci de fotbal pe un ziar online sau pentru a vedea online un film.
JAVA este orientat catre obict ca limbaj de programare ce se ruleaza independent. Este un limbaj versatil folosit in aplicatii android pentru nenumarate dispozitive, in industria financiara cu volume de date foarte mari etc.
JAVA SCRIPT conceput intentionat sa se integreze in HTML, acceptat de toate browserele majore de web. Un limbaj de programare bazat pe text destinat sa functioneze ca o parte de aplicatie bazata pe web. O reprezentare a unei pagini web poate fi retiuta in memoria browser-elor sub forma unui arbore de obiecte denumit DOM sau Document Object Model.
Definirea obiectivelor aplicatiei
Aplicatia propusa va trebui sa aiba urmatoarele obiective:
Acapararea unui numar cat mai mare de vizitatori ce folosesc internetul
Promovarea S.C. SYSNEC BLUE S.R.L pentru se face cunoscuta cu magazinul virtual dar si cel fizic
Calcularea resurselor financiare pentru punerea in aplicare a platformei
Pentru contruirea acestei platforme web societatea va trebui sa aibă un buget de 3500 de euro fara t.v.a in care sunt incluse serverul, constructia in detaliu a site-ului.
Suplimentar vor trebui marite resursele umane prin angajarea a 2 administratori web .
CAPITOLUL 3 ARHITECTURA PROGRAMULUI
Figura 3 Arhitectura structurii aplicatiei
3.1 Descrierea componentelor
Dintre toate aceste module prezentate, pentru administrarea magazinului online este accesibil doar administratorului, acesta având acces doar la acest tip de operații. Administratorul de retea este cel care are acces la modulele care manipulează datele utilizatorilor, inclusiv posibilitatea de a crea conturi noi, de a prelucra comenzi, de a adauga / modifica / sterge produse sau categorii de produse. Un utilizator obișnuit, neautentificat nu are accesul la datele privitoare la administrare. Legătura dintre aceste module este asigurată de conexiunea la baza de date, partajând aceleași informații.
Securitatea este implementată la nivelul interfeței cu baza de date, realizate prin PHP. Astfel orice operație se poate efectua doar în urma autentificării, realizată cu ajutorul sesiunilor.
În urma unei autentificări reușite, meniul devine activ, astfel că utilizatorul poate selecta opțiunea pe care o dorește prin simpla apăsare a butonului corespunzător din meniu. Umătorul pas în utilizarea aplicației îl reprezintă introducerea datelor de la tastatură, urmată de procesarea acestora fie prin stocarea lor în baza de date, prin afișarea informațiilor pe ecran sau prin imprimarea acestora sub formă de documente. De asemenea, la introducerea datelor este verificată corectitudinea lor, unele dintre ele fiind completate automat astfel încât să se asigure validitatea și corectitudinea lor. Atunci cand un utilizator acceseaza interfata destinata clientului, se realizeaza conexiunea la baza de date si se initializeaza parametrii globali folositi dealungul intregii sesiuni.
$con = mysqli_connect("localhost","root","", "produse_ma");
if (!$con) {
die ("Eroare MySQL");
}
if (!isset($GLOBALS['con'])) { $GLOBALS['con'] = $con; }
$totalGeneral = 0;
if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page = 1;}
if (isset($_GET['ordonare'])) { $ordonare = $_GET['ordonare']; } else { $ordonare = "ma";}
if (isset($_GET['actiune'])) { $actiune = $_GET['actiune']; } else { $actiune = "";}
if (isset($_SESSION['nr_produse'])) { $nr_produse = $_SESSION['nr_produse']; } else { $_SESSION['nr_produse'] = array(); $nr_produse = 0;}
if (isset($_SESSION['pret'])) { $nr_produse = $_SESSION['pret']; } else { $_SESSION['pret'] = array(); $pret = 0;}
if (isset($_POST['cuvinte'])) { $cuvinte = $_POST['cuvinte']; } else { $_POST['cuvinte'] = ""; $cuvinte = 0;}
if (isset($_POST['cat'])) { $cat = $_POST['cat']; } else { $_POST['cat'] = ""; $cat = 0;}
if (isset($_POST['img'])) { $img = $_POST['img']; } else { $_POST['img'] = ""; $img = 0;}
if (!isset($_SESSION['nume'])) $_SESSION['nume'] = array();
if (!isset($_SESSION['nr_produse'])) $_SESSION['nr_produse'] = array();
if (!isset($_SESSION['id_produs'])) $_SESSION['id_produs'] = array();
if (!isset($_SESSION['pret'])) $_SESSION['pret'] = array();
if (!isset($_SESSION['id'])) $_SESSION['id'] = array();
function mysql_query($query) {
$sql = mysqli_query($GLOBALS['con'], $query);
return $sql;
}
function mysql_fetch_array($rezultat) {
$sql = mysqli_fetch_array($rezultat);
return $sql;
}
function mysql_num_rows($rezultat) {
$sql = mysqli_num_rows($rezultat);
return $sql;
}
Cand se va rula aplicația din sectiunea de administrare se va intra automat în formularul de autentificare verificându-se validitatea utilizatorului și a parolei de logare, cu ajutorul sesiunilor. Functia POST are rolul de a prelua parola si numele utilizatorului din căsuțele de text ale formularului, fiind comparate cu datele existente în tabela corespunzătoare datelor despre utilizatorii de retea.
//start de sesiune
session_start();
//conectare la baza de date
if (isset($_POST['username']) && isset($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
include ("connection.php");
$query = "SELECT username , password , statut FROM utilizator WHERE username='$username' AND password=md5('$password') AND statut = 0";
$result = mysql_query($query);
if (mysql_fetch_array($result)) {
$_SESSION['valid_user'] = $username;}
Dacă numele și parola vor fi găsite în tabelă, se va prelua identificatorul corespunzător administratorului, făcându-se posibilă și vizualizarea și utilizarea meniului. În caz contrar se va afișa din nou formularul de autentificare cu mesajul aferent de eroare, și anume „Userul sau parola nu au fost introduse corect!”.
După o autentificare reușită se va face afișarea opțiunilor din meniu și completarea automată a identificatorului corespunzător administratorului, în cazul adăugarii datelor, iar în cazul prelucrării datelor făcându-se selecția pentru a nu avea acces decât la datele utilizatorilor de retea administratorului deja autentificat. Datele din formularul de adăugare vor fi preluate cu POST din căsuțele de text, ComboBox-uri, sau butoanele radio.
<?php
//start de sesiune
session_start();
//conectare la baza de date
include ("connection.php");
//notam directorul curent,comparativ cu root-ul
$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);
// notam in variabila locatia fisierului care prelucreaza functia de upload
$uploadHandler = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'adauga_produs.php?action=add';
// dimensiunea maxima a imaginii
$max_file_size = 30000000; //marimea ~ bytes
// notam intr-o variabila locatia formularului de upload
$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'adauga_produs.php';
//pagina care afiseaza daca operatia a avut loc cu success
$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'adauga_produs.php?action=add';
// numele fieldname-ului pentru fisierul respectiv
$fieldname = 'file';
?>
3.2 Funcțiile JavaScript
Deasupra meniului principal din interfata destinata clientului avem un slider (realizat cu JavaScript si JQuery).
Figura 5 Slidere
Acestea se ruleaza automat la un interval de timp prestabilit de programator.
Pentru acesta avem nevoie de urmatoarele librarii:
Dupa ce apelam scripturile js in sectiunea <head> a site-ului, putem realiza meniul in div-ul corespunzator:
3.3 Structuri de baze de date și tabele.
Pentru realizarea aplicației a fost utilizată o bază de date care conține tabele relationate prin identificatori care au activată proprietatea de autoincrementare și nu acceptă valoarea NULL.
Baza de date se numește „produse_ma” și conține următoarele tabele:
produs
categorie
comanda
produs_comanda
utilizator
Figura 6 Structura bazei de date
Administrarea bazei de date se face prin autentificare unde persoana desemnata autorizata va putea face modificari de continut ale produselor din magazin.
Figura 7
Administratorul va putea actualiza baza de date prin adaugare de produse, modificare caracteristici produse, stergerea produselor care nu mai sunt in stoc, stergerea categoriilor de produse ce nu mai fac obiectul produselor de magazin.
CAPITOLUL 4 UTILIZAREA APLICAȚIEI SI EFICIENTA ACESTEIA
Aplicatia creata este de un real folos societatii pentru promovarea online si cresterea vanzarilor. Utilizatorii de internet pot comanda online produsele dorite cu un singur click asigurandule un confort astfelun confort sporit.
Figura 8 Interfata site-ului
Cand se va rula aplicația din sectiunea de administrare se va deschide automat formularul de autentificare, unui utilizator neautentificat ce nu va avea permisiunea de a accesa datele gestionate în baza de date.
Fig. 9. Formular de autentificare admin
Daca la completarea formularului cu numele de utilizator si parola se dovedeste ca acestea sunt corecte si exista in tabela datelor la adminstrator si magazin se a deschide meniul principal dupa accesarea butonului log in avand acces la date.
Figura 10 Pagina principală administrare
În caz contrar va apărea din nou formularul de autentificare împreuna cu un mesaj aferent de eroare a introducerii gresite a parolei și/sau a utilizatorului.
Interfata vizuala destinata clientilor este reprezentata de maparea in MySQL a produselor si a conturilor de utilizatori. De asemenea, din aceasta interfata se pot realiza cautari in baza de date de produse:
Figura 11 Categoriile de produse
La opțiunea de Cautare utilizatori se va desfășura un alt submeniu oferind posibilitatea de a alege dacă se dorește căutarea după nume și prenume.
Figura 12 Cautare produse
Alegrea unui produs si adaugarea in cosul de cmparaturi:
Din meniul ’Produse’ se alege submeniul ’igiena corporala si orala’ de catre utilizator, se alege un produs spre exemplu samponul, se apasa butonul ’cumpara’.
Figura 13 Selectarea unui produs anume
Produsul se adauga in cosul de cumparaturi unde este afisat impreuna cu produsul adaugat pretul per bucata produs.
Figura 14 Adaugarea in cosul de cumparaturi
De aici utilizatorul poate adauga in continuare produse in cos sau poate selecta butonul ’Mergi la casa’ pentru a finaliza comanda dorita printro apasare a butonului ‚TRIMITERE COMANDA’. In urma acestei operatiuni utilizatorul va primi un mesaj in care este informat ca acesta comanda a fost finalizata cu succes.
Figura 15 Trimiterea comenzii
Capitolul 5 Concluzii
Aplicația realizată poate fi utilizată cu ușurință de către administratori pentru gestionarea bazei de date a unui magazin de acest gen.
Datorită cererii de autentificare, un administrator nu are acces la toata baza de date, ci doar la informațiile privitoare la produse, comenzi, celelalte date fiind inaccesibile.
Proiectul permite adăugarea de noi utilizatori, vizualizarea datelor despre aceștia, modificarea datelor. Baza de date a fost creeată astfel încât informațiile pot fi introduse conform cu realitatea.
Administratorul serverului aplicației are dreptul de a gestiona, prin autentificare, tabela corespuzătoare administratorului de retea, de a adăuga administratori de retea noi în sistem prin crearea de cont după atribuirea unui user și a unei parole, de a modifica datele existente în legatură cu un anumit administrator, sau de a șterge un administrator din baza de date.
Proiectarea interfețelor utilizator este un subiect care preocupă tot mai mult dezvoltatorii de software. Deoarece aplicația realizată este adresată unui grup țintă, și anume clientilor acestui magazin online, nevoia de interfață potrivită și centrată pe utilizator (sau client) este stringentă. O interfață potrivită face ca aplicația să fie ușor de utilizat și învățarea funcțiilor sale trebuie să se apropie de “natural” și să poată fi realizată în timp scurt, fără să fie nevoie ca utilizatorul să comute pe alt gen de abordare decât cel pe care îl posedă prin cultură si experienta.
Așadar, limbajul utilizat în realizarea interfeței conține termeni specifici administratorali, dar care pot fi percepuți într-un mod facil de către cei cărora le este destinată aplicația
BIBLIOGRAFIE
Anexe
Cod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Adauga produs</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
//daca userul este setat ..
if (isset($_SESSION['valid_user']))
{ echo '<h1>Esti logat ca: <b>'.$_SESSION['valid_user'].'</b></h1><br>';
if(isset($_GET['action']) && $_GET['action'] == "add") {
$qdir = "SELECT nume FROM categorii WHERE id_cat = ".$_POST['id_cat'];
$rdir = mysql_query($qdir);
$d = mysql_fetch_array($rdir);
// Notam folderul care va primi poza ce urmeaza a fi uploadata
$uploadsDirectory = '../produse/'.$d['nume'].'/';
// Error Handler , in caz ca avem o eroare cu Upload-ul
function error($error, $location)
{
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n".
'"http://www.w3.org/TR/html4/strict.dtd">'."\n\n".
'<html lang="en">'."\n".
' <head>'."\n".
' <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n".
' <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n".
' <title>Upload error</title>'."\n\n".
' </head>'."\n\n".
' <body>'."\n\n".
' <div id="Upload">'."\n\n".
' <h1>Upload failure</h1>'."\n\n".
' <p>An error has occured: '."\n\n".
' <span class="red">' . $error . '…</span>'."\n\n".
' The upload form is reloading</p>'."\n\n".
' </div>'."\n\n".
'</html>';
exit;
} // end error handler
// Erori PHP posibile
$errors = array(1 => 'php.ini max file size exceeded',
2 => 'html form max file size exceeded',
3 => 'file upload was only partial',
4 => 'no file was attached');
// verificam daca actiunea din formular este setata
isset($_POST['action'])
or error('the upload form is neaded', $uploadForm);
// verificam erorile standard de upload
($_FILES[$fieldname]['error'] == 0)
or error($errors[$_FILES[$fieldname]['error']], $uploadForm);
// verificam daca lucram cu un upload HTTP
@is_uploaded_file($_FILES[$fieldname]['tmp_name'])
or error('not an HTTP upload', $uploadForm);
// validation… sverificam daca fisierul uploadat este imagine sau nu
@getimagesize($_FILES[$fieldname]['tmp_name'])
or error('only image uploads are allowed', $uploadForm);
// creem un nume de imagine unic , si verificam daca este folosit deja.
// Daca nu , incercam pana gasim un nume nefolosit.
$now = time();
while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name']))
{
$now++;
}
$fisier = $now.'-'.$_FILES[$fieldname]['name'];
//Mutam fisierul in folder si ii atribuim numele.
@move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename)
or error('receiving directory insuffiecient permission', $uploadForm);
echo '<div align="center"><div class="mare"><div class="sus"><div class="ne"> Adauga produs </div></div><div class="mijloc"><div class="mne">';
if($_POST['nume']=="") {echo 'Trebuie sa completati numele produsului <br><a href="adauga_produs.php">Inapoi</a>';
echo '</div></div><div class="jos"></div></div></div>';exit;}
$sql="SELECT nume FROM produs WHERE nume='".$_POST['nume']."'";
$resursa=mysql_query ($sql);
if(mysql_num_rows($resursa) != 0)
{ print 'produsul <b>'.$_POST['nume'].'</b> exista deja in baza de date!<br>
<a href="adauga_produs.php">Inapoi</a>';
echo '</div></div><div class="jos"></div></div></div>';exit;}
$sql="INSERT INTO produs (id_produs,id_cat,nume,descriere,pret,imagine) VALUES ('','".$_POST['id_cat']."','".$_POST['nume']."','".$_POST['descriere']."','".$_POST['pret']."','".$fisier."')";
mysql_query ($sql);
print 'produsul <b>'.$_POST['nume'].'</b> cu pretul <b>'.$_POST['pret'].'</b> RON a fost adaugata in baza de date!<br>
<a href="index.php">Inapoi la meniu</a><br><a href="adauga_produs.php">Adauga un alt produs</a>';
echo '</div></div><div class="jos"></div></div></div>';exit;
}//sfarsit inserare in produs
else{
echo '<div align="center"><div class="mare"><div class="sus"><div class="ne"> Adauga produs </div></div><div class="mijloc"><div class="mne">';
?> <form method="post" action="<?php echo $uploadHandler ?>" enctype="multipart/form-data" >
<table>
<tr><td>Marca: </td><td>
<select name="id_cat">
<?php
$query = "SELECT id_cat , nume FROM categorii";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
echo '<option value="'.$row['id_cat'].'">'.$row['nume'].'</option>';}
?>
</select>
</td></tr>
<tr><td>Nume: </td><td><input type="text" name="nume" /></td></tr>
<tr><td>Descriere: </td><td><textarea name="descriere"></textarea></td></tr>
<tr><td>Pret: </td><td><input type="text" name="pret" /></td></tr>
<tr><td colspan="2">
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>">
</p>
<p>
<label for="file">Upload imagine:</label>
<input id="file" type="file" name="file">
</p>
</td></tr>
<tr><td><input type="submit" value="Creeaza" id="submit" name="action" style="width:80px;"/></td><td><input type="reset" value="Resetare" style="width:80px;"/></td></tr>
</table>
</form>
<?php
} echo '</div></div><div class="jos"></div></div></div>';
}
else {
echo 'Nu sunteti logat. Doar membrii privilegiati pot accesa aceasta pagina.<br>Pentru a va loga, accesati pagina de <a href="index.php">Log in</a>';}
?>
</body>
</html>
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: SPECIALIZAREA INFORMATICĂ ECONOMICĂ LUCRARE DE DISERTAȚIE Platforma online de cumparaturi pentru S.C. SYSNEC BLUE S.R.L Conducător științific Lector…. [308052] (ID: 308052)
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.
