Firma Taxi (1)

38
COLEGIUL NAŢIONAL „CALISTRAT HOGAŞ” – TECUCI Atestat la informatică Gestiune firma de taxiuri Mai 2015 Visual Fox Professional Profesor coordonator Elev Ionescu Gabriela Neacşu Bogdan

description

4r567yy7r

Transcript of Firma Taxi (1)

COLEGIUL NAIONAL CALISTRAT HOGA TECUCIAtestat la informatic

Gestiune firma de taxiuri Mai 2015Visual Fox Professional

Profesor coordonator Elev

Ionescu Gabriela

Neacu Bogdan

Clasa a XII-a CContents

3Capitolul I - Introducere

31.Denumirea temei

32.Enunul temei

33.Motivaia lucrrii

4Capitolul II - Analiz

41.Descrierea activitatii analizate

42. Prezentarea coleciilor de date

53. Prezentarea suportului teoretic

9Capitolul III - Arhitectura sistemului

91. Modelul conceptual al datelor

102. Implementarea aplicaiei

113. Prezentarea programelor

25Interogri

26Capitolul IV- Listare program

26Bibliografie

Capitolul I - Introducere

1.Denumirea temei

Gestiune firma de taxiuri2.Enunul temei

Se va elabora un sistem informatic care s realizeze evidenta unei firme de taxiuri folosind Visual FoxPro.

Aplicaia va conine :-meniu-formulare pentru actualizarea bazei de date-interogri3.Motivaia lucrrii

Lucrarea a fost elaborata cu scopul de a tine evidenta unei firme de taxiuri. Capitolul II - Analiz

1.Descrierea activitatii analizate

Evidenta unui dealer auto se realizeaz prin manipularea unor informaii despre date_firma (cod_d, cod_fiscal, nume, adresa, oras, telefon, lei_km), angajati (cod_a, nume, prenume, telefon, functie, salariu), masini (cod_m, nume, numar_inmatriculare, km, an_fabr).

2. Prezentarea coleciilor de date

Baza de date Taxi.dbc cuprinde 3 tabele utilizate n activitatea analizat:-tabela date_firma.dbf cuprinde 7 cmpuri cu informatii privind dispeceratele firmei;-tabela angajati.dbf are n componen 6 cmpuri care rein informaii cu privire la angajati;-tabela masini.dbf curpinde 5 cmpuri care furnizeaz informaii despre masinile firmei de taxi;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 [fields ] [for ];

-inserarea n interiorul tabelului:

insert [before] [blank];

tergerea nregistrrilor:

-tergere logica : delete [] [for ] [while ];

-refacerea nregistrrilor sterse logic :

recall [] [for ] [while ];

-tergerea fizica: pack;

-tergerea fizica a tuturor nregistrrilor : zap;

Modificarea nregistrrilor:

-nlocuirea valorii unui cmp 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 obinerea unor informaii:

list/display [fields] [] [for ] [while ] [to printer \ to file ] [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 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 de poziionare pe o nregistrare din tabela :1.dup numrul nregistrrii:a) goto | go n | top | bottom;b) skip [n];2.dup un criteriu logic de cutare :a) locate for [] [while ];b) continue;3.alte 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 [heading ] [summary] [J [for ] [while ] [to printer | to file ].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;-prin limbajul SQL (instruciunea select - diferit de comanda select folosit pentru selectarea unei zonede lucru).Interogarea este salvata ntr-un fiier cu extensia .qpr si se lanseaza n execuie cu comanda:do .qprCapitolul III - Arhitectura sistemului

1. Modelul conceptual al datelor

i)Tabela date_firma:

Conine informaii despre datele dispeceratelor din firma: cod_d(N,10), cod_fiscal(N,10), nume(C,30), adresa(C,30), oras(C,30), telefon(N,10), lei_km(N,10); ii)Tabela angajai:

Conine informaii despre angajatii firmei: cod_a(N,5), nume(C,30), prenume(C,30), telefon(N,10), functie(C,30), salariu(N,10);iii)Tabela maini:

Conine informaii despre masini: cod_m(N,5), nume(C, 20), numar_inmatriculare(C,9), km(N,10), an_fabr(N,10);

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 date_firma, angajati, masini s-au efectuat: adugare date_firma, angajati, masini, modificare date_firma, angajati, masini i tergere date_firma, angajati, masini. De asemenea asupra tabelelor s-au executat prelucrri prin intermediul interogrilor. Toate aceste operaii au fost incluse ntr-un meniu.

3. Prezentarea programelorAdugare angajai

Butonul ADUGARE (click event):

PRIVATE valcod_a

PRIVATE valnume

PRIVATE valprenume

PRIVATE valfunctie

PRIVATE valtelefon

PRIVATE valsalariu

SET TALK OFF

valcod_a=VAL(ALLTRIM(thisform.editcod_a.Text))

valnume=PROPER(ALLTRIM(thisform.editnume.Text))

valprenume=PROPER(ALLTRIM(thisform.editprenume.Text))

valfunctie=PROPER(ALLTRIM(thisform.editfunctie.Text))

valtelefon=VAL(ALLTRIM(thisform.edittelefon.Text))

valsalariu=VAL(ALLTRIM(thisform.editsalariu.Text))

IF VAL(ALLTRIM(thisform.editcod_a.Text))=0

MESSAGEBOX("Nu ati introdus cod angajat!")

RETURN

ENDIF

CLOSE ALL

SELE 1

USE angajati

LOCATE FOR (valcod_a)=cod_a

IF FOUND()=.t.

MESSAGEBOX("Exista deja acest angajat!")

RETURN

ENDIF

CLOSE ALL

USE angajati

APPEND BLANK

replace cod_a WITH valcod_a

replace nume WITH PROPER(valnume)

replace prenume WITH PROPER(valprenume)

replace functie WITH PROPER(valfunctie)

replace telefon WITH valtelefon

replace salariu WITH valsalariu

MESSAGEBOX("Adaugarea a reusit!")

Butonul RESETARE (click event):

SET TALK OFF

thisform.editcod_a.Value=""

thisform.editnume.Value=""

thisform.editprenume.Value=""

thisform.editfunctie.Value=""

thisform.edittelefon.Value=""

thisform.editsalariu.Value=""Butonul AFIARE (click event):

SET TALK OFF

USE angajati

BROWSE NOEDIT NODELETE noappend

Adugare date dispecerat

Butonul ADUGARE (click event):

PRIVATE valcod_d

PRIVATE valcod_fiscal

PRIVATE valnume

PRIVATE valadresa

PRIVATE valoras

PRIVATE valtelefon

PRIVATE vallei_km

SET TALK OFF

valcod_d=VAL(ALLTRIM(thisform.editcod_d.Text))

valcod_fiscal=VAL(ALLTRIM(thisform.editcod_fiscal.Text))

valnume=PROPER(ALLTRIM(thisform.editnume.Text))

valadresa=PROPER(ALLTRIM(thisform.editadresa.Text))

valoras=PROPER(ALLTRIM(thisform.editoras.Text))

valtelefon=VAL(ALLTRIM(thisform.edittelefon.Text))

vallei_km=VAL(ALLTRIM(thisform.editlei_km.Text))

IF VAL(ALLTRIM(thisform.editcod_d.Text))=0

MESSAGEBOX("Nu ati introdus cod dispecerat!")

RETURN

ENDIF

CLOSE ALL

SELE 1

USE date_firma

LOCATE FOR valcod_d=cod_d

IF FOUND()=.T.

MESSAGEBOX("Exista deja acest cod!")

RETURN

ENDIF

CLOSE ALL

USE date_firma

APPEND BLANK

replace cod_d WITH valcod_d

replace cod_fiscal WITH valcod_fiscal

replace nume WITH PROPER(valnume)

replace adresa WITH PROPER(valadresa)

replace oras WITH PROPER(valoras)

replace telefon WITH valtelefon

replace lei_km WITH vallei_km

MESSAGEBOX("Adaugare reusita!")Butonul RESETARE(click event):SET TALK OFF

thisform.editcod_d.Value=""

thisform.editcod_fiscal.Value=""

thisform.editnume.Value=""

thisform.editadresa.Value=""

thisform.editoras.Value=""

thisform.edittelefon.Value=""

thisform.editlei_km.Value=""

Butonul AFIARE (click event):

SET TALK OFF

USE date_firmaBROWSE NOEDIT NODELETE noappendAdugare maini

Butonul ADUGARE (click event):

PRIVATE valcod_m

PRIVATE valnume

PRIVATE valnumar_inmatriculare

PRIVATE valan_fabr

PRIVATE valkm

SET TALK OFF

valcod_m=VAL(ALLTRIM(thisform.editcod_m.Text))

valnume=PROPER(ALLTRIM(thisform.editnume.Text))

valnumar_inmatriculare=PROPER(ALLTRIM(thisform.editnumar_inmatriculare.Text))

valan_fabr=VAL(ALLTRIM(thisform.editan_fabr.Text))

valkm=VAL(ALLTRIM(thisform.editkm.Text))

IF VAL(ALLTRIM(thisform.editcod_m.Text))=0

MESSAGEBOX("Nu ati introdus cod masina!")

RETURN

ENDIF

CLOSE ALL

SELE 1

USE masini

LOCATE FOR (valcod_m)=cod_m

if FOUND()=.T.

MESSAGEBOX("Exista deja aceasta masina!")

RETURN

ENDIF

CLOSE ALL

USE masini

APPEND BLANK

replace cod_m WITH VALcod_m

replace nume WITH valnume

replace numar_inmatriculare WITH valnumar_inmatriculare

replace an_fabr WITH valan_fabr

replace km WITH valkm

MEssagebox("Adaugarea s-a efectuat!")Butonul RESETARE (click event):

SET TALK OFF

thisform.editcod_m.Value=""

thisform.editnume.Value=""

thisform.editnumar_inmatriculare.Value=""

thisform.editan_fabr.Value=""

thisform.editkm.Value=""Butonul AFIARE(click event):

SET talk OFF

USE masiniBROWSE NOEDIT NODELETE noappend

Modificare angajai

Butonul de MODIFICARE (click event):PRIVATE valcod_a

PRIVATE valnume

PRIVATE valprenume

PRIVATE valfunctie

PRIVATE valtelefon

PRIVATE valsalariu

SET TALK OFF

valcod_a=VAL(ALLTRIM(thisform.editcod_a.Text))

valnume=PROPER(ALLTRIM(thisform.editnume.Text))

valprenume=PROPER(ALLTRIM(thisform.editprenume.Text))

valfunctie=PROPER(ALLTRIM(thisform.editfunctie.Text))

valtelefon=VAL(ALLTRIM(thisform.edittelefon.Text))

valsalariu=VAL(ALLTRIM(thisform.editsalariu.Text))

IF VAL(ALLTRIM(thisform.editcod_a.Text))=0

MESSAGEBOX("Nu ati introdus cod angajat!")

RETURN

ENDIF

USE angajati

LOCATE FOR cod_a=valcod_a

IF FOUND()

IF LEN(ALLTRIM(valnume))0

replace nume WITH PROPER(valnume)

ENDIF

IF LEN(ALLTRIM(valprenume))0

replace prenume WITH PROPER(valprenume)

ENDIF

IF LEN(ALLTRIM(valfunctie))0

replace functie WITH PROPER(valfunctie)

ENDIF

IF valtelefon0

replace telefon WITH valtelefon

ENDIF

IF valsalariu0

replace salariu WITH valsalariu

ENDIF

MESSAGEBOX("Modificarea s-a efectuat!")

ELSE

MESSAGEBOX("Angajat inexistent!")

ENDIF

USE

Butonul AFIARE MODIFICARE (click event):

SET TALK OFF

valcod_a=VAL(ALLTRIM(thisform.editcod_a.Text))

SELECT * FROM angajati WHERE cod_a=valcod_a

USE

Butonul Afisare (click event):

SET TALK OFF

CLOSE ALL

USE

USE angajatiBROWSE NOEDIT NODELETE noappend

USEButonul Resetare (click event):

SET TALK OFF

thisform.editcod_a.Value=""

thisform.editnume.Value=""

thisform.editprenume.Value=""

thisform.editfunctie.Value=""

thisform.edittelefon.Value=""

thisform.editsalariu.Value=""Modificare date dispecerat

Butonul MODIFICARE (click event):

PRIVATE valcod_d

PRIVATE valcod_fiscal

PRIVATE valnume

PRIVATE valadresa

PRIVATE valoras

PRIVATE valtelefon

PRIVATE vallei_km

SET TALK OFF

valcod_d=VAL(ALLTRIM(thisform.editcod_d.Text))

valcod_fiscal=VAL(ALLTRIM(thisform.editcod_fiscal.Text))

valnume=PROPER(ALLTRIM(thisform.editnume.Text))

valadresa=PROPER(ALLTRIM(thisform.editadresa.Text))

valoras=PROPER(ALLTRIM(thisform.editoras.Text))

valtelefon=VAL(ALLTRIM(thisform.edittelefon.Text))

vallei_km=VAL(ALLTRIM(thisform.editlei_km.Text))

IF VAL(ALLTRIM(thisform.editcod_d.Text))=0

MESSAGEBOX("Nu ati introdus cod dispecerat!")

RETURN

ENDIF

USE date_firma

LOCATE FOR cod_d=valcod_d

IF FOUND()

IF valcod_fiscal0

replace cod_fiscal WITH valcod_fiscal

ENDIF

IF LEN(ALLTRIM((valnume)))0

replace nume WITH PROPER (valnume)

ENDIF

IF LEN(ALLTRIM((valadresa)))0

replace adresa WITH PROPER (valadresa)

ENDIF

IF LEN(ALLTRIM((valoras)))0

replace oras WITH PROPER (valoras)

ENDIF

IF valtelefon0

replace telefon WITH valtelefon

ENDIF

IF vallei_km0

replace lei_km WITH vallei_km

ENDIF

MESSAGEBOX("Modificarea s-a efectuat!")

ELSE

MESSAGEBOX("Dispecerat inexistent!")

ENDIF

USE

Butonul AFIARE MODIFICARE (click event):

SET TALK OFF

valcod_d=VAL(ALLTRIM(thisform.editcod_d.Text))

SELECT * FROM date_firma WHERE cod_d=valcod_d

USE

Butonul Afisare (click event):

CLOSE all

SET talk OFF

USE date_firma

BROWSE NOEDIT NODELETE noappend

Butonul Resetare (click event):

SET TALK OFF

thisform.editcod_d.Value=""

thisform.editcod_fiscal.Value=""

thisform.editnume.Value=""

thisform.editadresa.Value=""

thisform.editoras.Value=""

thisform.edittelefon.Value=""

thisform.editlei_km.Value=""Modificare maini

Butonul MODIFICARE (click event):PRIVATE valcod_m

PRIVATE valnume

PRIVATE valnumar_inmatriculare

PRIVATE valan_fabr

PRIVATE valkm

SET TALK OFF

valcod_m=VAL(ALLTRIM(thisform.editcod_m.Text))

valnume=PROPER(ALLTRIM(thisform.editnume.Text))

valnumar_inmatriculare=PROPER(ALLTRIM(thisform.editnumar_inmatriculare.Text))

valan_fabr=VAL(ALLTRIM(thisform.editan_fabr.Text))

valkm=VAL(ALLTRIM(thisform.editkm.Text))

IF VAL(ALLTRIM(thisform.editcod_m.Text))=0

MESSAGEBOX("Nu ati introdus cod masina!")

RETURN

ENDIF

USE masini

LOCATE FOR cod_m=valcod_m

IF FOUND()

IF LEN(ALLTRIM(valnume))0

replace nume WITH PROPER(valnume)

ENDIF

IF LEN(ALLTRIM(valnumar_inmatriculare))0

replace numar_inmatriculare WITH PROPER(valnumar_inmatriculare)

ENDIF

IF valan_fabr0

replace an_fabr WITH valan_fabr

ENDIF

IF valkm0

replace km WITH valkm

ENDIF

MESSAGEBOX("Modificarea s-a efectuat!")

ELSE

MESSAGEBOX("Masina inexistenta!")

ENDIF

USE

Butonul AFIARE MODIFICARE (click event):SET TALK OFF

valcod_m=VAL(ALLTRIM(thisform.editcod_m.Text))

SELECT * FROM masini WHERE cod_m=valcod_m

USE

Butonul Afisare (click event):

SET TALK OFF

CLOSE ALL

USE

USE masiniBROWSE NOEDIT NODELETE

USE

Butonul Resetare (click event):

SET TALK OFF

thisform.editcod_m.Value=""

thisform.editnume.Value=""

thisform.editnumar_inmatriculare.Value=""

thisform.editan_fabr.Value=""

thisform.editkm.Value=""tergere angajai

Butonul TERGERE (click event):CLOSE all

SELECT 1

USE angajati

PRIVATE valcod_a

PRIVATE pozitie

SET TALK OFF

valcod_a=VAL(ALLTRIM(thisform.editcod_a.Text))

**use angajati

LOCATE FOR cod_a=valcod_a

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 angajatiUSEButonul RESETARE (click event):SET TALK OFF

thisform.editcod_a.Value=""

CLOSE DATA

Butonul CUTARE (click event):SET TALK OFF

IF VAL(ALLTRIM(thisform.editcod_a.Text))=0

MESSAGEBOX("Nu ati introdus cod angajat!")

RETURN

ENDIF

valcod_a=VAL(ALLTRIM(thisform.editcod_a.Text))

SELECT * FROM angajati WHERE cod_a=valcod_a

USE

tergere date dispecerat

Butonul TERGERE (click event):SELECT 1

USE date_firma

PRIVATE valcod_d

PRIVATE pozitie

SET TALK OFF

valcod_d=VAL(ALLTRIM(thisform.editcod_d.Text))

**use date_firma

LOCATE FOR cod_d=valcod_d

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

USEButonul CUTARE (click event):SET TALK OFF

IF VAL(ALLTRIM(thisform.editcod_d.Text))=0

MESSAGEBOX("Nu ati introdus codul dispeceratului!")

RETURN

ENDIF

valcod_d=VAL(ALLTRIM(thisform.editcod_d.Text))

SELECT * FROM date_firma WHERE cod_d=valcod_d

useButonul AFIARE (click event):

SET TALK OFF

SELECT * FROM date_firma

USE

Butonul RESETARE (click event):

SET TALK OFF

thisform.editcod_d.Value=""

CLOSE DATA

tergere maini

Butonul TERGERE(click event):CLOSE ALL

SELECT 1

USE masini

PRIVATE valcod_m

PRIVATE pozitie

SET TALK OFF

valcod_m=VAL(ALLTRIM(thisform.editcod_m.Text))

**use masini

LOCATE FOR cod_m=valcod_m

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 masiniUSEButonul RESETARE (click event):SET TALK OFF

thisform.editcod_m.Value=""

CLOSE DATAButonul CUTARE (click event):CLOSE ALL

SET TALK OFF

IF VAL(ALLTRIM(thisform.editcod_m.Text))=0

MESSAGEBOX("Nu ati introdus cod masina!")

RETURN

ENDIF

valcod_m=VAL(ALLTRIM(thisform.editcod_m.Text))

SELECT * FROM masini WHERE cod_m=valcod_m

USE

Interogri

Capitolul IV- Listare program

Print Screens

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