COLEGIUL NAIONAL CALISTRAT HOGAS TECUCI
Atestat la informatic
Service -Auto
Mai 2014
Visual Fox Professional
Profesor coordonator
Ionescu Gabriela
Elev
Paraschiv Cornel
Clasa a XII-a B
CUPRINS
Capitolul I - Introducere.............................................................................................. 3
[Link] temei.................................................................................................. 3
[Link] temei....................................................................................................... 3
[Link] lucrrii................................................................................................... 3
Capitolul II - Analiz.................................................................................................... 4
[Link] activitatii analizate.............................................................................4
2. Prezentarea coleciilor de date............................................................................4
3. Prezentarea suportului teoretic...........................................................................5
Capitolul III - Arhitectura sistemului............................................................................9
1. Modelul conceptual al datelor.............................................................................9
2. Implementarea aplicaiei................................................................................... 10
3. Prezentarea programelor................................................................................... 11
Interogri.................................................................................................................. 25
Capitolul IV- Listare program.................................................................................... 26
Bibliografie............................................................................................................... 26
Capitolul I - Introducere
[Link] temei
Evidenta unui service auto.
[Link] temei
Se va elabora un sistem informatic care s realizeze evidenta unui service
auto folosind Visual FoxPro.
Aplicaia va conine :
-meniu
-formulare pentru actualizarea bazei de date
-interogri
[Link] lucrrii
Lucrarea a fost elaborata cu scopul de a tine evidenta unui service auto.
Capitolul II - Analiz
[Link] activitatii analizate
Evidenta unui service auto se realizeaz prin manipularea unor
informaii despre angajati (cod_ang, nume, prenume, localitate), masini
(cod_masina, cod_ang, cod_serv, nume, an_fabr), servicii (cod_serv, nume,
pret).
2. Prezentarea coleciilor de date
Baza de date [Link] cuprinde 3 tabele utilizate n activitatea analizat:
-tabela [Link] are n componen 4 cmpuri care rein informaii cu privire la
angajati.
-tabela [Link] curpinde 5 cmpuri care furnizeaz informaii despre masinile din
service.
-tabela [Link] cuprinde 3 cmpuri cu informatii privind serviciile service-ului.
3. Prezentarea suportului teoretic
Pentru manipularea informaiei in cadrul activitii realizate au fost
folosite urmtoarele tipuri de date:
-tipul numeric, cu subtipul integer folosit pentru reprezentarea numerelor
ntregi;
-tipul alfanumeric, care are ca subtip irul de caractere (character)
delimitat de doua apostrofuri sau ghilimele i a crui lungime maxim este
de 254 de caractere;
Baza de date relaionala este formata dintr-unul sau mai multe tabele
ntre care s-au stabilit legturi (relaii). Relaia dintre doua tabele este o
legtur dintre un cmp sau un ansamblu de cmpuri dintr-un tabel (cheia
primar) i cmpurile corespunztoare dintr-un alt tabel (cheia secundar).
Exist mai multe tipuri de relaii determinate de conectivitile maxime ale
entitilor ale cror nregistrri se afl n tabele ntre care s-a stabilit o
legtur printr-o asociere. n aplicaia analizat s-a utilizat tipul de legtur 1
la n (1:n) adica o nregistrare din primul tabel este legat la mai multe
nregistrari din al doilea tabel.
Actualizarea tabelului se poate face prin:
Adugarea de noi nregistrri:
-adugarea de nregistrri la sfritul tabelului prin intermediul comenzii
append
-adugarea unei nregistrri vide : append blank
-adugarea nregistrrilor dintr-un alt tabel:
append from <nume_tabel> [fields <lista_campuri>] [for <cl>];
-inserarea n interiorul tabelului:
5
insert [before] [blank];
tergerea nregistrrilor:
-tergere logica : delete [<domeniu>] [for <cll>] [while <cl2>];
-refacerea nregistrrilor sterse logic :
recall [<domeniu>] [for <cll>] [while <cl2>];
-tergerea fizica: pack;
-tergerea fizica a tuturor nregistrrilor : zap;
Modificarea nregistrrilor:
-nlocuirea valorii unui cmp cu o valoare specificat :
replace nume camp [<domeniu>] with <expresie> [for <c1l>] [while
<cl2>];
-interactiv, prin urmatoarele comenzi:
browse [fields <lista_cmpuri>] [noappend] [noedit] [nodelete];
edit [fields <lista_cmpuri>] [noappend] [noedit] [nodelete];
change [fields <lista_cmpuri>] [noappend] [noedit] [nodelete];
Consultarea tabelului pentru obinerea unor
informaii:
list/display [fields] <lista_cmpuri> [<domeniu>] [for <cll>] [while
<cl2>] [to printer \ to file <nume fisier>] [off];
list=dispay all;
Sortarea tabelului
n urma sortrii unui tabel se creeaz un nou tabel n care nregistrrile
sunt rearanjate n urma criteriului de sortare folosit. Sintaxa comenzii este :
sort to <nume_tabel> on <camp_l> [/a] [/d] [/c] [<camp_2> [/a] [/d] [/c] ...]
[ascending] [descending] [<domeniu>] [for <cll>] [while <cl2>] [fields
<lista_campuri>];
Indexarea tabelului
Sintaxa comenzii este:
index on <expresie_index> to <nume [Link]>\tag
<nume_eticheta> [of <nume [Link]>] [for<cll>] [ascending]
[descending] [additive];
Comenzi
tabela :
de
poziionare
pe
nregistrare
din
[Link] numrul nregistrrii:
a) goto | go n | top | bottom;
b) skip [n];
[Link] un criteriu logic de cutare :
a) locate for <cll> [<domeniu>] [while <cl2>];
b) continue;
[Link] criterii:
a) reccount() - obine numrul de inregistrri din tabela;
b) recno() - obine numrul nregistrrii curente din tabela;
c) eof() - fumizeaz un rezultat logic care este .T. daca pointerul este poziionat
pe ultima nregistrare din tabela;
d) bof() - fumizeaz un rezultat logic care este .T. dac pointerul este poziionat
pe prima nregistrare din tabela;
e) found() - furnizeaz un rezultat logic care este .T. dac a avut succes operaia de
cutare.
Raportul este o colecie de informaii obinute din datele stocate in
tabelele bazei de date, prezentate utilizatorului ntr-o form ct mai clar
si mai concis. n general este conceput sub forma unui tabel avnd i
funcia de sortare i grupare a datelor. Raportul se compune din :
seciunea de date (Detail), antetul paginii (Page Header), subsolul paginii
(Page Footer), antetul raportului (Report Header/Title), subsolul raportului
(Report Footer/Summary), grupul (Group).
Raportul este memorat ntr-un fiier cu extensia .frx si se poate tipri cu
comanda:
report form <nume_fiier> [heading <exp_C>] [summary]
[<domeniu>J [for <cl1>] [while <cl2>] [to printer | to file
<nume_fisier>].
Interogarea este operaia prin care se extrag date din baza de date far s fie terse sau modificate - ce vor fi afiate ntr-un anumit format.
Folosind o interogare se pot executa urmatoarele operaii:
-combinarea nregistrrilor din mai multe tabele ntr-un singur tabel;
-selectarea numai a nregistrrilor care ndeplinesc un anumit criteriu;
-afiarea nregistrrilor n ordinea dorita;
-afiarea cmpurilor calculate.
n Visual FoxPro se poate crea o interogare :
-interactiv folosind query designer;
8
-prin limbajul SQL (instruciunea select - diferit de comanda select folosit pentru selectarea
unei zone
de lucru).
Interogarea este salvata ntr-un fiier cu extensia .qpr si se lanseaza n execuie cu comanda:
do <numejisier>.qpr
Capitolul III - Arhitectura sistemului
1. Modelul conceptual al datelor
i)Tabela angajati:
Conine informaii despre
prenume(C,30), localitate(C,30);
angajati:
cod_ang(N,5),
nume(C,30),
ii)Tabela masini:
Conine informaii despre masinile din service: cod_masina(N,5),
cod_ang(N,5), cod_serv(N,10), nume(C, 20), an_fabr(N,10);
iii)Tabela servicii:
Conine informaii despre serviciile prestate de service: cod_serv(N,5),
nume(C,20), pret(N,8);
2. Implementarea aplicaiei
n aplicaia analizat au fost implementate cu ajutorul formularelor
proceduri de adugare, tergere, modificare, listare, cutare, sortare,
interogare. Pentru fiecare dintre tabelele angajati, masini, servicii s-au
efectuat: adugare angajati, masini, servicii, tergere angajati, masini,
servicii i modificare angajati, masini, servicii.
10
De asemenea asupra tabelelor s-au executat prelucrri prin intermediul
interogrilor. Toate aceste operaii au fost incluse ntr-un meniu.
3. Prezentarea programelor
Adugare Angajai
Butonul ADUGARE (click event):
11
PRIVATE
PRIVATE
PRIVATE
PRIVATE
valcod_ang
valnume
valprenume
vallocalitate
SET TALK OFF
valcod_ang=VAL(ALLTRIM(thisform.editcod_ang.Text))
valnume=PROPER(ALLTRIM([Link]))
valprenume=PROPER(ALLTRIM([Link]))
vallocalitate=PROPER(ALLTRIM([Link]))
IF VAL(ALLTRIM(thisform.editcod_ang.Text))=0
MESSAGEBOX("Nu ati introdus cod angajat!")
RETURN
ENDIF
CLOSE ALL
SELE 1
USE angajati
LOCATE FOR (valcod_ang)=cod_ang
IF FOUND()=.t.
MESSAGEBOX("Exista deja acest angajat!")
RETURN
ENDIF
CLOSE ALL
USE angajati
APPEND BLANK
replace cod_ang WITH valcod_ang
replace nume WITH PROPER(valnume)
replace prenume WITH PROPER(valprenume)
replace localitate WITH PROPER(vallocalitate)
MESSAGEBOX("Adaugarea a reusit!")
Butonul RESETARE (click event):
SET TALK OFF
thisform.editcod_ang.Value=""
[Link]=""
[Link]=""
[Link]=""
Butonul AFIARE (click event):
SET TALK OFF
USE angajati
BROWSE NOEDIT NODELETE noappend
Adugare Maini
12
Butonul ADUGARE (click event):
PRIVATE
PRIVATE
PRIVATE
PRIVATE
PRIVATE
valcod_masina
valcod_ang
valcod_serv
valcod_n
valan_fabr
SET TALK OFF
valcod_masina=VAL(ALLTRIM(thisform.editcod_masina.Text))
valcod_ang=VAL(ALLTRIM(thisform.editcod_ang.Text))
valcod_serv=VAL(ALLTRIM(thisform.editcod_serv.Text))
valcod_n=PROPER(ALLTRIM(thisform.editcod_n.Text))
valan_fabr=VAL(ALLTRIM(thisform.editan_fabr.Text))
IF VAL(ALLTRIM(thisform.editcod_masina.Text))=0
MESSAGEBOX("Nu ati introdus cod masina!")
RETURN
ENDIF
CLOSE ALL
SELE 1
USE masini
LOCATE FOR (valcod_masina)=cod_masina
if FOUND()=.T.
MESSAGEBOX("Exista deja aceasta masina in service!")
RETURN
ENDIF
CLOSE ALL
USE masini
APPEND BLANK
replace cod_masina WITH VALcod_masina
13
replace cod_ang WITH VALcod_ang
replace cod_serv WITH valcod_serv
replace nume WITH valcod_n
replace an_fabr WITH valan_fabr
MEssagebox("Adaugarea s-a efectuat!")
Butonul RESETARE(click event):
SET TALK OFF
thisform.editcod_masina.Value=""
thisform.editcod_ang.Value=""
thisform.editcod_serv.Value=""
thisform.editcod_n.Value=""
thisform.editan_fabr.Value=""
Butonul AFIARE (click event):
SET TALK OFF
USE maini
BROWSE NOEDIT NODELETE noappend
Adugare Servicii
Butonul ADUGARE (click event):
PRIVATE valcod_serv
14
PRIVATE valnume
PRIVATE valpret
SET TALK OFF
valcod_serv=VAL(ALLTRIM(thisform.editcod_serv.Text))
valnume=PROPER(ALLTRIM([Link]))
valpret=VAL(ALLTRIM([Link]))
IF VAL(ALLTRIM(thisform.editcod_serv.Text))=0
MESSAGEBOX("Nu ati introdus cod serviciu!")
RETURN
ENDIF
CLOSE ALL
SELE 1
USE servicii
LOCATE FOR (valcod_serv)=cod_serv
IF FOUND()=.t.
MESSAGEBOX("Exista deja aceast serviciu!")
RETURN
ENDIF
CLOSE ALL
USE servicii
APPEND BLANK
replace cod_serv WITH valcod_serv
replace nume WITH valnume
replace pret WITH valpret
MEssagebox("Adaugarea s-a efectuat!")
Butonul RESETARE (click event):
SET TALK OFF
thisform.editcod_serv.Value=""
[Link]=""
[Link]=""
Butonul AFIARE(click event):
SET talk OFF
USE servicii
BROWSE NOEDIT NODELETE noappend
Modificare Angajai
15
Butonul de MODIFICARE (click event):
PRIVATE
PRIVATE
PRIVATE
PRIVATE
valcod_ang
valnume
valprenume
vallocalitate
SET TALK OFF
valcod_ang=VAL(ALLTRIM(thisform.editcod_ang.Text))
valnume=PROPER(ALLTRIM([Link]))
valprenume=PROPER(ALLTRIM([Link]))
vallocalitate=PROPER(ALLTRIM([Link]))
IF VAL(ALLTRIM(thisform.editcod_ang.Text))=0
MESSAGEBOX("Nu ati introdus cod angajat!")
RETURN
ENDIF
CLOSE ALL
USE angajati
LOCATE FOR cod_ang=valcod_ang
IF FOUND()
IF LEN(ALLTRIM(valnume))<>0
replace nume WITH PROPER(valnume)
16
ENDIF
IF LEN(ALLTRIM(valprenume))<>0
replace prenume WITH PROPER(valprenume)
ENDIF
IF LEN(ALLTRIM(vallocalitate))<>0
replace localitate WITH PROPER(vallocalitate)
ENDIF
MESSAGEBOX("Modificarea s-a efectuat!")
ELSE
MESSAGEBOX("Angajat inexistent!")
ENDIF
USE
Butonul AFIARE MODIFICARE (click event):
SET TALK OFF
valcod_ang=VAL(ALLTRIM(thisform.editcod_ang.Text))
SELECT * FROM angajati WHERE cod_ang=valcod_ang
USE
Butonul Afisare (click event):
SET TALK OFF
CLOSE ALL
USE
USE angajati
BROWSE NOEDIT NODELETE noappend
USE
Butonul Resetare (click event):
SET TALK OFF
thisform.editcod_ang.Value=""
[Link]=""
[Link]=""
[Link]=
Modificare Maini
17
Butonul MODIFICARE (click event):
PRIVATE
PRIVATE
PRIVATE
PRIVATE
PRIVATE
valcod_masina
valcod_ang
valcod_serv
valcod_n
valan_fabr
SET TALK OFF
valcod_masina=VAL(ALLTRIM(thisform.editcod_masina.Text))
valcod_ang=VAL(ALLTRIM(thisform.editcod_ang.Text))
valcod_serv=VAL(ALLTRIM(thisform.editcod_serv.Text))
valcod_n=PROPER(ALLTRIM(thisform.editcod_n.Text))
valan_fabr=VAL(ALLTRIM(thisform.editan_fabr.Text))
IF VAL(ALLTRIM(thisform.editcod_masina.Text))=0
MESSAGEBOX("Nu ati introdus cod masina!")
RETURN
ENDIF
CLOSE ALL
USE masini
LOCATE FOR cod_masina=valcod_masina
IF FOUND()
18
IF valcod_ang<>0
replace cod_ang WITH valcod_ang
ENDIF
IF valcod_serv<>0
replace cod_serv WITH valcod_serv
ENDIF
IF LEN(ALLTRIM(valcod_n))<>0
replace nume WITH PROPER(valcod_n)
ENDIF
IF valan_fabr<>0
replace an_fabr WITH valan_fabr
ENDIF
MESSAGEBOX("Modificarea s-a efectuat!")
ELSE
MESSAGEBOX("Masina inexistenta!")
ENDIF
USE
Butonul AFIARE MODIFICARE (click event):
SET TALK OFF
valcod_masina=VAL(ALLTRIM(thisform.editcod_masina.Text))
SELECT * FROM masini WHERE cod_masina=valcod_masina
USE
Butonul Afisare (click event):
SET TALK OFF
CLOSE all
USE masini
BROWSE NOEDIT NODELETE noappend
Butonul Resetare (click event):
SET TALK OFF
thisform.editcod_masina.Value=""
thisform.editcod_ang.Value=""
thisform.editcod_serv.Value=""
thisform.editcod_n.Value=""
thisform.editan_fabr.Value=""
Modificare Servicii
19
Butonul MODIFICARE (click event):
PRIVATE valcod_serv
PRIVATE valnume
PRIVATE valpret
SET TALK OFF
valcod_serv=VAL(ALLTRIM(thisform.editcod_serv.Text))
valnume=PROPER(ALLTRIM([Link]))
valpret=VAL(ALLTRIM([Link]))
IF VAL(ALLTRIM(thisform.editcod_serv.Text))=0
MESSAGEBOX("Nu ati introdus cod serviciu!")
RETURN
ENDIF
CLOSE ALL
USE servicii
LOCATE FOR cod_serv=valcod_serv
IF FOUND()
IF LEN(ALLTRIM((valnume)))<>0
20
replace nume WITH PROPER (valnume)
ENDIF
IF valpret<>0
replace Pret WITH valpret
ENDIF
MESSAGEBOX("Modificarea s-a efectuat!")
ELSE
MESSAGEBOX("Serviciu inexistent!")
ENDIF
USE
Butonul AFIARE MODIFICARE (click event):
SET TALK OFF
valcod_serv=VAL(ALLTRIM(thisform.editcod_serv.Text))
SELECT * FROM servicii WHERE cod_serv=valcod_serv
USE
Butonul Afisare (click event):
SET TALK OFF
USE
USE servicii
BROWSE NOEDIT NODELETE
USE
tergere Angajati
Butonul TERGERE (click event):
SELECT 1
21
USE angajati
PRIVATE valcod_ang
PRIVATE pozitie
SET TALK OFF
valcod_ang=VAL(ALLTRIM(thisform.editcod_ang.Text))
**use angajati
LOCATE FOR cod_ang=valcod_ang
pozitie=RECNO()
IF EOF()=.T. AND FOUND()=.F.
MESSAGEBOX("Inregistrarea de sters nu exista!")
ELSE
&&pozitie=recno()
GOTO pozitie
DELETE
PACK
MESSAGEBOX("Stergere reusita!")
ENDIF
USE
Butonul AFIARE (click event):
SET TALK OFF
SELECT * FROM angajati
USE
Butonul RESETARE (click event):
SET TALK OFF
thisform.editcod_ang.Value=""
CLOSE DATA
Butonul CUTARE ANGAJATI (click event):
SET TALK OFF
IF VAL(ALLTRIM(thisform.editcod_ang.Text))=0
MESSAGEBOX("Nu ati introdus cod angajat!")
RETURN
ENDIF
valcod_ang=VAL(ALLTRIM(thisform.editcod_ang.Text))
SELECT * FROM angajati WHERE cod_ang=valcod_ang
USE
tergere Maini
22
Butonul TERGERE (click event):
SELECT 1
USE masini
PRIVATE valcod_masina
PRIVATE pozitie
SET TALK OFF
valcod_masina=VAL(ALLTRIM(thisform.editcod_masina.Text))
**use masini
LOCATE FOR cod_masina=valcod_masina
pozitie=RECNO()
IF EOF()=.T. AND FOUND()=.F.
MESSAGEBOX("Inregistrarea de sters nu exista!")
ELSE
&&pozitie=recno()
GOTO pozitie
DELETE
PACK
MESSAGEBOX("Stergere reusita!")
ENDIF
USE
Butonul CUTARE MASINA(click event):
SET TALK OFF
IF VAL(ALLTRIM(thisform.editcod_masina.Text))=0
MESSAGEBOX("Nu ati introdus cod masina!")
RETURN
ENDIF
valcod_masina=VAL(ALLTRIM(thisform.editcod_masina.Text))
SELECT * FROM masini WHERE cod_masina=valcod_masina
USE
23
Butonul AFIARE (click event):
SET TALK OFF
SELECT * FROM masini
USE
Butonul RESETARE (click event):
SET TALK OFF
thisform.editcod_masina.Value=""
CLOSE DATA
tergere Servicii
Butonul TERGERE(click event):
SELECT 1
USE servicii
PRIVATE valcod_serv
PRIVATE pozitie
SET TALK OFF
valcod_serv=VAL(ALLTRIM(thisform.editcod_serv.Text))
**use angajati
LOCATE FOR cod_serv=valcod_serv
pozitie=RECNO()
IF EOF()=.T. AND FOUND()=.F.
MESSAGEBOX("Inregistrarea de sters nu exista!")
ELSE
&&pozitie=recno()
GOTO pozitie
24
DELETE
PACK
MESSAGEBOX("Stergere reusita!")
ENDIF
USE
Butonul AFIARE (click event):
SET TALK OFF
SELECT * FROM servicii
USE
Butonul RESETARE (click event):
SET TALK OFF
thisform.editcod_serv.Value=""
CLOSE DATA
Butonul CUTARE SERVICII (click event):
SET TALK OFF
IF VAL(ALLTRIM(thisform.editcod_serv.Text))=0
MESSAGEBOX("Nu ati introdus codul serviciului!")
RETURN
ENDIF
valcod_serv=VAL(ALLTRIM(thisform.editcod_serv.Text))
SELECT * FROM servicii WHERE cod_serv=valcod_serv
use
Interogri
25
1.
2.
3.
4.
5.
Select
Select
Select
Select
Select
*
*
*
*
*
from
from
from
from
from
angajati
servicii
masini
angajati order by nume asc
angajati where nume like '%escu'
Capitolul IV- Listare program
Print Screens
26
27
Bibliografie
Manual de Informatica - SGBD - Sisteme
de Gestiune a Bazelor de Date- Mariana
Milosescu, Editura Didactica si
Pedagogica
Baze de date in Visual FoxPro-Mariana
Milosescu, Editura Teora
28