81 2 922KB
![Service Auto [PDF]](https://vdoc.tips/img/200x200/service-auto.jpg)
COLEGIUL NAŢIONAL „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 1.Denumirea temei.................................................................................................. 3 2.Enunţul temei....................................................................................................... 3 3.Motivația lucrării................................................................................................... 3 Capitolul II - Analiză.................................................................................................... 4 1.Descrierea activitatii analizate.............................................................................4 2. Prezentarea colecțiilor de date............................................................................4 3. Prezentarea suportului teoretic...........................................................................5 Capitolul III - Arhitectura sistemului............................................................................9 1. Modelul conceptual al datelor.............................................................................9 2. Implementarea aplicației................................................................................... 10 3. Prezentarea programelor................................................................................... 11 Interogări.................................................................................................................. 25 Capitolul IV- Listare program.................................................................................... 26 Bibliografie............................................................................................................... 26
 
 Capitolul I - Introducere
 
 1.Denumirea temei Evidenta unui service auto.
 
 2.Enunţul temei Se va elabora un sistem informatic care să realizeze evidenta unui service auto folosind Visual FoxPro. Aplicaţia va conţine : -meniu -formulare pentru actualizarea bazei de date -interogări
 
 3.Motivația lucrării Lucrarea a fost elaborata cu scopul de a tine evidenta unui service auto.
 
 3
 
 Capitolul II - Analiză
 
 1.Descrierea activitatii analizate Evidenta unui service auto se realizează prin manipularea unor informaţii despre angajati (cod_ang, nume, prenume, localitate), masini (cod_masina, cod_ang, cod_serv, nume, an_fabr), servicii (cod_serv, nume, pret).
 
 2. Prezentarea colecțiilor de date
 
 Baza de date Service.dbc cuprinde 3 tabele utilizate în activitatea analizată: -tabela angajati.dbf are în componență 4 câmpuri care rețin informații cu privire la angajati. -tabela masini.dbf curpinde 5 câmpuri care furnizează informații despre masinile din service. -tabela servicii.dbf cuprinde 3 câmpuri cu informatii privind serviciile service-ului.
 
 4
 
 3. Prezentarea suportului teoretic
 
 Pentru manipularea informaţiei in cadrul activităţii realizate au fost folosite următoarele 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 cărui lungime maximă este de 254 de caractere;
 
 Baza de date relaţionala este formata dintr-unul sau mai multe tabele între care s-au stabilit legături (relaţii). Relaţia dintre doua tabele este o legătură dintre un câmp sau un ansamblu de câmpuri dintr-un tabel (cheia primară) şi câmpurile corespunzătoare dintr-un alt tabel (cheia secundară). Există mai multe tipuri de relaţii determinate de conectivitățile maxime ale entităților ale căror înregistrări se află în tabele între care s-a stabilit o legătură printr-o asociere. În aplicaţia analizată s-a utilizat tipul de legătură 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: Adăugarea de noi înregistrări: -adăugarea de înregistrări la sfârșitul tabelului prin intermediul comenzii append -adăugarea unei înregistrări vide : append blank -adăugarea înregistrărilor dintr-un alt tabel: append from [fields ] [for ]; -inserarea în interiorul tabelului: 5
 
 insert [before] [blank];
 
 Ştergerea înregistrărilor: -ştergere logica : delete [] [for ] [while ]; -refacerea înregistrărilor sterse logic : recall [] [for ] [while ]; -ştergerea fizica: pack; -ştergerea fizica a tuturor înregistrărilor : zap;
 
 Modificarea înregistrărilor: -înlocuirea valorii unui câmp cu o valoare specificată : replace nume camp [] with [for ] [while ]; -interactiv, prin urmatoarele comenzi:  browse [fields ] [noappend] [noedit] [nodelete];  edit [fields ] [noappend] [noedit] [nodelete];  change [fields ] [noappend] [noedit] [nodelete];
 
 Consultarea tabelului pentru obţinerea unor informaţii:  list/display [fields] [] [for ] [while
 
 ] [to printer \ to file ] [off];  list=dispay all;
 
 Sortarea tabelului
 
 În urma sortării unui tabel se creează un nou tabel în care înregistrările sunt rearanjate în urma criteriului de sortare folosit. Sintaxa comenzii este :
 
 6
 
 sort to on [/a] [/d] [/c] [ [/a] [/d] [/c] ...] [ascending] [descending] [] [for ] [while ] [fields ];
 
 Indexarea tabelului Sintaxa comenzii este: index on to \tag [of ] [for] [ascending] [descending] [additive];
 
 Comenzi tabela :
 
 de
 
 poziţionare
 
 pe
 
 o
 
 înregistrare
 
 din
 
 1.după numărul înregistrării: a) goto | go n | top | bottom; b) skip [n];
 
 2.după un criteriu logic de căutare : a) locate for [] [while ]; b) continue;
 
 3.alte criterii:
 
 a) reccount() - obţine numărul de inregistrări din tabela; b) recno() - obţine numărul înregistrării curente din tabela; c) eof() - fumizează un rezultat logic care este .T. daca pointerul este poziţionat
 
 pe ultima înregistrare din tabela;
 
 7
 
 d) bof() - fumizează un rezultat logic care este .T. dacă pointerul este poziţionat
 
 pe prima înregistrare din tabela; e) found() - furnizează un rezultat logic care este .T. dacă a avut succes operaţia de
 
 căutare.
 
 Raportul este o colecţie de informaţii obţinute din datele stocate in tabelele bazei de date, prezentate utilizatorului într-o formă cât mai clară si mai concisă. În general este conceput sub forma unui tabel având şi funcţia de sortare şi grupare a datelor. Raportul se compune din : secţiunea 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 fişier cu extensia .frx si se poate tipări cu comanda: report form [heading ] [summary] [J [for ] [while ] [to printer | to file ].
 
 Interogarea este operaţia prin care se extrag date din baza de date fară să fie şterse sau modificate - ce vor fi afişate într-un anumit format. Folosind o interogare se pot executa urmatoarele operaţii: -combinarea înregistrărilor din mai multe tabele într-un singur tabel; -selectarea numai a înregistrărilor care îndeplinesc un anumit criteriu; -afişarea înregistrărilor în ordinea dorita; -afişarea câmpurilor calculate.
 
 În Visual FoxPro se poate crea o interogare : -interactiv folosind query designer; 8
 
 -prin limbajul SQL (instrucţiunea select - diferită de comanda select folosită pentru selectarea unei zone de lucru). Interogarea este salvata într-un fişier cu extensia .qpr si se lanseaza în execuţie cu comanda: do .qpr
 
 Capitolul III - Arhitectura sistemului 1. Modelul conceptual al datelor i)Tabela angajati:
 
 Conține informații despre prenume(C,30), localitate(C,30);
 
 angajati:
 
 cod_ang(N,5),
 
 nume(C,30),
 
 ii)Tabela masini:
 
 9
 
 Conține informații 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:
 
 Conține informații despre serviciile prestate de service: cod_serv(N,5), nume(C,20), pret(N,8);
 
 2. Implementarea aplicației În aplicația analizată au fost implementate cu ajutorul formularelor proceduri de adăugare, ștergere, modificare, listare, căutare, sortare, interogare. Pentru fiecare dintre tabelele angajati, masini, servicii s-au efectuat: adăugare angajati, masini, servicii, ștergere angajati, masini, servicii și modificare angajati, masini, servicii. 10
 
 De asemenea asupra tabelelor s-au executat prelucrări prin intermediul interogărilor. Toate aceste operații au fost incluse într-un meniu.
 
 3. Prezentarea programelor
 
 Adăugare Angajați
 
 Butonul ADĂUGARE (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(thisform.editnume.Text)) valprenume=PROPER(ALLTRIM(thisform.editprenume.Text)) vallocalitate=PROPER(ALLTRIM(thisform.editlocalitate.Text)) 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="" thisform.editnume.Value="" thisform.editprenume.Value="" thisform.editlocalitate.Value=""
 
 Butonul AFIŞARE (click event): SET TALK OFF USE angajati BROWSE NOEDIT NODELETE noappend
 
 Adăugare Mașini
 
 12
 
 Butonul ADĂUGARE (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 AFIŞARE (click event): SET TALK OFF USE mașini BROWSE NOEDIT NODELETE noappend
 
 Adăugare Servicii
 
 Butonul ADĂUGARE (click event): PRIVATE valcod_serv
 
 14
 
 PRIVATE valnume PRIVATE valpret SET TALK OFF valcod_serv=VAL(ALLTRIM(thisform.editcod_serv.Text)) valnume=PROPER(ALLTRIM(thisform.editnume.Text)) valpret=VAL(ALLTRIM(thisform.editpret.Text)) 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="" thisform.editnume.Value="" thisform.editpret.Value=""
 
 Butonul AFIŞARE(click event): SET talk OFF USE servicii BROWSE NOEDIT NODELETE noappend
 
 Modificare Angajați
 
 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(thisform.editnume.Text)) valprenume=PROPER(ALLTRIM(thisform.editprenume.Text)) vallocalitate=PROPER(ALLTRIM(thisform.editlocalitate.Text)) 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 AFIŞARE 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="" thisform.editnume.Value="" thisform.editprenume.Value="" thisform.editlocalitate.Value=
 
 Modificare Mașini
 
 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_ang0 replace cod_ang WITH valcod_ang ENDIF IF valcod_serv0 replace cod_serv WITH valcod_serv ENDIF IF LEN(ALLTRIM(valcod_n))0 replace nume WITH PROPER(valcod_n) ENDIF IF valan_fabr0 replace an_fabr WITH valan_fabr ENDIF MESSAGEBOX("Modificarea s-a efectuat!") ELSE MESSAGEBOX("Masina inexistenta!") ENDIF USE
 
 Butonul AFIŞARE 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(thisform.editnume.Text)) valpret=VAL(ALLTRIM(thisform.editpret.Text)) 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 valpret0 replace Pret WITH valpret ENDIF MESSAGEBOX("Modificarea s-a efectuat!") ELSE MESSAGEBOX("Serviciu inexistent!") ENDIF USE
 
 Butonul AFIŞARE 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 AFIŞARE (click event): SET TALK OFF SELECT * FROM angajati USE
 
 Butonul RESETARE (click event): SET TALK OFF thisform.editcod_ang.Value="" CLOSE DATA
 
 Butonul CĂUTARE 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 Mașini
 
 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 CĂUTARE 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 AFIŞARE (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 AFIŞARE (click event): SET TALK OFF SELECT * FROM servicii USE
 
 Butonul RESETARE (click event): SET TALK OFF thisform.editcod_serv.Value="" CLOSE DATA
 
 Butonul CĂUTARE 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
 
 Interogări
 
 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