0% au considerat acest document util (0 voturi)
24 vizualizări28 pagini

Service Auto

Aplicația implementează operații de adăugare, ștergere, modificare și listare a datelor din baza de date a unui service auto folosind limbajul Visual FoxPro. Sistemul utilizează trei tabele pentru stocarea informațiilor despre angajați, mașini și servicii.

Încărcat de

George Tiron
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
24 vizualizări28 pagini

Service Auto

Aplicația implementează operații de adăugare, ștergere, modificare și listare a datelor din baza de date a unui service auto folosind limbajul Visual FoxPro. Sistemul utilizează trei tabele pentru stocarea informațiilor despre angajați, mașini și servicii.

Încărcat de

George Tiron
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd

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

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