Documente Academic
Documente Profesional
Documente Cultură
Mai 2011
I. Structurarea cerintelor functionale ale aplicatiei
* Abonatii pot cere informatii despre diferite carti si pot cere imprumutarea unei carti, pot cere
prelungirea termenului de returnare cu 5 zile.
Sistemul trebuie sa pastreze evidenta abonatilor, a cartilor imprumutate de fiecare abonat si alte
informatii.
Un abonat poate sa imprumute maxim 3 carti,perioada de imprumut este de 10 zile; daca un
abonat nu restituie cartea in acest interval si nu solicita prelungirea imprumutului, se percep
penalitati de 1leu/zi pt zilele peste termen.
II. Prezentarea arhitecturii aplicaţiei
Pentru procesul ales, principalele cazuri de utilizare sunt: gestiune cititori, gestiune
imprumuturi, gestiune penalizari.
În Fig.1.1. este descrisă diagrama cazurilor de utilizare, care cuprinde principalele cazuri de
utilizare enumerate mai sus şi legă tura acestora cu actorii.
În Fig.1.2. este evidenţiată diagrama cazurilor de utilizare care conţine relaţiile de
incluziune şi extensie între cazurile de utilizare.
Gestiune Cititori
Gestiune
Imprumuturi
Cititor Bibliotecar
Gestiune penalizari
Fig.1.2. Diagrama cazurilor de utilizare detaliata
«extends»
Cerere inscriere Adauga Cititor
Primeste cerere
«uses»
imprumut
Cerere imprumut
Cititor «extends»
{Nr.Carti<3 AND Penalizari=0}
«extends»
«extends»
{DataCurenta<DataReturnare}
Efectueaza
prelungire
«uses»
Solicita prelungire Primeste cerere
prelungire
Construirea diagramei de clase. Obligatoriu, ea va contine relatii de derivare (mostenire)
intre clase, toate cele trei tipuri de clasa (entitati, servicii (control) si interfată utilizator), clase
de asociere.
Pentru a descrie aspectele structurale ale procesului de management al bibliotecii, am
realizat diagrama claselor ce prezinta in detaliu fiecare clasa (atributele si operatiile
specifice fiecarei clase si multiplicitatea dintre clase).
CARTE
IMPRUMUT
-CotaCarte : String
-NrFisaImp : String
-Titlu : String
CITITOR -DataImp : Date
-Autori : String
-DataRestituire : Date contine
-NrLegitimatie : String -Editura : String
-NumeCititor : String -DataPrelungire : Date 1 1..* -AnAparitie : Date
-PrenumeCititor : String +Adauga() -ISBN : String
-CNP : String 0..*
+Sterge() -NrExemplare : Integer
-Adresa : String +AfiseazaCarte() : Object
+AdaugaCarte()
-Telefon : Long
1 0..*
+Adauga()
include
+Sterge()
+Modifica()
+AfisareImprumuturi() : String
ImprumutPenalizat
1..1 -NrExemIntarziate : Integer Se refera la
* -NrZileIntarziere : Integer
achita
+ValoarePenalizare()
1..* *
0..*
PENALIZARE
-NumarPenalizare : Integer CarteImprumutata 1..*
-DataPlPenalizare : Date -NrExemplareImp : Integer
-StarePenAchitata : Boolean 1..* +NrExemplareDisponibile() : Integer
-StarePenNeachitata : Boolean
+AfiseazaStarePen() : Boolean
+AdaugaPenalizare() : Object
+Salveaza()
+Sterge()
+TotalPenalizare() : Double
+AfisCititor() : String
+TotalPlatit() : Double
Construirea diagramelor de activitati pentru doua operatiuni ale unor clase.
Am realizat diagrama de activitati pentru operatiunea TotalPenalizare din clasa Penalizare
pentru a calcula totalul penalizarilor pe care le are un cititor de platit.
pImprumutPenalizat:ImprumutPenalizat
Declara variabila
TotalPenalizare=TotalPenalizare+pImprumutPenalizat.ValoarePenalizare
FALSE
Am realizat diagrama de activitati pentru operatiunea AfiseazaStarePen din clasa
Penalizare pentru a evidentia daca o penalizare aplicata unui cititor din diferite motive a
fost achitata sau nu de acesta.
Penalizare.DataPlPenalizare<>Null Penalizare.DataPlPenalizare=Null
+ pCititor: Cititor
1: IntroducereDate()
[Else]
6: pCititor=Nothing
7: Close()
Am realizat diagrama de secvente pentru operatiunea TotalPenalizare- ce calculeaza toate
penalizarile pe care le are un cititor- din cadrul clasei Penalizare.
+pImprumutPenalizat: ImprumutPenalizat
Penalizare : ImprumutPenalizat
Cititor Imprumuturi
Bibliotecar
2:Cont valid
5:Inregistrare imprumut
6:Inregistrare prelungire
Construirea diagramei de stare pentru un obiect .In diagrama se vor include evenimentele
declansatoare, actiunile si conditiile de tranzitie.
Diagrama starilor de tranzitie este utilizata pentru a prezenta starile prin trec trec diferite tipuri
de obiecte, precum si evenimentele care determina tranzitiile de la o stare la alta.
Fig.8.Diagrama de stare pentru Penalizare
Introducere date
Achitare in curs
TotalPlatit<
Cand(btnValidare=False)/Renunta
TotalPenali
zare
TotalPlatit=TotalPenalizare
III. Modelul relational al aplicatiei
CITITOR( IDCititor,NrLegitimatie,NumeCititor,PrenumeCititor,CNP,Adresa,Telefon)
IMPRUMUT(IDImprumut, NrFisaImp, DataRestituire, DataPrelungire,IDCititor)
CARTE( IDCarte, CotaCarte, Titlu, Autori, Editura, AnAparitie, ISBN, NrExemplare)
CarteImprumutata(ID, NrExemplareImp, IDCarte,IDImprumut)
PENALIZARE(IDPenalizare,NumarPenalizare,DataPlPenalizare,StarePenAchitata,StarePenNeachit
ata,IDImprumut)
ImprumutPenalizat(ID, NrExemIntarziate, NrZileIntarziere,IDImprumut,IDPenalizare)
Property NrLegitimatie()
Get
Return _NrLegitimatie
End Get
Set(ByVal value)
_NrLegitimatie = value
End Set
End Property
Property NumeCititor()
Get
Return _NumeCititor
End Get
Set(ByVal value)
_NumeCititor = value
End Set
End Property
Property PrenumeCititor()
Get
Return _PrenumeCititor
End Get
Set(ByVal value)
_PrenumeCititor = value
End Set
End Property
Property CNP()
Get
Return _CNP
End Get
Set(ByVal value)
_CNP = value
End Set
End Property
Property Adresa()
Get
Return _Adresa
End Get
Set(ByVal value)
_Adresa = value
End Set
End Property
Property Telefon()
Get
Return _Telefon
End Get
Set(ByVal value)
_Telefon = value
End Set
End Property
Sub Adauga()
End Sub
Sub Sterge()
End Sub
Sub Modifica()
End Sub
Sub AfisareImprumuturi() Handles(IMPRUMUT)
End Sub
End Class
Public Class IMPRUMUT
Private _NrFisaImp As String
Private _DataImp As Date
Private _DataRestituire As Date
Private _DataPrelungire As Date
Public pCititor As CITITOR
Property NrFisaImp()
Get
Return _NrFisaImp
End Get
Set(ByVal value)
_NrFisaImp = value
End Set
End Property
Property DataImp()
Get
Return _DataImp
End Get
Set(ByVal value)
_DataImp = value
End Set
End Property
Property DataRestituire()
Get
Return _DataRestituire
End Get
Set(ByVal value)
_DataRestituire = value
End Set
End Property
Property DataPrelungire()
Get
Return _DataPrelungire
End Get
Set(ByVal value)
If value >= DataRestituire Then _DataPrelungire = value
End Set
End Property
Sub Adauga()
End Sub
Sub Sterge()
End Sub
Sub AfiseazaCarte() Handles(CARTE)
End Sub
End Class
Property CotaCarte()
Get
Return _CotaCarte
End Get
Set(ByVal value)
_CotaCarte = value
End Set
End Property
Property Titlu()
Get
Return _Titlu
End Get
Set(ByVal value)
_Titlu = value
End Set
End Property
Property Autori()
Get
Return _Autori
End Get
Set(ByVal value)
_Autori = value
End Set
End Property
Property Editura()
Get
Return _Editura
End Get
Set(ByVal value)
_Editura = value
End Set
End Property
Property AnAparitie()
Get
Return _AnAparitie
End Get
Set(ByVal value)
_AnAparitie = value
End Set
End Property
Property ISBN()
Get
Return _ISBN
End Get
Set(ByVal value)
_ISBN = value
End Set
End Property
Property NrExemplare()
Get
Return _AnAparitie
End Get
Set(ByVal value)
_NrExemplare = value
End Set
End Property
Sub Adauga()
End Sub
Sub Sterge()
End Sub
End Class
Public Class PENALIZARE
Private _NumarPenalizare As Integer
Private _DataPlPenalizare As Date
Private _StarePenAchitata As Boolean
Private _StarePenNeachitata As Boolean
Public pImprumut As IMPRUMUT
Property NumarPenalizare()
Get
Return _NumarPenalizare
End Get
Set(ByVal value)
_NumarPenalizare = value
End Set
End Property
Property DataPlPenalizare()
Get
Return _DataPlPenalizare
End Get
Set(ByVal value)
_DataPlPenalizare = value
End Set
End Property
Property StarePenAchitata()
Get
Return _StarePenAchitata
End Get
Set(ByVal value)
If DataPlPenalizare = value Then _StarePenAchitata = True
End Set
End Property
Property StarePenNeachitata()
Get
Return _StarePenNeachitata
End Get
Set(ByVal value)
If StarePenAchitata = True Then _StarePenNeachitata = False
End Set
End Property
Sub AdaugaPenalizare()
End Sub
Sub Salveaza()
End Sub
Sub Sterge()
End Sub
Sub AfiseazaCititor()
End Sub
Sub AfiseazaStarePen()
End Sub
Function TotalPenalizare() As Double
End Function
Function TotalPlatit() As Double
End Function
End Class
Public Class CarteImprumutata
Private _NrExemplareImp As Integer
Property NrExemplareImp()
Get
Return _NrExemplareImp
End Get
Set(ByVal value)
_NrExemplareImp = value
End Set
End Property
Sub NrExemplareDisponibile()
End Sub
End Class
Public Class ImprumutPenalizat
Private _NrExemIntarziate As Integer
Private _NrZileIntarziere As Integer
Property NrExemIntarziate()
Get
Return _NrExemIntarziate
End Get
Set(ByVal value)
_NrExemIntarziate = value
End Set
End Property
Property NrZileIntarziere()
Get
Return _NrZileIntarziere
End Get
Set(ByVal value)
_NrZileIntarziere = value
End Set
End Property
End Class