51 2 922KB
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