You are on page 1of 38

UNIVERSITATEA ,,DUNREA DE JOS GALAI

FACULTATEA DE AUTOMATIC, CALCULATOARE, INGINERIE


ELECTRIC I ELECTRONIC
Specializarea: Calculatoare

PROIECT
Gestionarea stocurilor unui depozit de materiale de construcii

Coordonator tiinific
Asist.ing.Dan Munteanu
Student
Auric Alexandru-Daniel
Grupa 22C31A

Galai
2013

Analiza problemei
Volumul mare de informatii existente in cazul unui deposit de
material cu un numar mare de materiale de constructii,client si furnizori
determina necesitatea informatizarii domeniului de gestiune a
stocurilor dintr-un depozit de materiale de constructii.
Activitatea de evident a stocurilor unui depozit de materiale de
constructii implica o munca intense cu numeroase documente care tin de
inregistrarea clientilor,a furnizorilor,de inregistrarea tuturor produselor
de toate tipurilor si a comenzilor accestora,cat si de transportul acestora
intr-un timp cat mai scurt.Prin informatizarea domeniului de eivdenta a
stocurilor dintr-un depozit de materiale de constructii se castiga timp si
se evita pierderea unor date,nefiind necesare consultarea unui numar
mare de documente ce tin de gestionarea stocurilor unui depozit.Se obtin
astfel mult mai usor informatii despre clienti,furnizori,comenzi,stocarea
produselor,transportul produselor.
Definirea depozitelor si a stocurilor:
Prin stoc se intelege cantitatea de bunuri existente intr-un depozit
la un moment dat.Depozitul este folosit ca punct de achizitionare de
marfuri,depozitare de marfuri de catre client,respective furnizori.
Depozitele se definesc n general din trei puncte de vedere:
tehnic, economic i organizatoric.
Sub aspectul tehnic al noiunii, prin depozit se nelege orice
construcie sau suprafa special amenajat pentru primirea-pstrareaconservarea-eliberarea-livrarea resurselor i produselor finite (cldire,
ncpere, hal, magazie, opron, hambar, siloz, platform), dotat cu

aparatajul, mecanismele, dispozitivele, utilajele i instalaiile necesare


efecturii operaiunilor specifice.
Din punct de vedere economic, noiunea de depozit include
totalitatea spaiilor i construciilor pentru depozitare, mpreun cu
dotarea specific (utilaje, instalaii, dispozitive, etc.), a stocurilor
acumulate, precum i personalul care activeaz n cadrul su.
Sub aspect organizatoric, depozitul sau magazia reprezint o
subunitate de servire din cadrul structurii organizatorice a unitiilor
economice; excepie fac
depozitele unitilor specializate n
cumprarea i vnzarea de materiale i produse n sistem en gros
pentru care aceste subuniti se consider ca fiind de baz.
Rolul depozitelor si a stocurilor:
Asigurarea continuitii alimentrii proceselor de producie, a
tuturor punctelor de consum-utilizare de resurse materiale, armonizarea
ritmului aprovizionrii cu cel al consumului, distribuia ritmic a
produselor corespunztoare programelor operative de livrare ntocmite
anticipat, servirea ritmic a clienilor n concordan cu ritmul i
structura comenzilor emise de aceti factori necesit acumularea, la
nivelul unitilor economice de produse finite, ntr-un volum i o
structur bine definite. De asemenea, de la sosirea n ntreprinderi a unor
loturi de materiale i pn la trecerea lor n consum, este strict necesar
realizarea unor operaiuni ca, de pild: primirea
i recepia;
dezambalarea; sortarea; condiionarea; pregtirea etc.; acelai aspect este
specific i produselor finite care, pentru a putea fi livrate beneficiarilor,
trebuie s suporte, dup ieirea de pe banda de fabricaie, operaii ca:
recepie, sortare, ambalare, marcare, lotizare, ncrcare n mijlocul de
transport, expediere .a. Operaii asemntoare, la care se adaug i

altele precum fracionarea, reambalarea, etc., se desfoar i de ctre


unitile de comercializare angrosiste sau endetail.
Realizarea n bune condiii a unor asemenea operaii, ca i
protejarea-conservarea resurselor materiale i produselor finite, pe
timpul staionrii lor pn la trecerea n consum sau livrarea la clieni
impun amenajarea unor spaii, ncperi, suprafee speciale care, n
practica economic, se cunosc sub denumirea de depozite sau, dup caz,
magazii. Totodat, este necesar organizarea raional a conducerii
activitii de nmagazinare i depozitare (component a funciunii
comerciale a ntreprinderii), pornind de la coninutul specific al acesteia,
definit succint prin:
a) primirea materialelor i produselor,
b) protejarea mpotriva degradrii sau eliberrii neautorizate,
c) livrarea sau eliberarea n cantitile solicitate, la timpul potrivit, la
locul stabilit, cu cheltuieli ct mai mici aspecte care asigur
competitivitate.
Functiile unui depozit:
1)depozitarea i pstrarea mrfurilor,care asigur continuitatea.aprovi
zionrii consumatorilor individuali i industriali, n condiiile existenei
unor diferene temporale ntre producie i consum, datorate
fenomenului de sezonalitate i dedispersie spaial diferit.
2)condiionarea i dozarea mrfurilor, n vederea constituirii unei ofer
te adaptate diferitelor categorii de clieni.
3)formarea sortimentului comercial prin corelare cu necesitile ferme
ale comerului de detail
4) transportarea i ambalarea mrfurilor, fr de care nu este posibil
participarea la ntregul lan de distribuie, deplasarea bunurilor n
interiorul depozitului.

5) prestarea de servicii materiale pentru detailiti cum ar fi: etichetare


a impachetarea mrfurilor.
Din perspectiva acestor cinci funcii, un proces tehnologic complet, la
nivelul unui depozit, prezint urmtoarele trsturi:
- este un proces de producie care a fost mpins n sfera comerului;
- este caracterizat printr-un grad inalt de concentrare,care asigura
posibilitati favorabile rationalzarii prin mecanizarea si eventual
automatizarea operatiilor.
- presupune inzestrarea locurilor de munca cu echipament tehnic adecvat
acelor operatiuni care se apropie de unele procese industrial.
Proiectarea tehnologiei amenajrii depozitului trebuie s aib, ca
punct de pornire urmtoarele elemente de fundamentare:
- tipul i dimensiunile depozitului (suprafa, nlime, volum).
- tipul i destinaiile spatiilor component ale suprafetei alocate
depozitului.
- relatiile principale dintre diferitele suprafete,respective corespondetele
dintre fluxurile de marfuri,ambalaje,informatii,mijloace de transport.
- ordonarea funcional a depozitului.
- caracteristicile constructive ale depozitului.

Sarciniile eseniale ale unui depozit:


Principalele sarcini ale unui depozit comercial sunt:
- recepia mrfurilor .
- controlul i stocajul lor .

Receptia loturilor de marfuri este operatia de identificare si verificare


cantitativa si calitativa a marfurilor si se realizeaza de catre beneficiar in
prezenta sau absenta furnizorului. Locul de desfasurare poate fi la sediul
furnizorului sau al beneficiarului si se efectueaza de catre comisii de
receptie formate din 3-5 membri.Receptia se deosebeste de controlul
tehnic de calitate si prin modalitati si prin efectele pe care le produce.
Receptia are un caracter tehnic, dar in acelasi timp are caracter economic
si juridic. Scopul receptiei consta in verificarea modului in care
furnizorul isi indeplineste obligatiile asumate prin contract (cu privire la
sortiment, calitate, cantitate, ambalare, marcare) si daca organele de
transport isi respecta obligatiile legate de integritatea marfurilor pe toata
durata transportului.Stocajul acestor marfuri se face pe categorii,fiecare
produs facand parte dintr-o anumita categorie care la randul ei are un loc
pregatit special.
- pregtirea comenzilor, ambalarea mrfurilor i livrarea acestora ctre
beneficiar.
Transportul marfurilor reprezinta o componenta esentiala a procesului de
productie si presupune deplasarea componentelor si a produselor atat in
incinta fabricii, cat si de la o unitate la alta. Sistemul de transport
reprezinta unul din elementele de baza pentru o crestere economica
fundamentala. Transportul creaza valoare si un anumit grad de utilitate
(de loc si de timp).Costul transporturilor poate atinge 40 % din costurile
totale de productie. Practic, nu exista nici o activitate de productie
material; care sa nu fie legata si conditionata, intr-un fel sau altul, de
transport. Ca dezavantaje amintim urmatoarele:nu se poate asigura in
orice situatie transportul direct de la furnizor la beneficiar, necesitand
combinarea cu transportul auto si transbordarea marfurilor pe par;durata
transportului este mai mare decat in cazul transportului auto;necesita
investitii mari, personal cu calificare diversa si complexa;protectie mai
redusa a marfurilor la socuri (in triaje).

Primele dou sarcini, respectiv recepia i stocajul corespund


circuitului primar sau circuitului de stocaj, n timp ce a treia sarcin
(livrarea mrfurilor) corespundecircuitului secundar (circuitului de
service).
Organizarea depozitului trebuie fcut astfel nct cele dou
circuite s nu se suprapun.In funcie de amplasarea principalelor zone
de recepie, depozitare, respective expediie exist trei variante de flux al
mrfurilor ntr-un depozit:
- circulaia mrfurilor n linie dreapt, cnd zonele de recepie i
expediie sunt paralele, fiind aezate pe dou laturi opuse ale
depozitului.
- circulaia mrfurilor n arc de cerc de 90, cnd zonele de recepie
i expediie sunt amplasate perpendicular pe dou laturi alturate ale
depozitului.
- circulaia mrfurilor n arc de cerc de 180, cnd zonele de
recepie sunt amplasate pe aceeai latur a depozitului.
n amenajarea interioar a unui depozit se urmresc unele
obiective:
1) mecanizarea, automatizarea, robotizarea unor operaii, nu se pot
realize dect prin cuprinderea ntregului flux tehnologic din depozit.
2) modalitile de depozitare sunt foarte largi cu particulariti de
la un produs la altul.
3) optimizarea transportului intern prin asigurarea fluenei deplasr
ii, n condiiile existenei unor ci de acces corect dimensionate.
4)optimizarea transporturilor interne reclam o perfect corelare
ntre genul, particularitile produsuluii caracteristicile tehnicofuncionale ale mijlocului de transport intern.
5) folosirea informaticii n gestionarea activitii depozitului
(flecare referin,articol, produs se codific i trece n memoria
calculatorului).

Cerintele aplicatiei

Aplicatia trebuie sa ofere beneficiarului urmatoarele facilitate:


cautarea de informatii despre:
o produse,dupa:

denumirea produsului;

categorie din care face parte produslui;

pretul produsului;

transporturi,dupa:

adresa transportului;

facturi,dupa:

data facturii;

valoarea facturii;

cantitatea de pe facture;

client,dupa:

numele clientului;

CNP-ul clientului;

telefonul clientului;

bonuri,dupa:

data bonului;

valoarea bonului;

furnizori,dupa:

nume furnizorului;

codul fiscal;

telefonul furnizorului;

adaugare de:
o

facturi;

bonuri;

transporturi;

client;

produse;

furnizori;

stergere de:
o

facturi;

bonuri;

transporturi;

client;

produse;

furnizori;

modificare de:
o

facturi;

bonuri;

transporturi;

client;

produse;

furnizori;

creare rapoarte:
o dupa categoria de produse;

Proiectarea bazei de date


Diagrama entitate-relatie

Modelul relational
PRODUSE [ codprodus, denprodus, categorie, cantitate, pret, codtransport]
CLIENTI [ codclient, numeclient, prenume, CNPclient, domiciliu, telclient ]

FURNIZORI [ codfurnizor, numefurnizor, codfiscal, adresafurnizor, telfurnizor ]


FACTURI [ codfactura, datafactura, totalfactura, achitatfactura, facturafurnizor,
produs, furnizor,facturaclient, cant_factura, codfurnizor ]
BON [ codbon, databon, totalbon, nume_client achitatbon, codclient ]
TRANSPORT [ codtransport, adresadestinatie, efectuat_t ]
FACTURI_PRODUSE [ codfactura, codprodus ]
PRODUSE_BON [ codprodus, codbon ]

Modelul fizic
PRODUSE:
- codprodus: int(10)
- denprodus: varchar(45)
- categorie: varchar(45)
- cantitate: float
- pret: float
CLIENTI:
- codclient: int(10)
- numeclient: varchar (45)
- prenume: varchar(45)
- CNPclient: varchar(45)
- domiciliu: varchar(45)
- telclient: varchar(45)

FURNIZORI:
- codfurnizor: int(10)
- numefurnizor: varchar(45)
- codfiscal: varchar(10)
- adresafurnizor: varchar(45)
- telfurnizor: varchar(10)
FACTURI:
- codfactura: int(10)
- datafactura: date
- furnizor: varchar(45)
- produs: varhcar(45)
- totalfactura: int(20)
- achitatfactura: tinyint(1)
- facturafurnizor: tinyint(1)
- facturaclient: tinyint(1)
- cant_factura: int(10)

BON:
- codbon: int(10)
- databon: date

- nume_client: varchar(45)
- totalbon: float
- achitatbon: tinyint(10)
TRANSPORT:
- codtransport: int(10)
- adresadestinatie: varchar(45)
- efectuat_t: tinyint(1)
FACTURI_PRODUSE
- codfactura: int(10)
- codprodus: int(10)
PRODUSE_BON
- codprodus: int(10)
- codbon: int(10)

Descrierea aplicaiei
Aplicaia este implementat n limbajul Java. Prin program se conecteaz
aplicaia la serverul Mysql server unde se afl baza de date prezentat mai sus,
prin intermediul tehnologiei JDBC( Java Database Connectivity). Mediul de
dezvoltare folosit este NetBeans IDE versiunea 7.2.1 .
Aplicatia contine urmatoarele clase:Jframe_principal, c_raport, cautare_bon,
cautare_client, cautare_factura, cautare_furnizor, cautare_produs,
cautare_transport, frame_bonuri, frame clienti, frame_facturi, frame_furnizori,
frame_produse, frame_transporturi, modificare_bon, modificare_clienti,
modificare_factura, modificare_furnizor, modificare_produs, modificare_transport,
stergere_bonuri, stergere_clienti, stergere_facturi, stergere_furnizori,
stergere_produse, stergere_transporturi, Conexiune, AlexProject;
Clasa Conexiune contine codul pentru realizarea unei conexiuni cu baza de
date.
Clasa Jframe_principal contine codul pentru realizarea ferestrei principale
din interfata. Aceasta contine diferite butoane, meniuri si ascultatoare pe butoane
respectiv pe Item-urile din meniuri. La inceput, inainte de apasarea oricarui buton
sau meniu interfata arata in felul urmator:

Dupa cum se poate observa in coltul din stanga sus este un meniu format
din 3 optiuni:Consultare, Operatii, Rapoarte. Odata cu apasarea optiuni Consultare
din meniu, optiune de unde se selecteaza ce tabela doreste utilizatorul sa
vizualizeze, fereastra principal se transforma in felul urmator:

In functie de ce optiune a ales utilizator (produse, clienti, furnizori,


facturi,bonuri, transport) in interiorul frame-ului va aparea tabelul corespunzator

optiunii facute.In rest butoanele vor ramane aceleasi, indiferent de alegerea


utilizatorului.
Dupa ce aceasta optiune a fost executata, utilizatorul poate trece mai departe
la efectuarea de operatii. Astfel ca, dupa cum se poate vedea utilizatorul are 4
optiuni de operatii (Adaugare, Stergere, Modificare, Cautare). Aceste operatii pot fi
selectate fie din meniu, din optiunea Operatii, fie din unul dintre butoanele
(Adaugare, Stergere, Modificare, Cautare).

La apasarea optiunii Adaugare, fie din meniu, fie de pe buton, va aparea o


noua fereastra in care trebuie introduse, sau selectate datele corespunzatoare unei
noi inregistrati.Pentru adaugarea unui produs de exemplu, fereastra care apare este
urmatoarea:

Dupa ce campurile au fost completate (dupa caz selectate sau bifate) se


apasa butonul Salvare pentru a se introduce inregistrarea in tabela si pentru a se
actualiza continutul acesteia. Aceasta operatie va fi validata prin aparitia unui
mesaj de confirmare a adaugarii. Mesajul de validare este prezentare in fereastra
urmatoare:

Pentru stergerea unei inregistrari se apasa fie din meniu,fie de pe buton


optiunea stergere, la alegerea careia va aparea o noua fereastra. De exemplu pentru
stergerea unui produs fereastra este urmatoarea:

Pentru efectuarea stergerii trebuie facuta mai intai o cautare, pentru a


verifica daca produsul pe care dorim sa-l stergem exista in stoc. Astfel ca trebuie
completat in primul rand campul Introduceti numele produsului, apoi apasat
butonul cautare. In cazul in care produsul exista in stoc, denumirea acestuia va fi
afisat in acea lista, in caz contrar, in lista nu va fi afisat nimic. Deasemenea, in
cazul stergerii unui produs, poate fi sters doar o anumita cantitate din totalul de pe
stoc. Pentru aceasta trebuie completat si campul Cantitate cu cantitatea dorita.
Apoi tot ce mai trebuie facut este sa selectam produsul care dorim sa-l stergem din
lista, si sa apasam butonul Stergere produs. Stergerea va si validata printr-un
mesaj de confirmare. Aceasta exemplificare va fi prezentate in urmatoare 2 imagini
de mai jos:

Pentru modificarea unei inregistrari se apasa fie din meniu,fie de pe buton


optiunea Modificare, la alegerea careia va aparea o noua fereastra. Mai intai
trebuie selectata linia din tabela care se doreste a fi modificata, apoi se pasa
butonul/optiunea Modificare. De exemplu pentru modificarea unui produs fereastra
este urmatoarea:

Fereastra va aparea completata cu valorile deja existente in inregistrare, tot


ceea ce trebuie facut este de a schimba valorile din campurile deja completate cum
valorile dorite, apoi se apasa butonul Salvare pentru a se face modificarea si
actualizarea tabelei. Modificarea va si validata prin aparitia unui mesaj
corespunzator:

Pentru cautarea unei inregistrari anume se apasa fie din meniu,fie de pe


buton optiunea Cautare, la alegerea careia va aparea o noua fereastra.De exemplu
in cazul cautarii unui anumit produs va fi afisata urmatoarea fereastra:

In cazul in care nu va fi completat nici un camp va fi afisat un mesaj de


avertizare:

Aceasta cautare ofera toate posibilitatile de cautare,si anume: poate fi


completat cate un singur rand, pot fi completate cate 2 randuri, pot fi completate
toate 3 campurile, practic orice combinatie intre cele 3 campuri.
In fereastra de mai jos va fi exemplificata cautarea unui produs prin
completarea campului Categoria produsului:

Rezultatul va si afisat atat in acea lista, dupa cum se poate vedea mai sus,
dar va fi afisat si in tabel, dupa cum se poate vedea mai departe:

Pentru generarea unui raport se foloseste Rapoarte respectiv suboptiune


Generare.

Dupa apasarea acesteia se va deschide o noua fereastra in care se va efectua


o cautare. Dupa ce s-a completat campul Denumirea produsului se apasa butonul
cautare. Daca in stoc exista produse, in lista de mai jos va fi afisata categoria
acestuia. Pentru generarea raportului se selecteaza rezultatul din lista apoi se apasa
butonul generare. Toate aceste operatii sunt prezentate in ferestrele ce urmeaza:

Bibliografie:

1. http://www.vogella.com/articles/JavaPDF/article.html
2. http://docs.oracle.com/javase/6/docs/api/
3. http://stackoverflow.com/
4. http://www.depozit-online.ro
5. http://www.javaworld.com
6. http://www.scribd.com
7. http://www.w3schools.com
8. http://forums.netbeans.org
9. http://www.iconarchive.com
10. http://docs.oracle.com

Anexa 1:
Codul folosit pentru crearea functiile care efectueaza adaugarea de produs:

public static String[] get_list_of_values_produse(String query){


Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String produse[] = null;
try {
conn = Jframe_principal.getConnection();
System.out.println("conn=" + conn);
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
rs.last();
int nr = rs.getRow();
rs.beforeFirst();
produse = new String[nr];
int i=0;
while (rs.next()) {
produse[i]= rs.getString(1);
i+=1;
}
// populate the combo box
}catch (Exception e) {
e.printStackTrace();
System.exit(1);
} finally {
// release database resources
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();

}
System.out.println("Executie add jComboBox_produse1");
}
return produse;
}
public void setComboprod()
{ jComboBox1_produse1.removeAllItems();
String[] produse = get_list_of_values_produse("select
distinct(categorie) from produse");
jComboBox1_produse1.addItem("
");
for (String element : produse) {
jComboBox1_produse1.addItem(element);}}

public frame_produse() {
initComponents();
this.setLocation(1000, 20);
setComboprod(); }
public void adaugare_produs(){
Connection conn = null;
Statement stmt = null;
String denprodus=jTextField1.getText();
String categorie=jTextField4.getText();
int cantitate=Integer.parseInt(jTextField2.getText());
int pret=Integer.parseInt(jTextField3.getText());
System.out.println(categorie);
//System.out.println(cantitate);
if (categorie.equals(""))
categorie=jComboBox1_produse1.getSelectedItem().toString();
try {
conn = Jframe_principal.getConnection();
System.out.println("conn=" + conn);
stmt = conn.createStatement();
int nr = stmt.executeUpdate("insert into produse
(denprodus,categorie,cantitate,pret)
values('"+denprodus+"','"+categorie+"',"+cantitate+","+pret+")")
;

JOptionPane.showMessageDialog(null,"Produsul a fost
adaugat cu succes! ",null,JOptionPane.INFORMATION_MESSAGE);
setComboprod();
}
catch (Exception e) {
e.printStackTrace();
System.exit(1);
} finally {
// release database resources
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("Executie algoritm adaugare_bon");
}}

Anexa 2:
Codul folosit pentru crearea functiile care efectueaza stergerea de produs:
public static List getResults(String query) throws SQLException
{
List<String> results = new ArrayList<>();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
while (rs.next()) {
results.add(rs.getString(1));
}} catch (Exception e) {
e.printStackTrace();
System.exit(1);
} finally {
// release database resources
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}} return results;}
public void cautare_pentru_stergere_produse(){
String denprodus=jtextFieldStergereProduse.getText();
final DefaultListModel model = new DefaultListModel();
List<String> list = null;
try {
list = getResults("select denprodus from produse where
denprodus regexp '"+denprodus+"' ");
} catch (SQLException ex) {
}
Iterator itr = list.iterator();

while (itr.hasNext()) {
model.addElement(itr.next());
}
jListStergereProduse.setModel(model);
}
public void stergere_produse(){
String
denprodus=jListStergereProduse.getSelectedValue().toString();
String cantitate=jTextField10_cantitate.getText();
Connection conn = null;
Statement stmt = null;
try {
conn = getConnection();
stmt = conn.createStatement();
int update = stmt.executeUpdate("update produse
set cantitate=cantitate-"+cantitate+" where
denprodus='"+denprodus+"' ");
//int update = stmt.executeUpdate("delete from
produse where denprodus='"+denprodus+"' ");
JOptionPane.showMessageDialog(null,"Produsul a
fost sters cu succes! ",null,JOptionPane.INFORMATION_MESSAGE);
}
catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
finally {
try {conn.close();
} catch (SQLException e) {
e.printStackTrace();
}}}

Anexa 3:
Codul folosit pentru crearea functiile care efectueaza modificare de produs:
public modificare_produs() {
initComponents();
this.setLocation(1000, 20);
jLabel1_modificare_produs.setVisible(false);
}
public void modificare_produs(){
Connection conn = null;
Statement stmt = null;
int codprodus =
Integer.parseInt((String)jLabel1_modificare_produs.getText());
String denprodus=jTextField1_modificare_produs.getText();
String categorie=jTextField4_modificare_produs.getText();
int
cantitate=Integer.parseInt(jTextField2_modificare_produs.getText
());
int
pret=Integer.parseInt(jTextField3_modificare_produs.getText());
System.out.println(categorie);
try {
conn = Jframe_principal.getConnection();
System.out.println("conn=" + conn);
stmt = conn.createStatement();
int nr = stmt.executeUpdate("update produse set
denprodus='"+denprodus+"',categorie='"+categorie+"',cantitate="+
cantitate+",pret='"+pret+"' where codprodus="+codprodus+"");
JOptionPane.showMessageDialog(null,"Produsul a fost
modificat cu succes! ",null,JOptionPane.INFORMATION_MESSAGE);
}
catch (Exception e) {
e.printStackTrace();
System.exit(1);
} finally {
// release database resources
try {
conn.close();
} catch (SQLException e) {

e.printStackTrace();}
System.out.println("Executie algoritm adaugare_bon");}}

Anexa 4:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `proiect_alex` DEFAULT CHARACTER SET
latin1 COLLATE latin1_swedish_ci ;
use `proiect_alex` ;
-- ------------------------------------------------------ Table `Transport`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `proiect_alex`.`Transport` (
`codtransport` INT(10) NOT NULL AUTO_INCREMENT,
`adresadestinatie` VARCHAR(45) NULL ,
`efectuat_t` TINYINT(1) NULL ,
PRIMARY KEY (`codtransport`) )
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `Produse`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `proiect_alex`.`Produse` (
`codprodus` INT(10) NOT NULL AUTO_INCREMENT ,
`denprodus` VARCHAR(45) NULL ,
`categorie` VARCHAR(45) NULL ,
`cantitate` FLOAT(10) NULL ,
`pret` FLOAT(10) NULL,
PRIMARY KEY (`codprodus`) )
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `Clienti`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `proiect_alex`.`Clienti` (
`codclient` INT(10) NOT NULL AUTO_INCREMENT ,
`numeclient` VARCHAR(45) NULL ,
`prenume` VARCHAR(45) NULL ,
`CNPclient` VARCHAR(13) NULL ,

`domiciliu` VARCHAR(45) NULL ,


`telclient` VARCHAR(10) NULL ,
PRIMARY KEY (`codclient`) )
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `Furnizori`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `proiect_alex`.`Furnizori` (
`codfurnizor` INT(10) NOT NULL AUTO_INCREMENT,
`numefurnizor` VARCHAR(45) NULL ,
`codfiscal` VARCHAR(10) NULL ,
`adresafurnizor` VARCHAR(45) NULL ,
`telfurnizor` VARCHAR(10) NULL ,
PRIMARY KEY (`codfurnizor`) )
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `Bon`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `proiect_alex`.`Bon` (
`codbon` INT(10) NOT NULL AUTO_INCREMENT ,
`databon` DATE NULL ,
`totalbon` FLOAT(10) NULL ,
`achitatbon` TINYINT(1) NULL ,
`nume_client` VARCHAR(10) NULL ,
PRIMARY KEY (`codbon`) )
ENGINE = InnoDB;

-- ------------------------------------------------------ Table `Facturi`


-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `proiect_alex`.`Facturi` (
`codfactura` INT(10) NOT NULL AUTO_INCREMENT,
`datafactura` DATE NULL ,
`totalfactura` INT(20) NULL ,
`achitatfactura` TINYINT(1) NULL ,
`facturafurnizor` TINYINT(1) NULL ,
`facturaclient` TINYINT(1) NULL ,
`cant_factura` int(10) NULL ,
`produs` VARCHAR(45) NULL ,
`furnizor` VARCHAR(45) NULL ,
PRIMARY KEY (`codfactura`) )

ENGINE = InnoDB;

-- ------------------------------------------------------ Table `proiect_alex`.`Facturi_Produse`


-- ----------------------------------------------------DROP TABLE IF EXISTS `proiect_alex`.`Facturi_Produse` ;
CREATE TABLE IF NOT EXISTS `proiect_alex`.`Facturi_Produse` (
`codfactura` INT(10) NOT NULL ,
`codprodus` INT(10) NOT NULL ,
PRIMARY KEY (`codfactura`, `codprodus`) ,
CONSTRAINT `fk_Facturi_Produse_Facturi1`
FOREIGN KEY (`codfactura` )
REFERENCES `proiect_alex`.`Facturi` (`codfactura` ),
CONSTRAINT `fk_Facturi_Produse_Produse1`
FOREIGN KEY (`codprodus` )
REFERENCES `proiect_alex`.`Produse` (`codprodus` ) )
ENGINE = InnoDB;

-- ------------------------------------------------------ Table `proiect_alex`.`Produse_Bon`


-- ----------------------------------------------------DROP TABLE IF EXISTS `proiect_alex`.`Produse_Bon` ;
CREATE TABLE IF NOT EXISTS `proiect_alex`.`Produse_Bon` (
`codprodus` INT(10) NOT NULL ,
`codbon` INT(10) NOT NULL ,
PRIMARY KEY (`codprodus`, `codbon`) ,
CONSTRAINT `fk_Produse_Produse1`
FOREIGN KEY (`codprodus` )
REFERENCES `proiect_alex`.`Produse` (`codprodus` ),
CONSTRAINT `fk_Produse_Bon_Bon1`
FOREIGN KEY (`codbon` )
REFERENCES `proiect_alex`.`Bon` (`codbon` ) )
ENGINE = InnoDB;

Anexa 5:
Codul folosit pentru crearea functiile care efectueaza cautare de produs:
public static List getResults(String query) throws SQLException
{
List<String> results = new ArrayList<>();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
while (rs.next()) {
results.add(rs.getString(1));
}} catch (Exception e) {
e.printStackTrace();
System.exit(1);
} finally {
// release database resources
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return results;
}
public void cautare_produse(){
String
denprodus=jTextField3_denumire_cautare_introducere.getText();

String
categorie=jTextField1_categorie_cautare_introducere.getText();
String pret=jTextField2_pret_cautare_introducere.getText();
int ok=0;
final DefaultListModel model = new DefaultListModel();
List<String> list = null;
String query = " ";
try {
if (denprodus.isEmpty() && categorie.isEmpty() &&
pret.isEmpty()){
JOptionPane.showMessageDialog(null," Nu ati completa nici
un criteriu de cautare !"+"\n"+"Completati cel putin un criteriu
de cautare ! ",null,JOptionPane.INFORMATION_MESSAGE);
ok=1;}
else {ok=0;
if(!denprodus.isEmpty() && !categorie.isEmpty() && !
pret.isEmpty() ){
query="select * from produse where denprodus regexp
'"+denprodus+"' and categorie regexp '"+categorie+"' and
pret="+pret+" ";
list = getResults("select denprodus from produse
where denprodus regexp '"+denprodus+"' and categorie regexp
'"+categorie+"' and pret="+pret+" ");
AlexProject.principal.refresh_produse(query);
}
else
if(denprodus.isEmpty() && !
categorie.isEmpty() && !pret.isEmpty() ){
query="select * from produse where categorie
regexp '"+categorie+"' and pret="+pret+" ";
list = getResults("select denprodus from
produse where categorie regexp '"+categorie+"' and
pret="+pret+" ");
AlexProject.principal.refresh_produse(query);
}
else
if(!denprodus.isEmpty() &&
categorie.isEmpty() && !pret.isEmpty() ){
query="select * from produse where
denprodus regexp '"+denprodus+"' and pret="+pret+" ";

list = getResults("select denprodus from


produse where denprodus regexp '"+denprodus+"' and
pret="+pret+" ");
AlexProject.principal.refresh_produse(query);
}

else
if(!denprodus.isEmpty() && !
categorie.isEmpty() && pret.isEmpty() ){
query="select * from produse where
denprodus regexp '"+denprodus+"' and categorie regexp
'"+categorie+"' ";
list = getResults("select denprodus
from produse where denprodus regexp '"+denprodus+"' and
categorie regexp '"+categorie+"' ");
AlexProject.principal.refresh_produse(query);
}
else
if(denprodus.isEmpty() &&
categorie.isEmpty() && !pret.isEmpty() ){
list = getResults("select
denprodus from produse where pret="+pret+" ");
query="select * from produse
where pret="+pret+" ";

AlexProject.principal.refresh_produse(query);
}
else
if(!denprodus.isEmpty() &&
categorie.isEmpty() && pret.isEmpty() ){
query="select * from produse
where denprodus regexp '"+denprodus+"' ";
list = getResults("select
denprodus from produse where denprodus regexp '"+denprodus+"'
");
AlexProject.principal.refresh_produse(query);

}
else
if(denprodus.isEmpty()
&& !categorie.isEmpty() && pret.isEmpty() ){
query="select * from
produse where categorie regexp '"+categorie+"' ";
list =
getResults("select denprodus from produse where categorie regexp
'"+categorie+"' ");
AlexProject.principal.refresh_produse(query);
} }
} catch (SQLException ex) {
}
if (ok==0){
Iterator itr = list.iterator();
while (itr.hasNext()) {
model.addElement(itr.next());
}
jListCautareProduse.setModel(model);
}}

You might also like