Post on 13-Oct-2015
description
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
1/236
Doina FUSARUZenovic GHERASIM Maria ANDRONIE
Adela BRA Petrior STROE
APLICAII ECONOMICE
N VISUAL BASIC I ACCESSEdiia a III-a
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
2/236
Descrierea CIP a Bibliotecii Naionale a RomnieiAplicaii economice n Visual Basic i Access. / Doina Fusaru,
Zenovic Gherasim, Maria Andronie, Adela Bra,Petrior Stroe Ed. a 3-a -
Bucureti, Editura FundaieiRomnia de Mine, 2007236 p; 24 cm
ISBN 978-973-725-773-4I. Fusaru, DoinaII. Gherasim, ZenovicIII. Bra, AdelaIV. Andronie, MariaV. Stroe, Petrior
004:33(075.8)
Editura FundaieiRomnia de Mine, 2007
Redactor: Maria CERNEATehnoredactori: Maria ANDRONIE
Marcela OLARUCoperta: Maria ANDRONIE
Bun de tipar: 22.02.2007; Coli tipar: 14,75Format: 16/70100
Editura FundaieiRomnia de MineBulevardul Timioara nr.58, Bucureti, Sector 6
Tel./Fax: 021/444.20.91; www.spiruharet.ro
e-mail: contact@edituraromaniademaine.ro
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
3/236
UNIVERSITATEA SPIRU HARET
Doina FUSARUZenovic GHERASIM Maria ANDRONIE
Adela BRA Petrior STROE
APLICAII ECONOMICE
N VISUAL BASIC I ACCESSEdiia a III-a
EDITURA FUNDAIEI ROMNIA DE MINEBucureti, 2007
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
4/236
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
5/236
5
CUPRINS
Cuvnt-nainte .. 7
1.VISUAL BASIC . 9
Aplicaii rezolvate .... 9Aplicaii propuse . 185
2.ACCESS .. 189
Aplicaii rezolvate ... 189
Aplicaii propuse . 196
3.APLICAII ECONOMICE COMPLEXE .. 197
4.EXEMPLE DE TESTE GRILPENTRU EXAMENUL DE LICEN 223
Bibliografie ... 236
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
6/236
6
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
7/236
7
CUVNT NAINTE
Lucrarea Aplicaii economice n Visual Basic i Access este destinat
studenilor din nvmntul economic care studiaz disciplina Informatic de
gestiune (Limbaje i Sisteme de gestiune a bazelor de date).De asemenea, lucrarea
este utilcelor care doresc sse iniieze sau s-i dezvolte abilitile practice n
rezolvarea unor probleme economice cu ajutorul limbajului de programare Visual
Basic i al sistemului de gestiune a bazelor de date Microsoft Access.
Autorii au urmrit atingerea urmtoarelor obiective: fixarea noiunilor de
bazdin programare, n general, i din programarea orientatpe obiecte (asigurat
de mediul de programare Visual Basic), n special; iniierea n folosirea sistemului de
gestiune a bazelor de date Microsoft Access, ca baz pentru continuarea de ctre
studeni a pregtirii n informatic, din anii de studii urmtori, prin cursurile de
Proiectarea sistemelor informatice, Sisteme experti Audit informatic; cuprinderea
unui numr ct mai diversificat de aplicaii economice complementare cursurilor
economice.
Cursul de fa conine capitole separate destinate aplicaiilor economicesimple n Visual Basic i Access, precum i un capitol pentru aplicaii economice
complexe. Majoritatea aplicaiilor au detaliate algoritmul de calcul, schema
logic, codul, formularul asociat, datele de intrarei rezultatele obinute, toate acestea
constituind modele pentru ntocmirea, de ctre studeni, a proiectului prevzut ca
obligatoriu n programa analitic a cursului. Au fost avute cu prioritate n vedere
structurile de date, obiectele, structurile de control, instruciunile de intrare/ieire,
procedurile de baz, unitile standard, elementele specifice ale mediului integrat de
dezvoltare Visual Basic. Toate acestea sunt utile att pentru nsuirea bazelor acestui
limbaj de programare, ct i pentru folosirea ulterioar, cu particularitile existente,n cadrul sistemului de gestiune a bazelor de date Microsoft Access. Sunt prezentate i
cteva elemente de bazale limbajului SQL.
Prin ntregul su coninut, lucrarea este util i pentru pregtirea
examenului de licen, motiv pentru care, n finalul acesteia, au fost cuprinse i
cteva exemple de teste-gril.
Autorii, 2007
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
8/236
8
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
9/236
9
1.VISUAL BASIC
APLICAII REZOLVATE
Aplicaia 1.1
Se cere s se realizeze un program pentru calculul profitului brut cadiferenntre venituri i cheltuieli, a profitului impozabil, a celui net, precum idividendele acordate la un agent economic.
Algoritm de calcul
Formularul dispune de dou butoane de comand: un buton pe care seinscripioneazDemarare program; un buton care dispune de interfaa Parasireprogram.
Se introduc de la tastatururmtoarele date: denumire societate; veniturileobinute i cheltuielile efectuate.
Valorile variabilelor de lucru i finale se calculeazcu formulele (1.1) i (1.2).
Profit brut = Venituri Cheltuieli;
Fond de rezerv= 5% * Profit brut
Profit impozabil = Profit brut Fond de rezerv (1.1)Impozit pe profit = 38% * Profit impozabil
Profit net = Profit impozabil Impozit pe profit
La repartizare:
Profit pentru dezvoltare = 50 % * Profit Brut
Profit pentru consum = Profit net Profit pentru dezvoltare (1.2)Impozit pe dividende = 10 % * Profit repartizat pentru consumDividende = Profit repartizat pentru consum Impozit pe dividende
Se afieazprin casetde mesaj:Profit brut; Profit Impozabil; Impozit pe profit; Profit net; Profit repartizat
pentru consum; Dividende acordate.
Se afieaz n formular toate informaiile care au fost vizualizate princasetde mesaj.
Schema logicaferentacestui exemplu este prezentatn fig.1.1.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
10/236
10
Fig.1.1. Schema logicpentru aplicaia 1.1
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
11/236
11
Date de intrareDen_soc StringVen VariabilChe VariabilCalcule Prof_brut=Ven-CheFond_dezv=Prof_brut*5% Prof_impoz=Prof_brut-Fond_dezvImpoz=Prof_impoz*38% Prof_net=Prof_impoz-ImpozRep_dez=Prof_brut*50% Rep_cons=Prof_net-Rep_dezDivid=Rep_cons-(Rep_cons*10%)Date de ieire Prof_netProf_brut Prof_impozImpoz Divid
Secvena de instruciuni n Visual Basic care determinrezolvarea cerinelordin enuneste urmtoarea:
Dim den_soc As String
Dim ven As Variant
Dim che As Variant
Dim prof_brut As Variant
Dim fond_dez As Variant
Dim impoz As Variant
Dim prof_impoz As Variant
Dim prof_net As Variant
Dim rep_dez As Variant
Dim rep_cons As Variant
Dim impoz_divid As Variant
Dim divid As Variant
Private Sub Buton1_Click()
den_soc = InputBox("Tastati denumirea societatii")
ven = InputBox("Tastati suma veniturilor obtinute de societate")
che = InputBox("Tastati suma cheltuielilor efectuate de societate")
prof_brut = ven-he
MsgBox ("Profitul brut obtinut este de:" + Str(prof_brut)), 64
fond_dez = prof_brut * 5 / 100prof_impoz = prof_brut-fond_dez
MsgBox ("Profitul impozabil este de:" + Str(prof_impoz))impoz = prof_impoz * 38 / 100
MsgBox ("Impozitul pe profit (38%) este de:" + Str(impoz))
prof_net = prof_impoz - impoz
MsgBox ("Profitul net obtinut este de:" + Str(prof_net)), 64
rep_dez = prof_brut * 50 / 100
rep_cons = prof_net - rep_dezMsgBox ("Profitul repartizat pentru consum este de:" + Str(rep_cons)), 64
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
12/236
12
impoz_divid = rep_cons * 10 / 100
divid = rep_cons - impoz_divid
MsgBox ("Dividendele acordate sunt de:" + Str(divid)), 64
Print " S I T U A T I E C A L C U L "
Print " -------------------------------"
Print " "
Print "******************************************"
Print "* Denumire societate *", den_soc
Print "__________________________________________"
Print "Profit brut : ", prof_brut
Print "Profit impozabil :", prof_impoz
Print "Impozit pe profit:", impoz
Print "Profit net: ", prof_net
Print "Dividende : ", dividEnd Sub
Private Sub Buton2_Click()
End
End Sub
Rezultatul execuiei formularului Calcul profit i dividendeeste prezentat nfig.1.2.
Fig.1.2. Rezultatul execuiei formularului Calcul profit i dividende
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
13/236
13
Aplicaia 1.2
Casierul unei bnci trebuie s elibereze unei persoane suma suma(exprimatn lei). Sse determine numrul de bancnotede 500.000 lei, 100.000lei, 50.000 lei, 10.000 lei i 2.000 lei i restul de sumn monede diverse.
Algoritm de calcul
Tipurile de bancnote se vor grupa ntr-o mulime (m) cu 6 elemente, iarnumrul de bancnote ce trebuie pltit de casier n mulimea (nr_m) tot cu 6elemente.
Se mparte suma iniialde plat(suma) la primul tip de bancnot(m(1)).Restul de plat (suma_curenta) se va mpri succesiv la fiecare tip de bancnot(m(i)) (relaiile (1.3), (1.4)). Se folosete \ deoarece este necesar obinereaseparata ctului i restului.
nr_m(i) = suma_curenta \ m(i) (1.3)suma_curenta = suma_curenta - nr_m(i) * m(i) (1.4)
Se realizeaz un formular (frmPlata) cu dou butoane de comand(fig.1.4): PLATA SUMEI (Caption) pentru procedura de calcul i afiare anumrului de bancnote (cmdPlata) i pentru ieirea din program (cmdIesire).Obiectele adugate n formular sunt prezentate n tabelul urmtor:
Obiect Proprieti Evenimente
Formular (Form) Name: frmPlata
Caption: PLATA SUMEI
-
Buton de comand(Command Button) Name: cmdPlataCaption: Plata
Click
Buton de comand(Command Button) Name: cmdIesireCaption: Iesire
Click
Caseta de text (Text Box) Name: txtSumaEtichete (Labels) Caption: Suma de plataCasete de text (Text Box) -6 Name: txtXEtichete (Labels) - 6 Caption: Bancnote de... lei
Dupdeclararea variabilelor de lucru ce reprezintdate de intrare, dateleintermediare i rezultatele calculelor, se preiau datele de intrare din casete-text dinformular, iar mulimea tipurilor de bancnote (m) se completeaz cu valorileacestora (500.000 lei, 100.000 lei, 50.000 lei, 10.000 lei 2.000 lei). Iniial, numrulde bancnote din fiecare tip este egal cu 0 (nr_m(i)=0).
Pentru calculul i afiarea rezultatelor n casete-text se folosete o structurde control repetitivde tipul For Next.
Schema logicpentru rezolvarea aplicaiei n conformitate cu algoritmul decalcul de mai sus este prezentatn fig. 1.3.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
14/236
14
Fig. 1.3. Schema logicpentru rezolvarea aplicaiei 1.2
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
15/236
15
Procedurile cmdPlata_Click()i cmdIesire_Click()sunt urmtoarele:
Private Sub cmdPlata_Click()
declararea variabilelor de lucruDim suma As Double
Dim m(6) As Double
Dim nr_m(6) As Double
Dim suma_curenta As Double
introducerea datelor de intrare
suma = txtSuma.Text
se initializeaza multimea tipurilor de bancnote si a numarului acestora
m(1) = 500000
m(2) = 100000
m(3) = 50000
m(4) = 10000
m(5) = 2000
m(6) = 1
For i = 1 To 6
nr_m(i) = 0
Next i
se calculeaza numarul de bancnote din fiecare tip
se utilizeaza o structura repetitiva de tip For Next
suma_curenta = sumaFor i = 1 To 6
nr_m(i) = suma_curenta \ m(i)
suma_curenta = suma_curenta - nr_m(i) * m(i)
se afiseaza in casete de text numarul de bancnote din fiecare tip
txtX(i - 1).Text = nr_m(i)
Next i
End Sub
Private Sub cmdIesire_Click()
EndEnd Sub
Data de intrare utilizatpentru obinerea rezultatelor din fig. 1.4 este:Suma=1956540.
Algoritmul de calcul poate fi modificat astfel, nct numrul tipurilor de bacnote sfie variabil (se propune ca exerciiu).
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
16/236
16
Fig. 1.4. Situaia de ieire pentru aplicaia 1.2
Aplicaia 1.3
O societate comercialdesface 50 de produse pentru care se cunosc ca datede intrare: codprod codul produsului, denprod denumirea produsului,cant cantitatea, pret preul. Secvena de program se refer la calculul valorii(valoare) pentru fiecare produs i afiarea pe ecran a acelor produse pentru carevaloare
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
17/236
17
Fig.1.5. Schema logicpentru aplicaia 1.3
NU
DA
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
18/236
18
ntregul program este asociat evenimentului clic pe butonul de comandcmdCalcul:
Private Sub cmdCalcul_Click()
Dim CODPROD As Single
Dim DENPROD As String
Dim CANT As IntegerDim PRET As Single
Dim VALOARE As Single
Print Tab(10); "*** PRODUSE CU VALOAREA MAI MICA DE 5,500,000 LEI ***"
Print String(45, "=")
Print Tab(2); "PRODUSUL"; Tab(33); "VALOAREA"
Print String(45, "=")
For I = 1 To 50
CODPROD = InputBox("Introduceti codul produsului:")
DENPROD = InputBox("Introduceti denumire produsului:")
CANT = InputBox("Introduceti cantitatea:")
PRET = InputBox("Introduceti pretul:")
VALOARE = CANT * PRET
If VALOARE < 5500000 Then
Print Tab(2); DENPROD; Tab(33); VALOARE
End If
Next I
Print String(45, "=")
End Sub
Rezultatele rulrii aplicaiei sunt prezentate n fig.1.6.
Fig.1.6 Situaia de ieire pentru aplicaia 1.3
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
19/236
19
Aplicaia 1.4
Sse stabileasccategoria de vrst(copil, adolescent, tnr, adult, btrn)a unui cetean, tiind data nateriii data curent.
Datele de intrare sunt nume, prenume i data_n.
Algoritm de calcul
Modul de lucru al programului este urmtorul: pentru fiecare persoancreia se dorete s i se determine categoria de vrst se acioneaz butonulcmdCalcul. Codul asociat evenimentului clic al acestui buton determinintroducerea datelor, calcularea categoriei i incrementarea cu 1 a variabilei careine evidena totalului de persoane aflate n categoria respectiv(nc numr copii,na numr adolesceni, nt numr tineri, nad numr aduli, nb numr
btrni). Deoarece intereseaz ca ntre dou apeluri ale procedurii Private SubcmdCalcul_Click()variabilele nc, na, nt, nad, nbs-i pstreze valorile, acestease declarcuStaticn loc deDim.
Procedura Private Sub cmdStatistica_Click() (care se execut la
acionarea butonului cu CaptionStatistic) calculeazprocentul de persoane pentrufiecare categorie de vrst, pe baza valorilor luate de variabilele nc1, na1, nt1,nad1, nb1. Aceste variabile sunt declarate n seciunea General Declarations, deci
pot fi utilizate n orice modul al aplicaiei, spre deosebire de variabilele ale crorvalori le preiau lasfritulprocedurii evenimentPrivate Sub cmdCalcul_Click().A fost necesar introducerea variabilelor nc1, na1, nt1, nad1, nb1 deoarecevariabilele declarate cu Staticpot fi folosite numai n interiorul procedurii n careau fost declarate.
Se calculeazpentru nceput vrsta n zile a fiecrei persoane ca diferen ntredata curent, returnatde funciaDate, i data naterii, introdusn variabila data_n:
varsta = Date data_n(1.5)
Vrsta n ani se obine prin mprirea vrstei calculate ca numr de zile la365 (neglijm anii biseci):
varsta = varsta / 365. (1.6)Instruciunea Select Case care urmeaz selecteaz n funcie de variabila
vrst categoria fiecrei persoane; apoi, se incrementeaz cu 1 una dintrevariabilele nc, na, nt, nad, nb,iar apoi se afieaz. n final, se transfervalorilevariabilelor nc, na, nt, nad, nbn nc1, na1, nt1, nad1, nb1pentru a le puteafolosi n afara procedurii.
Urmtorul cod de program mrete suprafaa formularului, la fiecare acionare a
butonului cmdCalcul, pnn momentul n care acesta depete 10.000:If Form1.Height > 10.000 Then Exit SubForm1.Height = Form1.Height + 250 formularul se mrete n jos cu 250 de
puncte
cmdCalcul.Top = cmdCalcul.Top + 250 butonul cmdCalcul este deplasat n jos
cmdExit.Top = cmdExit.Top + 250
cmdStatistica.Top = cmdStatistica.Top + 250unde Form1.Height nlimea formularului, iar cmdCalcul.Top distana ntre coluldin stnga sus al formularului i colul din stnga sus al butonului cmdCalcul.
Schema logic e corespunztoare procedurii Private Sub cmdCalcul_Click()
este prezentatn fig.1.7.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
20/236
20
Fig. 1.7. Schema logicpentru aplicaia 1.4.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
21/236
21
Procedurile Private Sub cmdCalcul_Click(),Private Sub cmdStatistica_Click(),Private Sub cmdExit_Click() i seciuneaGeneral Declarations:
General Declarations
Dim nc1 As Byte, na1 As Byte, nt1 As Byte, nad1 As Byte, nb1 As Byte
Private Sub cmdCalcul_Click()
'variabilele declarate cu "Static" nu pot fi declarate in sectiunea General
Declarations
'sunt vizibile doar in interiorul procedurii unde au fost declarate
cmdStatistica.Enabled = True
Static nc As Byte, na As Byte, nt As Byte, nad As Byte, nb As Byte
Dim nume As String
Dim prenume As String
Dim data_n As Date
Dim categorie As Stringnume = InputBox("Introduceti numele:", "Nume", "Popescu")
prenume = InputBox("Introduceti prenumele:", "Prenume", "Ion")
data_n = InputBox("Introduceti data nasterii in format :",
"Data nasterii", "25.9.1978")
varsta = Date - data_n
'neglijam anii bisecti
varsta = varsta / 365
Select Casevarsta
Case Is < 12
categorie = "copil"
nc = nc + 1
Case Is < 16
categorie = "adolescent"
na = na + 1
Case Is < 25
categorie = "tanar"
nt = nt + 1
Case Is < 60
categorie = "adult"nad = nad + 1
Case Else
categorie = "batran"
nb = nb + 1
End Select
Print nume; Tab(25); prenume; Tab(50); categorie
total = 0
nc1 = nc
na1 = nant1 = nt
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
22/236
22
nad1 = nad
nb1 = nb
If Form1.Height > 10000 Then Exit Sub
Form1.Height = Form1.Height + 250
cmdCalcul.Top = cmdCalcul.Top + 250
cmdExit.Top = cmdExit.Top + 250
cmdStatistica.Top = cmdStatistica.Top + 250
End Sub
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub cmdStatistica_Click()
Cls
total = nc1 + na1 + nt1 + nad1 + nb1
Print "==========="
Print "= Statistica ="
Print "==========="
Print "In cadrul colectivitatii dumneavoastra sunt:" & Chr(13) & _
" -- " & Format(nc1 / total * 100, "fixed") & "% copii;" & Chr(13) &_" -- " & Format(na1 / total * 100, "fixed") & "% adolescenti;" & Chr(13) & _
" -- " & Format(nt1 / total * 100, "fixed") & "% tineri;" & Chr(13) & _
" -- " & Format(nad1 / total * 100, "fixed") & "% adulti;" & Chr(13) & _
" -- " & Format(nb1 / total * 100, "fixed") & "% batrani," & Chr(13) & _"in total " & total & " persoane."
Print String(40, "=")End Sub
Rezultatele rulrii aplicaiei sunt prezentate n fig.1.8. i 1.9.
Fig.1.8. Situaia de ieire 1 pentru aplicaia 1.4
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
23/236
23
Fig.1.9. Situaia de ieire 2 pentru aplicaia 1.4
Aplicaia 1.5S se realizeze un program care spermita conversia n diferite valute a
unei sume exprimate n lei.
Algoritm de calculSe mparte suma n lei (suma_lei) la cursul valutar (curs) i se va obine
suma n valut(suma_valuta) conform relaiei (1.7).
suma_valuta = suma_lei / curs (1.7)
Pentru conversia unei sume exprimate n valut (suma_valuta) iobinerea sumei corespunztoare n lei (suma_lei)se utilizeazformula:
suma_lei=suma_valuta * curs (1.8)Se realizeazun formular cu doubutoane de comand(fig. 1.11): CURS
VALUTAR (Caption) pentru procedura de calcul i afiare a sumei n valut(cmdConversie) i pentru ieirea din program (cmdIesire). Obiectele adugate nformular sunt prezentate n tabelul urmator:
Obiect Proprieti EvenimenteFormular (Form) Name: frmConversie
Caption: CURS VALUTAR-
Buton de comand(Command Button) Name: cmdConversieCaption: Conversie
Click
Buton de comand(Command Button) Name: cmdIesireCaption: Iesire
Click
Casetde text (Text Box) Name: txtSLEtichete (Labels) Caption: Suma in leiCasetde text (Text Box) Name: txtSVEtichete (Labels) Caption: Suma in valutaCasetde text (Text Box) Name: txtCursEtichete (Labels) Caption: Curs valutarListderulant(List Box) Name: cmbValuta
List: Dolar, EURO...Text: Valuta
Buton de opiune (Option Button) Name: optLV
Buton de opiune (Option Button) Name: optVL
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
24/236
24
START
Citete suma_lei, curs
suma_valuta = suma_lei / curs
Afieazsuma_valuta
STOP
Utilizarea listei derulante asigurafiarea tuturor tipurilor de valute n carese poate efectua conversia sumei exprimate n lei.
Pe formularul de lucru se introduc doubutoane de exprimare a opiunilorutilizatorului (optLV i optVL), care permit alegerea tipului de conversie: din lei nvalut(1.7) sau din valutn lei (1.8).
Dupdeclararea variabilelor de lucru ce reprezintdatele de intrare, dateleintermediare i rezultatele calculelor, se preiau datele de intrare din casete de textdin formular.
Schema logicpentru rezolvarea aplicaiei n conformitate cu algoritmulde calcul de mai sus este prezentatn fig. 1.10.
Fig. 1.10. Schema logicpentru rezolvarea aplicaiei 1.5
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
25/236
25
Procedurile cmdConversie_Click()i cmdIesire_Click()sunt urmtoarele:
Private Sub cmdConversie_Click()
declararea variabilelor de lucru
Dim suma_lei As Double
Dim curs As Double
Dim suma_valuta As Double
If optLV.Value = True Then
suma_lei = txtSL.Text
curs = txtCurs.Text
suma_valuta = suma_lei / curstxtSV.Text = suma_valuta
Else
If optVL.Value = True Then
suma_valuta = txtSV.Text
curs = txtCurs.Text
suma_lei = suma_valuta * curs
txtSL.Text = suma_lei
End If
End If
End Sub
Private Sub cmdIesire_Click()
End
End Sub
Datele de intrare utilizate pentru obinerea rezultatelor din fig. 1.11. sunt:suma_lei=250.000, curs=36.549.
Se propune, ca exerciiu, s se modifice algoritmul de calcul i schemalogic, astfel nct programul s realizeze tabelarea a zece sume convertite(numr curent nrcrt, suma n lei slei, suma n valut svaluta,tip valut tval, curs valutar cval).
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
26/236
26
Fig. 1.11. Situaia de ieire pentru aplicaia 1.5
Aplicaia 1.6
Se cere s se realizeze un program pentru calculul cifrei de afaceri a uneisocieti. Programul va realiza selecia societilor comerciale n funcie de cifra deafaceri i de rata profitului, ntr-o prim faz, i apoi n funcie de rata profitului
raportat la cifra de afaceri, n a doua faz. Se vor afia doar societile carendeplinesc cumulativ urmtoarele condiii: cifra de afaceri > 1.520.000.000;
profit > 500.000.000 i rata profitului > 40%.
Algoritm de calcul
Formularul dispune de dou butoane de comand: un buton pe care seinscripioneaz Obinere Situaie; un buton care dispune de interfaa Prsireprogram. Se introduc de la tastatururmtoarele date: denumire societate; cifra
de afacerii profitul obinut.Se calculeazrata profitului cu urmtoarea formul:
Rata profitului = Profit / Cifra de afaceri (1.9)
Se folosesc structuri alternative de tip If...Then...Else...End If. Seutilizeazafiarea n formular i prin caseta de mesaj.
Schema logicaferentacestui exemplu este prezentatn figura 1.12.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
27/236
27
Fig.1.12. Schema logicaferentaplicaiei 1.6
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
28/236
28
Declarare variabileDen_soc ir de caractereCA VariabilProfit VariabilRata_pr VariabilDate de intrareDen_soc StringCA VariabilProfit VariabilCalculeRata_pr=Profit/CADate de ieire CAProfit Rata_pr
Secvena de instruciuni n Visual Basic care determinrezolvarea cerinelordin enuneste urmtoarea:
Dim Den_soc As String
Dim CA As Variant
Dim Profit As Variant
Dim Rata_pr As Variant
Private Sub situatie_Click()
Den_soc = InputBox("Introduceti denumirea societtii")
CA = InputBox("Introduceti cifra de afaceri")
Profit = InputBox("Introduceti profitul realizat de societate")
If (CA < 1520000000) And (Profit < 500000000) Then
MsgBox "Nu ne intereseaz", 64, "Importanta economic"Else
MsgBox "Societatea" + Den_soc + "Prezint important", 64, "Importanta economic"
Rata_pr = Profit / CA
If Rata_pr < 0.4 Then
MsgBox "Societatea prezint o rat mic a profitului", 64, "Rata profit"
Else
MsgBox "Societatea important", 64, "Rata profit"
Print "Societatea: ", Den_soc
Print "*****************************************"
Print "Cifra de afaceri este:", CA
Print "Profitul obtinut este:", ProfitPrint "Rata profitului este:", Rata_pr * 100; "%"
End If
End If
End Sub
Private Sub iesire_Click()
End
End Sub
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
29/236
29
Rezultatul execuiei aplicaiei este prezentat n figura 1.13.
Fig.1.13. Rezultatul execuiei aplicaiei 1.6
Aplicaia 1.7
S se realizeze selecia societilor comerciale (denumire) n funcie decifra de afaceri, CA(>2 miliarde) i de rata profitului, rata_p(>45%).
Algoritm de calcul
Programul accept ca date de intrare denumirea societii comerciale
(denumire), cifra de afaceri (CA) i rata profitului (rata_p) pentru o societatecomercial. Dac rata profitului este mai mare de 45 i cifra de afaceri depetedou miliarde, societatea este considerat corespunztoare, iar datele respectivesunt memorate n "D:\coresp.txt", fiier deschis cu numrul 1 la ncrcareaformularului (evenimentul Form_Load); altfel, datele sunt memorate n fiieruldeschis cu numrul 2, adic "D:\nucoresp.txt".
Interfaa aplicaiei (formularul) cuprinde, pe lng controalele dejamenionate, i un control de tipRichTextBoxn care este ncrcat unul dintre celedou fiiere (reprezentnd societile care corespund, respectiv pe cele care nu
corespund), dup cum este acionat butonul de comandcmdDa
(Caption:Societi care corspund criteriului) sau cmdNu (Caption: Societi care NUcorespund criteriului), aa cum se prezintn fig.1.14.
De exemplu, butonul cmdDaare asociat urmtorul cod:
Private Sub cmdDA_Click()
Close #1
'pentru a-i afisa continutul, fisierul trebuie sa fie inchis
RichTextBox1.FileName = "D:\coresp.txt"
Open "D:\coresp.txt" For Append As #1
End Sub
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
30/236
30
Pentru afiarea coninutului unui fiier ntr-un control de tip RichTextBoxeste necesar ca fiierul sfie nchis (Close #1). Proprietatea FileNamese referlaun ir de caractere care indic numele i calea ctre fiierul dorit. Dup afiareaconinutului, fiierul poate fi redeschis, pentru adugarea de noi societicomerciale.
Codul asociat evenimentului Load al formularului se execut primul(Private Sub Form_Load). Pentru includerea controluluiRichTextBoxn bara deinstrumente se execut urmtoarea succesiune de comenzi: meniul
Project/Components(la fel ca la aplicaia 1.21).n continuare, este prezentat codul de program. Liniile considerate
deosebite au fost completate cu comentarii.
Private Sub cmdDA_Click()
Close #1
'pentru a-i afisa continutul, fisierul trebuie sa fie inchis
RichTextBox1.FileName = "D:\coresp.txt"Open "D:\coresp.txt" For Append As #1
End Sub
Private Sub cmdExit_Click()
descarca din memorie formularul curent, declansand si toate evenimentele de
inchidere
spre deosebire de end
Unload Me
End Sub
Private Sub cmdGoleste_Click()
casetele de text sunt deblocate: este permisa editarea lor
txtDenumire.Locked = False
txtCA.Locked = False
txtRP.Locked = False
goleste continutul casetelor de text
goleste
End Sub
Private Sub cmdNU_Click()
Close #2
RichTextBox1.FileName = "D:\nucoresp.txt"
Open "D:\nucoresp.txt" For Append As #2
End Sub
Sub goleste()
txtDenumire = " "
txtCA = " "
txtRP = " "
End Sub
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
31/236
31
Private Sub cmdSave_Click()
If Val(txtCA) > 2000000000 And Val(txtRP) > 45 Then
Print #1, txtDenumire, " ", txtCA, " ", txtRP
ElsePrint #2, txtDenumire, " ", txtCA, " ", txtRP
End If
txtDenumire.Locked = True
txtCA.Locked = True
txtRP.Locked = True
goleste
End Sub
Private Sub Form_Load()
la prima executie fisierul nu exista se trece peste aceast aroare, la linia
urmtoare
On Error Resume Next
se sterg fisierele si se recreeaza la fiecare rulare a aplicatiei
Kill "D:\coresp.txt"
Kill "D:\nucoresp.txt"
Open "D:\coresp.txt" For Append As #1
Open "D:\nucoresp.txt" For Append As #2
se tipareste antetul fisierului
Print #1, "Denumire", " ", "CA ", _
" ", "Rata_pr"Print #2, "Denumire", " ", "CA ", _
" ", "Rata_pr"
casetele de text sunt blocate: nu este permisa editarea lor
txtDenumire.Locked = True
txtCA.Locked = True
txtRP.Locked = True
End Sub
Se propune, ca exerciiu, s se modifice algoritmul de calcul, astfel nctprogramul srealizeze selecia societilor comerciale n funcie de cifra de afaceri(CA) i de localitatea unde i are sediul societatea comercial(localitate).
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
32/236
32
Fig.1.14. Situaia de ieire pentru aplicaia 1.7
Aplicaia 1.8
S se calculeze penalitile pentru plata furnizorilor la o societatecomerciali suma de platpe factura majorat, tiind valoarea iniiala facturilori numrul zilelor de ntrziere pentru fiecare dintre facturi. Penalitile secalculeazastfel: pnla 15 zile ntrziere 5%, ntre 15 i 30 de zile 8%, peste
30 de zile 10%.
Algoritm de calcul
Informaiile despre facturi se vor grupa n mulimi cu nelemente, n carenreprezintnumrul de facturi:
numrul i seria facturii: nr_serie(i); numrul de zile: nr_Zile(i); valoarea facturii: Valf(i); suma penalitilor pentru fiecare factur: SumaP(i).
Pentru adugarea de date seacioneazacest buton caredescuie casetele de text (leface editabile)
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
33/236
33
Formula de calcul a penalitilor pentru fiecare factur (SumaP(i)), n
funcie de numrul de zile (nr_zile(i)), valoarea facturii (Valf(i)) i de procentulaplicat este:
SumaP(i) = Valf(i) + Valf(i) * procent / 100 (1.10)
n care procentul va avea valorile 5, 8, 10, n funcie de numrul de zile dentrziere.
Se va calcula suma total de plat (SumaPTotal) pentru toate facturile.Iniial aceast sumva avea valoarea 0, la care se vor aduga penalitile pentrufiecare factur.
SumaPTotal = SumaPTotal + SumaP(i) (1.11)
Se realizeaz un formular cu dou butoane de comand (fig.1.16):PENALITATI PENTRU PLATA FACTURILOR (Caption) pentru procedura decalcul i afiare a penalitilor (cmdPenalitati) i pentru ieirea din program(cmdIesire). Obiectele adugate n formular sunt prezentate n tabelul urmtor:
Obiect Proprieti Evenimente
Formular (Form) Name: frmPenalitatiCaption: PENALITATI
PENTRU PLATAFACTURILOR
-
Buton de comand(Command Button)
Name: cmdPenalitatiCaption: Calculeaza Penalitati
Click
Buton de comand(Command Button)
Name: cmdIesireCaption: Iesire
Click
Dupdeclararea variabilelor de lucru ce reprezintdatele de intrare, dateleintermediare i rezultatele calculelor, se preiau datele de intrare cu ajutorul caseteide introducere a textuluiInputBox().
Pentru calculul i afiarea rezultatelor n formular, se folosete o structurde control repetitivde tipulForNext, n caren reprezinatnumrul de facturi.Pentru selectarea valorii procentului aplicat n funcie de numrul de zile, seutilizeazo structuralternativde tipul Select Case.
Schema logicpentru rezolvarea aplicaiei n conformitate cu algoritmul decalcul de mai sus este prezentatn fig.1.15.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
34/236
34
Fig. 1.15. Schema logicpentru rezolvarea aplicaiei 1.8
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
35/236
35
Procedurile cmdPenalitati_Click()i cmdIesire_Click()sunt urmtoarele:
Private Sub cmdPenalitati _Click()
declararea variabilelor de lucru
Dim n As Integer
Dim nrserie(3) As String
Dim Valf(3) As Double
Dim SumaP(3) As Double
Dim nrZile(3) As Integer
Dim SumaPTotal As Double
citirea datelor de intrare
For i = 1 To 3
nrserie(i) = InputBox("Introduceti numarul si seria facturii:")
Valf(i) = InputBox("Valoarea facturii:")
nrZile(i) = InputBox("Nr zile intarziere:")Next i
calculul penalitatilor
SumaPTotal = 0
Print "Nr serie______Valoare_____Zile Intarziere____Penalitati"
For i = 1 To 3
Select CasenrZile(i)
Case Is < 15
SumaP(i) = Valf(i) + Valf(i) * 5 / 100
Case 15 To 30
SumaP(i) = Valf(i) + Valf(i) * 8 / 100
Case Is >= 30
SumaP(i) = Valf(i) + Valf(i) * 10 / 100
End Select
Print nrserie(i), Valf(i), nrZile(i), SumaP(i)
SumaPTotal = SumaPTotal + SumaP(i)
Next i
Print "______________________________________________________"
Print "Total penalizari:"; SumaPTotal
End Sub
Private Sub cmdIesire _Click()
End
End Sub
Datele de intrare utilizate pentru obinerea rezultatelor din fig. 20.2 sunt:n=3,nr_serie(1)=R 123, valf(1)=10000, nr_zile(1)=5
nr_serie(2)=RX 234, valf(2)=20000, nr_zile(2)=20nr_serie(3)=RX 345, valf(3)=30000, nr_zile(3)=35
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
36/236
36
Fig.1.16. Situaia de ieirepentru aplicaia 1.8
Aplicaia 1.9
S se afieze elementul maxim i elementul minim dintr-o mulime cereprezintnumrul de kilometri parcuri zilnic de un autoturism.
Algoritm de calculElementul maxim (max) al unei mulimi se determinastfel:Iniial, se considermaximul egal cu primul element al mulimii:max=element(1) (1.12)Se parcurge mulimea ncepnd cu al doilea element, comparnd maximul
cu fiecare element. Dac elementul curent este mai mare dect maximul atunciacesta va lua valoarea elementului. Se utilizeazrelaiile:
Dacelement (i) > max, atunci max= element(i) (1.13)Elementul minim (min) al mulimii se determin n mod asemntor,
conform relaiilor:Dacelement (i) < min, atunci min= element(i) (1.14)Se realizeazun formular cu doubutoane de comand(fig.1.18): MAXIM SI
MINIM (Caption) i dou butoane de comand: pentru procedura de determinare amaximului, respectiv minimului (cmdMaxMin), i pentru ieirea din program(cmdIesire). Obiectele adugate n formular sunt prezentate n tabelul urmtor:
Obiect Proprieti EvenimenteFormular (Form) Name: frmMaxMin
Caption: MAXIM SI MINIM-
Buton de comand(Command Button)
Name: cmdMaxMinCaption: CalculeazMaximuli Minimul
Click
Buton de comand(Command Button)
Name: cmdIesireCaption: Iesire
Click
Dupdeclararea variabilelor de lucru ce reprezintdatele de intrare, dateleintermediare i rezultatele calculelor, se preiau datele de intrare cu ajutorul caseteide introducere a textuluiInputBox().
Pentru parcurgerea elementelor mulimii se folosete o structurde controlrepetitivde tipul For Next, n caren reprezinatnumrul de elemente. Pentrucomparearea elementelor cu max, respectiv min, se utilizeaz o structuralternativde tipulIf Then Else.
Schema logicpentru rezolvarea aplicaiei n conformitate cu algoritmul decalcul de mai sus este prezentatn fig.1.17.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
37/236
37
Fig. 1.17. Schema logicpentru rezolvarea aplicaiei 1.9
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
38/236
38
Procedurile cmdMaxMin_Click()i cmdIesire_Click() sunt urmtoarele:Private Sub cmdIesire_Click()EndEnd Sub
Private Sub cmdMaxMin_Click()Dim n As Integer
Dim element(10) As Single
Dim max As SingleDim min As Singlen = InputBox("Numarul de elemente:")
For i = 1 To nelement(i) = InputBox("Elementul:")
Print element(i)Next imax = element(1)min = element(1)
For i = 2 To nIf element(i) > max Then
max = element(i)Else
If element(i) < min Thenmin = element(i)
End IfEnd If
Next iPrintPrint "Maximul este:"; maxPrint "Minimul este:"; minEnd Sub
Datele de intrare utilizate, precum i rezultatele obinute sunt prezentate n fig.1.18.
Fig. 1.18. Situaia de ieire pentru aplicaia 1.9
Aplicaia 1.10
Se cere sse ntocmeascun program n Visual Basicpentru calculul salariuluimediu i al abaterilor specifice pentru fiecare salariat al agentului economic.
Numrul de salariai al fiecrei secii este de 10.
Rezolvare
Schema logicaferentacestui exemplu este prezentatn figura 1.19.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
39/236
39
Fig.1.19. Schema logicaferentaplicaiei 1.10
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
40/236
40
Secvena de instruciuni n Visual Basic care determinrezolvarea cerinelordin enuneste urmtoarea:
Dim Salariu(10) As Long
Dim Abatere(10) As Long
Dim Media As LongDim Suma As Long
Dim Marca(10) As String
Dim Nume(10) As String
Dim I As Byte
Private Sub cmdafis_Click()
Cls
Print "________________________________________________"
Print "NR NUME SI PRENUME SALARIUL ABATERE"
Print "________________________________________________"
For I = 1 To 10
Print I, Nume(I), " "; Salariu(I), Abatere(I)
Next I
Print "________________________________________________"
Print " TOTAL SALARII:", Suma
End Sub
Private Sub cmdintro_Click()
Suma = 0
For I = 1 To 10
Marca(I) = InputBox("Marca salariatului" + Str(I))
Nume(I) = InputBox("Numele si prenumele salariatului" + Str(I))
Salariu(I) = InputBox("Salariul tarifar al angajatului" + Str(I))
Suma = Suma + Salariu(I)
Next I
Media = CLng(Suma / 10)
MsgBox ("Salariul mediu este " + Str(Media))
For I = 1 To 10
Abatere(I) = Salariu(I) - Media
NextEnd Sub
Private Sub sfr_Click()
End
End Sub
Rezultatul execuiei formularului Calcul salariu i abateri este prezentat nfigura 1.20.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
41/236
41
Fig.1.20. Rezultatul execuiei formularului
Calcul salariu i abateri din aplicaia 1.10
Aplicaia 1.11
O societate comercialvinde un numr de 20 produse zilnic, timp de 5 zile. Sedorete aflarea mediei valorii vnzrilor pe fiecare zi. Se cunosc ca date de intrare:CODP codul produsului, DENP denumirea produsului, VALP valoarea
produsului.
Algoritm de calcul
n acest program se folosesc dou structuri repetitive, dintre care una seafl n interiorul celeilalte (structuri repetitive imbricate). Prima structur este detipul DoLoop Until, fiind deci condiionat posterior, ceea ce nseamn c seexecut cel puin o dat. Aceast structur este folosit pentru a ine evidenazilelor. Cea de-a doua structur repetitiv este de tipul ForNext i se refer lacele 20 de produse vndute zilnic.
Variabila TOTP conine totalul valoric al produselor vndute ntr-o zi:
TOTP = TOTP + VALP (1.15)
iar variabila TOTALM este media valorilor vnzrilor pe zi, indiferent de produs.
TOTALM=TOTP/j, unde j=20 de produse (1.16)
n acest caz, VALPnu mai constituie datde ieire (nu mai este calculatpe baza cantitii i preului), ci este datde intrare.
Schema logiceste prezentatn fig.1.21.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
42/236
42
Fig.1.21. Schema logicpentru aplicaia 1.21
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
43/236
43
Prelucrarea se execut ca urmare a acionrii unui clic pe butonulcmdCalcul(Caption Vnzri)
Private Sub cmdCalcul_Click()Dim CODP As SingleDim DENP As StringDim VALP As Double 'valoarea produsuluiDim TOTP As Double 'total produsDim TOTALM As Double 'vanzarea medie zilnica pe toate produseleDim i As BytePrint Tab(10); "VANZARILE MEDII ZILNICE"Print String(35, "=")i = 1
DoTOTP = 0
For j = 1 To 20CODP = InputBox("Introduceti codul produsului:", "Ziua " _
& i & ", " & "produsul " & j)DENP = InputBox("Introduceti denumirea produsului:", _"Ziua " & i & ", " & "produsul " & j)VALP = InputBox("Introduceti valoarea:", "Ziua " & i & _", " & "produsul " & j)TOTP = TOTP + VALP
Next jTOTALM = TOTP / j
Print Tab(2); "ZIUA " & i; Tab(15); Format(TOTALM, "STANDARD")i = i + 1
Loop Until i > 5
Print String(35, "=")End Sub
Situaia de ieire este prezentatn fig.1.22.
Fig.1.22. Situaia de ieire pentru aplicaia 1.11
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
44/236
44
Aplicaia 1.12
S se ntocmeascstatul de plata salariului net (sal_net) pentru angajaiiunei societi comerciale (fiecare angajat se identificprin marca), tiind salariul
brut (sal_brut) i impozitul (impozit) ce se calculeaz conform cu grila deimpozitare n vigoare la data ntocmirii statului de salarii (data_intocm).
Algoritm de calculPentru stabilirea impozitului fiecrui angajat se va utiliza o gril de
salarizare n trei trepte, cu limitele L1, L2, L3, astfel:DacSB
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
45/236
45
Fig. 1.23. Schema logicpentru rezolvarea aplicaiei 1.12
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
46/236
46
Procedurile cmdSalarii_Click()i cmdIesire_Click()sunt urmtoarele:Private Sub cmdSalarii_Click()declararea variabilelor de lucru
Dim marca(5) As StringDim SB(5) As DoubleDim SN(5) As Double
Dim P1 As DoubleDim P2 As DoubleDim P3 As DoubleDim L1 As DoubleDim L2 As DoubleDim L3 As Doublecitirea limitelor
L1 = InputBox("Limita 1:")L2 = InputBox("Limita 2:")L3 = InputBox("Limita 3:")calcularea impozitului intermediar
P1 = L1 * 0.18P2 = P1 + (L2 - L1) * 0.23P3 = P1 + P2 + (L3 - L2) * 0.34Print "Marca---Salariul brut---Salariul net---"For i = 1 To 5
citirea datelor despre salariatimarca(i) = InputBox("Marca salariatului:")SB(i) = InputBox("Salariul Brut:")calculul salariului netSelect CaseSB(i)
Case Is L3SN(i) = SB(i) - P1 - P2 - P3 - (SB(i) - L3) * 0.4
End Selectafisarea rezultatelorPrint " "; marca(i); " "; SB(i); " "; SN(i)
Next iEnd Sub
Private Sub cmdIesire_Click()EndEnd Sub
Datele de intrare utilizate pentru obinerea rezultatelor din fig.1.24 sunt:L1=2.000.000L2=5.000.000L3=10.000.000n=5,marca(1)=M123, SB(1)= 1.800.000marca(2)=M234, SB(2)= 2.500.000marca(3)=M345, SB(3)= 5.700.000
marca(4)=M456, SB(4)= 7.800.000marca(5)=M567, SB(5)= 15.000.000
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
47/236
47
Fig. 1.24. Situaia de ieire pentru aplicaia 1.12
Aplicaia 1.13
S se sorteze cresctor elementele unei mulimi ce reprezint mediancasrilor sptmnale (med) ale unei societi comerciale.
Algoritm de calcul
Pentru ordonarea valorilor mulimii, n ordine cresctoare, se procedeazastfel:
se comparprimele douelemente ale mulimii, i, dacnu sunt n ordine cresctoare,atunci se inverseaz poziiile celor dou. Se compar urmtoarele dou elementenvecinate i se procedeazca mai sus, pnla parcurgerea ntregii mulimi. Algoritmulse reia de la nceput, pnse constatcnu mai sunt necesare schimbri ntre elementelemulimii. Pentru monitorizarea schimbrilor intervenite n mulime se utilizeaz ovariabilboolean (cu valori true/false) schimb. Dac ntre elementele mulimii s-au
produs schimbri, atunci schimb=false, dacnu existmodificri, atunci schimb=true,deci mulimea este sortat. Algoritmul se reia att timp ct schimbe =false. Pentrurealizarea permutrilor elementelor se utilizeaz o variabil de transfer (t) ce reinevalorile primului element, dupcum urmeaz:
t=med(i)
med(i)=med(i+1) (1.19)med(i+1)=tSe realizeazun formular cu doubutoane de comand(fig.1.26): SORTARE
(Caption) i doubutoane de comand: pentru procedura de determinare a maximului,respectiv minimului (cmdSortare), i pentru ieirea din program (cmdIesire).Obiectele adugate n formular sunt prezentate n tabelul urmtor:
Obiect Proprieti EvenimenteFormular (Form) Name: frmSortare
Caption: SORTARE-
Buton de comand(Command Button) Name: cmdSortareCaption: Sortare
Click
Buton de comand(Command Button) Name: cmdIesireCaption: IesireClick
Dupdeclararea variabilelor de lucru, ce reprezintdatele de intrare, dateleintermediare i rezultatele calculelor, se preiau datele de intrare cu ajutorul caseteide introducere a textuluiInputBox().
Pentru parcurgerea elementelor mulimii se folosete o structurde controlrepetitivde tipul For Next, n caren reprezinatnumrul de elemente. Deoarecealgoritmul se reia att timp ct se produc schimbri ntre elementele mulimii, seutilizeaz o structur repetitiv condiionat anterior de tipul: Do While, n carecondiia esteschimb=false.
Schema logicpentru rezolvarea aplicaiei n conformitate cu algoritmul decalcul de mai sus este prezentatn fig.1.25.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
48/236
48
Fig. 1.25. Schema logicpentru rezolvarea aplicaiei 1.13
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
49/236
49
Procedurile cmdSortare _Click()i cmdIesire _Click() sunt
urmtoarele:
Private Sub cmdIesire_Click()
End
End Sub
Private Sub cmdSortare_Click()
Dim n As Integer
Dim med(10) As Single
Dim schimb As Boolean
Dim t As Single
Print "Medii studenti:"
Print "_________________"n = InputBox("Introduceti numarul de studenti:")
For i = 1 To n
med(i) = InputBox("Media studentului:")
Print med(i)
Next i
schimb = False
Do While schimb = False
schimb = True
For i = 1 To (n - 1)
If med(i) > med(i + 1) Then
t = med(i)
med(i) = med(i + 1)
med(i + 1) = t
schimb = False
End If
Next i
Loop
Print "Afisarea mediilor in ordine crescatoare:"Print "_________________________________________________"
For i = 1 To n
Print med(i)
Next i
End Sub
Datele de intrare utilizate, precum i rezultatele obinute sunt prezentate n
fig.1.26.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
50/236
50
Fig. 1.26. Situaia de ieire pentru aplicaia 1.13
Aplicaia 1.14
Sse ntocmeascun program pentru calculul dobnzii aferente unui depozitbancar n funcie de termenul de depunere.
Varianta 1 de rezolvare:
Datele de intrare sunt sumai termen(termenul de depunere), iar ca rezultatse obine dobnda. Se folosete o structur repetitiv de tip Do Loop i ostructuralternativde tipul Select Case.
Schema logicaferentacestui exemplu este prezentatn fig.1.27.Se observcstructura repetitiveste frcontor condiionatanterior.
Numrul tipurilor de depozite bancare este limitat la patru.Procedura ,,Introducere asigurintroducerea datelor de intrare, iar procedura
,,Calcul realizeazcalculul sumei actuale n funcie de tipul de depozit.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
51/236
51
Fig.1.27. Schema logicaferentExemplu calcul dobndcuvenit
din aplicaia 1.14 (varianta 1)
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
52/236
52
Secvena de instruciuni n Visual Basic care determinrezolvarea cerinelordin enuneste urmtoarea:
Dim Nr_cont As StringDim Nume As StringDim Prenume As String
Dim Suma_dep As VariantDim Tip_Depozit As ByteDim R As Variant
Private Sub execut_Click()R = InputBox("Doriti sa lucrati? (DA/NU)")While UCase(R) = "DA"GoSub IntrodGoSub Calcul
R = InputBox("Mai Continuati? (DA/NU)")Wend
MsgBox "pentru utilizarea acestui program", 64, "Colectivul de autori vamultumeste"
End
Introd:Nr_cont = InputBox("Tastati numarul contului")Nume = InputBox("Tastati numele deponentului")Prenume = InputBox("Tastati prenumele deponentului")Suma_dep = InputBox("Tastati suma depusa")
DoTip_Depozit = InputBox("Tastati 1- depozit 1 luna; 2- depozit 3 luni; 3-
depozit 6 luni sau 4- depozit 12 luni")Loop Until Tip_Depozit >= 1 And Tip_Depozit
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
53/236
53
Varianta 2 de rezolvare
Algoritm de calcul
Prelucrarea se condiioneaz n sensul c se execut numai dac secompleteazcorect datele de intrare ale problemei:
If IsNumeric(txtSuma) And txtNrcont " " And txtNume " " Then
irul de caractere introdus n caseta de text txtSuma trebuie s coninnumai caractere numerice; pentru verificare se folosete funcia IsNumeric, care
returneazTruedaca argumentul este un numr i Falsen caz contrar. Celelaltecasete de text trebuie doar sfie completate (snu coninirul vid).Instruciunea Select Case execut diverse aciuni n funcie de valoarea
luat de variabila termen: dac termen ia valoare 1 se aplic un procent dedobndde 21%, daceste 2, se aplic22% etc. Instruciunea Select Casepoate finlocuitprinIfThenElse.
lblDobanda.Visible = True (A)
txtDobanda.Visible = True (B)
txtDobanda = dob (C)
Proprietatea Visible a controalelor (etichete label, casete de text TextBox, butoane de comand CommandButton, casete combinate ComboBoxetc) permite afiarea sau inhibarea afirii la execuie a controalelor respective. ncazul de fa, n timpul proiectrii proprietatea Visible a fost setat la valoarealogic FALSE, deci eticheta lblDobanda i caseta de text txtDobanda nu suntvizibile pe suprafaa formularului dect dupacionarea butonului cmdCalcul, peevenimentul su clic fiind ataate, printre altele, i liniile de mai sus (A),(B).
Etichete lblDobanda i caseta de text txtDobanda sunt folosite pentruafiarea rezultatului, adic a sumei dobnzii. Proprietatea.Text a controluluiTextBoxeste implicit: dacnu se completeaznici o proprietate, se considercafost referitproprietatea text, deci linia urmtoare este echivalentcu (C):TxtDobanda.Text = dob
Schema logica aplicaiei 1.14 (varianta 2) este prezentatn fig.1.28.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
54/236
54
Fig.1.28. Schema logicpentru aplicaia 1.14 (varianta 2)
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
55/236
55
Primele trei linii de cod de mai jos aparin seciunii General Declarations;
n continuare, sunt listate procedurile eveniment Private Sub cmdCalcul_Click()i Private Sub cmdExit_Click():
Dim suma As Double
Dim termen As Byte
Dim dob As Double
Private Sub cmdCalcul_Click()
If IsNumeric(txtSuma) And txtNrcont " " And txtNume " " Then
suma = Val(txtSuma)
termen = Val(cboTermen.Text)
Select Casetermen
Case 1
dob = (suma * 21 / 100) * 1 / 12Case 3
dob = (suma * 22 / 100) * 3 / 12
Case 6
dob = (suma * 23 / 100) * 6 / 12
Case Else
dob = suma * 24 / 100
End Select
lblDobanda.Visible = True
txtDobanda.Visible = True
txtDobanda = dob
Else
MsgBox "Nu ati completat corect!", vbOKOnly, "Atentie!"
End If
End Sub
Private Sub cmdExit_Click()
Unload Me
End Sub
Situaia de ieire pentru aplicaia 1.14 (varianta 2 de rezolvare) esteprezentatn fig.1.29.
Se propune, ca exerciiu, s se modifice algoritmul de calcul, astfel nctnivelul dobnzilor acordate pentru depozitele constituite s fie variabil (s fieintrodus ca datde intrare).
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
56/236
56
Fig.1.29. Situaia de ieire pentru aplicaia 1.14 (varianta 2)
Aplicaia 1.15
Programul urmrete stabilirea TVA (structurrepetitivde tip For-Next). Pebaza datelor de intrare (cantitate i pre) se va calcula, unde este cazul, TVA i seva ntregi valoarea. Se utilizeaz structura repetitivForNext care testeazcondiia C, unde C reprezint situaia Da sau Nu pentru existena TVA-ului
printr-o structur alternativIf...Then...Else...End If. Rezultatul prelucrrii esteafiiat ntr-un fiier TVA.DAT.
Schema logicaferentacestui exemplu este prezentatn fig.1.30.
Se observ c numrul de produse N este interactiv i este verificat npermanenpentru situaia i < N, unde variabila i reprezintun contor.
n continuare se testeazdacvariabila C are valoarea ,,Da (se calculeazTVA) sau ,,Nu (produsul este scutit de TVA).
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
57/236
57
Fig.1.30. Schema logicaferentStabilire TVA din aplicaia 1.15
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
58/236
58
Declarare variabileDen_prod VariabilPret VariabilCant VariabilC ir de caractereVal VariabilI Numr ntreg
N Numr ntregTVA VariabilData Ora de introducereDate de intrare
N NumrDen_prod Denumire produsC Caz pentru Tva Da/NuPret Pret
Cant CantitateCalculeVal = Cant * Pret Tva = Val * 19 %Val = Val + TvaDate de ieireDen denumire Pret pretul produsuluiCant cantitate Val valoare
Secvena de instruciuni n Visual Basic care determinrezolvarea cerinelordin enuneste urmtoarea:
Dim Den_prod As String
Dim Pret As Variant
Dim Cant As Variant
Dim C As String * 2
Dim Val As Variant
Dim I As Integer
Dim N As Integer
Dim Tva As Variant
Dim Data As DatePrivate Sub Command1_Click()
Open "c:\tva.dat" For Append As #1
Print #1, "*************************************************"Data = Date
Print #1, " Situatia la data de" + Str(Data)
Print #1, "*************************************************"
Print #1, "* Denumire * Pret * Cantitate * Valoare *"
Print #1, "*--------------*--------*---------------*--------------*"
N = InputBox("Tastati numarul de produse")For I = 1 To (N + 1)
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
59/236
59
If I = N + 1 Then
End
Else
Den_prod = InputBox("Denumirea produsului" + Str(I))
C = InputBox("Produsului i se aplica Tva (DA/NU)")
If UCase(C) = "DA" Then
Pret = InputBox("Pretul produsului" + Den_prod)
Cant = InputBox("Cantitatea produsului" + Den_prod)
Val = Cant * Pret
MsgBox ("Valoarea produsului" + Den_prod + "Fara Tva este:" + Str(Val)),
vbOKOnly
Tva = Val * 19 / 100
Val = Val + Tva
MsgBox ("Valoarea produsului" + Den_prod + "cu Tva este:" + Str(Val))
Else
Pret = InputBox("Pretul produsului" + Den_prod)Cant = InputBox("Cantitatea produsului" + Den_prod)
Val = Cant * Pret
MsgBox ("Valoarea produsului" + Den_prod + " este:" + Str(Val))
End If
End If
10 Next
Afisari:
Print #1, Den_prod; " "; Pret; " "; Cant; " "; Val
GoTo 10
Close #1
End Sub
Private Sub Command2_Click()
End
End Sub
Rezultatul execuiei formularului Stabilire TVA este prezentat nfigura 1.31.
Fig.1.31. Rezultatul execuiei formularului Stabilire TVA din aplicaia 1.15
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
60/236
60
Aplicaia 1.16
Pentru o grupformatdin 20 de studeni sse calculeze media pe fiecarestudent n parte i media pe grup, cunoscnd: CODS Codul studentului,
NUME Numele i prenumele studentului, NOTA 1 Nota la examenul 1,NOTA2Nota la examenul 2 i NOTA3Nota la examenul 3.
Algoritm de calcul
Pentru fiecare dintre cei 20 de studeni ai grupei se introduc 3 note(NOTA1, NOTA2 i NOTA3) pe baza crora se calculeazmedia care este imediatafiat. Media tuturor studenilor se nsumeaz n variabila MEDIEGR carempritla 20 reprezintmedia grupei.
Secvena:
Do
..
..
..
..
Loop Until NOTA1 = 1 And NOTA2 =
1 And NOTA3 = 1
valideazdatele la introducere, n sensul cnu sunt acceptate dect valori ntre 1 i10 inclusiv pentru variabilele NOTA1, NOTA2 i NOTA3; instruciunile dininteriorul buclei se executcel puin o dat, datoritcondiionrii posterioare.
Al doilea argument al instruciuniiInputBoxafieaztextul Notele suntde la 1 la 10!n bara de titlu a caseteiInputBox.
NOTA1 = InputBox("Introduceti nota 1 pt studentul " & NUME & ":", "Notele sunt
de la 1 la 10!")
Exemplul este rulat pentru un numr de 4 studeni. Schema logic esteprezentatn fig.1.32.
Se propune, ca exerciiu, modificarea algoritmului de calcul astfel nctprocentul de TVA sfie introdus de la tastatur.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
61/236
61
Fig.1.32. Schema logicpentru aplicaia 1.16
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
62/236
62
Procedurile Private Sub cmdCalcul_Click()i Private SubcmdExit_Click() sunt prezentate n continuare:
Private Sub cmdCalcul_Click()
Dim CODS As Integer, NUME As String, NOTA1 As Byte, _
NOTA2 As Byte, NOTA3 As Byte, MEDIES As Single, _
MEDIEGR As Single
MEDIEGR = 0
Print Tab(25); "SITUATIA NOTELOR PENTRU STUDENTII GRUPEI"
Print String(55, "=")
Print "COD"; Tab(10); "NUME"; Tab(35); "NOTA1"; Tab(45); "NOTA2";
Tab(55); "NOTA3"; Tab(65); "MEDIA"
For i = 1 To 20
CODS = InputBox("Introduceti codul studentului:")NUME = InputBox("Introduceti numele studentului:")
Do
NOTA1 = InputBox("Introduceti nota 1 pt studentul " & NUME & ":", "Notele sunt
de la 1 la 10!")
NOTA2 = InputBox("Introduceti nota 2 pt studentul " & NUME & ":", "Notele sunt
de la 1 la 10!")
NOTA3 = InputBox("Introduceti nota 3 pt studentul " & NUME & ":", "Notele sunt
de la 1 la 10!")
Loop Until NOTA1 = 1 And NOTA2 =
1 And NOTA3 = 1
MEDIES = (NOTA1 + NOTA2 + NOTA3) / 3
MEDIEGR = MEDIEGR + MEDIES
Print CODS; Tab(10); NUME; Tab(35); NOTA1; Tab(45); NOTA2; Tab(55);
NOTA3; Tab(65); Format(MEDIES, "fixed")
Next i
Print String(55, "=")
Print "MEDIA GRUPEI"; Tab(65); MEDIEGR / 20
Print String(55, "=")
End Sub
Private Sub cmdExit_Click()
End
End Sub
n fig.1.33 este prezentatsituaia de ieire pentru 4 studeni (n loc de 20).
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
63/236
63
Fig.1.33. Situaia de ieire pentru aplicaia 1.16
Aplicaia 1.17
S se ntocmeascstatul de plata salariului net (sal_net) pentru angajaiiunei societi comerciale (fiecare angajat se identificprin marca), tiind numrulorelor lucrate (nr_ore), salariul tarifar orar (sal_tarif) i impozitul (impozit) ce secalculeazconform cu grila de impozitare n vigoare la data ntocmirii statului desalarii (data_intocm).
Algoritm de calcul
Informaiile despre fiecare salariat se vor grupa n mulimi cu nelemente,n caren reprezinatnumrul de salariai:
marca: marca(i); numrul de ore lucrate: nr_ore(i); salariul brut: SB(i); salariul net: SN(i).
Se va calcula salariul brut al fiecrui angajat:
SB(i) = nr_ore(i) * Sal_tarif (1.20)
Pentru stabilirea impozitului fiecrui angajat se va utiliza o gril de
salarizare n trei trepte cu limitele L1, L2, L3, astfel:
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
64/236
64
DacSB
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
65/236
65
Fig. 1.34. Schema logicpentru rezolvarea aplicaiei 1.17
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
66/236
66
Procedurile cmdSalarii_Click()i cmdIesire_Click()sunt urmtoarele:
Private Sub cmdSalarii_Click()declararea variabilelor de lucru
Dim marca(5) As StringDim nr_ore(5) As IntegerDim Sal_tarif As Double
Dim SB(5) As DoubleDim SN(5) As DoubleDim P1 As DoubleDim P2 As DoubleDim P3 As DoubleDim L1 As DoubleDim L2 As DoubleDim L3 As Doublecitirea salariului tarifarSal_tarif = InputBox("Salariul tarifar orar:")citirea limitelor de impozitare
L1 = InputBox("Limita 1:")L2 = InputBox("Limita 2:")L3 = InputBox("Limita 3:")calcularea impozitului intermediar
P1 = L1 * 0.18P2 = P1 + (L2 - L1) * 0.23P3 = P1 + P2 + (L3 - L2) * 0.34PrintPrint "Salariul tarifar orar:"; Sal_tarifPrintPrint "Marca---Nr Ore---Salariul brut---Salariul net---"For i = 1 To 5
citirea datelor despre salariatimarca(i) = InputBox("Marca salariatului:")nr_ore (i) = InputBox("Numarul de ore lucrate:")calcularea salariului brut si netSB(i) = nr_ore (i) * Sal_tarifSelect Case SB(i)
Case Is = (L3 + 1)SN(i) = SB(i) - P1 - P2 - P3 - (SB(i) - L3) * 0.4
End Selectafisarea rezultatelor
Print " "; marca(i); " "; nr_ore(i); " "; SB(i); " "; SN(i) Next iEnd Sub
Private Sub cmdIesire_Click()End
End Sub
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
67/236
67
Datele de intrare utilizate pentru obinerea rezultatelor din fig.1.35 sunt:L1=2.000.000L2=5.000.000L3=10.000.000Sal_tarif=70.000n=5,marca(1)=M123, nr_ore(1)= 15marca(2)=M234, nr_ore (2)= 20marca(3)=M345, nr_ore (3)= 100marca(4)=M456, nr_ore (4)= 150marca(5)=M567, nr_ore (5)= 250
Fig.1.35. Situaia de ieire pentru aplicaia 1.17
Aplicaia 1.18
Pentru o listcu 10 produse la care se aplic tva, sse calculeze i s seafieze, pentru fiecare produs, taxa pe valoarea adugat TVA i valoarea cu tva(ValCuTVA), tiind: codul produsului codpr, denumirea produsului denpr,cantitatea cant i preul unitarpret.
Algoritm de calcul
Soluia aleaspentru prezentarea rezultatelor aplicaiei folosete fiierele.Open "c:\tva.dat" For Append As #1 deschide fiierul tva.dat n cazul n careexist; dac nu exist l creeaz. Fiierul este primul deschis (#1). n el vor fiadugate cu ajutorul comenzii Print #1 valorile variabilelor dorite.Print #1, codp; " "; denp; " "; cant; " "; pret; " "; TVA; " "; ValCuTVA
Este de menionat faptul cn cazul stocrii datelor n fiiere este posibilfolosirea instruciuni Tabpentru organizarea pe coloane.
Schema logiceste prezentatn fig.1.36.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
68/236
68
Fig.1.36. Schema logicpentru aplicaia 1.18
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
69/236
69
Interfaa aplicaiei este format dintr-un formular pe care sunt amplasatedou butoane de comand (fig.1.37): cmdCalcul i cmdExit. Codul asociatevenimentelor clic pe aceste butoane este prezentat n continuare:
Private Sub cmdCalcul_Click()
Dim codp As Integer, denp As String, cant As Double, pret As Double
Open "c:\tva.dat" For Append As #1
Print #1, "Valoarea cu TVA"
Print #1, String(80, "=")
Print #1, "Cod Denumire Cantitate Pret TVA Valoare cu TVA "
For i = 1 To 10
codp = InputBox("Introduceti codul produsului:")
denp = InputBox("Introduceti denumirea produsului:")
cant = InputBox("Introduceti cantitatea:")
pret = InputBox("Introduceti pretul:")
TVA = cant * pret * 0.19ValCuTVA = cant * pret * 1.19
Print #1, codp; " "; denp; " "; cant; " "; pret; " "; TVA; " "; ValCuTVA
Next i
Print #1, String(80, "=")
End Sub
Private Sub cmdExit_Click()
Unload MeEnd Sub
Fig.1.37.Interfaa aplicaiei 1.18
Rezultatele rulrii programului sunt prezentate n fig.1.38.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
70/236
70
Fig.1.38. Situaia de ieire (fiierul tva.dat) pentru aplicaia 1.18
Aplicaia 1.19
Sse calculeze profitul sau pierderea din vnzri pentru un produs la carese cunosc costul de producie i preul de vnzare.
Algoritm de calcul
Se completeaz casetele de text corespunztoare costului de producierespectiv preului de vnzare. Daca preul este superior costului se determin unprofit, n caz contrar se calculeaz pierderea. Iniial, eticheta i caseta de textutilizate pentru afiarea profitului/pierderii nu sunt vizibile (au proprietile Visiblesetate pe False). Afiarea lor se realizeaz n momentul acionarii tastei F1 sau aalegerii opiunii Calculdin meniul Afisare.
Realizarea meniului ataat aplicaiei s-a realizat cu ajutorul Editorului demeniuri (MenuEditor). Pentru lansarea Editorului de meniuri se acioneaz clicdreapta pe suprafaa formularului i se alege MenuEditor. Pe ecran va apreafereastra din fig.1.39.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
71/236
71
Fig.1.39.Editorul de meniuri
Name: mnuCalcul(submeniu almeniului Aplicaie,ca i mnuIeire)
Name: mnuIesire
Sgei pentru deplasareantre elementele de meniu iretrogradarea ca submeniurisau avansarea ca meniuri
principale
Combo pentrustabilirea unei tastescurttur ctreopiunile aflate peultimele ramificaii alemeniurilor
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
72/236
72
Fig.1.40. Schema logicgeneralpentru aplicaia 1.19
START
Citete txtCost, txtPret
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
73/236
73
Codul asociat evenimentelor clic ale elementelor de meniu mnuCalcul,
mnuIesirei mnuAjutoreste prezentat n continuare:
Private Sub mnuAjutor_Click()
MsgBox "Se completeaza costul si pretul in casetele corespunzatoare si se
determina profitul sau piererea !", vbOKOnly, "Ajutor"End Sub
Private Sub mnuCalcul_Click()
If txtCost = " " Or txtPret = " " Then
MsgBox "Nu ati completat pretul si/sau costul !", vbOKOnly, "Atentie!"
Exit Sub
End If
lblRezultat.Visible = True
txtRezultat.Visible = True
If Val(txtCost) > Val(txtPret) ThenlblRezultat.Caption = "Pierdere"
lblRezultat.ForeColor = vbRed
txtRezultat.Text = Format(Val(txtCost) - Val(txtPret), "FIXED")
Else
txtRezultat.Text = Format(-Val(txtCost) + Val(txtPret), "FIXED")
End If
End Sub
Private Sub mnuIesire_Click()
Unload MeEnd Sub
Top 1920Visible FalseWhatsThisHelpID 0Width 1215
Fig.1.41.Interfaa aplicaiei 1.19 n modul de proiectare(Design)
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
74/236
74
Rezultatele rulrii aplicaiei sunt prezentate n fig.1.42.
Fig. 1.42.Situaia de ieire pentru aplicaia 1.19
Aplicaia 1.20
S se ntocmeasc un program pentru stabilirea punctului de echilibru(q_e)la o societate comercial, tiind vnzrile din produsul 1 (v1), vnzrile dinprodusul 2 (v2), costurile fixe (c_f), costurile cu manopera (c_man), costurile cumateriale (c_mat)i numrul perioadelor de gestiune (n). Formula de calcul este:q_e=c_f/(v1+v2-c_f)*(v1+v2) .
Algoritm de calcul
Punctul de echilibru (q_e) se va calcula astfel:q_e=c_f/(v1+v2-c_f)*(v1+v2) (1.22)Se realizeaz un formular cu dou butoane de comand (fig.1.44):
PUNCTUL DE ECHILIBRU (Caption) pentru procedura de calcul i afiare a
punctului de echilibru (cmdQE) i pentru ieirea din program (cmdIesire).Obiectele adugate n formular sunt prezentate n tabelul urmtor:
Obiect Proprieti EvenimenteFormular (Form) Name: frmQE
Caption: PUNCTUL DEECHILIBRU
-
Buton de comand(Command Button) Name: cmdQECaption: Punctul de echilibru
Click
Buton de comand(Command Button) Name: cmdIesireCaption: Iesire
Click
Casetde text (Text Box) Name: txtV1Etichete (Labels) Caption: Vanzari 1Casete de text (Text Box) Name: txtV2Etichete (Labels) Caption: Vanzari 2Casetde text (Text Box) Name: txtCFEtichete (Labels) Caption: Costuri FixeCasete de text (Text Box) Name: txtCManEtichete (Labels) Caption: Costuri ManoperaCaseta de text (Text Box) Name: txtCMatEtichete (Labels) Caption: Costuri MaterialeCasete de text (Text Box) Name: txtQEEtichete (Labels) Caption: Punctul De Echilibru
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
75/236
75
Dup declararea variabilelor de lucru ce reprezint datele de intrare, dateleintermediare i rezultatele calculelor, se preiau datele de intrare din casete de textdin formular.
Schema logicpentru rezolvarea aplicaiei n conformitate cu algoritmul decalcul de mai sus este prezentatn fig.1.43.
Fig.1.43 Schema logicpentru rezolvarea aplicaiei 1.20
Procedurile cmdQE_Click()i cmdIesire_Click()sunt urmatoarele:
Private Sub cmdQE_Click()
declararea variabilelor de lucru
Dim q_e As Double
Dim v1 As Double
Dim v2 As Double
Dim c_f As Double
Dim c_man As Double
Dim c_mat As Double
introducerea datelor de intrare
v1 = txtV1.Text
v2 = txtV2.Text
c_f = txtCF.Text
c_man = txtCMan.Text
c_mat = txtCmat.Text
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
76/236
76
se calculeaza punctul de echilibru
q_e=c_f/(v1+v2-c_f)*(v1+v2)se afiseaza in casete de text rezultatele
txtQE.Text = q_eEnd Sub
Private Sub cmdIesire_Click()End
End Sub
Datele de intrare utilizate pentru obinerea rezultatelor din fig. 1.44 sunt:V1=500.000V2=840.000c_f=50.000c_man=400.000
c_mat=700.000.
Fig.1.44. Situaia de ieire pentru aplicaia 1.20
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
77/236
77
Aplicaia 1.21
Sse calculeze valoarea total(val_tot) a 8 produse perisabile aflate ntr-un depozit, dupo perioadde depozitare, cunoscnd coeficienii de perisabilitatespecifici (coef_peris), categoriile de produse (definite prin cod_produs) i
valoarea acestor produse (val) la nceputul perioadei de depozitare.
Algoritm de calcul
Cele mai importante prelucrri pe care le efectueaz programul suntprezentate n secvena urmtoare:
For i = 0 To 7cod_produs(i + 1) = InputBox("Introduceti codul produsului " & i + 1 & ":")coef_peris(i + 1) = InputBox("Introduceti coef de perisabilitate pt produsul " & i +
1 & ":(%)")val(i + 1) = InputBox("Introduceti valoarea produsului " & i + 1 & ":")total_val = total_val + val(i + 1) * (100 - coef_peris(i + 1)) / 100total_dep = total_dep + val(i + 1) * coef_peris(i + 1) / 100
Next i
Pentru stocarea datelor calculate se vor utiliza variabile de fiiere, cumeniunea c vor fi pstrate numai valorile referitoare la ultima execuie a
programului, deoarece fiierul perisabil.txt este ters i recreat de fiecare datcndse acioneaz clic pe meniul mnuCalcul (Caption: Calcul Valoare). tergerea irecreerea se fac n liniile urmtoare:
Kill "c:\perisabil.txt"
Open "c:\perisabil.txt" For Append As #1
n scopul consultrii mai rapide a rezultatelor execuiei programului s-aadugat la proiect formularul FrmShowcare este generat vizibil dup terminarea
prelucrrilor procedurii mnuCalcul_Click(), n linia FrmShow.Show. Acest
Se introduc codul produsului,coeficientul de perisabilitate ivaloare pentru fiecare produs.
Pe baza lor se calculeazuntotal valoric i un total aldeprecierii.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
78/236
78
formular conine un control de tip RichTextBox cu ajutorul cruia se poatevizualiza coninutul unui fiier de tip.txtsau.dat. Deoarece acest tip de control nueste iniial n bara de instrumente (ToolBox, unde sunt prezente doar controaleleelementare cele mai utilizate), este necesaradugarea lui n bar; pentru aceasta,se executclic dreapta pe bara de instrumente, ntr-un loc unde nu se mai aflniciun control i se alege prima opiune Components. O alta variant const nsuccesiunea de comenzi n meniul Project/Components. Pe ecran apare fereastraComponents(fig.1.45).
Fig.1.45.FereastraComponents
Aa dup cum se observ i n figur, se bifeaz controlul de tipRichTextBoxi se acioneazbutonulApply, rezultatul constnd n apariia pe barade instrumente a controlului respectiv (fig.1.46).
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
79/236
79
Fig.1.46.Bara de instrumente(ToolBox)
Din acest moment controlul poate fi folosit ca oricare altul, prin dispunereape suprafaa formularului i stabilirea proprietilor sale. Astfel, la proprietateaFileNamese completeazC:\perisabil.txt, n cazul n care se dorete ca fiieruls fie amplasat direct pe partiia C a harddiskului. Caseta de text extins seconfigureazdin fereastraProperty Pages(se executclic dreapta cu mouse-ul pesuprafaa casetei Properties).
Aplicaia folosete un formular de tip MDI (MDIForm MultipleDocument Interface, adic Interfa Document Multiplu) i un formular normalcare are proprietatea deMDIChildsetatca True. Aceasta nseamncformularulcopil nu poate fi activat dect dac formularul de tip MDI este deschis; deasemenea, nchiderea formularului MDI implic nchiderea tuturor copiilor si,adic a formularelor avnd setat proprietatea MDIChild ca True. n general,formularele de tip MDI nu pot conine ele nsele controale, dar pot conine meniuri
care controleazdeschiderea i nchiderea formularelor subordonate.Linia On Error Resume Nextdispusla nceputul codului asociat meniuluimnuCalcul pred controlul urmtoarei instruciuni dup cea care a coninuteroarea. Prima execuie a programului furnizeazo eroare la ntlnirea liniei Kill"c:\perisabil.txt", deoarece fiierul repectiv nu exist. On Error Resume Next
pred controlul instruciunii urmtoare care creeaz fiierul respectiv,nesemnaliznd nici o eroare.
Schema logic pentru codul asociat mnuCalcul_Click este prezentat nfig.1.47.
ControlulRichTextBox
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
80/236
80
Fig.1.47. Schema logicpentru aplicaia 1.21
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
81/236
81
Codul asociat meniurilor aplicaiei este urmtorul:
Private Sub mnuAfisare_Click()
frmShow.RichTextBox1.FileName = "c:\perisabil.txt"
frmShow.Show
End Sub
Private Sub mnuCalcul_Click()
On Error Resume Next
Dim coef_peris(7) As Byte
Dim cod_produs(7) As Integer
Dim val(7) As Double
Dim total_val As Double
Dim total_dep As Double
total_val = 0
total_dep = 0Kill "c:\perisabil.txt"
Open "c:\perisabil.txt" For Append As #1
For i = 0 To 7
cod_produs(i + 1) = InputBox("Introduceti codul produsului " & i + 1 & ":")
coef_peris(i + 1) = InputBox("Introduceti coef de perisabilitate pt produsul " & i +
1 & ":(%)")
val(i + 1) = InputBox("Introduceti valoarea produsului " & i + 1 & ":")
total_val = total_val + val(i + 1) * (100 - coef_peris(i + 1)) / 100
total_dep = total_dep + val(i + 1) * coef_peris(i + 1) / 100
Next i
Print #1, " Situatia deprecierii produselor"
Print #1, String(55, "=")
Print #1, "Cod produs"; " "; "Valoarea"; " "; "Deprecierea"
Print #1, String(55, "=")
For i = 0 To 7
Print #1, cod_produs(i + 1), " "; val(i + 1); " "; val(i + 1) * coef_peris(i +
1) / 100
Next i
Print #1, String(55, "=")Print #1, "TOTAL", " "; total_val; " "; total_dep
Close #1
End Sub
Private Sub mnuIesire_Click()
Unload Me
End Sub
Rezultatele rulrii aplicaiei sunt prezentate n fig.1.48.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
82/236
82
Fig.1.48. Situaia de ieire pentru aplicaia 1.21
Aplicaia 1.22
S se calculeze valoarea unei facturi, tiind numrul nde produse, preulfiecrui produs (pret(i))i valoarea cheltuielilor de transport (ch_tp).
Algoritm de calcul
Informaiile despre fiecare produs se vor grupa n mulimi cu nelemente,n caren reprezintnumrul de produse:
denumire produs: denp(i); cantitatea: cant(i); preul: pret(i); valoare: val(i).
Se va calcula valoarea fiecrui produs:
val(i) = cant(i) * pret(i) (1.24)Valoarea total a produselor (valtot) i valoarea facturii (valf) se vor
calcula dupformulele:
valtot = valtot + val(i) (1.25)valf = valtot ch_tp (1.26
Se realizeaz un formular cu dou butoane de comand (fig.1.50): FACTURI(Caption) pentru procedura de calcul (cmdFacturi) i pentru ieirea din program(cmdIesire). Obiectele adugate n formular sunt prezentate n tabelul urmtor:
Obiect Proprieti EvenimenteFormular (Form) Name: frmFacturi
Caption: FACTURI-
Buton de comand(Command Button) Name: cmdFacturiCaption: Facturi
Click
Buton de comand(Command Button) Name: cmdIesireCaption: Iesire
Click
Dupdeclararea variabilelor de lucru ce reprezintdatele de intrare, dateleintermediare i rezultatele calculelor, se preiau datele de intrare cu ajutorul caseteide introducere a textuluiInputBox().
Pentru calculul i afiarea rezultatelor n formular se folosete o structurde control repetitivde tipulForNext, n caren reprezinatnumrul de produse.
Schema logicpentru rezolvarea aplicaiei n conformitate cu algoritmul de
calcul de mai sus este prezentatn fig. 1.49.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
83/236
83
Fig. 1.49. Schema logicpentru rezolvarea aplicaiei 1.22
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
84/236
84
Procedurile cmdFacturi_Click()i cmdIesire_Click()sunt urmtoarele:
Private Sub cmdFacturi_Click()
declararea variabilelor de lucru
Dim nrserie As String
Dim Ch_Tp As Double
Dim denp(3) As StringDim pret(3) As Double
Dim cant(3) As Double
Dim val(3) As Double
Dim valtot As Double
Dim valf As Double
citirea datelor de intrare
nrserie = InputBox("Numarul si seria facturii:")
Ch_Tp = InputBox("Cheltuieli de transport:")
For i = 1 To 3
denp(i) = InputBox("Denumire produs:")pret(i) = InputBox("Pret:")
cant(i) = InputBox("Cantitate:")
Next i
Print "Numarul si seria facturii:"; nrserie
Print "________________________________________"
Print "Denumire Pret Cantitate Valoare"
initializarea valorii totale a produselor
valtot = 0
calculFor i = 1 To 3
val(i) = cant(i) * pret(i)
valtot = valtot + val(i)
Print denp(i); " "; pret(i); " "; cant(i); " "; val(i)
Next i
valf = valtot - Ch_Tp
Print "__________________________________________"
Print "Valoarea facturii:"; valf
End Sub
Private Sub cmdIesire_Click()
End
End Sub
Datele de intrare utilizate pentru obinerea rezultatelor din fig. 1.50 sunt:
nrserie=RX 123
ch_tp=100.000
n=3,
denp(1)=Tastatura, cant(1)= 3, pret(1)=180.000
denp(2)=Mouse, cant(2)= 5, pret(2)=100.000
denp(3)=Modem, cant(3)= 2, pret(3)=550.000
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
85/236
85
Fig.1.50. Situaia de ieire pentru aplicaia 1.22
Aplicaia 1.23
S se determine suma final (F) aflat n contul bancar al unei persoane,tiind depunerea lunar(D), rata dobnzii lunare (I) i numrul de luni (M).
Algoritm de calcul
Programul folosete o structur repetitiv de tipul For...Next pentru aaduga n fiecare lunla suma finaldepunerea acelei luni i dobnda aferent:
For k = 1 To Val(txtNrLuni)
'F este suma finala
'Pentru a doua luna se acorda dobanda dubla, pentru a treia - tripla samd
F = F + D + D * I / 100 * k
Next k
Datoritunei structuri alternative (If...Then...Else), prelucrrile se executnumai n cazul n care datele de intrare au fost furnizate (au fost completatecasetele de text corespunztoare).
If txtDepunere " " And txtDobLunara " " And txtNrLuni " "
Schema logic este prezentat n fig.1.51, iar schema logic general nfig.1.52.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
86/236
86
Fig.1.51. Schema logicadaptatpentruVisual Basicpentru aplicaia 1.23
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
87/236
87
Fig.1.52. Schema logicgeneralpentru aplicaia 1.23
DA
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
88/236
88
Prelucrarea se execut ca urmare a acionrii unui clic pe meniulmnuCalcul(Caption Calcul)
Private Sub mnuCalcul_Click()Dim F As DoubleDim D As DoubleDim I As Double
F = 0If txtDepunere " " And txtDobLunara " " And txtNrLuni " " ThenD = Val(txtDepunere)I = Val(txtDobLunara)M = Val(txtNrLuni)For k = 1 To M'F este suma finala'Pentru a doua luna se acorda dobanda dubla, pentru a treia - tripla samd
F = F + D + D * I / 100 * kNext ktxtSumaFinala = Format(F, "fixed")
ElseMsgBox "Nu ati completat corect depunerea, dobanda lunara si/sau numarul deluni!"
End IfEnd Sub
Private Sub mnuIesire_Click()Unload Me
End Sub
Rezultatele rulrii aplicaiei sunt prezentate n fig. 1.53.
Fig. 1.53. Situaia de ieire pentru aplicaia 1.23
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
89/236
89
Aplicaia 1.24
S se calculeze amortizarea lunar a 12 mijloace fixe, tiind valoarea deinventar i norma de amortizare.
Algoritm de calcul
Informaiile despre cele 12 mijloace fixe sunt urmtoarele: denumire mijloc fix: denm; valoare inventar: vali; norma de amortizare: norma; amortizare lunar: aml.
Se va calcula amortizarea lunarn funcie de norma de amortizare (1.28):
aml = norma / 12 (1.28)
Se realizeaz un formular cu dou butoane de comand (fig.1.55):AMORTIZARE (Caption) pentru procedura de calcul i afiare a valorilor(cmdAmortizare) i pentru ieirea din program (cmdIesire). Obiectele adugate nformular sunt prezentate n tabelul urmtor:
Obiect Proprieti Evenimente
Formular (Form) Name: frmAmortizareCaption: AMORTIZARE
-
Buton de comand(Command Button) Name: cmdAmortizareCaption: Amortizare
Click
Buton de comand(Command Button) Name: cmdIesireCaption: Iesire
Click
Dupdeclararea variabilelor de lucru ce reprezintdatele de intrare, dateleintermediare i rezultatele calculelor, se preiau datele de intrare cu ajutorul caseteide introducere a textuluiInputBox().
Pentru calculul i afiarea rezultatelor n formular se folosete o structurde control repetitivde tipulForNext.
Schema logicpentru rezolvarea aplicaiei n conformitate cu algoritmul decalcul de mai sus este prezentatn fig.1.54.
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
90/236
90
Fig. 1.54. Schema logicpentru rezolvarea aplicaiei 1.24
5/22/2018 Aplicatii Economice in Visual Basic Si Acces , Doina Fusaru , Zenovic Gherasim , 2007
91/236
91
Procedurile cmdAmortizare _Click()i cmdIesire_Click()sunt urmtoarele:Private Sub cmdAmortizare_Click()Dim denm As StringDim vali As SingleDim norma As SingleDim aml As Single
PrintPrint "Mijloc fix Valoare Norma Amortizare"Print"_____________________________________________________________"
For i = 1 To 12denm = InputBox("Mijloc fix:")vali = InputBox("Valoare inventar:")norma = InputBox("Norma de amortizare:")aml = norma / 12
Print denm, vali, norma, amlNext i
End Sub
Private Sub cmdIesire_Click()EndEnd SubDatele de intrare utilizate, precum i rezultatele obinute sunt prezentate nfig.1.55.
Fig.1.55. Situaia de ieire pentru aplicaia 1.24
Aplicaia 1.25
S se calculeze profitul brut