Lucrare atestat informatica - Aeroport - evidenta activitatilor




LUCRARE DE ATESTARE

PROFESIONALA


Profesor indrumator



Aeroport
- evidenta activitatilor -



MEMORIU JUSTIFICATIV

Activitatea desfasurata intr-un aeroport este foarte complexa. Atat bazele de date ( nomenclatoare ) cat si operatiile specifice ( sosiri, plecari, vanzare bilete etc. ) , necesita un numar mare de informatii si prelucrari. Acest program isi propune o sistematizare a datelor, simplificarea modului de acces si a operatiilor cu acestea.



Daca luam in calcul faptul ca transporturile pe calea aerului se afla

intr-o continua expansiune, ne putem da seama de importanta practica a acestei lucrari. Acest program se adreseaza in special transportului civil, dar, prin structura sa, el poate fi adaptat si folosit si in cazul transportului de marfa. Caracteristica principala a acestui program este utilitatea si s-a incercat a-i conferi o cat mai mare claritate, programul putand fi utilizat cu usurinta, pentru utilizarea sa nefiind necesara o pregatire speciala.



SCURT ISTORIC


Memorarea si prelucrarea datelor dateaza inca din antichitate, odata cu aparitia primelor abacuri, a primelor numaratoare, care ii ajutau pe babilonieni sa efectueze operatii simple de adunare, scadere, inmultire.

In secolul XVII oamenii de stiinta ai acelor vremuri ( Napier, Pascal, Leibnitz ) au conceput primele masini de calcul.

Cel mai important pas in dezvoltarea calculatoarelor s-a facut la sfarsitul anului 1971 cand inginerul M. E. Hoff a inventat procesorul. Aceasta realizare a dus practic la separarea hardului de soft. Aceste doua componente ale oricarui sistem de calcul au evoluat in paralel, dezvoltandu-se astfel doua domenii de cercetare in stiinta informaticii: hardware-ul, care este in stransa legatura cu cercetarea din domeniul fizicii, si software-ul, avand legatura cu dezvoltarea matematicii si a logicii.

Sistemele de Gestiune a Bazelor de Date ( SGBD ) sunt sisteme informatice specializate in stocarea si prelucrarea unui volum mare de date in comparatie cu volumul de prelucrari implicat care este relativ mic. Spre deosebire de SGBD-uri, programele orientate spre rezolvarea de probleme stiintifice ( ca, de exemplu, probleme matematice ) prelucreaza un volum relativ mic de date, dar necesita un volum mare de prelucrari.

Termenul de “baza de date” se refera la datele de prelucrat si la modul de organizare al acestora pe suportul fizic de memorare, iar termenul de “gestiune” se refera la totalitatea operatiilor ce se vor aplica asupra datelor din bazele de date.

Istoria SGBD-urilor a inceput odata cu aparitia primelor suporturi magnetice de memorare ( benzile magnetice ) unde informatia era memorata secvential. Intre structura logica si cea fizica a informatiei din bazele de date era o identitate perfecta, dar accesul secvential la date a dus la o manipulare greoaie a lor.

Odata cu aparitia discului magnetic si, prin urmare, aparitia accesului direct la date, alaturi de cel secvential, a dus la o crestere spectaculoasa a vitezei de acces la date si la separarea nivelului logic de memorare de cel fizic. Prin urmare, s-a realizat o independenta logica a datelor fata de suportul fizic ceea ce a condus la dezvoltarea unor tehnici avansate de selectare, grupare, prelucrare a datelor din bazele de date.

Aparitia retelelor de calculatoare si raspandirea lor din ce in ce mai mult a dus la dezvoltarea intr-o noua directie a SGBD-urilor, ele capatand un caracter multiutilizator, ceea ce inseamna ca mai multi utilizatori folosesc simultan aceeasi baza de date.

SGBD-urile au fost perfectionate si in ceea ce priveste interfetele cu utilizatorul ( meniuri, ferestre, obiecte de control ) prin care comunicarea cu SGBD-ul devine o placere chiar si pentru utilizatorii neprofesionisti.

FoxPro ofera trei moduri de lucru:

1)     modul direct ( interactiv ) , in care utilizatorul introduce cate o comanda in fereastra de comenzi;

2)     modul asistat, in care utilizatorul da diferite comenzi prin utilizarea optiunilor submeniurilor meniului sistem;

3)     modul program¸ care consta in rularea fisierelor de comenzi ( a programelor ) .




DESPRE FoxPro



Raspandirea PC-urilor pe scara larga a condus la dezvoltarea din ce in ce mai mult a SGBD-urilor implementate pe acest tip de calculatoare. Suprematia in acest domeniu a apartinut pentru mult timp firmei Ashton-Tate cu produsul sau numit dBase. Concurentii cei mai inportanti ai lui dBase au fost Paradox al firmei Borland, Cliper al firmei Nantucket si FoxPro al firmei Fox Software.

FoxPro a evoluat foarte rapid, acaparand treptat o mare parte din piata SGBD-urilor pe PC. Cumpararea acestui produs de catre Microsoft in anul 1983 si dezvoltarea variantelor 2.5, 2.6 si Visual FoxPro 3.0 a facut ca acest produs sa se numere printre liderii SGBD-urilor actuale. Concurentul sau ramane dBase-ul, cumparat de firma Borland si Oracle.

Noile versiuni ale FoxPro-ului au adus imbunatatiri substantiale cum ar fi: marirea numarului maxim de caractere pe o inregistrare, a numarului de zone de lucru, o mai buna gestionare a memoriei, posibilitatea transferului de elemente ( proiecte, ecrane, rapoarte etc. ) , disponibilitatea sa pe diferite platforme cum ar fi DOS, Windows, UNIX, MAC etc. Functia OS ( ) intoarce numele platformei pe care ruleaza FoxPro-ul, iar functia VERSION ( ) intoarece numele versiunii instalate.

Prin SGBD vom intelege un ansamblu de programe ( sau mai general un mediu de programare, sau un mediu de dezvoltare ) destinat gestiunii bazelor de date.

Sub sistemul de operare DOS, pe calculatoare de tip PC, datele sunt memorate in fisiere, care la randul lor sunt grupate in directoare, pe suporturi fizice de tipul discurilor magnetice. Deci, la nivelul inferior, o baza de date reprezinta un fisier continand diferite date, a caror organizare si manipulare logica este controlata de SGBD, in cazul nostru de FoxPro. Ceea ce atrage in mod special la FoxPro este simplitatea sa.

Desi FoxPro are la baza teoria algebrelor relationale, el confunda notiunea de relatie cu cea de fisier. Rezulta deci ca, utilizand limbajul specific sistemelor de gestiune a fisierelor, atributele se confunda cu domeniile si cu campurile, iar tuplele cu articolele. In felul acesta, baza de date este un fisier secvential cu extensia .DBF, avand articole de lungime fixa de forma:


Antet

Fisierul propriu-zis


Spre deosebire de bazele de date relationale uzuale, unde articolele sunt caracterizate prin cheie, in FoxPro articolele sunt caracterizate prin numarul lor de ordine, care este tratat ca un indicator ( pointer ) in fisier.

Ordinea articolelor in fisier poate fi modificata fizic prin sortare analog cu orice fisier secvential ( situatie in care se schimba si pointerele articolelor ) , fie prin indexare ( deci modificarea la nivel logic a ordinii ) ; in acest al doilea caz pointerii nu se schimba, indexarea efectuandu-se intr-un tabel de indecsi alesi.

Antetul contine informatii care descriu baza de date si care se completeaza automat la crearea bazei de date. Informatiile din antet formeaza structura bazei de date. Astfel, la crearea unei baze de date, fiecare camp primeste un nume, un tip si o lungime. Aceste informatii legate de fiecare camp impreuna cu o a patra informatie legata de pozitia campului in articol¸ se memoreaza in antetul bazei de date.

Numele campului este un identificator fromat din litere, cifre si eventual liniuta de subliniere. El poate avea cel mult 10 caractere.


DESCRIEREA APLICATIEI



Aplicatia este realizata in limbajul de programare FoxPro 2.6.

In cadrul aplicatiei am utilizat urmatoarele baze de date:


AVIOANE.DBF cu structura:

1 NUME - Character 15

2 TIP - Character 10

3 NR _ INV - Numeric 10

4 CTG _ 1 _ F - Numeric 10 ( numarul de locuri de la categ. 1 fumatori )

5 CTG _ 1 _ NF - Numeric 10

6 CTG _ 2 _ F - Numeric 10

7 CTG _ 2 _ NF - Numeric 10

8 CTG _ 3 _ F - Numeric 10

9 CTG _ 3 _ NF - Numeric 10


BAGAJE.DBF cu structura:

1       DATA - Date 8

2       NR _ CURSA - Numeric 10

3       NR _ BILET - Numeric 10

4       GREUTATE - Numeric 10 , 2

5       NUME - Character 15

6       PRENUME - Character 15

7       PRET - Numeric 10 , 2


BILETE.DBF cu structura:

1 DATA - Date 8

2 NUME -Character 15

3 PRENUME - Character 15

4 DESTINATIE - Character 20

5 NR _ CURSA - Numeric 10

6 FUMATOR - Logical 1

7 CTG - Numeric 1 ( categoria la care doreste clientul sa ia bilet ) 8 PRET - Numeric 10 9 NR _ BILET - Numeric 10 10 BULETIN - Character 15 ( identitatea clientului ) 11 REZERVARE - Logical 1

INFO.DBF cu structura:

1 N _ AEROPORT - Character 20 ( numele aeroportului ) 2

LOCALITATE -Character 20

3 ADRESA - Character 40

4 PRET _ UNIT - Numeric 10 ( pret pe unitatea de bagaj )


LOC _ LIB.DBF cu structura:

1 NR _ CURSA - Numeric 10 2 NR _ INV - Numeric 10

3 SURSA - Character 15 ( statia de plecare )

4 DESTINATIE - Character 15

5 ZIUA - Character 10

6 ORA _ PLEC – Numeric 5, 2

7 DURATA _ ZB - Numeric 6, 2

8 ESCALE - Character 40

9 NR _ PISTA - Numeric 10

10 PRET _ CTG3 - Numeric 10

11 PR _ DIF _ CTG- Numeric 10 ( diferenta de pret pentru o categorie superioara )

12 CTG _ 1 _ F - Numeric 10

13 CTG _ 1 _ NF - Numeric 10

14 CTG _ 2 _ F - Numeric 10

15 CTG _ 2 _ NF - Numeric 10

16 CTG _ 3 _ F - Numeric 10

17 CTG _ 3 _ NF - Numeric 10


PISTE.DBF cu structura:

1 NR - Numeric 10

2 LUMINAT - Logical 1

3 ARIA - Numeric 10

4 DISPONIBIL - Logical 1


PLECARI.DBF cu structura:

1 NR _ CURSA - Numeric 10

2 NR _ INV - Numeric 10

3 SURSA - Character 15

4 DESTINATIE - Character 15

5 ZIUA - Character 10 ( ziua plecarii )

6 ORA _ PLEC - Numeric 5, 2

7 DURATA _ ZB - Numeric 6, 2

8 ESCALE - Character 40

9 NR _ PISTA - Numeric 10

10 PRET _ CTG3 - Numeric 10

11 PR _ DIF _ CTG - Numeric 10


RECLAM.DBF cu structura:

1 NUME - Character 15

2 PRENUME - Character 15

3 DATA - Date 8

4 MOTIV- Memo 10


SOSIRI.DBF cu structura:

1 NR _ CURSA Numeric 10

2 NR _ INV Numeric 10

3 SURSA Character15

4 DESTINATIE Character15

5 ZIUA Character10

6 ORA _ SOSIRE Numeric 5 2

7 DURATA _ ZB Numeric 6 2

8 ESCALE Character40

9 NR _ PISTA Numeric 10


TEMPBG.DBF cu structura:

1 DATA - Date 8

2 NR _ CURSA - Numeric 10

3 NR _ BILET - Numeric 10

4 GREUTATE - Numeric 11, 2

5 NUME - Character 15

6 PRENUME - Character 15

7 PRET - Numeric 11, 2


La lansarea aplicatiei pe ecran va apare urmatorul meniu orizontal:


Nomenclatoare

Bilete

Bagaje

Reclamatii

Informatii

Iesire




La selectarea optiunii NOMENCLATOARE pe ecran va aparea urmatorul meniu vertical:


Avioane

Piste

Plecari

Sosiri


La selectarea optiunii AVIOANE pe ecran va apare meniul:


Adaugare

Modificare

Stergere

Afisare


Selectarea optiunii ADAUGARE conduce la afisarea unei ferestre ce permite completarea campurilor necesare inregistrarii unui nou avion. Dupa completarea tuturor datelor, inregistrarea va fi adaugata efectiv in baza de date numai daca se alege unul din butoanele NOU, respectiv ADAUGA. Alegerea butonului NOU va permite si adaugarea unei noi inregistrari. Alegerea butonului IESIRE inchide fereastra deschisa, fara salvarea datelor introduse anterior.

Selectarea optiunii MODIFICARE permite modificarea datelor unui avion deja existent in baza de date, acesta fiind selectat in functie de numarul sau de inventar ( citit de la tastatura ) . Daca nu exista o inregistrare pentru acel numar de avion se va afisa un mesaj de eroare.

Optiunea STERGERE permite stergerea inregistrarii corespunzatoare unui avion, al carui numar de inventar este citit de la tastatura. Se poate renunta la operatia de stergere prin selectarea butonului IESIRE. Inregistrarea va fi stearsa fizic din baza de date numai la.alegerea butonului STERGE.

Optiunea AFISARE permite afisarea tuturor inregistrarilor existente in baza de date avioane.dbf.

La selectarea optiunii PISTE pe ecran va apare meniul:


Adaugare

Modificare

Stergere

Afisare


Selectarea optiunii ADAUGARE conduce la afisarea unei ferestre ce permite completarea campurilor necesare inregistrarii unei noi piste. Dupa completarea tuturor datelor, inregistrarea va fi adaugata efectiv in baza de date numai daca se alege butonul ADAUGA. Alegerea butonului IESIRE inchide fereastra deschisa, fara salvarea datelor introduse anterior.

Selectarea optiunii MODIFICARE permite modificarea datelor unei piste deja existente in baza de date, acesta fiind selectata in functie de numarul sau ( citit de la tastatura ) .

Optiunea STERGERE permite stergerea inregistrarii corespunzatoare unei piste, al carei numar este citit de la tastatura. Se poate renunta la operatia de stergere prin selectarea butonului IESIRE. Inregistrarea va fi stearsa fizic din baza de date numai la.alegerea butonului STERGE.

Optiunea AFISARE permite afisarea tuturor inregistrarilor existente in baza de date piste.dbf.

La selectarea optiunii PLECARI pe ecran va apare meniul:

Adaugare

Modificare

Stergere

Afisare

Curse spre


Selectarea optiunii ADAUGARE conduce la afisarea unei ferestre ce permite completarea campurilor necesare inregistrarii unei noi plecari. Dupa completarea tuturor datelor, inregistrarea va fi adaugata efectiv in baza de date numai daca se alege butonul ADAUGA. Alegerea butonului IESIRE inchide fereastra deschisa, fara salvarea datelor introduse anterior.

Selectarea optiunii MODIFICARE permite modificarea datelor unei plecari acesta fiind selectata in functie de numarul sau ( citit de la tastatura ) .

Optiunea STERGERE permite stergerea inregistrarii corespunzatoare unei plecari, al carei numar este citit de la tastatura. Se poate renunta la operatia de stergere prin selectarea butonului IESIRE. Inregistrarea va fi stearsa fizic din baza de date numai la.alegerea butonului STERGE.

Optiunea AFISARE permite afisarea tuturor inregistrarilor existente in baza de date plecari.dbf.

Optiunea CURSE SPRE afiseaza pe ecran cursele spre o destinatie data. Sunt afisate toate cursele spre destinatia data sau care fac escala pe aeroportul dat ca destinatie.

La selectarea optiunii SOSIRI pe ecran va apare meniul:


Adaugare

Modificare

Stergere

Afisare



Selectarea optiunii ADAUGARE conduce la afisarea unei ferestre ce permite completarea campurilor necesare inregistrarii unei sosiri. Dupa completarea tuturor datelor, inregistrarea va fi adaugata efectiv in baza de date numai daca se alege butonul ADAUGA. Alegerea butonului IESIRE inchide fereastra deschisa, fara salvarea datelor introduse anterior.

Alegerea butonului IESIRE inchide fereastra deschisa, fara salvarea datelor introduse anterior.

Selectarea optiunii MODIFICARE permite modificarea datelor unei sosiri acesta fiind selectata in functie de numarul sau ( citit de la tastatura ) .

Optiunea STERGERE permite stergerea inregistrarii corespunzatoare unei sosiri, al carei numar este citit de la tastatura. Se poate renunta la operatia de stergere prin selectarea butonului IESIRE. Inregistrarea va fi stearsa fizic din baza de date numai la.alegerea butonului STERGE.

Optiunea AFISARE permite afisarea tuturor inregistrarilor existente in baza de date sosiri.dbf.


La selectarea optiunii BILETE pe ecran va aparea urmatorul meniu vertical:


Adaugare

Stergere

Afisare

Situatii


Selectarea optiunii ADAUGARE conduce la afisarea unei ferestre ce permite completarea campurilor necesare inregistrarii unei bilet. Dupa completarea tuturor datelor, inregistrarea va fi adaugata efectiv in baza de date numai daca se alege butonul ADAUGA.

In plus, cumparatorul poate obtine si o rezervare.Dupa introducerea tuturor datelor, clientului i se va afisa pretul biletului.

Alegerea butonului IESIRE inchide fereastra deschisa, fara salvarea datelor introduse anterior.

Optiunea STERGERE permite stergerea inregistrarii corespunzatoare unui bilet, al carui numar este citit de la tastatura.La accesarea optiunii se va solicita numarul biletului a carui modificare se doreste.Daca biletul nu exista se va afisa un mesaj corespunzator. Se poate renunta la operatia de stergere prin selectarea butonului IESIRE. Inregistrarea va fi stearsa fizic din baza de date numai la.alegerea butonului STERGE.

Optiunea AFISARE permite afisarea tuturor inregistrarilor existente in baza de date bilete.dbf.

La selectarea optiunii SITUATII pe ecran va aparea un nou meniu vertical :

Total Incasari

Locuri Libere

Alegerea optiunii Total Incasari pe ecran se va afisa totalul incasarilor facute in data curenta ( data sistemului ) .

La alegerea optiunii Locuri Libere va apare un mesaj de genul:”Data pentru care doriti situatia locurilor libere: ” _ / _ / _ ”. Implicit data va fi data curenta ( data sistemului ) , dar se poate tasta si odata dorita de client.Data tastata de client trebuie sa fie mai mare sau egala cu data curenta.In caz contrar se va afisa un mesaj corespunzator.

Daca data este introdusa corect se va afisa pe ecran o situatie cu locurile libere la cursele din data respectiva.


La selectarea optiunii BAGAJE pe ecran va aparea urmatorul meniu vertical:


Adaugare

Modificare

Stergere

Afisare

Total Greutate



Selectarea optiunii ADAUGARE conduce la afisarea unei ferestre ce permite completarea campurilor necesare inregistrarii unui bagaj. Dupa completarea tuturor datelor, inregistrarea va fi adaugata efectiv in baza de date numai daca se alege butonul ADAUGA. Alegerea butonului IESIRE inchide fereastra deschisa, fara salvarea datelor introduse anterior. Dupa introducerea tuturor datelor se va afisa si costul ( pretul ) transportului bagajului respectiv.In cazul in care datele nu sunt introduse corect se vor afisa mesaje corespunzatoare.

Selectarea optiunii MODIFICARE permite modificarea datelor inregistrarii unui bagaj acesta fiind selectata in functie de numarul biletului corespunzator ( citit de la tastatura ) .Daca se introduce un numar gresit se va afisa un mesaj de eroare.

Optiunea STERGERE permite stergerea inregistrarii corespunzatoare unui bagaj, numarul biletului corespunzator fiind citit de la tastatura.La accesarea optiunii se va solicita numarul biletului corespunzator bagajului a carui modificare se doreste.Daca biletul nu exista se va afisa un mesaj corespunzator. Se poate renunta la operatia de stergere prin selectarea butonului IESIRE. Inregistrarea va fi stearsa fizic din baza de date numai la.alegerea butonului STERGE.

Optiunea AFISARE permite afisarea tuturor inregistrarilor existente in baza de date bagaje.dbf.

La selectarea optiunii TOTAL GREUTATE se va afisa totalul greutatii si valoarea corespunzatoare greutatii respective pentru fiecare cursa in parte.

La selectarea optiunii RECLAMATII pe ecran va aparea urmatorul meniu vertical:


Adaugare

Stergere

Afisare


Selectarea optiunii ADAUGARE conduce la afisarea unei ferestre ce permite completarea campurilor necesare inregistrarii unei reclamatii. Dupa completarea tuturor datelor, inregistrarea va fi adaugata efectiv in baza de date . Alegerea butonului IESIRE inchide fereastra deschisa, cu salvarea datelor introduse anterior.

Optiunea STERGERE permite stergerea inregistrarii corespunzatoare unui bagaj, numarul biletului corespunzator fiind citit de la tastatura.La accesarea optiunii se va solicita numarul biletului corespunzator bagajului a carui modificare se doreste.Daca biletul nu exista se va afisa un mesaj corespunzator. Se poate renunta la operatia de stergere prin selectarea butonului IESIRE. Inregistrarea va fi stearsa fizic din baza de date numai la.alegerea butonului STERGE.

La selectarea optiunii AFISARE se vor afisa toate reclamatiile continute de baza de date reclamatii.dbf.



APLICATIA

*set default to c:aplicfpdcostel

set cloc on

clear

close data

set date to dmy

clear macros

set cent on

set talk off

set safe off

set escape off

define wind afis from 0, 0 to 24, 79


define menu m1

define pad p1 of m1 prompt'<Nomenclatoare'

define pad p2 of m1 prompt'Bilete'

define pad p3 of m1 prompt'Bagaje'

define pad p4 of m1 prompt'Reclamatii'

define pad p5 of m1 prompt'Informatii'

define pad p6 of m1 prompt'Iesire'

on pad p1 of m1 activate popup nom

on pad p2 of m1 activate popup bilete

on pad p3 of m1 acti popup bagaje

on pad p4 of m1 activate popup reclam

on selection pad p5 of m1 do info

on pad p6 of m1 activate popup ies


define popup ies

define bar 1 of ies prompt 'Fox-Pro' message 'Iesire in mediul Fox-Pro'

define bar 2 of ies prompt 'Ms-Dos' message 'Iesire in sistemul de operare'

on sele bar 1 of ies cancel

on sele bar 2 of ies quit


define popup nom

define bar 1 of nom prompt'Avioane' message 'Operatii cu avioane'

define bar 2 of nom prompt'Piste ' message 'Operatii cu piste'

define bar 3 of nom prompt'Plecari' message'Operatii privind plecarea avioanelor'

define bar 4 of nom prompt'Sosiri' message'Operatii privind sosirile avioanelor'

on bar 1 of nom activate popup avi

on bar 2 of nom activate popup piste

on bar 3 of nom activate popup plecari

on bar 4 of nom activate popup sosiri


define popup avi

define bar 1 of avi prompt'<Adaugare' mess 'Adaugarea unui nou avion'

define bar 2 of avi prompt'<Modificare' mess 'Modificarea datelor unui avion deja existent'

define bar 3 of avi prompt'<Stergere' mess 'Stergerea unui avion adaugat anterior'

define bar 4 of avi prompt'A<fisare' mess 'Afiseaza pe ecran baza avioane'

on selection bar 1 of avi do adavi

on selection bar 2 of avi do moavi

on selection bar 3 of avi do stavi

on selection bar 4 of avi do afavi


define popup piste

define bar 1 of piste prompt'<Adaugare' mess 'Adaugarea unei noi piste'

define bar 2 of piste prompt'<Modificare' mess 'Modificarea datelor unui avion deja existent'

define bar 3 of piste prompt'<Stergere' mess 'Stergerea unui avion adaugat anterior'

define bar 4 of piste prompt'A<fisare' mess 'Afiseaza pe ecran baza avioane'

on selection bar 1 of piste do adpiste

on selection bar 2 of piste do mopiste

on selection bar 3 of piste do stpiste

on selection bar 4 of piste do afpiste


define popup plecari

define bar 1 of plecari prompt'<Adaugare' mess 'Adaugarea unei noi plecari'

define bar 2 of plecari prompt'<Modificare' mess 'Modificarea datelor unui avion deja existent'

define bar 3 of plecari prompt'<Stergere' mess 'Stergerea unui avion adaugat anterior'

define bar 4 of plecari prompt'A<fisare' mess 'Afiseaza pe ecran baza avioane'

define bar 5 of plecari prompt'<Curse spre' mess 'Afiseaza pe ecran cursele spre o destinatie data'

on selection bar 1 of plecari do adplecari

on selection bar 2 of plecari do moplecari

on selection bar 3 of plecari do stplecari

on selection bar 4 of plecari do afplecari

on selection bar 5 of plecari do cursespre


define popup sosiri

define bar 1 of sosiri prompt'<Adaugare' mess 'Adaugarea unei noi sosiri'

define bar 2 of sosiri prompt'<Modificare' mess 'Modificarea datelor unui avion deja existent'

define bar 3 of sosiri prompt'<Stergere' mess 'Stergerea unui avion adaugat anterior'

define bar 4 of sosiri prompt'A<fisare' mess 'Afiseaza pe ecran baza avioane'

on selection bar 1 of sosiri do adsosiri

on selection bar 2 of sosiri do mososiri

on selection bar 3 of sosiri do stsosiri

on selection bar 4 of sosiri do afsosiri


define popup reclam

define bar 1 of reclam prompt'<Adaugare' mess 'Adaugarea unei noi reclam'

define bar 2 of reclam prompt'<Stergere' mess 'Stergerea unui avion adaugat anterior'

define bar 3 of reclam prompt'A<fisare' mess 'Afiseaza pe ecran baza avioane'

on selection bar 1 of reclam do adreclam

on selection bar 2 of reclam do streclam

on selection bar 3 of reclam do afreclam


define popup bilete

define bar 1 of bilete prompt'<Adaugare' mess 'Adaugarea unei noi bilete'

define bar 2 of bilete prompt'<Stergere' mess 'Stergerea unui avion adaugat anterior'

define bar 3 of bilete prompt'A<fisare' mess 'Afiseaza pe ecran baza avioane'

define bar 4 of bilete prompt'Si<tuatii '

on selection bar 1 of bilete do adbilete

on selection bar 2 of bilete do stbilete

on selection bar 3 of bilete do afbilete

on bar 4 of bilete activate popup sitbilete


define popup sitbilete

define bar 1 of sitbilete prompt'<Total incasari' mess ''

define bar 2 of sitbilete prompt'<Locuri libere' mess ''

on selection bar 1 of sitbilete do tot _ incas

on selection bar 2 of sitbilete do loc _ libere


define popup bagaje

define bar 1 of bagaje prompt'<Adaugare' mess 'Adaugarea unui nou bagaj'

define bar 2 of bagaje prompt'<Modificare'mess 'Modificare greutate bagaj'

define bar 3 of bagaje prompt'<Stergere' mess 'Stergerea unui bagaj adaugat anterior'

define bar 4 of bagaje prompt'A<fisare' mess 'Afiseaza pe ecran baza bagaje'

define bar 5 of bagaje prompt'<TotalGreutate' mess 'Afiseaza greutate bagaje pt fiecare cursa'

on selection bar 1 of bagaje do adbagaje

on selection bar 2 of bagaje do mobagaje

on selection bar 3 of bagaje do stbagaje

on selection bar 4 of bagaje do afbagaje

on selection bar 5 of bagaje do totbagaj


*program principal

do while .t.

activate menu m1

enddo


***AVIOANE

procedure adavi

sele 1

use avioane

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +12, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Adaugare avion';

float noclose shadow nominimize double color scheme 5


activate wind adavi

@1, 3 say 'Nume avion : ' get vnume default space ( 15 ) function'!'

@2, 3 say 'Tip : ' get vtip default space ( 15 ) function'!'

@3, 3 say 'Nr : ' get vnr _ inv defa 0 valid vdnrinv ( vnr _ inv ) ;

error'Deja exista avion cu acest nr de inventar!'

@4, 3 say 'Locuri Ctg1 Ctg2Ctg3'

@5, 5 say 'Fumatori '

@6, 5 say 'Nefumatori '

@5, 15 get vctg _ 1 _ f defa 0

@5, 26 get vctg _ 2 _ f defa 0

@5, 39 get vctg _ 3 _ f defa 0


@6, 15 get vctg _ 1 _ nf defa 0

@6, 26 get vctg _ 2 _ nf defa 0

@6, 39 get vctg _ 3 _ nf defa 0


@8, 0 to 8, 60 double

@9, 8 get vbut defa 0 picture'@*N <Nou' mess'Salveza datele acestui avion si trecere la un nou avion' valid vbnouav ( )

@9, 20 get vbut defa 0 picture'@*N <Adauga' mess'Salveaza datele acestui avion' valid vbadav ( )

@9, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu'

read

deactivate wind adavi

use

clear

return


function vdnrinv

para vnr _ inv

sele 1

count for nr _ inv=vnr _ inv to vx

if vx>0

return.f.

else

return.t.

endif


function vbNOUav

sele 1

appe blank

replace nume with vnume, tip with vtip, nr _ inv with vnr _ inv, ;

ctg _ 1 _ f with vctg _ 1 _ f, ctg _ 2 _ f with vctg _ 2 _ f, ctg _ 3 _ f with vctg _ 3 _ f, ;

ctg _ 1 _ nf with vctg _ 1 _ nf, ctg _ 2 _ nf with vctg _ 2 _ nf, ctg _ 3 _ nf with vctg _ 3 _ nf

vnume=space ( 15 )

vtip=space ( 10 )

vnr _ inv=0

vctg _ 1 _ f=0

vctg _ 2 _ f=0

vctg _ 3 _ f=0

vctg _ 1 _ nf=0

vctg _ 2 _ nf=0

vctg _ 3 _ nf=0

show gets

_ curobj=1

return


function vbadav

sele 1

appe blank

replace nume with vnume, tip with vtip, nr _ inv with vnr _ inv, ;

ctg _ 1 _ f with vctg _ 1 _ f, ctg _ 2 _ f with vctg _ 2 _ f, ctg _ 3 _ f with vctg _ 3 _ f, ;

ctg _ 1 _ nf with vctg _ 1 _ nf, ctg _ 2 _ nf with vctg _ 2 _ nf, ctg _ 3 _ nf with vctg _ 3 _ nf

return


procedure moavi &&Modificare avioane

sele 1

use avioane

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +12, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Modificare avion';

float noclose shadow nominimize double color scheme 5

activate wind adavi


vnr _ inv =0

@3, 3 say 'Nr avion : ' get vnr _ inv

read

clear

set order to tag nr _ inv

if not seek ( vnr _ inv )

@4, 2 say 'Nu exista avion cu numarul '+str ( vnr _ inv ) color r*/w

read

else

vnume=nume

vtip=tip

vnr _ inv=nr _ inv

vctg _ 1 _ f=ctg _ 1 _ f

vctg _ 2 _ f=ctg _ 2 _ f

vctg _ 3 _ f=ctg _ 3 _ f

vctg _ 1 _ nf=ctg _ 1 _ nf

vctg _ 2 _ nf=ctg _ 2 _ nf

vctg _ 3 _ nf=ctg _ 3 _ nf


@1, 3 say 'Nume avion : ' get vnume default space ( 15 ) function'!'

@2, 3 say 'Tip : ' get vtip default space ( 15 ) function'!'

@3, 3 say 'Nr : ' get vnr _ inv defa 0 disable

@4, 3 say 'Locuri Ctg1 Ctg2Ctg3'

@5, 5 say 'Fumatori '

@6, 5 say 'Nefumatori '

@5, 15 get vctg _ 1 _ f defa 0

@5, 26 get vctg _ 2 _ f defa 0

@5, 39 get vctg _ 3 _ f defa 0


@6, 15 get vctg _ 1 _ nf defa 0

@6, 26 get vctg _ 2 _ nf defa 0

@6, 39 get vctg _ 3 _ nf defa 0


@8, 0 to 8, 60 double

@9, 8 get vbut defa 0 picture'@*T <Salveaza' mess'Iesire cu salvare modificari' valid vbSALVav ( )

@9, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire fara salvare modificari'

read


endif

deactivate wind adavi

use

clear

return


function vbSALVav

sele 1

replace nume with vnume, tip with vtip, nr _ inv with vnr _ inv, ;

ctg _ 1 _ f with vctg _ 1 _ f, ctg _ 2 _ f with vctg _ 2 _ f, ctg _ 3 _ f with vctg _ 3 _ f, ;

ctg _ 1 _ nf with vctg _ 1 _ nf, ctg _ 2 _ nf with vctg _ 2 _ nf, ctg _ 3 _ nf with vctg _ 3 _ nf

return


procedure stavi &&Stergere avion

sele 1

use avioane

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +12, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Stergere avion';

float noclose shadow nominimize double color scheme 5

activate wind adavi


vnr _ inv =0

@3, 3 say 'Nr avion : ' get vnr _ inv

read

clear

set order to tag nr _ inv

if not seek ( vnr _ inv )

@4, 2 say 'Nu exista avion cu numarul '+str ( vnr _ inv ) color r*/w

read

else

vnume=nume

vtip=tip

vnr _ inv=nr _ inv

vctg _ 1 _ f=ctg _ 1 _ f

vctg _ 2 _ f=ctg _ 2 _ f

vctg _ 3 _ f=ctg _ 3 _ f

vctg _ 1 _ nf=ctg _ 1 _ nf

vctg _ 2 _ nf=ctg _ 2 _ nf

vctg _ 3 _ nf=ctg _ 3 _ nf


@1, 3 say 'Nume avion : ' get vnume default space ( 15 ) function'!' disable

@2, 3 say 'Tip : ' get vtip default space ( 15 ) function'!' disable

@3, 3 say 'Nr : ' get vnr _ inv defa 0 disable

@4, 3 say 'Locuri Ctg1 Ctg2Ctg3'

@5, 5 say 'Fumatori '

@6, 5 say 'Nefumatori '

@5, 15 get vctg _ 1 _ f defa 0 disable

@5, 26 get vctg _ 2 _ f defa 0 disable

@5, 39 get vctg _ 3 _ f defa 0 disable


@6, 15 get vctg _ 1 _ nf defa 0 disable

@6, 26 get vctg _ 2 _ nf defa 0 disable

@6, 39 get vctg _ 3 _ nf defa 0 disable


@8, 0 to 8, 60 double

@9, 8 get vbut defa 0 picture'@*T <Sterge' mess'Iesire cu stergere' valid vbSTERGav ( )

@9, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire fara stergere'

read


endif

deactivate wind adavi

use

clear

return


function vbSTERGav

sele 1

delete

pack

return


procedure afavi

use avioane

brow noedit nodelete noappend window afis color scheme 8

use

return


***PISTE

procedure adpiste

sele 1

use piste

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -40 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +12, INT ( ( SCOL ( ) -40 ) /2 ) +40 title'Adaugare pista';

float noclose shadow nominimize double color scheme 5


activate wind adavi

@1, 3 say 'Nr pista : ' get vnr default 0 valid vdnrpista ( vnr ) ;

error'Deja exista pista cu acest nr!'

@2, 3 say 'Aria :' get varia defa 0

@4, 3 get vluminat defa .f. function'*C Luminata'

@5, 3 get vdisponibil defa .f. function'*C Disponibila'


@8, 0 to 8, 40 double

@9, 8 get vbut defa 0 picture'@*T <Adauga' mess'Iesire cu salvare' valid vbadpista ( )

@9, 25 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire fara salvare'

read

deactivate wind adavi

use

clear

return


function vdnrpista

parameters vnr

sele 1

count for nr=vnr to vx

if vx>0

return .f.

else

return.t.

endif


procedure mopiste

sele 1

use piste

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -40 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +12, INT ( ( SCOL ( ) -40 ) /2 ) +40 title'Modificare pista';

float noclose shadow nominimize double color scheme 5

activate wind adavi

@3, 3 say 'Nr pista : ' get vnr default 0

read

clear

locate all for nr=vnr

if not found ( )

@3, 3 say 'Nu exista pista nr '+alltrim ( str ( vnr ) ) +' !' color r*/w

read

else

varia=aria

vluminat=luminat

vdisponibil=disponibil

@1, 3 say 'Nr pista : ' get vnr default 0 disable

@2, 3 say 'Aria :' get varia defa 0

@4, 3 get vluminat defa .f. function'*C Luminata'

@5, 3 get vdisponibil defa .f. function'*C Disponibila'


@8, 0 to 8, 40 double

@9, 8 get vbut defa 0 picture'@*T <Salvare' mess'Iesire cu salvare' valid vbmopista ( )

@9, 25 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire fara salvare'

read

endif

deactivate wind adavi

use

clear

return


procedure stpiste

sele 1

use piste

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -40 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +12, INT ( ( SCOL ( ) -40 ) /2 ) +40 title'Stergere pista';

float noclose shadow nominimize double color scheme 5

activate wind adavi

@3, 3 say 'Nr pista : ' get vnr default 0

read

clear

locate all for nr=vnr

if not found ( )

@3, 3 say 'Nu exista pista nr '+alltrim ( str ( vnr ) ) +' !' color r*/w

read

else

varia=aria

vluminat=luminat

vdisponibil=disponibil

@1, 3 say 'Nr pista : ' get vnr default 0 disable

@2, 3 say 'Aria :' get varia defa 0 disable

@4, 3 get vluminat defa .f. function'*C Luminata' disable

@5, 3 get vdisponibil defa .f. function'*C Disponibila' disable


@8, 0 to 8, 40 double

@9, 8 get vbut defa 0 picture'@*T <Stergere' mess'Iesire cu stergere' valid vbstpista ( )

@9, 25 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire fara stergere'

read

endif

deactivate wind adavi

use

clear

return


function vbstpista

sele 1

delete

pack

return


function vbadpista

appe blank

repl nr with vnr, aria with varia, luminat with vluminat, disponibil with vdisponibil

return


function vbmopista

sele 1

repl nr with vnr, aria with varia, luminat with vluminat, disponibil with vdisponibil

return


procedure afpiste

use piste

brow noedit nodelete noappend

use

return


**PLECARI

procedure adplecari

sele 3

use piste

sele 2

use avioane order tag nr _ inv

sele 1

use plecari

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +18, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Infiintare cursa noua';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Luni'

azile ( 2 ) ='Marti'

azile ( 3 ) ='Miercuri'

azile ( 4 ) ='Joi'

azile ( 5 ) ='Vineri'

azile ( 6 ) ='Sambata'

azile ( 7 ) ='Duminica'


activate wind adavi

@1, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999' valid vdnr _ c ( vnr _ cursa ) error'Deja exista o cursa cu acest numar!'

@2, 3 say 'Nr inventar: ' get vnr _ inv default 0 pict'9999999999' valid vdnr _ inv ( vnr _ inv ) error'Nu exista avion cu acest nr de inventar!'

@3, 3 say 'Statie plecare : ' get vsursa defa space ( 15 ) funct'!'

@4, 3 say 'Destinatie : ' get vdestinatie defa space ( 15 ) funct'!'

@6, 3 say 'Ziua : '

@5, 20 get vziua defa'Duminica' function'^' from azile

@8, 3 say 'Ora plecare: ' get vora _ plec defa 0 pict'99.99' valid vora _ plec>=0 and vora _ plec<24 error'Ora poate fi intre 0-23.30'

@9, 3 say 'Durata zbor: ' get vdurata _ zb defa 0 pict'99.99'

@10, 3 say 'Escale: ' get vescale defa space ( 40 ) funct'!S35' size 1, 30

@11, 3 say 'Nr pista : ' get vnr _ pista defa 0 pict'999999999' valid vdnr _ pista ( vnr _ pista ) error'Nu exista pista cu acest nr sau este indisponibila!'

@12, 3 say 'Pret la ctg III : ' get vpret _ ctg3 defa 0 pict'999999999'

@13, 3 say 'Diferenta pret : ' get vpr _ dif _ ctg defa 0 pict'999999999'

@15, 0 to 15, 60 double

@16, 15 get vbut defa 0 picture'@*T <Adauga' mess'Iesire cu salvarea datelor acestei curse' valid vbadpl ( )

@16, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara salvare'

read

deactivate wind adavi

close data

clear

return


function vdnr _ c

parameters pnr _ cursa

go top

count for nr _ cursa=pnr _ cursa to pnrc

if pnrc>0

return .f.

else

return .t.

endif


function vdnr _ inv

parameters nri

sele 2

if seek ( nri )

sele 1

return .t.

else

sele 1

return .f.

endif


function vdnr _ pista

parameters nrp

sele 3

count all for nr=nrp and disponibil=.t. to nrpr

if nrpr=0

sele 1

return .f.

else

sele 1

return .t.

endif


function vbadpl

sele 1

append blank

repl nr _ cursa with vnr _ cursa, nr _ inv with vnr _ inv, sursa with vsursa, ;

destinatie with vdestinatie, ziua with vziua, ora _ plec with vora _ plec, ;

durata _ zb with vdurata _ zb, escale with vescale, nr _ pista with vnr _ pista, ;

pret _ ctg3 with vpret _ ctg3, pr _ dif _ ctg with vpr _ dif _ ctg

return


procedure moplecari

sele 3

use piste

sele 2

use avioane order tag nr _ inv

sele 1

use plecari

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +18, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Modificare cursa';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Luni'

azile ( 2 ) ='Marti'

azile ( 3 ) ='Miercuri'

azile ( 4 ) ='Joi'

azile ( 5 ) ='Vineri'

azile ( 6 ) ='Sambata'

azile ( 7 ) ='Duminica'

activate wind adavi

@3, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999'

read

clear

locate all for nr _ cursa=vnr _ cursa

if not found ( )

@3, 3 say 'Nu exista cursa cu nr '+alltrim ( str ( vnr _ cursa ) ) color r*/w

read

else

vnr _ inv=nr _ inv

vsursa=sursa

vdestinatie=destinatie

vziua=ziua

vora _ plec=ora _ plec

vdurata _ zb=durata _ zb

vescale=escale

vnr _ pista=nr _ pista

vpret _ ctg3=pret _ ctg3

vpr _ dif _ ctg=pr _ dif _ ctg

@1, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999' disable

@2, 3 say 'Nr inventar: ' get vnr _ inv default 0 pict'9999999999' valid vdnr _ inv ( vnr _ inv ) error'Nu exista avion cu acest nr de inventar!'

@3, 3 say 'Statie plecare : ' get vsursa defa space ( 15 ) funct'!'

@4, 3 say 'Destinatie : ' get vdestinatie defa space ( 15 ) funct'!'

@6, 3 say 'Ziua : '

@5, 20 get vziua defa'Duminica' function'^' from azile

@8, 3 say 'Ora plecare: ' get vora _ plec defa 0 pict'99.99' valid vora _ plec>=0 and vora _ plec<24 error'Ora poate fi intre 0-23.30'

@9, 3 say 'Durata zbor: ' get vdurata _ zb defa 0 pict'99.99'

@10, 3 say 'Escale: ' get vescale defa space ( 40 ) funct'!S35' size 1, 30

@11, 3 say 'Nr pista : ' get vnr _ pista defa 0 pict'999999999' valid vdnr _ pista ( vnr _ pista ) error'Nu exista pista cu acest nr!'

@12, 3 say 'Pret la ctg III : ' get vpret _ ctg3 defa 0 pict'999999999'

@13, 3 say 'Diferenta pret : ' get vpr _ dif _ ctg defa 0 pict'999999999'

@15, 0 to 15, 60 double

@16, 15 get vbut defa 0 picture'@*T <Salvare' mess'Iesire cu salvare' valid vbmopl ( )

@16, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara salvare'

read

endif

deactivate wind adavi

close data

clear

return


function vbmopl

sele 1

repl nr _ cursa with vnr _ cursa, nr _ inv with vnr _ inv, sursa with vsursa, ;

destinatie with vdestinatie, ziua with vziua, ora _ plec with vora _ plec, ;

durata _ zb with vdurata _ zb, escale with vescale, nr _ pista with vnr _ pista, ;

pret _ ctg3 with vpret _ ctg3, pr _ dif _ ctg with vpr _ dif _ ctg

return


procedure stplecari

sele 3

use piste

sele 2

use avioane order tag nr _ inv

sele 1

use plecari

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +18, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Stergere cursa';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Luni'

azile ( 2 ) ='Marti'

azile ( 3 ) ='Miercuri'

azile ( 4 ) ='Joi'

azile ( 5 ) ='Vineri'

azile ( 6 ) ='Sambata'

azile ( 7 ) ='Duminica'

activate wind adavi

@3, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999'

read

clear

locate all for nr _ cursa=vnr _ cursa

if not found ( )

@3, 3 say 'Nu exista cursa cu nr '+alltrim ( str ( vnr _ cursa ) ) color r*/w

read

else

vnr _ inv=nr _ inv

vsursa=sursa

vdestinatie=destinatie

vziua=ziua

vora _ plec=ora _ plec

vdurata _ zb=durata _ zb

vescale=escale

vnr _ pista=nr _ pista

vpret _ ctg3=pret _ ctg3

vpr _ dif _ ctg=pr _ dif _ ctg

@1, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999' disable

@2, 3 say 'Nr inventar: ' get vnr _ inv default 0 pict'9999999999' disable

@3, 3 say 'Statie plecare : ' get vsursa defa space ( 15 ) funct'!' disable

@4, 3 say 'Destinatie : ' get vdestinatie defa space ( 15 ) funct'!' disable

@6, 3 say 'Ziua : '

@5, 20 get vziua defa'Duminica' function'^' from azile disable

@8, 3 say 'Ora plecare: ' get vora _ plec defa 0 pict'99.99' disable

@9, 3 say 'Durata zbor: ' get vdurata _ zb defa 0 pict'99.99' disable

@10, 3 say 'Escale: ' get vescale defa space ( 40 ) funct'!S35' size 1, 30 disable

@11, 3 say 'Nr pista : ' get vnr _ pista defa 0 pict'999999999' disable

@12, 3 say 'Pret la ctg III : ' get vpret _ ctg3 defa 0 pict'999999999' disable

@13, 3 say 'Diferenta pret : ' get vpr _ dif _ ctg defa 0 pict'999999999' disable

@15, 0 to 15, 60 double

@16, 15 get vbut defa 0 picture'@*T <Stergere' mess'Iesire cu stergere' valid vbstpl ( )

@16, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara stergere'

read

endif

deactivate wind adavi

close data

clear

return


function vbstpl

sele 1

delete

pack

return


procedure afplecari

use plecari

brow noedit nodelete noappend window afis color scheme 8

use

return


procedure cursespre

sele 1

use plecari

@15, 5 say 'Dati ceva din destinatie : ' get vdest default space ( 15 ) function'!'

read

clear

vdest=alltrim ( vdest )

brow noedit nodelete noappend for vdest$destinatie or vdest$escale window afis color scheme 8

use

return


*SOSIRI

procedure adsosiri

sele 3

use piste

sele 1

use sosiri

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +16, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Inregistrare sosire';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Luni'

azile ( 2 ) ='Marti'

azile ( 3 ) ='Miercuri'

azile ( 4 ) ='Joi'

azile ( 5 ) ='Vineri'

azile ( 6 ) ='Sambata'

azile ( 7 ) ='Duminica'


activate wind adavi

@1, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999';

valid vdcursa ( vnr _ cursa ) error'Deja exista cursa cu acest nr!'

@2, 3 say 'Nr inventar: ' get vnr _ inv default 0 pict'9999999999'

@3, 3 say 'Statie plecare : ' get vsursa defa space ( 15 ) funct'!'

@4, 3 say 'Destinatie : ' get vdestinatie defa space ( 15 ) funct'!'

@6, 3 say 'Ziua : '

@5, 20 get vziua defa'Duminica' function'^' from azile

@8, 3 say 'Ora sosire : ' get vora _ sosire defa 0 pict'99.99' valid vora _ sosire>=0 and vora _ sosire<24 error'Ora poate fi intre 0-23.30'

@9, 3 say 'Durata zbor: ' get vdurata _ zb defa 0 pict'99.99'

@10, 3 say 'Escale: ' get vescale defa space ( 40 ) funct'!S35' size 1, 30

@11, 3 say 'Nr pista : ' get vnr _ pista defa 0 pict'999999999' valid vdnr _ pista ( vnr _ pista ) error'Nu exista pista cu acest nr sau este indisponibila!'

@13, 0 to 13, 60 double

@14, 15 get vbut defa 0 picture'@*T <Adauga' mess'Iesire cu salvarea datelor acestei curse' valid vbadso ( )

@14, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara salvare'

read

deactivate wind adavi

close data

clear

return


function vdcursa

parameter vnr _ c

sele 1

count for nr _ cursa=vnr _ c to vx

if vx>0

return.f.

else

return.t.

endif


function vbadso

sele 1

append blank

repl nr _ cursa with vnr _ cursa, nr _ inv with vnr _ inv, sursa with vsursa, ;

destinatie with vdestinatie, ziua with vziua, ora _ sosire with vora _ sosire, ;

durata _ zb with vdurata _ zb, escale with vescale, nr _ pista with vnr _ pista

return


procedure mososiri

sele 3

use piste

sele 1

use sosiri

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +16, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Modificare sosire';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Luni'

azile ( 2 ) ='Marti'

azile ( 3 ) ='Miercuri'

azile ( 4 ) ='Joi'

azile ( 5 ) ='Vineri'

azile ( 6 ) ='Sambata'

azile ( 7 ) ='Duminica'

activate wind adavi

@3, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999'

read

clear

locate all for nr _ cursa=vnr _ cursa

if not found ( )

@3, 3 say 'Nu exista cursa cu nr '+alltrim ( str ( vnr _ cursa ) ) color r*/w

read

else

vnr _ inv=nr _ inv

vsursa=sursa

vdestinatie=destinatie

vziua=ziua

vora _ sosire=ora _ sosire

vdurata _ zb=durata _ zb

vescale=escale

vnr _ pista=nr _ pista


@1, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999' disable

@2, 3 say 'Nr inventar: ' get vnr _ inv default 0 pict'9999999999'

@3, 3 say 'Statie plecare : ' get vsursa defa space ( 15 ) funct'!'

@4, 3 say 'Destinatie : ' get vdestinatie defa space ( 15 ) funct'!'

@6, 3 say 'Ziua : '

@5, 20 get vziua defa'Duminica' function'^' from azile

@8, 3 say 'Ora sosire : ' get vora _ sosire defa 0 pict'99.99' valid vora _ sosire>=0 and vora _ sosire<24 error'Ora poate fi intre 0-23.30'

@9, 3 say 'Durata zbor: ' get vdurata _ zb defa 0 pict'99.99'

@10, 3 say 'Escale: ' get vescale defa space ( 40 ) funct'!S35' size 1, 30

@11, 3 say 'Nr pista : ' get vnr _ pista defa 0 pict'999999999' valid vdnr _ pista ( vnr _ pista ) error'Nu exista pista cu acest nr!'

@13, 0 to 13, 60 double

@14, 15 get vbut defa 0 picture'@*T <Salvare' mess'Iesire cu salvare modificari' valid vbmoso ( )

@14, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara salvare'

read

endif

deactivate wind adavi

close data

clear

return


function vbmoso

sele 1

repl nr _ cursa with vnr _ cursa, nr _ inv with vnr _ inv, sursa with vsursa, ;

destinatie with vdestinatie, ziua with vziua, ora _ sosire with vora _ sosire, ;

durata _ zb with vdurata _ zb, escale with vescale, nr _ pista with vnr _ pista

return


procedure stsosiri

sele 3

use piste

sele 1

use sosiri

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +16, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Stergere sosire';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Luni'

azile ( 2 ) ='Marti'

azile ( 3 ) ='Miercuri'

azile ( 4 ) ='Joi'

azile ( 5 ) ='Vineri'

azile ( 6 ) ='Sambata'

azile ( 7 ) ='Duminica'

activate wind adavi

@3, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999'

read

clear

locate all for nr _ cursa=vnr _ cursa

if not found ( )

@3, 3 say 'Nu exista cursa cu nr '+alltrim ( str ( vnr _ cursa ) ) color r*/w

read

else

vnr _ inv=nr _ inv

vsursa=sursa

vdestinatie=destinatie

vziua=ziua

vora _ sosire=ora _ sosire

vdurata _ zb=durata _ zb

vescale=escale

vnr _ pista=nr _ pista


@1, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999' disable

@2, 3 say 'Nr inventar: ' get vnr _ inv default 0 pict'9999999999' disable

@3, 3 say 'Statie plecare : ' get vsursa defa space ( 15 ) funct'!' disable

@4, 3 say 'Destinatie : ' get vdestinatie defa space ( 15 ) funct'!' disable

@6, 3 say 'Ziua : '

@5, 20 get vziua defa'Duminica' function'^' from azile disable

@8, 3 say 'Ora sosire : ' get vora _ sosire defa 0 pict'99.99' disable

@9, 3 say 'Durata zbor: ' get vdurata _ zb defa 0 pict'99.99' disable

@10, 3 say 'Escale: ' get vescale defa space ( 40 ) funct'!S35' size 1, 30 disable

@11, 3 say 'Nr pista : ' get vnr _ pista defa 0 pict'999999999' disable

@13, 0 to 13, 60 double

@14, 15 get vbut defa 0 picture'@*T <Stergere' mess'Iesire cu stergere' valid vbstso ( )

@14, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara stergere'

read

endif

deactivate wind adavi

close data

clear

return


function vbstso

sele 1

delete

pack

return


procedure afsosiri

use sosiri

brow noedit nodelete noappend window afis color scheme 8

use

return


*BILETE

procedure adbilete

sele 2

use avioane order tag nr _ inv

sele 3

use plecari &&order tag nr _ cursa

sele 1

use bilete

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +15, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Inregistrare bilet/rezervare';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Duminica'

azile ( 2 ) ='Luni'

azile ( 3 ) ='Marti'

azile ( 4 ) ='Miercuri'

azile ( 5 ) ='Joi'

azile ( 6 ) ='Vineri'

azile ( 7 ) ='Sambata'

vnr _ inv=0

calc max ( nr _ bilet ) to vnr _ bilet

vnr _ bilet=vnr _ bilet+1

vpret _ ctg3=0

vpr _ dif _ ctg=0

vpret=0


activate wind adavi

@1, 3 say 'Data : ' get vdata defa date ( ) function'k'

@2, 3 say 'Destinatie : ' get vdestinatie defa space ( 15 ) funct'!'

@3, 3 say 'Categoria : ' get vctg defa 0 pict'9' range 1, 3 error'Dati 1, 2, 3'

@3, 30 get vfumator defa .f. funct'*C Fumator'

@4, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999' valid vdnr _ cursa ( vnr _ cursa, azile ( dow ( vdata ) ) , vdestinatie ) error'Nu exista cursa cu aceste carcateristici!'

@5, 3 say 'Nr bilet : ' get vnr _ bilet pict'@k 9999999999' valid vdnr _ bilet ( vnr _ inv, vnr _ bilet ) error'Deja exista vandut bilet cu acest nr la aceasta cursa!'

@6, 3 say 'Nume : ' get vnume default space ( 15 ) funct'!'

@7, 3 say 'Prenume : ' get vprenume defa space ( 15 ) funct'!'

@8, 3 say 'Buletin : ' get vbuletin defa space ( 15 ) funct'!'

@9, 3 get vrezervare defa .f. funct'*C Rezervare'

@10, 5 say 'Pret : ' get vpret disable


@12, 0 to 12, 60 double

@13, 8 get vbut defa 0 picture'@*T <Adauga' mess'Iesire cu salvarea datelor acestei curse' valid vbadbi ( )

@13, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara salvare'

read

deactivate wind adavi

close data

clear

return


function vdnr _ cursa

param pnr _ cursa, pziua, pdest

sele 3

locate all for nr _ cursa=pnr _ cursa and destinatie=pdest and ziua=pziua

if not found ( )

sele 1

*wait pziua+', '+pdest

return .f.

else

vnr _ inv=nr _ inv

vpret _ ctg3=pret _ ctg3

vpr _ dif _ ctg=pr _ dif _ ctg

sele 1

calc max ( nr _ bilet ) to vnr _ bilet for nr _ cursa=vnr _ cursa

vnr _ bilet=vnr _ bilet+1

show gets

return .t.

endif


function vdnr _ bilet

param pnr _ inv, pnr _ bilet

sele 2

if seek ( pnr _ inv )

v='ctg _ '+str ( vctg, 1 ) +' _ '

if vfumator

v=v+'f'

else

v=v+'nf'

endif

nr _ T _ locuri=&v

sele bilete

go top

count for nr _ cursa=vnr _ cursa and destinatie=vdestinatie and data=vdata and fumator=vfumator and ctg=vctg to nr _ b _ date

if nr _ b _ date<nr _ T _ locuri

*Calcul pret bilet functie de Categoria aleasa

if vctg=2

vpret=vpret _ ctg3+vpr _ dif _ ctg

else

if vctg=1

vpret=vpret _ ctg3+2*vpr _ dif _ ctg

else

vpret=vpret _ ctg3

endif

endif

show gets

else

wait 'Nu mai sunt locuri la aceasta categorie!' wind

endif


go top

count for nr _ cursa=vnr _ cursa and destinatie=vdestinatie and data=vdata and nr _ bilet=pnr _ bilet to vmax

if vmax>0

return .f.

else

return .t.

endif

endif


function vbadbi

sele bilete

append blank

replace data with vdata, nume with vnume, prenume with vprenume, ;

destinatie with vdestinatie, nr _ cursa with vnr _ cursa, fumator with vfumator, ;

ctg with vctg, pret with vpret, nr _ bilet with vnr _ bilet, buletin with vbuletin, ;

rezervare with vrezervare

return


procedure stbilete

sele 1

use bilete

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +15, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Anulare bilet';

float noclose shadow nominimize double color scheme 5

activate window adavi

@ 5, 5 say 'Nr bilet : ' get vnr defa 0 pict'9999999999'

read

clear

locate all for nr _ bilet=vnr

if found ( )

delete

pack

else

@5, 5 say 'Nu exista bilet cu nr '+alltr ( str ( vnr ) ) +' !' color r*/w

read

endif

deactivate window adavi

use

return


procedure afbilete

use bilete

brow noedit nodelete noappend window afis color scheme 8

use

return


procedure tot _ incas

sele 1

@15, 5 say 'Data pt care doriti sit. incasari : ' get vdata defa date ( ) function'k'

read

clear


use bilete

sum pret to tot for data=vdata

wait window 'Total inacasari pe data '+dtoc ( vdata ) +' '+alltrim ( str ( tot ) )

use

return


procedure loc _ libere

dimension azile ( 7 )

azile ( 1 ) ='Duminica'

azile ( 2 ) ='Luni'

azile ( 3 ) ='Marti'

azile ( 4 ) ='Miercuri'

azile ( 5 ) ='Joi'

azile ( 6 ) ='Vineri'

azile ( 7 ) ='Sambata'


@15, 5 say 'Data pt care doriti sit. locuri libere : ' get vdata defa date ( ) function'k' valid vdata>=date ( ) ;

error'Data tb. sa fie >= astazi!'

read

@ 16, 5 say azile ( dow ( vdata ) ) color r/w

read

clear


sele 1

use loc _ lib

zap

append from plecari for ziua=azile ( dow ( vdata ) )

go top && azile ( 1 ) ='Duminica'


*preluare nr _ bilete vandute pe categorii

sele 2

use bilete

sele 1

do while not eof ( 1 )

sele 1

nrc=a.nr _ cursa

sele 2

count for nrc=b.nr _ cursa and data=vdata and ctg=1 and fumator=.f. to vctg _ 1 _ nf

go top

count for nrc=b.nr _ cursa and data=vdata and ctg=1 and fumator=.t. to vctg _ 1 _ f

go top

count for nrc=b.nr _ cursa and data=vdata and ctg=2 and fumator=.f. to vctg _ 2 _ nf

go top

count for nrc=b.nr _ cursa and data=vdata and ctg=2 and fumator=.t. to vctg _ 2 _ f

go top

count for nrc=b.nr _ cursa and data=vdata and ctg=3 and fumator=.f. to vctg _ 3 _ nf

go top

count for nrc=b.nr _ cursa and data=vdata and ctg=3 and fumator=.t. to vctg _ 3 _ f

sele 1

replace ctg _ 1 _ f with vctg _ 1 _ f, ctg _ 2 _ f with vctg _ 2 _ f, ctg _ 3 _ f with vctg _ 3 _ f, ;

ctg _ 1 _ nf with vctg _ 1 _ nf, ctg _ 2 _ nf with vctg _ 2 _ nf, ctg _ 3 _ nf with vctg _ 3 _ nf

skip

enddo

close data

sele 1

use loc _ lib

sele 2

use avioane order tag nr _ inv &&bd. copil indexata dupa campul comun

sele 1

set relation to nr _ inv into b

report format loc _ lib to file loc _ lib.txt noconsole

modi comm loc _ lib.txt window afis noedit

close data

return


*INFORMATII

procedure info

sele 1

use info

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +11, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Informatii generale';

float noclose shadow nominimize double color scheme 5

activate window adavi

@ 1, 1 say 'Nume aeroport : ' get n _ aeroport

@ 2, 1 say 'Adresa : ' get adresa size 1, 20

@ 3, 1 say 'Localitate : ' get localitate

@ 4, 1 say 'Pret unitar bagaje : ' get pret _ unit size 1, 20

@ 6, 0 to 6, 60 double

@ 8, 25 get c function '* Iesire' default 0

read

use

deacti wind adavi

return


*Bagaje

procedure adbagaje

sele 1

use bagaje

sele 2

use bilete

sele 3

use plecari

sele 4

use info

sele 1

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +15, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Adaugare bagaj';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Duminica'

azile ( 2 ) ='Luni'

azile ( 3 ) ='Marti'

azile ( 4 ) ='Miercuri'

azile ( 5 ) ='Joi'

azile ( 6 ) ='Vineri'

azile ( 7 ) ='Sambata'


vnume=space ( 10 )

vprenume=space ( 15 )


activate wind adavi

@1, 3 say 'Data plecarii : ' get vdata defa date ( ) function'k' valid vdata>=date ( )

@2, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999' valid vbgnr _ c ( vnr _ cursa, azile ( dow ( vdata ) ) ) error'Nu exista cursa cu aceste caracteristici!'

@3, 3 say 'Nr bilet : ' get vnr _ bilet pict'@k 9999999999' valid vbgnr _ bilet ( vnr _ bilet, vnr _ cursa ) error'Nu exista bilet vandut cu acest nr la aceasta cursa!' defa 0

@4, 3 say 'Greutate : ' get vgreutate default 0 pict'9999999999.99' valid vbggrp ( vgreutate )

@5, 3 say 'Pret: ' get vpret disable defa 0


@12, 0 to 12, 60 double

@13, 8 get vbut defa 0 picture'@*T <Adauga' mess'Iesire cu adaugare bagaj' valid vbadbg ( )

@13, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara salvare'

read

deactivate wind adavi

close data

clear

return


function vbgnr _ c

parameters pnr _ cursa, pziua

sele 3

go top

locate all for ( nr _ cursa=pnr _ cursa ) and ( alltrim ( ziua ) ==pziua )

if found ( )

sele 1

return .t.

else

sele 1

return .f.

endif


function vbgnr _ bilet

param pnr _ bilet, pnr _ cursa

sele 2

go top

locate all for nr _ cursa=pnr _ cursa and nr _ bilet=pnr _ bilet

if found ( )

@7, 3 say alltrim ( nume ) +' '+alltrim ( prenume )

vnume=nume

vprenume=prenume

sele 1

go top

locate all for nr _ cursa=pnr _ cursa and nr _ bilet=pnr _ bilet

if found ( )

wait wind 'Deja ati depus bagaj! Mergeti pe Modificare/Stergere!'

endif

return .t.

else

@7, 0 clear to 7, 35

sele 1

return .f.

endif


function vbggrp &&calcul pret

param pgreutate

sele 4

go 1

vpret=pgreutate*pret _ unit

show gets

sele 1

return


function vbadbg

sele 1

append blank

replace nr _ cursa with vnr _ cursa, nr _ bilet with vnr _ bilet, ;

greutate with vgreutate, data with vdata, nume with vnume, ;

prenume with vprenume, pret with vpret

return


procedure afbagaje

use bagaje

brow noedit nodelete noappend window afis color scheme 8

use

return


procedure mobagaje

sele 1

use bagaje

sele 2

use bilete

sele 3

use plecari

sele 4

use info

sele 1

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +15, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Modificare bagaj';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Duminica'

azile ( 2 ) ='Luni'

azile ( 3 ) ='Marti'

azile ( 4 ) ='Miercuri'

azile ( 5 ) ='Joi'

azile ( 6 ) ='Vineri'

azile ( 7 ) ='Sambata'


vnume=space ( 10 )

vprenume=space ( 15 )


activate wind adavi


@3, 3 say 'Nr bilet : ' get vnr _ bilet pict'@k 9999999999' default 0

read

clear

locate all for nr _ bilet=vnr _ bilet

if not found ( )

@3, 1 say 'Nu exista bagaj depus pt acest bilet!Mergeti pe Adaugare!' color r*/w

read

else

vdata=data

vnr _ cursa=nr _ cursa

vgreutate=greutate

vpret=pret


@1, 3 say 'Data plecarii : ' get vdata defa date ( ) function'k' valid vdata>=date ( ) error'Data plecarii tb. sa fie >= data curenta!'

@2, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999' valid vbgnr _ c ( vnr _ cursa, azile ( dow ( vdata ) ) ) error'Nu exista cursa cu aceste caracteristici!'

@3, 3 say 'Nr bilet : ' get vnr _ bilet pict'@k 9999999999' valid vbgmonr _ bilet ( vnr _ bilet, vnr _ cursa ) error'Nu exista bilet vandut cu acest nr la aceasta cursa!' defa 0

@4, 3 say 'Greutate : ' get vgreutate default 0 pict'9999999999.99' valid vbgmogrp ( vgreutate )

@5, 3 say 'Pret: ' get vpret disable defa 0


@12, 0 to 12, 60 double

@13, 8 get vbut defa 0 picture'@*T <Salvare' mess'Iesire cu salvare modificari' valid vbmobg ( )

@13, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara salvare'

read

endif

deactivate wind adavi

close data

clear

return


function vbgmonr _ bilet

param pnr _ bilet, pnr _ cursa

sele 2

go top

locate all for nr _ cursa=pnr _ cursa and nr _ bilet=pnr _ bilet

if found ( )

@7, 3 say alltrim ( nume ) +' '+alltrim ( prenume )

vnume=nume

vprenume=prenume

sele 1

return .t.

else

@7, 0 clear to 7, 35

sele 1

return .f.

endif


function vbmobg

sele 1

replace nr _ cursa with vnr _ cursa, nr _ bilet with vnr _ bilet, ;

greutate with greutate+vgreutate, data with vdata, nume with vnume, ;

prenume with vprenume, pret with vpret

return


function vbgmogrp &&calcul pret modificat

param pgreutate

sele 4

go 1

vpretmo=pgreutate*pret _ unit

vpret=vpret+vpretmo

show gets

sele 1

return


procedure stbagaje

sele 1

use bagaje

sele 2

use bilete

sele 3

use plecari

sele 4

use info

sele 1

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +15, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Stergere bagaj';

float noclose shadow nominimize double color scheme 5


dimension azile ( 7 )

azile ( 1 ) ='Duminica'

azile ( 2 ) ='Luni'

azile ( 3 ) ='Marti'

azile ( 4 ) ='Miercuri'

azile ( 5 ) ='Joi'

azile ( 6 ) ='Vineri'

azile ( 7 ) ='Sambata'


vnume=space ( 10 )

vprenume=space ( 15 )


activate wind adavi


@3, 3 say 'Nr bilet : ' get vnr _ bilet pict'@k 9999999999' defa 0

read

clear

locate all for nr _ bilet=vnr _ bilet

if not found ( )

@3, 1 say 'Nu exista bagaj depus pt acest bilet!Mergeti pe Adaugare!' color r*/w

read

else

vdata=data

vnr _ cursa=nr _ cursa

vgreutate=greutate

vpret=pret


@1, 3 say 'Data plecarii : ' get vdata defa date ( ) function'k' disable

@2, 3 say 'Nr cursa : ' get vnr _ cursa default 0 pict'9999999999' disable

@3, 3 say 'Nr bilet : ' get vnr _ bilet pict'@k 9999999999' disable

@4, 3 say 'Greutate : ' get vgreutate default 0 pict'9999999999.99' disable

@5, 3 say 'Pret: ' get vpret disable defa 0


@12, 0 to 12, 60 double

@13, 8 get vbut defa 0 picture'@*T <Stergere' mess'Iesire cu stergere' valid vbstbg ( )

@13, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu fara stergere'

read

endif

deactivate wind adavi

close data

clear

return


function vbstbg

delete

pack

return


procedure totbagaj

sele 1

use bagaje order tag nr _ cursa

total on nr _ cursa fields greutate, pret to tempbg

use tempbg

brow noedit nodelete noappend window afis fields nr _ cursa, ;

greutate :h='TotGreutate', pret :h='TotValoare' color scheme 8

use

return


*Reclamatii

procedure adreclam

sele 1

use reclam

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +11, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Adaugare reclamatie';

float noclose shadow nominimize double color scheme 5

activate wind adavi


append blank

replace data with date ( )


@1, 3 say 'Data depunerii : ' get data function'k'

@2, 3 say 'Nume : ' get nume func'!A'

@3, 3 say 'Prenume : ' get prenume func'!A'

@4, 3 say 'Motiv: ' get motiv


@6, 0 to 6, 60 double

@8, 25 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu'

read

deactivate wind adavi

close data

clear

return


procedure afreclam

use reclam

brow noedit nodelete noappend window afis color scheme 8

use

return


procedure streclam

sele 1

use reclam

define window adavi ;

from INT ( ( SROW ( ) -17 ) /2 ) , INT ( ( SCOL ( ) -60 ) /2 ) ;

to INT ( ( SROW ( ) -17 ) /2 ) +11, INT ( ( SCOL ( ) -60 ) /2 ) +60 title'Stergere reclamatie';

float noclose shadow nominimize double color scheme 5

activate wind adavi

@2, 3 say 'Nume : ' get vnume func'!A' defa space ( 15 )

@3, 3 say 'Prenume : ' get vprenume func'!A' defa space ( 15 )

read

clear

go top

locate all for nume=vnume and prenume=vprenume

if not found ( )

@2, 3 say 'Nu exista reclamatie pe acest nume!' colo r*/w

read

else

@1, 3 say 'Data depunerii : ' get data function'k' disable

@2, 3 say 'Nume : ' get nume func'!A' disable

@3, 3 say 'Prenume : ' get prenume func'!A' disable

@4, 3 say 'Motiv: ' get motiv disable


@6, 0 to 6, 60 double

@8, 10 get vbut defa 0 picture'@*T <Stergere' mess 'Iesire cu stergere' valid vbstreclam ( )

@8, 35 get vbut defa 0 picture'@*T <Iesire' mess 'Iesire in meniu'

read

endif

deactivate wind adavi

close data

clear

return


function vbstreclam

sele 1

delete

pack

return


BIBLIOGRAFIE



1.     Gabriel si Mihai DIMA, “FOXPRO”, Editura TEORA, 1998.

2.     Gabriel si Mihai DIMA, “FOXPRO. MENIURI”, Editura TEORA, 1997.

3.     Mariana PANTIRU, “Informatica economica. Baze de date. Proiect de manual pentru clasele XI-XII”, Editura Petrion, Bucuresti, 1996

4.Gabriel si Mihai DIMA, “Programarea calculatoarelor. Proiect de manual pentru clasa a XI-a, alternativa B”, Editura TEORA, 1998.