|
EVIDENTA UNEI FIRME DE TRANSPORT
INTRODUCERE
O baza de date simpla este o aparenta contradictie in termeni. Simplificarea bazelor de date a fost in ultimii ani una din tendintele majore ale producatorilor de software, pentru a le permite tuturor, nu doar specialistilor in calculatoare, sa extraga informatii din ele. Bazele de date erau candva inchise in camere speciale, administrate doar de profesionisti antrenati. In prezent insa, bazele de date satisfac nevoile companiilor, institutiilor si firmelor de toate genurile. O firma imobiliara are 10-15 angajati care trebuie sa acceseze aceeasi baza de date prin retea pentru a urmari evolutia proprietarilor si a clientilor. La o florarie proprietarii pastreaza listele clientilor, furnizorilor, aranjamentele florale, baza de date cu inventarul pe un calculator desktop.
Cu toate astea, exista o idee preconceputa ca lucrul cu instrumente puternice este deosebit de dificil. Este o impresie care impiedica firmele mici, care folosesc Microsoft Word si Excel, sa-si inregistreze vanzarile si informatiile despre clienti, cand nu au nevoie de fapt decat de baze de date simple, si tine firmele mijlocii legate de baze de date elementare, cand au nevoie de unele care pot administra relatii mai complexe intre date.
Bazele de date nu sunt unelte stralucitoare, ci mai degraba eroi anonimi. Aproape toate firmele se bazeaza pe ele pentru a tine evidenta informatiilor esentiale. Chiar si organizatiile mici asociatiile familiale aduna si analizeaza mai multe date.
O baza de date in sine ( numita si tabel ) este un fisier care contine inregistrari si campuri (cunoscute si ca randuri si coloane). O inregistrare este un set complet de informatii (de exemplu: toate detaliile, inclusiv numele, numarul de telefon, adresa ale unei persoane de contact intr-o baza de date cu furnizori de servicii) ce se poate vizualiza ca pe o cartela de index, cu toate informatiile care tin de un contact. Campurile (sau coloanele) sunt categoriile informatiilor. In baza de date pe care am luat-o ca exemplu o parte din campuri ar fi: Nume, Adresa, Telefon.
O baza de date flat-file este un singur fisier care contine tabelul complet al unei baze de date. Este stocat in general in format text, cu diferite inregistrari si campuri separate prin virgule. Deoarece o baza de date flat-file este o singura entitate, o schimbare a oricarui camp sau inregistrari necesita re-salvarea intregului fisier.
Un program de gestiune a bazelor de date relationale permite inregistrarilor sa fie in legatura cu date din alte baze de date. Cel mai comun mod de a interactiona in acest caz este folosirea unui limbaj de interogare structurata (SQL), care poate adauga sau sterge inregistrari si campuri, raspunde la intrebari specifice (interogari) despre ele sau crea rapoarte. Inregistrarile se pot sorta in functie de un anumit camp, cum ar fi credit. Sau se poate chestiona baza de date cautand toate inregistrarile care contin campul ce indeplineste un anumit criteriu, cum ar fi :clientii cu credite peste 1000 .
Candva, instrumentele de gestiune a bazelor de date de nivel scazut erau net diferentiate de cele de nivel superior. Linia de separare a devenit in timp neclara, unelte de baza adaugand acum optiuni sofisticate de programare. Exista o gama larga de programe profesionale de administrare a bazelor de date unele fiind axate pe date structurate, altele pe date nestructurate (cea mai buna alegere in cazul utilizarii unei game variate de documente text, cu ar fi cabinetele avocatilor). De exemplu, pentru persoanele fizice si intreprinderi mici si mijlocii se cauta cea mai buna combinatie intre putere si usurinta in folosire, oferind in cel mai bun caz si optiuni puternice de relationare, publicare in retea si integrare. Insa cand performantele sistemului scad, numarul de persoane care acceseaza baza de date creste, cand raspunsurile la interogari incep sa vina greu, iar numarul inregistrarilor este mult prea mare este iminenta trecerea la un server de baze de date mai puternic, cum este SQL.
O alta optiune in privinta bazelor de date este cea pentru o solutie instalata sau una on-line. La varianta instalata exista posesia fizica a datelor si a codului programului. In cazul variantei on-line (gazduite), datele se acceseaza prin intermediul unui browser de retea, iar codul si datele sunt stocate si administrate de compania gazda. Bazele de date gazduite sunt mai usor de accesat de angajatii care lucreaza la distanta sau calatoresc mult, insa in cazul firmelor importante, administratorii nu se vor simti niciodata multumiti de securitatea oferita de gazdele solutiilor on-line, stiind ca informatii vitale sunt stocate in afara institutiei.
Dupa cum veti vedea in prezentarea urmatoare, bazele de date nu sunt niste sperietori, si mi-as dori ca programul realizat sa va surprinda placut prin aplicabilitate si usurinta de folosire.
Prezentarea programului
La realizarea acestui program, de evidenta a masinilor dintr-o firma de transport, am utilizat FoxPro 2.6 varianta Dos.
Folosind aplicatia, personalul oricarei firme de transport va putea realiza computerizat o evidenta sintetica, fara necesitatea unei specializari in informatica. Programul face mai usoara munca de contabil dar si tine o evidenta foarte stricta a masinilor de transport si a banilor incasati si cheltuiti de firma respectiva. Profitul de asemenea poate fi calculat instantaneu doar cu o apasare de buton
Prezentarea tabelei:
Informatiile despre masinile de transport sunt stocate in tabela masini.dbf
Tabela masini.dbf are urmatoarea structura:
Descrierea campurilor:
NUMAR reprezinta numarul masinii
DATAP reprezinta data plecarii masinii
DATAS reprezinta data sosirii masinii
PRET reprezinta pretul pe bilet sau pe tona
TIP reprezinta tipul masinii (camion sau microbuz)
CAPACITATE reprezinta capacitatea masinii (cati pasageri sau cate tone poate transporta)
Meniul :
El face parte din interfata programului si faciliteaza introducerea de date si aflarea de informatii pentru utilizatorii nefamiliarizati cu aceasta aplicatie. Este structurat in 5 campuri (pad-uri) ce contin fiecare cel putin doua subdomenii:
MASINI permite modificare, stergerea sau adaugare unui nou numar al unei masini
TRANSPORTURI adauga sau modifica date referitoare la datele plecarii si sosirii dar si date despre pretul biletului sau tonei transportate
UTILE poate sa caute numarul unei masini sau sa afiseze toate numerele masinilor prezente in baza de date
VENIT calculeaza profitul firmei si cat s-a cheltuit pe benzina si pe salarii
IESIRE are ca optiuni iesirea din aplicatie sau iesirea din FOX PRO
Ferestrele:
Si ele au fost create pentru a obtine o interfata cat mai atractiva, in culori vii, pentru a focaliza atentia in directia dorita. Am folosit la realizarea lor comanda DEFINE WINDOW ce are urmatoarea structura
DEFINE WINDOW <window name1> FROM <row1, column1> TO <row2, column2> |
AT <row3, column3> SIZE <row4, column4>
[IN [WINDOW] <window name2> | IN SCREEN | IN DESKTOP]
[FONT <expC1>[, <expN1>]]
[STYLE <expC2>]
[FLOOATED <expC3>]
[TITLE <expC4>]
[DOUBLE | PANEL | NONE | SYSTEM | <border string>]
[CLOSE | NOCLOSE]
[FLOAT | NOFLOAT]
[GROW | NOGROW]
[MDI | NOMDI]
[MINIMIZE]
[SHADOW]
[ZOOM | NOZOOM]
[ICON FILE <expC5>]
[FILL <expC6> | FILL FILE <bmp file>]
[COLOR SCHEME <expN2> | COLOR <color pair list>]
Exemple de ferestre folosite in acest program:
Programul va fi cu siguranta un ajutor de remarcat in procesul de evidenta a unei firme de transport, putem spune chiar indispensabil.
Codul sursa al programului
clos all
do intrare
define wind ggg from 0,0 to 23,80 shadow color w+/r
set color of highlight to gr/+bg
set talk off
clear
define wind o from 10,20 to 24,62 system
defi wind aaa from 3,0 to 20,75 shadow
acti wind aaa
acti wind o
@4,4 say 'INTRODUCETI CODUL UTILIZATORULUI'
@6,14 get t default space(15)
read
if upper(t)<> upper('cosmin')
rele wind o
quit
endif
rele wind o
use masini
define menu m1
define pad nr1 of m1 prompt '<Masini'
define pad nr2 of m1 prompt '<Transporturi'
define pad nr3 of m1 prompt '<Utile '
define pad nr4 of m1 prompt '<Venit '
define pad nr5 of m1 prompt '<Iesire '
on pad nr1 of m1 activate popup Masini
on pad nr2 of m1 activate popup Transporturi
on pad nr3 of m1 activate popup Utile
on pad nr4 of m1 acti popup Venit
on pad nr5 of m1 acti popup Iesire
define popup Masini from 1,1
define bar 1 of Masini prompt 'Adaugare' mess 'Adaugati o masina noua completand datele cerute'
define bar 2 of Masini prompt 'Stergere' mess 'Stergeti masina din baza de date'
define bar 3 of Masini prompt 'Modificare' mess 'Modificati datele masinii'
define popup Transporturi from 1,14
define bar 1 of Transporturi prompt 'Adaugare ' mess 'Scrieti datele dorite si salvati'
define bar 2 of Transporturi prompt 'Modificare ' mess 'Modificati datele despre plecari /veniri ale masinii '
define popup Utile from 1,29
define bar 1 of Utile prompt 'Cautare ' mess 'Cautati numarul masinii dorite'
define bar 2 of Utile prompt 'Afisare ' mess 'Selectati modul de afisare si alegeti un buton'
define popup Venit from 1,40
define bar 1 of Venit prompt 'Informatii ' mess 'Informatii referitoare la venitul firmei '
define bar 2 of Venit prompt 'Profit' mess 'Profitul firmei '
define popup Iesire from 1,54
define bar 1 of Iesire prompt 'Program ' mess 'Iesiti din program in FOX PRO'
define bar 2 of Iesire prompt 'Fox Pro ' mess 'Iesiti in WINDOWS'
on selection bar 1 of Masini do adaugare1
on selection bar 2 of Masini do stergere1
on selection bar 3 of Masini do modi
on selection bar 1 of Transporturi do adaugare2
on selection bar 2 of Transporturi do modic
on selection bar 1 of Utile do cautare
on selection bar 2 of Utile do afisare
on sele bar 1 of Venit do incasare
on sele bar 2 of Venit do cheltuieli
on sele bar 1 of iesire do iesireprog
on sele bar 2 of iesire do iesireFox
activate menu m1
clear popups
clear menus
deac wind ggg
rele wind aaa
procedure intrare
set talk off
set safe off
set cursor off
set status off
set shadows on
clear
clear all
defi wind titlu from 7,7 to 18,72 color scheme 7 panel
acti wind titlu
text
endtext
wait ' apasa o tasta '
set bell on
for i=7 to 62
defi wind titlu6 from 7,7 to 18,10+i color scheme 7 panel
acti wind titlu6
defi wind titlu5 from 7,7 to 18,10+i color scheme 5 panel
acti wind titlu5
nr1=20*i
set bell to nr1,1
?chr(7)
endfor
deac wind titlu5
defi wind explicare from 7,7 to 18,72 color scheme 5 panel
acti wind explicare
@3,12 say ' EVIDENTA UNEI FIRME DE TRANSPORT '
@5,12 say ' '
@7,12 say ' '
wait ''
deac wind explicare
clear all
set cursor on
return
procedure iesire1
acti wind GGG
@10,25 say ' H A V E A N I C E D A Y ! ! ! ' color R*/w
@20,1
wait ' ' timeout 2
deact popup wind all
deact menu all
deact popup all
close all
clear
quit
return
procedure adaugare1
use masini
define wind adaugare1 from 1,1 to 15,50;
title 'ADAUGARE' zoom float shadow grow color scheme 10 system
activate window adaugare1
@2,2 say 'Numar= '
@2,14 get m.numar default ' ' size 1,10
@4,2 say 'Tip= '
@4,14 get m.tip default ' ' size 1,10
@6,2 say 'Capacitate= '
@6,14 get m.capacitate default 0 size 1,5 picture '99.99'
@8,10 get m.b function '*NH Salveaza;Sfarsit' size 1,8,2 default 1;
valid vb()
read cycle
rele wind adaugare1
return
function vb
if m.b=1
append blank
gather memvar
release wind fadaugare1
clear read
else
clear read
release wind fadaugare1
endif
clos all
return
procedure stergere1
USE masini
define window stergere1 from 1,1 to 15,40;
title 'STERGERE' shadow zoom grow float color scheme 7 system
activate wind stergere1
define popup p prompt field ' '+numar scroll
@2,1 say 'Alegeti un numar: '
@2,17 get m.lista popup p function '&' default 1 size 6,12
@10,10 get m.d function '*NH Sterge;Abandon';
size 1,8,2 default 1 valid vd()
read cycle
rele wind stergere1
return
function vd
if m.d=1
go m.lista
delete
pack
clear read
else
clear read
endif
clos all
return
procedure modi
use masini
define wind modi from 1,1 to 20,60;
title 'PRIMA_MODIFICARE' grow shadow float zoom color scheme 10 system
activate window modi
define popup p prompt field ' '+numar scroll
@2,1 say 'Alegeti numarul: ' get m.lista2 popup p;
function '&' default numar size 6,12
@10,10 get m.k function '*NH Modifica;Abandon';
size 1,8,2 default 1 valid vk()
read cycle
release wind modi
return
function vk
if m.k=1
define wind modii from 5,1 to 25,60;
title 'A_DOUA_MODIFICARE' shadow grow zoom float color scheme 10 system
activate wind modii
locate for alltrim(m.lista2)=alltrim(numar)
@7,1 say 'Numar= ' get m.numar default numar size 1,10
@9,1 say 'Tip= ' get m.tip default tip size 1,10
@11,1 say 'Capacitate= ' get m.capacitate default capacitate size 1,10
@15,4 get m.l function '*NH Inlocuieste;Abandon';
size 1,8,2 default 1 valid vl()
read cycle
release wind modii
else
clear read
release wind modii
endif
return
function vl
if m.l=1
clear read
replace numar with m.numar
replace tip with m.tip
replace capacitate with m.capacitate
else
clear read
clear
clos all
endif
procedure adaugare2
use masini
define wind fadaugare2 from 1,1 to 20,30;
title 'ADAUGARE' shadow grow zoom float color scheme 9 system
activate wind fadaugare2
define popup p prompt field ' '+numar scroll
@2,2 say 'Numar= ' get m.numar popup p function '&' defa numar size 6,12
@8,2 say 'Datap= ' get m.datap defa ctod(' / / ') size 1,10
@10,2 say 'Datas= ' get m.datas defa ctod(' / / ')size 1,10
@12,2 say 'Pret = ' get m.pret defa 0 size 1,10
@16,2 get m.g function '*NH Salveaza;Sfarsit';
size 1,8,2 default 1 valid vg()
read cycle
rele wind fadaugare2
return
function vg
if m.g=1
append blank
gather memvar
use masini
rele wind fadaugare2
clear read
else
clear read
rele wind fadaugare2
endif
return
procedure modic
use masini
define window modic from 1,1 to 15,40;
title 'MODIFICARE' zoom shadow grow float color scheme 10 system
activate wind modic
define popup p prompt field ' '+numar scroll
@2,1 say 'Alegeti numarul: ' get m.lista2 popup p;
function '&' default numar size 6,12
@10,10 get m.m function '*NH Modifica;Renunta';
size 1,8,2 default 1 valid vm()
read cycle
rele wind modic
return
function vm
if m.m=1
define wind modiic from 5,1 to 25,60;
title 'MODIFICARE' zoom shadow float grow color scheme 10 system
activate wind modiic
locate for alltrim(m.lista2)=alltrim(numar)
@7,1 say 'Numar= ' get m.numar default numar size 1,10
@9,1 say 'Datap= ' get m.datap default datap
@11,1 say 'Datas= ' get m.datas default datas
@13,1 say 'Pret= ' get m.pret default ' ' size 1,10
@17,4 get m.n function '*NH Inlocuieste;Renunta';
size 1,8,2 default 1 valid vn()
read cycle
rele wind modiic
else
clear read
rele wind modiic
endif
return
function vn
if m.n=1
clear read
gather memvar
else
clear read
clear
endif
clos all
return
procedure cautare
define window cautare from 5,5 to 21,40;
title 'CAUTARE' shadow zoom float grow color scheme 10 system
activate wind cautare
@2,1 say 'Dati numarul : ' get m.numar default space(10)
@5,1 get lc function '*NH Cauta;Iesire' default 1 size 1,6;
valid llc()
read cycle
rele wind cautare
return
function llc
if lc=1
clear read
rele wind cautare
define wind cautare2 from 5,5 to 21,40;
title 'CAUTARE2' shadow zoom float grow color scheme 10 system
activate wind cautare2
@2,1 say 'Numarul= '+m.numar
sele 1
use masini
index on numar tag fnumar
set order to 1
locate for allt(upper(numar))=allt(upper(m.numar))
if found()
@5,1 say 'Tip= '+masini.tip
@7,1 say 'Datap= '+dtoc(masini.datap)
@9,1 say 'Datas= '+dtoc(masini.datas)
@11,1 say 'Pret= '+str(masini.pret)
else
@3,1 say 'Numar negasit '
endif
@13,7 get vv function '*N Iesire' default 1;
size 1,6 valid yy()
read cycle
rele wind cautare2
return
else
clear read
rele wind cautare
endif
return
function yy
clear
rele wind cautare2
return
procedure afisare
define wind afisare from 5,5 to 20,50 ;
title 'AFISARE DUPA NUMAR' shadow grow zoom float color scheme 10
activate wind afisare
use masini
@2,2,7,30 box
@2,6 say 'ORDINE DE AFISARE'
@3,4 get bw function '*RNV Crescator;Descrescator' defa 1 size 1,14,1
@9,4 get bz function '*NH Afiseaza;Inchide' defa 1 valid vz()
read cycle
rele wind afisare
return
function vz
if bz=1
if bw=1
index on upper(numar) tag fnumar
set order to fnumar
else
index on upper(numar) tag fnumard descending
set order to fnumard
endif
hide wind afisare
browse
activate wind afisare
else
release wind afisare
clear read
endif
return
procedure incasare
define wind incasare from 5,5 to 20,50 ;
title 'INFORMATII NECESARE' shadow grow zoom float color scheme 10
activate wind incasare
use masini
@3,3,7,18 box
@2,2,16,25 box
@4,4 get pp function '*RNV Incasat;Cheltuit' defa 1 size 1,14,1
@9,4 get oo function '*NH Afiseaza;Inchide' defa 1 valid tr()
read cycle
rele wind incasare
return
function tr
if oo=1
if pp=1
define wind INCASAT from 5,5 to 20,50 ;
title 'INCASAT' shadow grow zoom float color scheme 10
activate wind incasat
use masini
@3,4,7,38 box
@8,6,12,35 box
sum (datas-datap)*pret*capacitate to suma
sum (datas-datap) to zile
use
@4,5 say 'Suma de bani intrata in cont este'
@6,14 say suma
@9,7 say 'Numarul de zile lucrate este'
@11,10 say zile
read cycle
rele wind incasat
hide wind incasare
else
define wind CHELTUIT from 5,5 to 20,67 ;
title 'CHELTUIELI' shadow grow zoom float color scheme 10
activate wind cheltuit
use masini
@3,6,7,53 box
@8,1,12,63 box
sum (datas-datap) to zile
use
@4,9 say 'Suma de bani cheltuita pentru salarii este'
@6,14 say zile*200000
@9,2 say 'Suma de bani cheltuita pentru intretinerea masinilor este'
@11,15 say zile*180000
read cycle
rele wind cheltuit
hide wind incasare
endif
hide wind incasare
else
release wind incasare
clear read
endif
return
procedure cheltuieli
define wind cheltuieli from 5,5 to 20,44 ;
title 'PROFITUL' shadow grow zoom float color scheme 10
activate wind CHELTUIELI
use masini
@2,2,16,35 box
sum (datas-datap)*pret*capacitate to suma
sum (datas-datap) to zile
t=suma-zile*380000
@6,4 say 'Profitul dumneavoastra este de'
@10,11 say t
read cycle
rele wind cheltuieli
return
procedure iesireFox
clear
quit
return
procedure iesireprog
clear
deacti menu m1
return
BIBLIOGRAFIE:
INFORMATICA Manual pentru clasa a XII-a Radu Visinescu, Constantin Scheau
Informatica economica. Baze de date Mariana Pantaru
Baze de date organizare proiectare si implementare Ion Lungu, Constanta Bodea, Georgeta Badescu, Crista Ionita