Sunteți pe pagina 1din 20

Asimine, Andra Elena

ACADEMIA DE STUDII ECONOMICE


Contabilitate, Audit si Informatica de Gestiune


Gestiunea activitatii agentiei de turism
DREAM TRAVEL
Student: Radu Elena Georgiana

Bucuresti
2013
2


Prezentarea bazei de date


Agentia de turism DreamTravel isi propune crearea unei baze de date privind
gestionarea activitatii sale. Sistemul informatic va trebui sa realizeze evidenta clientilor, a
contractelor cu clientii, evidenta serviciilor oferite de societate si a angajatilor.
Clientii sunt identificati prin CNP client, nume, localitate si numar de telefon. Fiecare
client poate alege ca destinatie de vacanta unul dintre serviciile agentiei de turism: oferta
interna, oferta in strainatate sau oferta speciala. Fiecare oferta include o destinatie, din Romnia
sau din strainatate, in functie de tipul serviciului. Fiecare oferta are un tarif prestabilit.
Destinatia reprezinta orasul vizitat si tara.
Clientii beneficiaza si de o reducere in functie de categoria din care fac parte: studentii
beneficiaza de o reducere de 20%, persoanele angajate beneficiaza de 10% reducere, iar
pensionarii de 30%. Contractele cu clientii cuprind numarul contractului, data la care a fost
intocmit contractul si statusul (contract activ sau contract finalizat). Se pot incheia mai multe
contracte cu acelasi client.
Angajatii sunt identificati prin CNP, nume, adresa, numar de telefon si data angajarii.
Acestia se ocupa de prezentarea ofertelor, inregistrarea clintilor noi, gestionarea portofoliului de
clienti existenti si se asigura ca platile au fost facute.
Baza de date cuprinde si un centralizator al platilor. Astfel, fiecare client trebuie sa
plateasca agentiei valoarea totala a contractului, ce este formata din tariful prestabilit in oferta
minus reducere plus penalitati (in caz de intrziere).
Penalitatile se stabilesc in functie de numarul de zile scurs de la data scadentei platii
pana la data curenta.



















3


Diagrama cazurilor de utilizare


Pentru aceasta diagrama am folosit urmatoarele interactiuni intre actorii client si angajat:

1. Angajatul cauta in baza de date pentru a verifica daca un client este nou sau a mai avut alte
contracte. Daca acesta nu este inregistrat, atunci se va trece la inregistrarea sa.
2. Dupa ce a fost inregistrat acesta va analiza ofertele prezentate de angajat. Clientul poate
refuza sau accepta o oferta. Daca accepta oferta, atunci va intocmi un nou contract.
3. In cazul in care clientul refuza ofertele, se va renunta la adaugarea clientului in sistem.
4. Angajatului i se repartizeaza contracte pe care sa le gestioneze.
5. Cand intervine scadenta platii contractului, angajatul verifica daca banii au fost virati. In caz
contrar, acesta contacteaza clientul.
6. Angajatul poate adauga oferte in gestiune.


4

<<extend>>{Client inexistent}



<<include>>


<<extend>>

<<extend>>





<<include>>



Client
<<include>>
<<include>>




<<include>>


<<include>>


Solicita
oferta
Analizeaz
a oferta
Refuza
oferta
Accept
a oferta
Semneaza
contract
Primest
e
factura
Plateste
factura
Plateste
penalita
ti
Inregistreaza
client nou
Prezinta
oferta

Supervizeaza
contractul
Emite
factura
Verifica
daca
factura a
fost platita
Penalizeaza
pentru
termen
depasit
Angajat
<<include>

<<include>

<<include>

5

Diagrama claselor


1. Un contract client apartine unui singur client;
2. Un client poate avea mai multe contracte;
3. Un serviciu poate aparea pe mai multe contracte;
4. Un contract client poate avea un singur serviciu;
5. Un client poate apartine unei singure categorii;
6. O categorie poate fi atribuita mai multor clienti;
7. Un serviciu apartine mai multor oferte;
8. O oferta poate avea doar un serviciu;
9. O oferta poate avea o singura destinatie;
10. O destinatie poate aparea pe mai multe oferte;
11. O plata se face de catre un client;
12. O penalizare i se da unui client;
13. O plata se face pentru o penalizare;
14. Un angajat gestioneaza mai multe contracte;
15. Un contract este gestionat de un angajat.

Restrictii:

1. CategorieClient=Student or CategorieClient=Angajat or CategorieClient=Pensionar
2. TipServiciu=Oferta interna or TipServiciu=Oferta strainatate or TipServiciu=Oferta speciala
3. DataIncepereSejur<DataSfrsitSejur
4. Reducere=0.1 or Reducere=0.2 or Reducere=0.3
5. DataContract=Today()
6. DataScadenta=Day(DataContract)+14

6

Solicita
1 * 1 *

Apartine
0*

Detine
1

0..*

Efectueaza
1
0*

Apartine
1 1*
1
1*
Se plateste
Apartine
1

0*

Geastioneaza 1

0*









CLIENTI
- CNPClient String
- NumeClient String
- Localitate String
- NrTelefon String
+ Adauga()
+ Salveaza()
+ Sterge()
OFERTA
- CodOferta String
- DataInceputSejur Date
- DataSfarsitSejur Date
- NrLocuri Integer
- Tarif Currency
+ Adauga()
+ Salveaza()
+ Sterge()
+ Valabilitate()
+ LocuriDisponibile()
Double
SERVICII
- CodServiciu String
- TipServiciu String
+ Adauga()
+ Salveaza()
+ Sterge()
DESTINATII
- CodDestinatie Integer
- Oras String
- Tara Integer
+ Adauga()
+ Salveaza()
+ Sterge()
CATEGORIE CLIENT
- CodCategorie Integer
- Categorie String
- Reducere Single
+ Adauga()
+ Salveaza()
+ Sterge()
ANGAJATI
- CNPAngajat Integer
- NumeAngajat String
- AdresaAngajat String
- NrTelAngajat String
- DataAngajarii Date
+ Adauga()
+ Salveaza()
+ Sterge()
+ Vechime() integer
PENALIZARE
- CodPenalizare
- SumaPenalizare Integer
+ Adauga()
+ Salveaza()
+ Sterge()
+ NrZileIntarziere() Integer
+ TotalPenalizare() Curency
+ TotalPlati() Curency
CONTRACTE
- NrContract Integer
- DataContract Date
- Status String
+ Adauga()
+ Salveaza()
+ Sterge()
+ NrContracte() integer
PLATI
- IDPlata String
- SumaPlatita Integer
+ Adauga()
+ Salveaza()
+ Sterge()
+DataScadenta() date
DataInceput>=DataSfarsit CNPClient as not null
CNPAngajat as not null
DataContract=Today()
Categorie=Student or Pensionar or Angajat
Reducere=0.1 or 0.2
or 0.3
7


Diagramele de activitati


Diagrama 1 Adauga client nou

In prima parte se va proceda la autentificarea clientului. Angajatul verifica daca clientul a mai avut
alte contracte cu agentia prin introducerea datelor acestuia.
Daca respectivele informatii nu exista in baza de date, se va trece la inregistrarea clientului. Se
realizeaza salvarea datelor intoduse de catre utilizator in cadrul obiectului nou creat, iar apoi acesta
este adaugat in cadrul colectiei clienti.
In cazul in care clientul deja exista, se anuleaza operatia, iar variabilele sunt resetate.

Diagrama 2 Adauga contract nou

Angajatul prezinta ofertele clientului. In momentul in care clientul accepta oferta si exista locuri
disponibile, angajatul genereaza un contract nou.
Daca locurile pentru acea ofera sunt indisponibile, se va afisa un mesaj cu acest text, iar angajatul
va prezenta o alta oferta clientului.
8
























Cancel
































Declarare variabile
ConfirmareDate: Boolean
pClient: Client
Introducere date
pClient=NewClient
pClient=Salveaza(CNP, Nume, Localitate, NrTelefon)
ExistaClient(CNP)
ColClient.Adauga(pClient)
pClient=Nothing
ConfirmareDate=False
ConfirmareDate=True
False
True
9


Introducere numar contract
pContract=NewContract
pContract=Salveaza(CNP, NrContract, DataContract, Status)
Oferta.LocuriDisponibile>0
colContract.Adauga(pContract)
DA
NU
MesajLocuri Indisponibile
10


Diagramele de secvente



Diagrama 1 Formular pentru adaugare client nou

Aceasta diagrama descrie adaugarea unui client nou de catre un angajat. Angajatul verifica daca
exista clientul respectiv in baza de date.
In cazul in care acesta nu se regaseste, angajatul deschide un formular nou de adaugare clienti. In
formular se vor introduce datele clientului.

Diagrama 2 Contract nou

Aceasta diagrama descrie adaugarea unui contract. Dupa ce se adauga noul client se vor introduce
datele pentru noul contract, vor fi confirmate, dupa care aceste date vor fi incarcate in colectia de
contracte. La sfarsit, angajatul va iesi din formularul de adaugare contracte.

11

1.Introducere date
1.1:2: pClient=NewClient
1.2: pClient.Salveaza(CNP, Nume, Localitate, NumarTelefon)



















































Angajat
:FrmClient Client ColClient
loop
[<=ColClient Count
alt
[ColClient.Item(i).CNP=pClient.CNP]
1.3: Exista=TRUE
1.4: Exit FOR
alt
Exista=TRUE
1.5: ColClient.Adauga(pClient)
2: Termina
12

1.1:2: pContract=Salveaza(CNP, NrContract, DataContract, Status)
1.Introducere nr contract
1.2:pContract=NewContract
[if Oferta.LocuriDisponibile>0]
1.3:ColContract=Adauga(pContract)
2: Termina



















































Angajat
:FrmContract Contract ColContract
alt
13


Modelul relational


CLIENTI (CNPClient, NumeClient, Localitate, NrTelefonClient, CodCategorie, NrContract)
CONTRACTE (NrContractClient, DataContractClient, Status, CodOferta)
CATEGORIE_CLIENTI (CodCategorie, Categorie, Reducere)
SERVICII (CodServiciu, TipServiciu)
OFERTE (CodPachet, DataIncepereSejur, DataSfrsitSejur, NrLocuri, Tarif, CodDestinatie,
CodServiciu)
DESTINATII (CodDestinatie, Oras, Tara)
ANGAJATI (CNPAngajat, NumeAngajat, AdresaAngajat, NrTelefonAngajat, DataAngajarii)
PLATI (IDPlata, SumaPlatita, CodPenalizare, CNPClient)
PENALIZARE (CodPenalizare, SumaPenalizare)

14

CLIENTI
Public Class Clienti
Private NumeClient As String
Private Localitate As String
Private NrTelefonClient As String

Public Property NumeClient() as String
Get
NumeClient=pNumeClient
End Get
Set(ByVal value as string)
If value is nothing then
MsgBox (Nume eronat)
Else pNumeClient=value
End if
End Set
End Property
Public Property Localitate() as string
Get
Localitate =p Localitate
End Get
Set(ByVal value as string)
p Localitate =value
End Set
End Property
Public Property NrTelefonClient() as string
Get
NrTelefonClient =p NrTelefonClient
End Get
Set(ByVal value as string)
p NrTelefonClient =value
End Set
End Property

Public sub Adauga()
End sub
Public sub Salveaza()
End sub
Public sub Sterge()
End sub
End Clas

SERVICII
Public Class Servicii
Private TipServiciu As String

Public Property TipServiciu() as String
Get
TipServiciu =p TipServiciu
End Get
Set(ByVal value as string)
15

p TipServiciu=value
End Set
End Property
Public sub Adauga()
End sub
Public sub Salveaza()
End sub
Public sub Sterge()
End sub
End Class

DESTINATII
Public Class Destinatii
Private Oras As String
Private Tara As String

Public Property Oras() as String
Get
Oras =pOras
End Get
Set(ByVal value as string)
p Oras=value
End Set
End Property
Public Property Tara() as String
Get
Tara =p Tara
End Get
Set(ByVal value as string)
p Tara =value
End Set
End Property

Public sub Adauga()
End sub
Public sub Salveaza()
End sub
Public sub Sterge()
End sub
End Class

OFERTE
Public Class Oferte
Private DataIncepereSejur As String
Private DataSfarsitSejur As String
Private NrLocuri as Integer
Private Tarif as Currency

Public Property DataIncepereSejur() as Date
Get
DataIncepereSejur =pDataIncepereSejur
16

End Get
Set(ByVal value as date)
If DataIncepereSejur<Today then
MsgBox (DataIncepereSejur trebuie sa fie posterioara datei curente)
Else pDataIncepereSejur=value
End If
End Set
End Property
Public Property DataSfarsitSejur () as Date
Get
DataSfarsitSejur =p DataSfarsitSejur
End Get
Set(ByVal value as date)
If DataSfarsitSejur <DataIncepereSejur then
MsgBox (Data sfarsitului de sejur trebuie sa fie posterioara datei inceperii sejurului)
Else p DataSfarsitSejur=value
End If
End Set
End Property
Public Property NrLocuri() as String
Get
NrLocuri =p NrLocuri
End Get
Set(ByVal value as string)
NrLocuri =value
End Set
End Property
Public Property Tarif() as Currency
Get
Tarif =p Tarif
End Get
Set(ByVal value as string)
If Tarif <=0 then
MsgBox (Tariful trebuie sa aiba o valoare pozitiva)
Else p Tarif =value
End Set
End Property

Public Function Valabilitate(DataIncepereSejur date, DataSfarsitSejur date) as Double
Valabilitate= DataIncepereSejur - DataSfarsitSejur
End function
Public Function LocuriDisponibile() as Double
End function
Public sub Adauga()
End sub
Public sub Salveaza()
End sub
Public sub Sterge()
End sub
End Class

17

CATEGORIE CLIENTI
Public Class Categorie Clienti
Private Categorie As String
Private Reducere As Single

Public Property Categorie() as String
Get
Categorie=p Categorie
End Get
Set(ByVal value as string)
If pCategorie=Pensionar or pCategorie=Angajat or pCategorie=Student
then
pCategorie=value
Else MsgBox (Categorie eronata selectati din cele afisate)
End If
End Set
End Property
Public Property Reducere() as Single
Get
Reducere =p Reducere
End Get
Set(ByVal value as string)
If pReducere =0.1 or pReducere =0.2 or pReducere =0.3 then
pReducere =value
Else MsgBox (Reducere eronata selectati din cele afisate)
End If
End Set
End Property

Public sub Adauga()
End sub
Public sub Salveaza()
End sub
Public sub Sterge()
End sub
End Class

CONTRACTE
Public Class Contracte
Private DataContract As Date
Private Status As String

Public Property DataContract() as Date
Get
DataContract =p DataContract
End Get
Set(ByVal value as date)
If DataContract <Today() then
MsgBox (Data contractului trebuie sa fie posterioara datei curente)
Else p DataContract =value
End If
18

End Set
End Property
Public Property Status() as String
Get
Status =p Status
End Get
Set(ByVal value as string)
Status =value
End Set
End Property

Public Function NrContracte() as Integer
End Function
Public sub Adauga()
End sub
Public sub Salveaza()
End sub
Public sub Sterge()
End sub
End Class

ANGAJATI
Public Class Angajati
Private NumeAngajat As String
Private Adresa As String
Private NrTelefonAngajat As String
Private DataAngajare As Date

Public Property NumeAngajat() as String
Get
NumeAngajat=pNumeAngajat
End Get
Set(ByVal value as string)
If value is nothing then
MsgBox (Nume eronat)
Else pNumeAngajat=value
End if
End Set
End Property
Public Property Adresa () as string
Get
Adresa=pAdresa
End Get
Set(ByVal value as string)
pAdresa=value
End Set
End Property

Public Property NrTelefonAngajat() as string
Get
NrTelefonAngajat =p NrTelefonAngajat
19

End Get
Set(ByVal value as string)
p NrTelefonAngajat =value
End Set
End Property
Public Property DataAngajare() as Date
Get
DataAngajare =p DataAngajare
End Get
Set(ByVal value as date)
If DataAngajare <Today then
MsgBox (Data angajarii trebuie sa fie posterioara datei curente)
Else p DataAngajare =value
End Set
End Property

Public Function Vechime(DataAngajare date) as Integer
Vechime=Today()-DataAngajare
End Function
Public sub Adauga()
End sub
Public sub Salveaza()
End sub
Public sub Sterge()
End sub
End Class

PLATI
Public Class Plati
Private SumaPlatita As Integer

Public Property SumaPlatita () as Integer
Get
SumaPlatita =p SumaPlatita
End Get
Set(ByVal value as integer)
pSumaPlatita =value
End Set
End Property

Public Function DataScadenta(DataContract Date) as Date
DataScadenta= Day(DataContract)+14
End Function
Public sub Adauga()
End sub
Public sub Salveaza()
End sub
Public sub Sterge()
End sub
End Class

20

PENALIZARE
Private SumaPenalizare As Integer

Public Property SumaPenalizare () as Integer
Get
SumaPenalizare =p SumaPenalizare
End Get
Set(ByVal value as integer)
p SumaPenalizare =value
End Set
End Property

Public Function NrZileIntarziere(DataContract date) as integer
NrZileIntarziere =Today()-DataContract
End Function
Public Function TotalPenalizare(NrZileIntarziere integer, SumaPenalizare currency) as currency
TotalPenalizare= NrZileIntarziere* SumaPenalizare
End Function
Public Function TotalPlati(Tarif as currency, Reducere as single, TotalPenalizare as currency)
as currency
TotalPlati= Tarif - Reducere + TotalPenalizare
End Function
Public sub Adauga()
End sub
Public sub Salveaza()
End sub
Public sub Sterge()
End sub
End Class

S-ar putea să vă placă și