Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice



Acasa » referate » informatica » baze de date
Evidenta a clientilor dar si a serviciilor in Visual Fox pro 9 - Lucrare de atestat

Evidenta a clientilor dar si a serviciilor in Visual Fox pro 9 - Lucrare de atestat



 

 

 

 

 

 

 

“Colegiul National Cantemir Voda”

 

 

 

Lucrare de atestat la informatica in visual fox pro 9


 

 

 

 

Scopul acestui proiect

 

     Principalul scop al acestui proiect este de a ajuta institutiile de tip laborator de a gestiuna si organiza activitatile lor creeind o baza de date unde respectivele firme pot tine o evidenta a clientilor dar si a serviciilor oferite iar programul este usor de utilizat chiar si pentru utilizatorii cu o cunoasterea minima in utilizarea  calculatorului.

      Programul creeeat de mine este de o dificultate medie, fiind prezente operatii simple precum stergerea, adaugarea si salvarea, modificarea si listarea unor campuri dar si unele mai putin simple precum extragerea datei de nastere si sexul din codul numeric personal al clientilor si alte operatii de conditionare a corectitudinii cnp-ului.

 

      Pentru creearea si finalizarea acestuia am utilizat programul visual fox pro 9.0, fiind introdus in programa scolara in clasa a 12-a.


Structura

 

In acest program datele sunt salvate in doua tabele.

       

        Prima tabela ‘Clienti’: Precum ii spune si numele, aceasta tabela salveaza datle clientilor laboratorului pentru a aplica diversele operatii asupra lor. Aceasta tabela dispune de unsprezece campuri.

  1. ‘nume’. Salveaza nuele persoanei si este de tip caracter.
  2. ‘prenume’. Salveaza prenumele persoanei  tot de tip caracter.
  3. ‘cnp’ de tip caracter. Salveaza codul numeric personal al persoanei si fiind de tip caracter programul este dotat cu o serie de isntructiuni care sa afiseze mesaj de eroare in cazul introducerii gresite a codului cum ar fi sa includa caractere nonnumerice sau sa nu orespunda unei date de nastere valabila sau a unui sex valabil.
  4. ‘sex’ memoreaza sexul persoanei respective. Pentru masculin este memorata valoarea ‘M’ iar pentru feminin ‘F’.Datele sunt preluate din campul ‘cnp’
  5. ‘datan’ retine data nasterii fiecarei persoane, fiind de tip date. Datele sunt iarasi preluate din campul ‘cnp’.
  6. ‘adresa’ de tip caracter. Memoreaza adresa clientului.
  7. ‘telefon’ memoreaza numarul de telefon al clientului. Din cauza aparitiei cifrei zero in stanga unor numere precum cele din retelele de telefonie mobila, campul ‘telefon’ este de tip caracter, cele de tip numeric neputand retine un numar cu cifra zero in stanga fara a-l modifica stergand acea cifra.
  8. ‘analize’ retine totalitatea analizelor efectuate de persoana respectiva. Ea este de tip caracter.
  9. ‘spec’ retine specificatii ale clientilor ce sunt necesar a fi memorate.tip caracter.
  10. ‘plata’ retine totalul bani pe care clientul i-a platit  fiind de tip numeric cu doua zecimale.
  11. ‘dator’ este campul in care se retin datoriile unui client avand in vedere ca acestea pot aparea in nefericitele cazuri de urgenta sau alte cazuri personale. Campul este de tip numeric cu doua zeimale.

A doua tabela ‘Analize’: Retine serviciile laboratorului adica analizele pe care le efectueaza.este format din patru entitati:

1.      ‘cod’: de tip numeric.Retin un numar unic pentru fiecare inregistrare pentru a diferentia analizele precum este campul ‘cnp’ in tabela ‘clienti’.

2.      ‘nume’ retine numele analizei si este de tip caracter.

3.      ‘pret’ retine pretul efectuarii acestei analize fiind evident de tip numeric cu doua ecimale.

4.      ‘spec’ retine specificatiile unei analize cum ar fi durata efectuarii acesteia si unele nevoie de care dispune pentru efectoarea ei cu succes. Tip caracter.

Tabela ‘clienti’ prezinta o legatura de tip 1-n cu cea de ‘analize’ fiecare client prezentand o analiza sau mai multe analize efectuate.


Mod de operare

 

La activarea programului se va deschide fereastra ‘Gestionare Laborator’ unde se vor desfasura dealtfel toate operatiile ce vor urma. Se pot observa cele trei meniuri principale: ‘Clienti’, ‘Analize’ si ‘Iesire’.

Primul meniu de optiuni:

Activand optiunea ‘Clienti’ ,prin click stanga,  un meniu de tip popup se va deschide continand urmatoarele campuri: ‘Adaugare client’, ‘Gasire client’, ‘Modificare client’, ‘Stergere client’, ‘Lista rauplatnici’ si ‘lista clienti’

1.La activarea primei optiuni a meniului secundar ‘introducere client’, tot prin click stanga, o lista de campuri libere se vor afisa pentru a introduce datele persoanei adaugate. Dupa ce au fost introduse datele ele sunt automat salvate in tabela clienti.

Atentie!: Campurile nume, prenume si cnp sunt imperative; Daca ele nu sunt introduse tabela nu va salva clientul.

2. A doua optiune consta in gasirea unui client dupa numele si prenumele acestuia. Alegand aceasta optine doua campuri, nume si prenume, se vor activa.Dupa introducerea datelor automat se vor sterge acele doua campuri si se va afisa in fereastra datele persoanei gasite prin motorul de cautare creat. In cazul in care numele si prenumele nu au fost gasite se va afisa mesajul ‘Nu exista’.

3.’Modificare client’.Precum optiunea ‘Gasire’, programul va afisa doua campuri libere unde utilizatorul introduce numele si prenumele. O data gasit clientul respectiv apare in fereastra campuri precum cele din Adaugare.Dupa introducerea datelor in acele campuri se salveaza automat datele clientului in locul celor vechi in tabela ‘clienti’.

Atentie: Introducerea eronata a codului numeric personal duce la aparita unui mesaj de eroare precum cel de mai jos.

4. Optiunea ‘stergere client’ este cea mai simpla din punctul de vedere al operarii. O data activata optiunea aceasta programul va solicita numele si prenumele persoanei pe care urmaza sa o stearga. Stergerea sa face automat fara aparitia unui mesaj de confirmare.

5. Lista clientilor rauplatnici: La activarea acestei optiuni programul va procesa tabela ‘clienti’ parcurgand-o si afisand numele, prenumele, cnp-ul, telefonul si valoarea datoriei doar la acelor persoane al caror camp ‘dator’ este diferit de zero.


6. Lista clienti: aceasta optiune listeaza pur si simplu clientii afisand numele, prenumele, cnp-ul si telefonul fiecaruia.

Al doilea meniu de optiuni ’analiza’:

Selectand acest meniu un meniu secundar de tip popup se va activa afisand urmatoarele optiuni: ‘Adaugare analiza’, ‘Gasire analia’, ‘Modificare analiza’, ‘Stergere analiza’ ‘Lista analize’.

1. La alegerea primei optiuni se va afisa o serie de campuri in care utilizatorul va introduce datele.Datele vor fi salvate automat in tabela ‘Analize’

Atentie!: Campurile cod si nume sunt imperative.Daca aceste doua nu sunt introduse programul nu va salva analiza in tabela ‘Analize’.

2. Optiunea gasire analiza este similara cu cea de gasire client. La activarea acesteia se vor afisa un camp unde utilizatorul introduce numele analizei. Automat se vor afisa campurile analizei gasite precum in imaginea de mai jos.

3. La alegerea ‘Modificare Analiza’ Se vor activa un camp unde utilizatorul introduce numele analizei. Dupa aceea se vor inchide cele afisate si programul va afisa alte patru campuri ce reprezinta campurile analizei ce urmeaza sa fie modificata.

Atentie!: La a doua serie de date este necesar introducerea codului si numele analizei. In caz contrar datele nu vor fi salvate in tabela analize.

4. La stergerea analizelor programul afiseaza un camp unde utilizatorul introduce numele analizei pe care doreste sa o stearga. Analiza se sterge automat din tabela analize fara afisarea unui mesaj de confirmare.

5. Alegand ultima optiune programul va lista analizele afisand la fiecare codul, numele analizei si pretul acesteia.



Al treilea meniu principal ‘Iesire’:

Acest meniu nu contine submeniuri de tip popup si alegerea lui activeaza procesul de inchidere a programului.


Instructiunile

 

CLEAR

DEFINE WINDOW fereastra FROM 0,0 TO 55,100 TITLE 'Gestionare laborator' CLOSE FILL FILE 'C:Documents and SettingsAntoineMy DocumentsVisual FoxPro Projectseffect1.gif'

ACTIVATE WINDOW fereastra

DEFINE MENU meniu

DEFINE PAD pad1 OF meniu PROMPT 'Clienti'

DEFINE PAD pad2 OF meniu PROMPT 'Analiza'

DEFINE PAD pad3 OF meniu prompt 'Iesire'

DEFINE POPUP pop1

DEFINE BAR 1 OF pop1 PROMPT 'introducere client'

DEFINE BAR 2 OF pop1 PROMPT 'Gasire client'

DEFINE BAR 3 OF pop1 PROMPT 'Modificare client'

DEFINE BAR 4 OF pop1 PROMPT 'Stergere client'

DEFINE BAR 5 OF pop1 PROMPT 'Lista rauplatnici'

DEFINE BAR 6 OF pop1 PROMPT 'Lista clienti'

DEFINE POPUP pop2

DEFINE BAR 1 OF pop2 PROMPT 'Introduce analiza'

DEFINE BAR 2 OF pop2 PROMPT 'Gasire analiza'

DEFINE BAR 3 OF pop2 PROMPT 'Modificare analiza'

DEFINE BAR 4 OF pop2 PROMPT 'Stergere analiza'

DEFINE BAR 5 OF pop2 PROMPT 'Listare analize'

ON SELECTION PAD pad1 OF meniu ACTIVATE popup POP1 at 1,0

ON SELECTION PAD pad2 OF meniu ACTIVATE POPUP pop2 at 1,9

ON SELECTION pad pad3 of meniu do proc3

ON SELECTION BAR 1 OF pop1 do proc11

ON SELECTION BAR 2 OF pop1 do proc12

ON SELECTION BAR 3 OF pop1 do proc13

ON SELECTION BAR 4 OF pop1 do proc14

on selection bar 5 of pop1 do proc15

ON SELECTION BAR 6 OF pop1 do proc16

ON SELECTION BAR 1 OF pop2 do proc21

ON SELECTION BAR 2 OF pop2 do proc22

ON SELECTION BAR 3 OF pop2 do proc23

ON SELECTION BAR 4 OF pop2 do proc24

ON SELECTION BAR 5 OF pop2 do proc25

ACTIVATE MENU meniu

DEACTIVATE MENU meniu

CLOSE ALL

PROCEDURE proc11

CLEAR

CLEAR

USE clienti

nume1=SPACE(50)

prenume1=SPACE(50)

cnp1=SPACE(13)

adresa1=SPACE(70)

telefon1=SPACE(20)

analize1=SPACE(70)

spec1=SPACE(70)

sex1=SPACE(2)

plata1=0.00

dator1=0.00

@10,2 say 'nume= ' get nume1

@12,2 say 'prenume= ' get prenume1

@14,2 say 'CNP= ' get cnp1

@16,2 say 'Adresa= ' get adresa1

@18,2 say 'Telefon= ' get telefon1

@20,2 say 'Analize efectuate= ' get analize1

@22,2 say'Specificatii= ' get spec1

@24,2 say 'Plata(RON)= ' get plata1

@26,2 say 'Datorie(RON)= ' get dator1

read

SET CENTURY on

datan1=SPACE(6)

x=SPACE(20)

d=SPACE(20)

m=SPACE(20)

y=SPACE(20)

d=SUBSTR(ALLTRIM(cnp1),6,2)

m=SUBSTR(ALLTRIM(cnp1),4,2)

y=SUBSTR(alltrim(cnp1),2,2)

IF VAL(y)<=20

y='20'+y

ELSE

y='19'+y

ENDIF

x=m+'/'+d+'/'+y

datan1=CTOD(x)

IF LEFT(ALLTRIM(cnp1),1)=='1'

sex1='M'

ELSE

sex1='F'

endif

IF nume1!=' ' AND prenume1!=' '

IF cnp1==TRANSFORM(VAL(cnp1)) AND VAL(SUBSTR(ALLTRIM(cnp1),6,2))>=1 AND VAL(SUBSTR(ALLTRIM(cnp1),6,2))<=31 AND VAL(SUBSTR(ALLTRIM(cnp1),4,2))>=1 AND VAL(SUBSTR(ALLTRIM(cnp1),4,2))<=12 AND (LEFT((ALLTRIM(cnp1)),1)=='1' OR LEFT((ALLTRIM(cnp1)),1)=='2')

APPEND BLANK

replace nume WITH nume1

replace prenume WITH prenume1

replace cnp WITH cnp1

replace datan WITH datan1

replace adresa WITH adresa1

replace telefon WITH telefon1

replace analize WITH analize1

replace spec WITH spec1

replace sex WITH sex1

replace plata WITH plata1

replace dator WITH dator1

CLEAR

ELSE

clear

@10,2 say ' CNP GRESIT! '

endif

else

clear

endif

return

PROCEDURE proc12

CLEAR

use clienti

nume1=SPACE(50)

prenume1=SPACE(50)

@10,2 say 'introduce nume' get nume1

@12,2 say 'introduce prenume' get prenume1

read

clear

IF nume1!=' ' AND prenume1!=' '

LOCATE FOR ALLTRIM(UPPER(nume))==ALLTRIM(UPPER(nume1)) AND ALLTRIM(UPPER(prenume))==ALLTRIM(UPPER(prenume1))

if FOUND()

@10,2 say 'Nume= '

@10,8 say ALLTRIM(nume)

@12,2 say 'Prenume= '

@12,11 say ALLTRIM(prenume)

@14,2 say 'Cnp= '

@14,7 say ALLTRIM(cnp)

@16,2 say 'Data nasterii= '

@16,17 say datan

@18,2 say 'Sex= '



@18,6 say ALLTRIM(sex)

@20,2 say 'Adresa= '

@20,10 say ALLTRIM(adresa)

@22,2 say 'Telefon= '

@22,11 say ALLTRIM(telefon)

@24,2 say 'Analize efectuate: '



@24,21 say ALLTRIM(analize)

@26,2 say 'Specificatii: '

@26,16 say ALLTRIM(spec)

@28,2 say 'Plata(RON)= '

@28,14 say plata

@30,2 say 'Datorie= '

@30,11 say dator

ELSE

@10,2 say 'Nu exista'

ENDif

ELSE

CLEAR

endif

RETURN

PROCEDURE proc13

CLEAR

USE clienti

numex=SPACE(50)

prenumex=SPACE(50)

@10,2 say 'Nume= ' get numex

@12,2 say 'Prenume= ' get prenumex

read

clear

IF numex!=' ' AND prenumex!=' '

LOCATE FOR ALLTRIM(UPPER(nume))==ALLTRIM(UPPER(numex)) AND ALLTRIM(UPPER(prenume))==ALLTRIM(UPPER(prenumex))

IF FOUND()

nume1=SPACE(50)

prenume1=SPACE(50)

cnp1=SPACE(13)

adresa1=SPACE(254)

telefon1=SPACE(20)

analize1=SPACE(90)

spec1=SPACE(70)

plata1=0.00

dator1=0.00

@10,2 say 'Nume= ' get nume1

@12,2 say 'Prenume= ' get prenume1

@14,2 say 'Cnp= ' get cnp1

@16,2 say 'Adresa= ' get Adresa1

@18,2 say 'Telefon= ' get telefon1

@20,2 say 'Analize efectuate= ' get analize1

@22,2 say 'Specificatii ' get spec1

@24,2 say 'Plata(RON)= ' get plata1

@26,2 say 'Datorie= ' get dator1

READ

IF nume1!=' ' AND prenume1!=' '

sex1=SPACE(2)

IF ALLTRIM(LEFT(cnp1,1))=='1'

sex1='M'

ELSE

sex1='F'

endif

datan1=SPACE(6)

d=SPACE(20)

m=SPACE(20)

y=SPACE(20)

d=SUBSTR(cnp1,6,2)

m=SUBSTR(cnp1,4,2)

y=SUBSTR(cnp1,2,2)

IF VAL(y)<=20

y='20'+y

ELSE

y='19'+y

ENDIF

x=m+'/'+d+'/'+y

datan1=CTOD(x)

IF cnp1==TRANSFORM(VAL(cnp1)) AND VAL(SUBSTR(ALLTRIM(cnp1),6,2))>=1 AND VAL(SUBSTR(ALLTRIM(cnp1),6,2))<=31 AND VAL(SUBSTR(ALLTRIM(cnp1),4,2))>=1 AND VAL(SUBSTR(ALLTRIM(cnp1),4,2))<=12 AND (LEFT((ALLTRIM(cnp1)),1)=='1' OR LEFT((ALLTRIM(cnp1)),1)=='2')

replace nume WITH nume1

replace prenume WITH prenume1

replace cnp WITH cnp1

replace adresa WITH adresa1

replace telefon with telefon1

replace analize WITH analize1

replace spec WITH spec1

replace datan WITH datan1

replace sex WITH sex1

replace plata WITH plata1

replace dator WITH dator1

CLEAR

ELSE

clear

@10,2 say ' CNP GRESIT! '

endif

ELSE

CLEAR

endif

ELSE

@10,2 say 'Nu exista'

ENDIF

ELSE

cLEAR

ENDIF

RETURN

PROCEDURE proc14

CLEAR

USE clienti

nume1=SPACE(50)

prenume1=SPACE(50)

@10,2 say 'Nume= ' get nume1

@12,2 say 'prenume= ' get prenume1

read

IF nume1!=' ' AND prenume1!=' '

LOCATE FOR ALLTRIM(UPPER(nume))==ALLTRIM(UPPER(nume1)) AND ALLTRIM(UPPER(prenume))==ALLTRIM(UPPER(prenume1))

IF FOUND()

DELETE

pack

clear

ELSE

clear

@10,2 say 'Nu exista'

endif

ELSE

CLEAR

endif

RETURN

PROCEDURE proc15

CLEAR

USE clienti

@10,2 say 'Nume          Prenume           CNP             Telefon         datorie(RON)'        

@11,2 say '____________________________________________________________________________'

i=1

j=13

k=0

FOR i=1 TO RECCOUNT()

GO i

IF dator!=0

k=k+1

@j,2 say ALLTRIM(nume)

@j,16 say ALLTRIM(prenume)

@j,34 say ALLTRIM(cnp)

@j,50 say ALLTRIM(telefon)

@j,66 say dator

j=j+2

else

endif

endfor

IF k==0

@10,2 say  'Nu exista clienti rauplatnici'

ELSE

endif

return

PROCEDURE proc16

CLEAR

USE clienti



@10,2 say 'Nume          Prenume           CNP             Telefon         '        

@11,2 say '________________________________________________________________'

i=1

j=13

FOR i=1 TO RECCOUNT()

GO i

@j,2 say ALLTRIM(nume)

@j,16 say ALLTRIM(prenume)

@j,34 say ALLTRIM(cnp)

@j,50 say ALLTRIM(telefon)

j=j+2

ENDFOR

return

PROCEDURE proc21

CLEAR

USE analize

cod1=0

nume1=SPACE(50)

pret1=0.00

spec1=SPACE(70)

@8,2 say 'Cod= ' get cod1

@10,2 say 'nume analiza= ' get nume1

@12,2 say 'pret analiza= ' get pret1

@14,2 say 'specificatii: ' get spec1

read

IF cod1!=0 AND nume1!=' '

APPEND blank

replace cod WITH cod1

replace nume WITH nume1

replace pret WITH pret1

replace spec WITH spec1

clear

ELSE

CLEAR

endif

return

PROCEDURE proc22

CLEAR

use analize

nume1=SPACE(50)

@8,2 say 'Nume analiza= ' get nume1

read

clear

IF nume1!=' '

LOCATE FOR ALLTRIM(UPPER(nume))==ALLTRIM(UPPER(nume1))

if FOUND()

@10,2 say 'Cod= '

@10,8 say cod

@12,2 say 'Analize= '

@12,11 say ALLTRIM(nume)

@14,2 say 'Pret analiza= '

@14,16 say pret

@16,2 say 'Specificatii= '

@16,16 say ALLTRIM(spec)

ELSE

@10,2 say 'Nu exista'

ENDif

ELSE

CLEAR

endif

RETURN

PROCEDURE proc23

CLEAR

USE analize

numex=SPACE(50)

@8,2 say 'Nume analiza= ' get numex

READ

clear

IF numex!=' '

LOCATE FOR ALLTRIM(UPPER(nume))==ALLTRIM(UPPER(numex))

IF FOUND()

Cod1=0

nume1=SPACE(50)

pret1=0.00

spec1=SPACE(254)

@8,2 say 'Cod=' get cod1

@10,2 say 'Nume analiza= ' get nume1

@12,2 say 'Pret= ' get pret1

@14,2 say 'Specificatii= ' get spec1

READ

CLEAR

replace cod WITH cod1

replace nume WITH nume1

replace pret WITH pret1

replace spec WITH spec1

ELSE

@8,2 say 'Nu exista'

ENDIF

ELSE

CLEAR

ENDIF

RETURN

PROCEDURE proc24

CLEAR

USE analize

nume1=SPACE(50)

@8,2 say 'Nume analiza= ' get nume1

READ

IF nume1!=' '

LOCATE FOR ALLTRIM(UPPER(nume))==ALLTRIM(UPPER(nume1))

IF FOUND()

DELETE

pack

clear

ELSE

clear

@8,2 say 'Nu exista'

ENDIF

ELSE

CLEAR

endif

RETURN

PROCEDURE proc25

CLEAR

USE analize

@8,2 say 'Cod     Analiza                                         Pret(RON)  '

@9,2 say '___________________________________________________________________'

j=11

FOR i=1 TO RECCOUNT()

GO i

@j,2 say cod

@j,9 say ALLTRIM(nume)

@j,57 say pret

j=j+2

ENDFOR

return

PROCEDURE proc3

clear

deactivate WINDOW fereastra


Bibliografie

 

 

 

·        “Initiere in FOXPRO” (avizata MEC), Producator: Arves

·        “Visual FoxPro 9.0 Professional”, Producator: Microsoft








Politica de confidentialitate

.com Copyright © 2019 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.


Proiecte

vezi toate proiectele
 PROIECT DE LECTIE Clasa: I Matematica - Adunarea si scaderea numerelor naturale de la 0 la 30, fara trecere peste ordin
 Proiect didactic Grupa: mijlocie - Consolidarea mersului in echilibru pe o linie trasata pe sol (30 cm)
 Redresor electronic automat pentru incarcarea bateriilor auto - proiect atestat
 Proiectarea instalatiilor de alimentare ale motoarelor cu aprindere prin scanteie cu carburator

Lucrari de diploma

vezi toate lucrarile de diploma
 Lucrare de diploma - eritrodermia psoriazica
 ACTIUNEA DIPLOMATICA A ROMANIEI LA CONFERINTA DE PACE DE LA PARIS (1946-1947)
 Proiect diploma Finante Banci - REALIZAREA INSPECTIEI FISCALE LA O SOCIETATE COMERCIALA
 Lucrare de diploma managementul firmei “diagnosticul si evaluarea firmei”

Lucrari licenta

vezi toate lucrarile de licenta
 CONTABILITATEA FINANCIARA TESTE GRILA LICENTA
 LUCRARE DE LICENTA - FACULTATEA DE EDUCATIE FIZICA SI SPORT
 Lucrare de licenta stiintele naturii siecologie - 'surse de poluare a clisurii dunarii”
 LUCRARE DE LICENTA - Gestiunea stocurilor de materii prime si materiale

Lucrari doctorat

vezi toate lucrarile de doctorat
 Doctorat - Modele dinamice de simulare ale accidentelor rutiere produse intre autovehicul si pieton
 Diagnosticul ecografic in unele afectiuni gastroduodenale si hepatobiliare la animalele de companie - TEZA DE DOCTORAT
 LUCRARE DE DOCTORAT ZOOTEHNIE - AMELIORARE - Estimarea valorii economice a caracterelor din obiectivul ameliorarii intr-o linie materna de porcine

Proiecte de atestat

vezi toate proiectele de atestat
 Proiect atestat informatica- Tehnician operator tehnica de calcul - Unitati de Stocare
 LUCRARE DE ATESTAT ELECTRONIST - TEHNICA DE CALCUL - Placa de baza
 ATESTAT PROFESIONAL LA INFORMATICA - programare FoxPro for Windows
 Proiect atestat tehnician in turism - carnaval la venezia






Termeni si conditii
Contact
Creeaza si tu