Sunteți pe pagina 1din 31

Colegiul Tehnic ,,IULIU MANIU, BUcUresti

PROIECT
ATESTAT INFORMATICA


TEMA : EVIDENTA UNEI FARMACII









Proiect realizat de :
BORNEA I. LILIANA-GEORGIANA
CHIOSEA L.G. MARIANA-GEORGIANA-LAVINIA



Profesor coordonator:
prof. Brebenel Gheorghe








2013
2
Cuprins




1. Ce este Oracle?
2. Descrierea aplicaiei
3. Modelul conceptual
4. Maparea modelului conceptual
5. Cod SQL
6. Bibliografie
3

1. CE ESTE ORACLE?

Oracle const dintr-un set complet de constructori de aplicaii i produse pentru
utilizatori, cutnd s asigure soluii complete n tehnologia informaiei.
Aplicaiile Oracle sunt portabile peste un numr mare de staii de lucru i sisteme de
operare, de la calculatoare personale la procesoare paralele.
Oracle este nzestrat cu un flexibil Sistem de Management al Bazelor de Date (DBMS)
- Serverul Oracle - pentru stocarea i managementul informaiei utilizate de aplicaii.
Printre multele dezvoltri de aplicaii i produse pentru utilizatori accesibile n familia
Oracle, exist o posibilitate comun pentru a accesa baza de date.
Dac direct sau indirect, aceasta este realizat prin Limbajul cu Structura de Interogare
(SQL),va fi un subiect pe care noi il vom trata n acest curs.
Produsele Oracle conin:
Oracle Text Retrieval
O tehnologie care adaug capabiliti de refacere complet a textului ntr-o baz de
date Oracle.
Pro*Oracle
O serie de precomilatoare care permit accesul bazelor de date Oracle la limbajele de
programare C, Cobol, Fortran , PL/1, Pascal i Ada.
Oracle Card
O interfa utilizator pentru producerea aplicaiilor cu baze de date uor de folosit ce
incorporeaz grafice i faciliti multimedia.
Oracle CASE
O familie de instrumente care ajut la analiza, designul i generarea aplicaiilor
Oracle.


SQL*Plus
Un instrument care permite o utilizare direct i interactiv a limbajului SQL pentru a
accesa serverul Oracle, utiliznd comenzi ad-hoc sau prin rularea fiierelor de comand.

4
SQL, SQL*PLUS i PL/SQL
*SQL
este limbajul utilizat pentru a accesa o baz de date relaional, inclusiv Oracle.
poate fi utilizat de fiecare instrument Oracle, cnd accesul la baza de date este
necesar.
*PL/SQL
este limbajul Procedural al lui Oracle pentru scrierea aplicaiilor i pentru
manipularea datelor n afara bazei de date;
poate include un subset al comenzilor SQL, cnd accesul la baza de date este cerut;
este accesibil n fiecare din produsele CDE. De asemenea n nsui serverul Oracle
(dac opiunea procedural este instalat).
*SQL*Plus
este un produs Oracle n care limbajele SQL i PL/SQL pot fi utilizate;
de asemenea are propriul limbaj de comand pentru controlul comportrii
produsului i pentru formatarea rezultatelor interogrilor SQL.
n concluzie, SQL i PL/SQL sunt limbaje care sunt utilizate ntr-un numr de produse
Oracle.
5
2. DESCRIEREA APLICAIEI

Aceast aplicaie realizeaz evidena unei farmacii i este realizat cu ajutorul Oracle
Application Expres.
Din punct de vedere compoziional, aplicaia este organizat n cinci seciuni care pot
fi vizitate prin accesarea meniurilor corespunzatoare. Aceste seciuni sunt: Home,
Medicamente, Furnizori, Achiziii/Desfacere, Situaii.
Atunci cnd este accesat unul dintre meniuri, intrm n seciunea asociat acestuia.
La accesarea meniului Home, intrm n prima pagin a aplicaiei, pagina de start.
Aceasta conine numele, autorul proiectului, ct i profesorul coordonator.




La accesarea meniului Medicamente se face intrarea in pagina ce contine lista
operatiilor ce pot fi efectuate asupra tabelei Medicamente.

Operatiile care se pot efectua asupra tabelei Medicamente sunt:
- adaugare informatii medicamente
- modificare informatii medicamente
- stergere informatii medicamente
6
Prin apasarea butonului Adaugare informatii medicamente ajungem in pagina prin
care se poate realiza adaugarea de informatii in tabela medicamente.

In cazul in care optiunea aleasa este Salvare, dupa adaugarea in baza de date, se
realizeaza redirectionarea catre pagina anterioara pentru a putea vizualiza rezultatul adaugarii.

In cazul in care utilizatorul se hotaraste sa renunte la adaugarea de informatii, acesta
poate prin simpla apasare a butonului Renuntare sa se intoarca in pagina principala a
meniului Medicamente.

Prin apasarea butonului Modificare informatii medicamente ajungem in pagina cu
informatiile despre medicamentele aflate pe stoc, n vederea selectrii medicamentului ale
crui informaii vor fi modificate.
Utilizatorul poate aranja datele in ordine crescatoare sau descrescatoare dupa: Cod
bara, Denumire, Categorie, Pret de vanzare, le poate filtra si poate alege cate randuri sa
apara pe pagina iar in coltul din dreapta, butonul Resetare filtru reseteaza filtrele la forma
initiala.
7


Dupa alegerea medicamentului ale carui informatii vor fi modificate, ajungem in
pagina unde putem modifica campurile despre medicament: Cod bare, Denumire, Unitate
de masura, Categorie, Pret de vanzare, Compensabil.


Butonul Salvare va memora modificarile facute iar cel de Renuntare ne intoarce la
pagina anterioara.

Pagina Stergere informatii medicament ne ajuta sa stergem informatiile despre un
medicament din tabela.
Avem si aici de asemenea optiunile de a aranja sau filtra datele.
8


Dupa ce am ales o masina pe care dorim sa o stergem,ne sunt afisate detaliile acesteia
si trebuie sa confirmam prin apasarea butonului Stergere sau Renuntare in cazul in care
dorim sa renuntam la proces intorcandu-ne la pagina anterioara.



La accesarea meniului Furnizori se face intrarea in pagina ce contine lista operatiilor
ce pot fi efectuate asupra tabelei Furnizori.

Operatiile care se pot efectua asupra tabelei Furnizori sunt:
- adaugare informatii furnizori
9

- modificare informatii furnizori

10

- stergere informatii furnizori

11



La accesarea meniului Achizitie/Desfacere se face intrarea in pagina ce contine lista
operatiilor ce pot fi efectuate asupra tabelei Facturi, Lista_fact si Bonuri, Lista_bon.

Operatiile care se pot efectua asupra tabelei Operati sunt:
- adaugare informatii achizitii
- adaugare informatii desfacere

Prin apasarea butonului Adaugare informatii achizitii se deschide pagina in care se
selecteaza furnizorul, dupa care se introduc informatiile despre factura : Numar si Data
facturii.
12


Aceste date vor fi salvate in tabela FACTURI, urmand ca datele despre produsele
aflate pe factura (produsul, cantitatea si pretul de intrare) sa fie memorate in tabela
LISTA_FACT.
13


Dupa selectarea unui produs se poate inchide factura sau se poate adauga un nou
produs pe factura.

Prin apasarea butonului Adaugare informatii desfacere ajungem la pagina cu produsele
aflate pe stoc ce pot fi vandute. In primul ecran utilizatorul selecteaza datele despre bonul de
vanzare : numar bon, data bon, numar reteta. Aceste date sunt memorate in table
LISTA_BON.
14

In ecranul urmator sunt introduse datele despre produsul vandut : denumire,
cantitate, pret de vanzare.

15

In continuare bonul poate fi inchis sau se poate repeta operatia de adaugare a unui nou
produs pe bonul de vanzare.


La accesarea meniului Situatii se face intrarea in pagina ce contine lista situatiilor de
iesire.
16

Exista urmatoarele Situatii de iesire:
- Stoc produse
- Lista produselor cumparate intr-o luna
- Lista produselor vandute intr-o luna
- Lista facturilor de cumparare intr-o luna
- Lista facturilor de vanzare intr-o luna

Prin apasarea butonului Stoc produse sunt afisate produsele aflate pe stoc, cat si stocul
existent la momentul respectiv. Stocul produselor se calculeaza adaugand la stocul initial al
fiecarui produs cantitatea intrata si scazand cantitatea vanduta.
Se poate realiza sortarea si filtrarea datelor din tabel precum si exportul acestora intr-
un fisier excel.
17

Prin apasarea butonului Lista produselor cumparate intr-o luna este selectata luna si
anul despre care dorim informatii, dupa care sunt afisate informatiile despre produsele
cumparate in acea luna. Utilizatorul poate filtra si sorta datele dupa categorie, cod bara,
denumire, pret de intrare, cantitate si poate alege cate randuri ce vor fi afisate. De
asemenea datele pot fi exportate intr-un fisier excel.

18

Prin apasarea butonului Lista produselor vandute intr-o luna este selectata luna si anul
despre care dorim informatii, dupa care sunt afisate informatiile despre produsele vandute in
acea luna. Utilizatorul poate filtra si sorta datele dupa categorie, cod bara, denumire, pret
de intrare, cantitate si poate alege cate numarul de randuri ce vor fi afisate. De asemenea
datele pot fi exportate intr-un fisier excel.

19

Prin apasarea butonului Facturi cumparare intr-o luna este selectata luna si anul despre
care dorim informatii, dupa care sunt afisate informatiile despre documentele de cumparare in
acea luna : numar document, data document, valoare. Utilizatorul poate filtra si sorta
datele dupa numar document, data document, valoare si poate alege cate randuri vor fi
afisate. De asemenea datele pot fi exportate intr-un fisier excel.

20

Prin apasarea butonului Bonuri de vanzare intr-o luna este selectata luna si anul despre
care dorim informatii, dupa care sunt afisate informatiile despre documentele de vanzare in
acea luna : numar document, data document, valoare. Utilizatorul poate filtra si sorta
datele dupa numar document, data document, valoare si poate alege cate randuri vor fi
afisate. De asemenea datele pot fi exportate intr-un fisier excel.

21


































FURNIZOR
# idfurnizor
* cui
* denumire
* adr
* localitate
o tel
o email
BON
# idbon
* numar
* data
o reteta
LISTA_BON
# idlstbon
* cantitate
* pret_vanzare
MEDICAMENTE
# idmedicament
* cod_bara
* denumire
* um
* categorie
* pret_vanzare
* compensabil
o stoc_initial
FACTURA
# idfactura
* numar
* data

LISTA_FACT
#idlstfact
* cantitate
* pret_intrare
3. MODELUL CONCEPTUAL

4. MAPAREA MODELULUI CONCEPTUAL

n urma maprii modelului conceptual prezentat anterior au fost create urmtoarele tabele :
MEDICAMENTE





FURNIZORI







24

FACTURI






LISTA_FACT








BONURI

25




LISTA_BON






26
5. COD SQL
TABELA FURNIZORI
-CREARE TABELA-
create table furnizori (
idfurnizor NUMBER(5) PRIMARY KEY,
cui VARCHAR2(13) NOT NULL UNIQUE,
denumire VARCHAR(30) NOT NULL,
adr VARCHAR(40) NOT NULL,
localitate VARCHAR2(30) NOT NULL,
tel VARCHAR(13),
email VARCHAR(20)
)

-INSERARE INFORMATII TABELA-
insert into furnizori (idfurnizor, cui, denumire, adr, localitate, tel, email)
values (1,'R1223312','S.C. ALFA S.R.L.','B-DUL IULIU MANIU, NR.128', 'BUCURESTI',
'021466887', 'alfa@gmail.com')
insert into furnizori (idfurnizor, cui, denumire, adr, localitate, tel, email)
values (2,'R1489412','S.C. BETA S.R.L.','B-DUL IULIU MANIU, NR.1', 'BUCURESTI',
'021412347', 'beta@gmail.com')
insert into furnizori (idfurnizor, cui, denumire, adr, localitate, tel, email)
values (3,'R98765432','S.C. ATIBIOTICE S.A.','B-DUL SUCEVEI, NR.1','IASI', '0344444444',
'antibiotice@gmail.ro')

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-
CREATE SEQUENCE furnizori_seq start with 4 increment by 1

-CREARE VIZUALIZARE LISTA FURNIZORI-
create or replace view v_furnizor_gest as(
select denumire||' - '||cui as FURNIZOR, idfurnizor
from furnizori cit
)

TABELA MEDICAMENTE
-CREARE TABELA-
create table medicamente(
idmedicament NUMBER(5) PRIMARY KEY,
cod_bara VARCHAR2(13) NOT NULL UNIQUE,
denumire VARCHAR2(30) NOT NULL,
um CHAR(3) NOT NULL,
categorie VARCHAR(30) NOT NULL,
pret_vanzare NUMBER(7,2) NOT NULL,
compensabil CHAR(1) DEFAULT 'N' NOT NULL,
stoc_initial NUMBER(7,2));

-INSERARE INFORMATII TABELA-
insert into medicamente (idmedicament, cod_bara, denumire, um, categorie, pret_vanzare,
compensabil, stoc_initial) values (1,'9876512435127', 'ALGOCALMIN', 'CUT', 'ANALGEZIC',
9.5, 'N', 200)
insert into medicamente (idmedicament, cod_bara, denumire, um, categorie, pret_vanzare,
compensabil, stoc_initial) values (2, '9876527415127', 'PARACETAMOL', 'CUT',
'ANTIINFLAMATOR', 8.5, 'N', 150)
27
insert into medicamente (idmedicament, cod_bara, denumire, um, categorie, pret_vanzare,
compensabil, stoc_initial) values (3, '987109215127', 'TETRACICLINA', 'CUT', 'ANTIBIOTIC',
12, 'D', 0)


-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-
CREATE SEQUENCE medicamente_seq start with 4 increment by 1

-CREARE VIZUALIZARE LISTA MEDICAMENTE-
create or replace view v_medicamente_gst as(
select denumire||' - '||cod_bara as DENUMIRE, idmedicament
from medicamente med
)

-CREARE VIZUALIZARE LISTA STOC MEDICAMENTE (FARA STOC ZERO)-
create or replace view v_medicamente_gest as(select (denumire||' ('||um||') -'||compensabil) as
DENUMIRE, sum(stoc) as STOC, idmedicament FROM
(select idmedicament, denumire, um, compensabil, med.stoc_initial as stoc
from medicamente med
UNION
select idmedicament, denumire, um, compensabil,((select sum(lsf.cantitate) from lista_fact lsf
where lsf.idmedicament=med.idmedicament)) as stoc
from medicamente med group by idmedicament, denumire,um, compensabil
UNION
select idmedicament, denumire, um, compensabil,((select (-1)*sum(lsb.cantitate) from lista_bon lsb
where lsb.idmedicament=med.idmedicament)) as stoc
from medicamente med group by idmedicament, denumire,um, compensabil)
GROUP BY idmedicament, denumire, um, compensabil
HAVING sum(stoc)>0
)

-CREARE VIZUALIZARE LISTA STOC MEDICAMENTE (INCLUSIV STOC ZERO)-
create or replace view v_medicamente as(select (denumire||' ('||um||') -'||compensabil) as
DENUMIRE, sum(stoc) as STOC, idmedicament FROM
(select idmedicament, denumire, um, compensabil, med.stoc_initial as stoc
from medicamente med
UNION
select idmedicament, denumire, um, compensabil,((select sum(lsf.cantitate) from lista_fact lsf
where lsf.idmedicament=med.idmedicament)) as stoc
from medicamente med group by idmedicament, denumire,um, compensabil
UNION
select idmedicament, denumire, um, compensabil,((select (-1)*sum(lsb.cantitate) from lista_bon lsb
where lsb.idmedicament=med.idmedicament)) as stoc
from medicamente med group by idmedicament, denumire,um, compensabil)
GROUP BY idmedicament, denumire, um, compensabil
)


TABELA FACTURA
-CREARE TABELA-
create table facturi (
idfactura NUMBER(5) PRIMARY KEY,
28
idfurnizor NUMBER(5) NOT NULL REFERENCES furnizori(idfurnizor),
numar VARCHAR2(10) NOT NULL,
data DATE DEFAULT SYSDATE NOT NULL
)

-INSERARE INFORMATII TABELA-
insert into facturi (idfactura,idfurnizor,numar,data) values (1,1,'12345','01-FEB-2013');
insert into facturi (idfactura,idfurnizor,numar,data) values (2,1,'54321','02-FEB-2013');

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-
CREATE SEQUENCE facturi_seq start with 3 increment by 1

TABELA LISTA_FACT
-INSERARE INFORMATII TABELA-
create table lista_fact (
idlstfact NUMBER(10) PRIMARY KEY,
idfactura NUMBER(5) NOT NULL REFERENCES facturi(idfactura),
idmedicament NUMBER(5) NOT NULL REFERENCES medicamente (idmedicament),
cantitate NUMBER(3) NOT NULL,
pret_intrare NUMBER(7,2) NOT NULL
)

-INSERARE INFORMATII TABELA-
insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (1,1,1,10,8.5)
insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (2,1,2,10,7.5)
insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (3,1,3,5,11)
insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (4,1,4,5,9)
insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (6,2,1,10,8.5)

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-
CREATE SEQUENCE lista_fact_seq start with 7 increment by 1


TABELA BONURI
-CREARE TABELA-
create table bonuri (
idbon NUMBER(5) PRIMARY KEY,
numar VARCHAR2(10) NOT NULL,
data DATE DEFAULT SYSDATE NOT NULL,
valoare NUMBER(15,2),
reteta VARCHAR2(5)
)

-INSERARE INFORMATII TABELA-
insert into bonuri (idbon,numar,data,valoare,reteta) values (1,'123456','15-FEB-2013',18,'123')

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-
CREATE SEQUENCE bonuri_seq start with 2 increment by 1


TABELA LISTA_BON
-CREARE TABELA-
29
create table lista_bon (
idlstbon NUMBER(10) PRIMARY KEY,
idbon NUMBER(5) NOT NULL REFERENCES bonuri(idbon),
idmedicament NUMBER(5) NOT NULL REFERENCES medicamente(idmedicament),
cantitate NUMBER(3) NOT NULL,
pret_vanzare NUMBER(7,2) NOT NULL
)

-INSERARE INFORMATII TABELA-
insert into lista_bon (idlstbon,idbon,idmedicament,cantitate,pret_vanzare) values (1,1,1,1,9.5)
insert into lista_bon (idlstbon,idbon,idmedicament,cantitate,pret_vanzare) values (2,1,2,1,8.5)

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-
CREATE SEQUENCE lista_bon_seq start with 3 increment by 1


SITUATII DE IESIRE
STOC PRODUSE
select idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil, sum(stoc) as
STOC
from (
select idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil,
med.stoc_initial as stoc
from medicamente med
UNION
select idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil,(select
sum(lsf.cantitate) from lista_fact lsf where lsf.idmedicament=med.idmedicament) as stoc
from medicamente med
UNION
select idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil,(select (-1) *
sum(lsb.cantitate) from lista_bon lsb where lsb.idmedicament=med.idmedicament) as stoc
from medicamente med
)
group by idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil

LISTA PRODUSE CUMPARATE INTR-O LUNA
select lsf.idmedicament, med.categorie, med.cod_bara, med.denumire, med.um,
med.compensabil,lsf.pret_intrare, sum(lsf.cantitate) as CANTITATE,
lsf.pret_intrare*sum(lsf.cantitate) as VALOARE
from lista_fact lsf, medicamente med, facturi fact
where (lsf.idmedicament=med.idmedicament) and (lsf.idfactura=fact.idfactura) and
TO_NUMBER(TO_CHAR(fact.data,'MM')) =
TO_NUMBER(TO_CHAR(TO_DATE(:P17_LUNA,'DD.MM.YYYY'),'MM')) and
TO_NUMBER(TO_CHAR(fact.data,'YYYY')) =
TO_NUMBER(TO_CHAR(TO_DATE(:P17_LUNA,'DD.MM.YYYY'),'YYYY'))
group by lsf.idmedicament, med.categorie, med.cod_bara, med.denumire, med.um,
med.compensabil, lsf.pret_intrare

LISTA PRODUSE VANDUTE INTR-O LUNA
select lsb.idmedicament, med.categorie, med.cod_bara, med.denumire, med.um, med.compensabil,
lsb.pret_vanzare, sum(lsb.cantitate) as CANTITATE
from lista_bon lsb, medicamente med, bonuri bon
30
where (lsb.idmedicament=med.idmedicament) and (lsb.idbon=bon.idbon) and
TO_NUMBER(TO_CHAR(bon.data,'MM')) =
TO_NUMBER(TO_CHAR(TO_DATE(:P18_LUNA,'DD.MM.YYYY'),'MM')) and
TO_NUMBER(TO_CHAR(bon.data,'YYYY')) =
TO_NUMBER(TO_CHAR(TO_DATE(:P18_LUNA,'DD.MM.YYYY'),'YYYY'))
group by lsb.idmedicament, med.categorie, med.cod_bara, med.denumire, med.um,
med.compensabil, lsb.pret_vanzare


LISTA FACTURILOR DE CUMPARARE INTR-O LUNA
select fact.idfactura, fact.numar, fact.data, fur.denumire, fur.localitate, (select sum (lstf.cantitate *
lstf.pret_intrare) from lista_fact lstf where fact.idfactura=lstf.idfactura ) AS VALOARE
from facturi fact, furnizori fur
where (fact.idfurnizor=fur.idfurnizor) and TO_NUMBER(TO_CHAR(fact.data,'MM')) =
TO_NUMBER(TO_CHAR(TO_DATE(:P19_LUNA,'DD.MM.YYYY'),'MM')) and
TO_NUMBER(TO_CHAR(fact.data,'YYYY')) =
TO_NUMBER(TO_CHAR(TO_DATE(:P19_LUNA,'DD.MM.YYYY'),'YYYY'))

LISTA BONURILOR DE VANZARE INTR-O LUNA
select bon.idbon, bon.numar, bon.data,
(select sum(lstb.cantitate*lstb.pret_vanzare) from lista_bon lstb where bon.idbon=lstb.idbon) AS
VALOARE
from bonuri bon
where TO_NUMBER(TO_CHAR(bon.data,'MM')) =
TO_NUMBER(TO_CHAR(TO_DATE(:P20_LUNA,'DD.MM.YYYY'),'MM')) and
TO_NUMBER(TO_CHAR(bon.data,'YYYY')) =
TO_NUMBER(TO_CHAR(TO_DATE(:P20_LUNA,'DD.MM.YYYY'),'YYYY'))

31
6. BIBLIOGRAFIE

1. Popescu, Carmen, Manual de informatic pentru clasa a XII-a, Editura L&S Info-mat,
2007

2. Nume site : ORACLE ACADEMY
https://academy.oracle.com/pages/student_area.htm
Ce ai gsit pe acest site : Curs online SQL si PL/SQL


3. Nume site : Building an Application using Oracle Application Express
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/devdays2012/apexp1_lab/apex
p1_lab.html
Ce ai gsit pe acest site : Tutorial pentru realizarea aplicatiilor utiliznd Application Express

S-ar putea să vă placă și