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 |
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.
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.
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.
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.