Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » scoala » informatica
INFORMATICA - GESTIONAREA STOCULUI UNEI FARMACII

INFORMATICA - GESTIONAREA STOCULUI UNEI FARMACII


 

GESTIONAREA STOCULUI UNEI FARMACII

CUPRINS

1.BAZE DE DATE. GENERALITATI .

2. Operatii specifice prelucrarii bazelor de date ..

2.1. Comenzi pentru citirea si afisarea datelor .

2.2. Ferestre ..

2.3. Crearea meniurilor

2.3.1. Crearea meniurilor de tip bara . 

2.3.2.Crearea meniurilor popup .

3. Detalii de implementare .

4. LISTINGUL PROGRAMULUI .

5. BIBLIOGRAFIE .

1. BAZE DE DATE. GENERALITATI.

Baza de date este un ansamblu unitar, organizat si structurat de date referitoare la un domeniu particular, care poate fi utilizat si prelucrat de mai multi operatori in scopuri diferite.

Exista foarte multe activitati pentru care se organizeaza baze de date: evidente financiar-contabile si bancare, diagnosticare, informare medicala, rezervare de locuri in statiuni turistice, invatamant, transporturi etc.

Pentru colectarea, organizarea, memorarea si regasirea informatiilor dintr-o baza de date, se utilizeaza asa - numitele sisteme de gestiune a bazelor de date (SGBD). Termenul de baza de date se refera la datele de prelucrat, la modul de organizare a acestora pe suportul fizic de memorare, iar termenul de gestiune semnifica totalitatea operatiilor ce se vor aplica asupra datelor din bazele de date.

Sistemul de gestiune a bazelor de date poate sa fie conventional, in care informatiile sunt stocate pe foi de hartie (sau alte suporturi) depuse in dosare, registre, rafturi, fisete, incaperi etc. sau computerizat, caz in care informatiile sunt pastrate in volume, repertorii, fisiere pe suport magnetic. In acest caz, operarea in baza de date se face prin intermediul unor programe, de catre operatori special instruiti in vederea folosirii acestora.

SGBD (sistem de gestiune al bazelor de date) este un pachet de programe, creat de firme specializate, care realizeaza gestiunea si prelucrarea complexa a bazelor de date.

2. Operatii specifice prelucrarii bazelor de date

2.1. Comenzi pentru citirea si afisarea datelor

Afisarea datelor pe ecran

Se poate face cu comenzile ?/?? si SAY.

Clauzele PICTURE si FUNCTION, care apar in ambele comenzi, specifica formatul de afisare. Fiecare caracter din <expC1> (sirul clauzei PICTURE) determina modul de afisare al unui singur caracter din textul de iesire (cel de pe pozitia corespunzatoare), in timp ce caracterele din <expC2> (sirul clauzei FUNCTION) se refera fiecare la intregul text de iesire. De asemenea, aceste clauze pot aparea si in comanda de citire @.GET.

Caracterele din sirul clauzei FUNCTION au urmatoarea semnificatie:

Caracter

Semnificatie

A

Accepta doar caractere alfabetice.

B

Aliniaza la stanga datele numerice in interiorul campului.

C

Dupa un numar pozitiv, se trece la linia urmatoare pe ecran (se foloseste doar pentru SAY si pentru date numerice).

D

Utilizeaza formatul de data calendaristica stabilit cu SET DATE.

E

Afiseaza date calendaristice in formatul european.

I

Centreaza textul in interiorul campului.

J

Aliniaza la dreapta textul.

K

Selecteaza intregul camp de editare cand cursorul se muta in acest camp.

L

Afiseaza zerouri in fata punctului zecimal (in locul spatiilor) in iesirile numerice.

M <lista>

Permite selectarea unui element al listei ca valoare pentru variabila citita cu comanda GET. Elementele listei pot fi parcurse, in timpul citirii campului respectiv, cu tasta SPACE sau tastand prima litera a elementului selectat. Terminarea editarii campului este semnalata prin apasarea tastei ENTER. Se foloseste doar pentru comanda GET, la citirea sirurilor de caractere.

R

La utilizarea unui sir de caractere continand si alte caractere decat coduri PICTURE, acestea vor fi afisate pe ecran, dar nu vor fi depozitate in variabila de citit. Se folosesc doar pentru date de tip sir de caractere.

S(n)

Limiteaza latimea de afisare la n caractere.

T

Elimina blancurile de inceput si de sfarsit.

X

Se afiseaza DB dupa numerele negative. (Se foloseste cu comanda SAY).

Z

Se foloseste doar pentru date numerice; in cazul in care valoarea campului este 0, se vor afisa numai blancuri.

Numerele negative sunt incluse intre paranteze.

Se foloseste doar pentru siruri de caractere, transformand caracterele alfabetice in majuscule.

Simbolul $ apare alaturi de data afisata (format monetar).

Caracterele din sirul clauzei PICTURE au urmatoarea semnificatie:

Caracter

Semnificatie

A

Accepta doar caractere alfabetice.

W


Accepta doar date de tip logic.

N

Accepta doar litere si cifre.

X

Nu face restrictii (permite orice caractere).

Y

Accepta doar caracterele Y, y, N, n (de la Yes si No) si le transforma in majuscule.

Pentru date de tip sir de caractere accepta doar cifre, iar pentru date numerice cifre si semne.

Accepta cifre, blancuri si semne.

Afiseaza simbolul monetar definit cu comanda SET CURRENCY.

Afiseaza asteriscuri in fata valorilor numerice.

Precizeaza pozitia punctului zecimal.

Separa cifrele la stanga punctului zecimal.

Comanda ?/??

Comanda ?/?? afiseaza rezultatele evaluarii expresiilor specificate, in formatul precizat. Daca se foloseste ??, atunci afisarea incepe de la pozitia cursorului, iar daca se foloseste ? afisarea incepe de la inceputul primei linii care urmeaza celei pe care se afla cursorul.

Forma generala:

? | ?? <expr1>

[PICTURE <expC1>] | [FUNCTION <expC2>]

[AT <expN1>]

[FONT <expC3> [, <expN2>] [STYLE <expC4> | <expr2>]]

[, <expr3>]

clauza AT <expN1> precizeaza coloana unde va fi afisata data respectiva;

clauza FONT <expC3> [, <expN2>] indica fontul si marimea caracterelor cu care se va face afisarea; seturile de caractere disponibile sunt: Arial, Courier, FoxFont, FoxPro Window Font, Roman, Small Fonts, Symbol, New Roman etc.

clauza STYLE <expC4> | <expr2> specifica stilul caracterelor folosite pentru afisare; cele mai importante stiluri de afisare sunt: Bold (ingrosat), Italic (inclinat), Normal, Underline (subliniat), Strikeout (taiat); acestea pot fi specificate prin caracterele B, I, N, U, -;

Comanda @.SAY

Comanda @.SAY permite afisarea datelor de diverse tipuri pe ecran.

Forma generala:

@ <linie, coloana> SAY <expr>

[FUNCTION <expC1>]

[PICTURE <expC2>]

[SIZE <expN1>, <expN2>]

[FONT <expC3>[, <expN3]]

[STYLE <expC4>]

[COLOR SCHEME <expN4> | COLOR < lista_perechi_culori >]

<linie, coloana> specifica pozitia din care incepe afisarea rezultatului evaluarii expresiei <expr>;

clauza SIZE <expN1>, <expN2> specifica dimensiunea zonei in care se face afisarea cu comanda SAY, ca numar de linii (<expN1>) si coloane (<expN2>);

clauzele FONT si STYLE au aceeasi semnificatie ca la comanda ?/??;

clauza COLOR SCHEME <expN4> | COLOR < lista_perechi_culori > specifica culoarea fondului si a caracterelor la afisare.

Citirea datelor

Reprezinta preluarea datelor de la tastatura si memorarea lor in variabile de memorie. Ea se poate face cu una dintre comenzile:

Comanda INPUT

Comanda INPUT permite citirea datelor de orice tip (numeric, logic, sir de caractere, data calendaristica). Daca se introduce de la tastatura un sir de caractere, atunci acesta trebuie plasat intre apostrofuri sau ghilimele.

Forma generala:

INPUT

[<expC>] TO <var_memorie>

optiunea <expC> permite afisarea unui mesaj inaintea introducerii datelor;

<var_memorie> reprezinta numele variabilei de memorie in care se vor memora datele introduse de la tastatura; variabila de memorie nu trebuie declarata anterior, deoarece ea se creeaza automat, prin comanda INPUT; tipul datelor introduse va defini implicit si tipul variabilei.

Comanda ACCEPT

Comanda ACCEPT este asemanatoare comenzii INPUT, cu deosebirea ca permite citirea numai a variabilelor de tip sir de caractere (secventa de caractere nu se mai delimiteaza prin apostrofuri sau ghilimele).

Forma generala:

ACCEPT

[<expC>] TO <var_memorie>

Daca in loc de un sir de caractere se apasa tasta ENTER, atunci se considera ca s-a introdus sirul vid. Daca se apasa tasta ESC avem doua cazuri:

SET ESCAPE este ON: se considera ca s-a introdus tot sirul vid;

SET ESCAPE este OFF: se termina executia programului.

Comanda WAIT

Comanda WAIT permite o pauza pana cand operatorul apasa o tasta.

Forma generala:

WAIT

[<expC>] [TO <var_memorie>]

[WINDOW [NOWAIT]]

[CLEAR]

[TIMEOUT <expN>]

Mesajul dat de <expC> se afiseaza pe ecran; la apasarea unei taste, caracterul corespunzator acesteia este atribuit variabilei <var_memorie> (nu se mai asteapta confirmarea cu ENTER). Daca se tasteaza ENTER sau un caracter neimprimabil, variabila va contine sirul nul.

clauza WINDOW determina afisarea mesajului intr-o fereastra, in coltul din dreapta sus al ecranului; apasand o tasta mesajul se va sterge; daca se utilizeaza optiunea NOWAIT, tasta apasata nu va sterge mesajul de pe ecran;

clauza CLEAR sterge o fereastra sistem sau mesajul WAIT <nume_fereastra> NOWAIT de pe ecran;

clauza TIMEOUT <expN> specifica numarul de secunde de asteptare pentru tastarea unei valori.

Comenzile @.GET si READ

Se utilizeaza atunci cand in timpul executiei unui program sunt necesare unele date de la utilizator. Aceste comenzi se utilizeaza de obicei in combinatie cu comanda @.SAY, cu ajutorul careia se afiseaza pe ecran informatiile care trebuie citite (mesajele).

Definirea zonelor ecranului in care utilizatorul va completa datele de intrare, (numite campuri de editare) se face cu comanda @.GET, iar citirea datelor se face la executia comenzii READ.

Forma generala a comenzii @.GET:

@ <linie, coloana> GET <var_memorie> | <camp>

[FUNCTION <expC1>]

[PICTURE <expC2>]

[FONT <expC3>[, <expN1>]]

[STYLE <expC4>]

[DEFAULT <expr1>]

[ENABLE | DISABLE]

[MESSAGE <expC5>]

[[OPEN] WINDOW <window name>]

[RANGE [<expr2>] [, <expr3>]]

[SIZE <expN2>, <expN3>]

[VALID <expL1> | <expN4> [ERROR <expC6>]]

[WHEN <expL2>]

[COLOR SCHEME <expN5> | COLOR <lista_perechi_culori>]

Comanda defineste in pozitia data de linia si coloana specificate un camp de editare in care va fi citita o valoare, care va fi depusa intr-o variabila de memorie sau intr-un camp al bazei de date active. Variabilele care se citesc trebuie initializate, cu exceptia cazului in care ele au fost create anterior sau sunt campuri ale bazei de date.

clauzele FUNTION, PICTURE, FONT, STYLE, SIZE si COLOR au aceeasi semnificatie ca la comanda @.SAY;

clauza DEFAULT <expr1> se foloseste daca variabila <var_memorie> nu exista; aceasta va fi initializata cu valoarea rezultata din evaluarea expresiei <expr1>;

clauza ENABLE | DISABLE permite sau nu accesul la campul citit;

clauza MESSAGE <expC5> afiseaza pe ultima linie a ecranului un mesaj explicativ cu privire la campul de editare in care se afla cursorul;

clauza WINDOW permite editarea campurilor memo intr-o fereastra definita anterior;

clauza RANGE [<expr2>] [, <expr3>] stabileste domeniul de valori pentru campul de editare;

clauza VALID <expL1> | <expN4> permite validarea unui camp citit cu comenzile GET si READ; atunci cand se foloseste cu expresie logica (<expL1>), iesirea din editare este permisa daca expresia are valoarea adevarat; atunci cand se foloseste cu expresie numerica (<expN4>), avem trei cazuri, in functie de valoarea expresiei:

a)       valoarea 0: camp incorect;

b)      valoare pozitiva: camp corect, iar dupa iesirea din campul de editare se avanseaza peste <expN4> campuri in cadrul comenzii READ;

c)       valoare negativa: camp corect, iar dupa iesirea din campul de editare se sare inapoi peste <expN4> campuri in cadrul comenzii READ;

Optiunea ERROR <expC6> permite afisarea propriului mesaj de eroare.

clauza WHEN <expL2> permite accesul la editarea campului daca expresia logica este adevarata si nu permite editarea in caz contrar.

Comanda CLEAR GETS

Dezactiveaza toate comenzile @.GET active.

Comanda CLEAR ALL

Inchide toate bazele de date, elibereaza toate variabilele de memorie, dezactiveaza variabilele -get.

2.2. Ferestre

Sunt zone dreptunghiulare ale ecranului care pot fi create, activate sau dezactivate ori de cate ori este necesar.

Definirea unei ferestre se realizeaza cu comanda:

DEFINE WINDOW <fereastra> FROM <r1, c1> TO <r2, c2> COLOR <culori>

Activarea unei ferestre se realizeaza cu comanda:

ACTIVATE WINDOW <fereastra>

Dezactivarea unei ferestre se face cu comanda:

DEACTIVATE WINDOW <fereastra>

2.3. Crearea meniurilor

2.3.1. Crearea meniurilor de tip bara

In general aplicatiile au la baza un sistem de meniuri. De obicei, un sistem de meniuri este format dintr-un meniu de tip bara (orizontal) care contine un meniu popup (vertical) atasat fiecarui pad. Realizand deplasarea de la un pad la celalalt, se afiseaza popup-ul corespunzator. In continuare se pot selecta optiuni din popup-ul ales.

Crearea unui sistem de meniuri se face cu comanda:

DEFINE MENU nume_meniu [BAR [AT LINE expr_num1]]

[IN [WINDOW] nume_fereastra| IN SCREEN ]

[KEY nume_tasta] [MARK expr_car1>]

[MESSAGE expr_car2>] [NOMARGIN]

[COLOR lista_perechi_culori|COLOR SCHEME expr_num2]

Pentru a crea un sistem de meniuri, se creeaza mai intai bara de meniuri prin comanda DEFINE MENU. Comanda asigneaza un nume nume_meniu, pentru meniul bara creat. Pasul urmator il constituie definirea fiecarui pad al barei prin comenzi DEFINE PAD si specificarea popup-urilor prin comenzi ON PAD . ACTIVATE POPUP. In continuare se creeaza meniurile popup prin comenzi DEFINE POPUP, pentru ca in final sa se afiseze intregul sistem de meniuri prin comanda ACTIVATE MENIU.

Actiunea asociata unui pad poate fi:

Executia unei comenzi, executia unui program sau a unei proceduri prin intermediul comenzii DO.

Activarea unui alt meniu bara printr-o comanda ACTIVATE MENIU.

Activarea unui meniu popup printr-o comanda ACTIVATE POPUP.

2.3.2.Crearea meniurilor popup

Un meniu popup poate contine o lista de optiuni specificate de programator, continutul unui camp din toate articolele unei baze de date, o lista de fisiere sau o lista de campuri dintr-o baza de date.

DEFINE POPUP nume_popup [FROM lin1, col1] [ TO lin2, col2]

[IN [WINDOW] nume_fereastra | IN SCREEN]

[FOOTER expr_car] [KEY nume_tasta] [MARGIN]

[MARK expr_car2]

[MESSAGE expr_car3] [MOVER] [MULTI]

[PROMPT FIELD expr | PROMPT FILES | LIKE sablon]

[PROMPT STRUCTURE]

[RELATIVE] [SCROLL] [SHADOW] [TITLE expr_car4]

[COLOR SCHEME expr_num | COLOR lista_perechi_culori]

Plasarea optiunilor dorite intr-un meniu popup se realizeaza printr-o serie de comenzi DEFINE BAR. Daca meniul popup contine articole, fisiere sau campuri, plasarea acestora se realizeaza prin clauzele PROMP FIELD, PROMPT FILES sau PROMPT STRUCTURE.

Dupa activarea si afisarea meniului popup prin comanda ACTIVATE POPUP, puteti alege una din optiunile meniului. In functie de optiunea aleasa, se poate executa o rutina sau poate afisat si activat un alt popup. Daca la selectarea unei optiuni dintr-un popup se afiseaza un alt meniu popup sau bara, s-a realizat o structura ierarhica de popup-uri.

3. Detalii de implementare

Pentru realizarea practica a temei s-a utilizat aplicatia FOXPRO. Informatiile despre medicamentele dintr-o farmacie se vor memora intr-o baza de date STOC.DBF cu urmatoarea structura:

Nume camp

Tip

Lungime

Cod

Character

Denumire

Character

Substanta

Character

Pret

Numeric

Cantitate

Numeric

In programul stoc.prg am creat initial doua meniuri orizontale si trei submeniuri verticale (incluse in meniul OPERATII).

Submeniul INTRARI apeleaza procedura cu acelasi nume in care se cere initial introducerea codului medicamentului. Daca medicamentul exista, se cere introducerea cantitatii primite, se valideaza datele si se cumuleaza noua cantitate cu cea veche.

Daca medicamentul nu exista se introduc de la tastatura toate datele acestuia, se valideaza si se memoreaza in baza de date.


Submeniul IESIRI apeleaza procedura cu acelasi nume in care se cere iniTial introducerea codului medicamentului. Daca medicamentul exista, se cere introducerea cantitatii vandute, se valideaza datele si se scade noua cantitate din cea veche.


Daca medicamentul nu exista se afiseaza un mesaj.

4. LISTINGUL PROGRAMULUI

set talk off

close all

clear

clear window

use stoc order cod in 1

define popup operatii from 3,1 to 7,12

define bar 1 of operatii prompt 'INTRARI'

define bar 2 of operatii prompt 'IESIRI'

define bar 3 of operatii prompt 'STOCURI'

define menu monitor message 'Apasati tasta ESC pentru iesire'

define pad p1 of monitor prompt;

'OPERATII' at 1,3

define pad p2 of monitor prompt;

'EXIT' at 1,23

on pad p1 of monitor activate popup operatii

on pad p2 of monitor do GATA

on selection popup operatii do POPERATII

activate menu monitor

procedure POPERATII

do case

case bar()=1

do INTRARI

case bar()=2

do IESIRI

case bar()=3

do STOCURI

endcase

return

procedure GATA

deactivate menu

close all

clear all

return

procedure INTRARI

select 1

sp=0

DEFINE WINDOW intrari from 10,1 TO 30,75 TITLE 'INTRARI'

ACTIVATE WINDOW intrari

mcod=space(len(cod))

mdenumire=space(len(denumire))

mcantitate=0

msubstanta=space(len(substanta))

mpret=0

@ 1,2 say 'Codul ' get mcod

read

locate for cod=mcod

if found()

?'produs existent deja:'

sp=1

@ 5,2 say 'Denumire '

@ 5,20 say denumire

@ 7,2 say 'Substanta '

@ 7,20 say substanta

@ 9,2 say 'Pret '

@ 9,20 say pret

@ 11,2 say 'numarul de cutii' get mcantitate

read

mcantitate=cantitate+mcantitate

else

sp=0

@ 3,2 say 'Denumire 'get mdenumire

@ 5,2 say 'Substanta 'get msubstanta

@ 7,2 say 'Pretul ' get mpret

@ 9,2 say 'numarul de cutii' get mcantitate

read

endif

valida=space(1)

@ 17,3 say 'date corecte?(y/n)' get valida

read

if upper(valida)='Y'

if sp=1

replace cantitate with mcantitate

else

append blank

replace cod with mcod, denumire with mdenumire, substanta with msubstanta, pret with mpret,

cantitate with mcantitate

endif

endif

DEACTIVATE WINDOW intrari

return

procedure IESIRI

clear windows

DEFINE WINDOW iesiri FROM 10,1 TO 30,75 TITLE 'IESIRI'

ACTIVATE WINDOW iesiri

mcod=space(len(cod))

mcantitate=0

@ 1,2 say 'Codul ' get mcod

read

seek mcod

if found()

@ 3,2 say 'Denumire '

@ 3,20 say denumire

@ 5,2 say 'Substanta '

@ 5,20 say substanta

@ 7,2 say 'Pret '

@ 7,20 say pret

@ 9,2 say 'Numarul de cutii ' get mcantitate

read

mcantitate=cantitate-mcantitate

if mcantitate<0

?'Nu exista cantitatea de produse cerute'

else

valida=space(1)

@ 17,3 say 'date corecte?(y/n)' get valida

read

if upper(valida)='Y'

replace cantitate with mcantitate

endif

endif

else

?'Produsul nu exista in stoc'

endif

DEACTIVATE WINDOW output

return

procedure STOCURI

BROWSE NOMODIFY

return

BIBLIOGRAFIE

Popescu Eugen, Doina Preda s.a. - "FoxPro - teorie si aplicatii", Editura Else, Craiova, 2003;

Pantiru M., Pantiru I. - "Informatica, manual pentru clasa a XII-a, Varianta Visual FoxPro", Editura L&S Infomat, Bucuresti, 2002;

Milosescu M. - "Informatica - Tehnologii asistate de calculator, Manual pentru clasa a XI-a IT2", Editura Teora, Bucuresti 2001.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.