Sunteți pe pagina 1din 37

Diagrama cazurilor de utilizare

Pentru aceasta diagrama am folosit urmatoarele interactiuni intre actorii cititor si bibliotecar:

1. Un cititor se autentifica in sistem. Daca acesta nu este inregistrat, atunci se va trece la

inregistrarea sa.

2. Dupa ce a fost inregistrat acesta va analiza abonamentele prezentate de bibliotecar.

Cititorul poate refuza sau accepta o oferta. Daca accepta oferta, atunci va intocmi un nou

abonament.

3. Bibliotecarului i se repartizeaza abonamente pe care sa le supervizeze.

4. Cititorul cauta carti, autori sau genuri.

5. In urma cautarii efectuate, acesta cere imprumutul, iar bibliotecarul ii va primi cererea,

dupa care va verifica starea cartii si daca poate sa o imprumute, atunci o va imprumuta, iar cititorul o va primi.

6. Cand cititorul inapoiaza cartea, bibliotecarul o primeste si verifica daca imprumutul a

durat mai mult de 15 zile ii va da amenda pe fiecare zi in care a depasit termenul, iar cititorul va

plati. De asemenea, bibliotecarul verifica si starea cartii, iar daca o constata lipsa va amenda cititorul pentru pierderea cartii, acesta din urma fiind nevoit sa plateasca, si va scoate cartea din gestiune.

7. Bibliotecarul poate adauga carti in gestiune.

«extend» {cititor inexistent} Inregistreaza Se Autentifica Cititor Nou «include» «include» Analizeaza
«extend» {cititor inexistent}
Inregistreaza
Se Autentifica
Cititor Nou
«include»
«include»
Analizeaza
Abonamentele
Prezinta
«include»
Abonamente
«extend»
«extend»
«include»
Intocmeste
Abonament
Refuza
Accepta
Nou
Abonamentul
Abonamentul
«include»
Supervizeaza
Abonamentul
«extend»
Cauta
Cauta Gen
Adauga Carte
«extend»
«extend»
Cauta Carte
Primeste
Cauta Autor
Cererea
Cititor
«extend»
{Cartea Se
«include»
Poate
Imprumuta}
«include» «include» Cere «extend» {Carte Imprumutul Indisponibila} Revizuieste Cererea de Primeste
«include»
«include»
Cere
«extend»
{Carte
Imprumutul
Indisponibila}
Revizuieste
Cererea de
Primeste
Imprumut
Cartea
«include»
Returneaza
Cartea
«include»
Plateste Amenda
Pentru Depasirea
«include»
Termenului
Plateste Amenda
Pentru Lipsa
Cartii
«include»
Plateste Amenda Pentru Lipsa Cartii «include» Verifica Starea Cartii «include» Inmaneaza Cartea
Verifica Starea Cartii
Verifica Starea
Cartii
«include»
«include»
Inmaneaza Cartea Primeste Cartea Imprumutata «include» Verifica Starea Imprumutului «include» Verifica
Inmaneaza
Cartea
Primeste
Cartea
Imprumutata
«include»
Verifica
Starea
Imprumutului
«include»
Verifica Starea
Cartii
«extend»
«extend»
{Carte
{Carte
Lipsa}
Lipsa}
Scoate Cartea
din Gestiune

Bibliotecar

«extend» «extend»
«extend»
«extend»

{DataReturnare>15}

Amendeaza Pentru Termen Depasit
Amendeaza
Pentru Termen
Depasit
«extend» «extend» {DataReturnare>15} Amendeaza Pentru Termen Depasit «extend» Amendeaza Pentru Lipsa Cartii

«extend»

Amendeaza Pentru Lipsa Cartii
Amendeaza
Pentru Lipsa
Cartii

Diagrama claselor

Pentru aceasta diagrama am avut in vedere urmatoarele reguli de gestiune:

 

1.

Un cititor are unul sau mai multe abonamente.

2.

Un abonament este dat unui singur cititor.

3.

Un abonament apartine unui singur tip de abonamente.

4.

Un tip de abonament este folosit de mai multe abonamente.

5.

Un cititor scrie o mai multe fise de imprumut de-a lungul perioadei cat este inscris.

6.

Pe o fisa de imprumut se pot imprumuta mai multe carti.

7.

O carte se imprumuta pe mai multe fise de imprumut (deoarece este returnatade

obicei).

 

8.

O carte apartine unui gen.

9.

O sala are mai multe carti.

10.

Un gen apartine doar unei sali.

11.

O sala are mai multe genuri.

12.

O carte are mai multi autori si este scrisa de toti.

13.

Un autor are mai multe carti.

14.

O amenda este data pentru o fisa de imprumut.

15.

O fisa de imprumut poate primi o amenda sau niciuna.

16.

O amenda poate fi de intarziere sau de pierdere.

17.

O plata se face de un cititor.

18.

O plata se face pentru o amenda.

19.

O amenda i se da unui cititor.

20.

Un bibliotecar supervizeaza mai multe abonamente.

21.

Un abonament este supervizat de un bibliotecar.

Restrictii:

1.Data returnarii care apare pe o fisa de imprumut trebuie sa fie mai mare sau egala cu cea a imprumutului.

2. Data de sfarsit a abonamentului trebuie sa fie mai mare sau egala cu cea de inceput.

3. Ora de inchidere a unei sali trebuie sa fie dupa ora deschiderii.

Autor - IdAutor: Integer A Scris - NumeAutor: String - DataNastere: Date 1 * OraInchidere
Autor
- IdAutor: Integer
A Scris
- NumeAutor: String
- DataNastere: Date
1
*
OraInchidere > OraDeschidere
+
Adauga() : void
+ Salveaza() : void
Gen
/Este Specializata In
+ Sterge() : void
0 *
-
IdGen:
Integer
1
*
-
NumeGen: String
Carte
1
-
VarstaMinima: Integer
-
IdCarte:
Integer
Sala
-
DenumireCarte: String
Apartine
+
Adauga()
: void
-
Disponibilitate: Boolean
+
Salveaza() : void
-
NrSala:
Integer
0
*
1
- Valoare:
Integer
+ Sterge()
: void
-
DenumireSala:
String
- ISBN:
String
+ NrCarti()
: Integer
-
EtajSala:
Integer
- Date
DataAparitie:
-
OraDeschidereSala: Integer
Se Afla
-
Editura:
String
-
OraInchidereSala: Integer
1
*
1
+ Adauga()
:
void
+ Adauga()
:
void
+ Salveaza()
:
void
+ Salveaza()
:
void
CartiImprumutate
+ Sterge()
:
void
+ Sterge()
:
void
+
NrAutori()
:
Integer
+ TotalCartiInSala() : Integer
- IdCarte:
Carte
+ NrCartiDisponibileInSala() : Integer
- NrFisa:
FisaImprumut
+ DurataProgram() : Integer
1
*
+ NumarGenuriInSala() : Integer
+
Adauga()
:
void
Imprumuta
+ Salveaza()
:
void
+ Sterge()
:
void
DataReturnare >=
+ NrCartiImprumutate() : Integer
DataIntocmire
+ ItemCarte()
:
Integer
0
*
Cititor
FisaImprumut
- CNP:
String
DataSfarsit >= DataInceput
- NrFisa:
Integer
- NumeCititor: String
- DataIntocmire:
Date
- PrenumeCititor: String
Scrie
- DataReturnare: Date = Nothing
- DataNasterii: Date
0 *
-
AdresaCititor: String
1
+ Adauga()
:
void
Abonament
-
TelefonCititor: String
TipAbonament
+ Salveaza()
:
void
-
eMailCititor: String
Detine
- NrAbonament: Integer
+
Sterge()
:
void
Apartine
-
IdTip:
Integer
- DataInceput: Date
+
Returnare()
:
void
-
NumeTip: String
+
Adauga()
: void
-
DataSfarsit: Date
-
Descriere: String
+ Salveaza() : void
0 *
1
+ Sterge()
:
void
0 *
1
+ Adauga()
: void
+ Adauga() : void
+ Salveaza() : void
1
1
+ Salveaza() : void
+ Sterge()
:
void
+ Sterge() : void
Se Da
+ Valabilitate() : Integer
Efectueaza
0 *
/I Se
0 1
Dau
0 *
0 *
Amenda
Plata
-
IdAmenda: Integer
-
IdPlata:
Integer
-
SumaPlatita: Integer
+
Adauga()
:
void
Se Plateste
+
Salveaza() : void
Supervizeaza
1
0 *
+
Adauga()
:
void
+
Sterge()
:
void
+ Salveaza()
:
void
+
ValoareAmenda() : void
+ Sterge()
:
void
+
TotalPlati() : Double
Bibliotecar
-
IdBibliotecar:
UShort
-
NumeBibliotecar: String
1
AmendaPierdere
-
PrenumeBibliotecar: String
AmendaIntarziere
-
ProcentAdaugat: Integer
-
SumaAmenda: Integer
+ Adauga()
:
void
+ Salveaza()
:
void
+ Adauga()
:
void
+
Adauga()
:
void
+ Sterge()
:
void
+ Salveaza()
: void
+
Salveaza()
: void
+ RepartizeazaAbonament() : void
+ Sterge()
:
void
+
Sterge()
:
void
+ TotalAmenda() : Integer
+ NrZileIntarziere() : Integer
+ NrCartiPierdute() : Integer
+ TotalAmenda() : Integer
void + TotalAmenda() : Integer + NrZileIntarziere() : Integer + NrCartiPierdute() : Integer + TotalAmenda() :

Diagramele de activitati

Diagrama 1 Aceasta diagrama prezinta imprumutul de carti. Mai intai utilizatorul incarca lista intr-o colectie temporara. Din aceasta colectie se va parcurge fiecare carte, i se va afla pozitia corespunzatoare din colectia de carti, iar daca aceasta este disponibila, i se va modifica disponibilitatea si va fi adaugata pe lista. Daca la sfarsitul acestei bucle nu se afla nicio carte disponibila, atunci fisa de imprumut generata va fi stearsa.

Diagrama 2 In prima parte se va proceda la autentificarea utlizatorului, iar in cazul in care acesta nu exista va fi introdus ca utilizator nou. Dupa aceea va fi intrebat daca doreste un tip de abonament si cat timp va dori un abonament, va introduce datele si i se va intocmi. De asemenea, daca se razgandeste dupa ce a introdus datele, poate renunta. Nota: Prima parte a fost implementata in VB.Net.

tmp : ColCartiImprumutate ConfirmareDate: Boolean ItemCarte: Integer NumarCartiImprumutate: Integer =0 Declarare
tmp : ColCartiImprumutate ConfirmareDate: Boolean ItemCarte: Integer NumarCartiImprumutate: Integer =0

tmp : ColCartiImprumutate

ConfirmareDate: Boolean

ItemCarte: Integer NumarCartiImprumutate: Integer =0

Declarare variabile
Declarare variabile

Declarare variabile

Declarare variabile
Sterge Fisa De Imprumut Cancel tmp = Nothing ; ConfirmareDate=False Generare Fisa de Imprumut Noua

Sterge Fisa De Imprumut

Cancel

tmp = Nothing ; ConfirmareDate=False

Sterge Fisa De Imprumut Cancel tmp = Nothing ; ConfirmareDate=False
Sterge Fisa De Imprumut Cancel tmp = Nothing ; ConfirmareDate=False

Generare Fisa de Imprumut Noua

Introducere Date Carti
Introducere Date Carti
Introducere Date Carti

[ConfirmareDate=False]

[NumarCartiImprumutate = 0] [NumarCartiImprumutate != 0]
[NumarCartiImprumutate = 0]
[NumarCartiImprumutate != 0]
de Imprumut Noua Introducere Date Carti [ConfirmareDate=False] [NumarCartiImprumutate = 0] [NumarCartiImprumutate != 0]
k=1 [ConfirmareDate=True] [k<=tmp.Count()] ItemCarte=tmp.Item(k).ItemCarte() [k>tmp.Count()]
k=1
[ConfirmareDate=True]
[k<=tmp.Count()]
ItemCarte=tmp.Item(k).ItemCarte()
[k>tmp.Count()]
[Carte.Item(ItemCarte)=FALSE]
[Carte.Item(ItemCarte)=TRUE]
Carte.Item(ItemCarte).Disponibila=FALSE
pCartiImprumutate.Adauga(tmp.k)
NumarCartiImprumutate =
NumarCartiImprumutate + 1
pCartiImprumutate.Adauga(tmp.k) NumarCartiImprumutate = NumarCartiImprumutate + 1
Declarare variabile pCititor : Cititor ConfirmareDate : Boolean ConfirmareAbonamentNou : Boolean pAbonament :
Declarare variabile
pCititor : Cititor
ConfirmareDate : Boolean
ConfirmareAbonamentNou : Boolean
pAbonament : Abonament
Introducere Date Cititor
[ConfirmareDate = False]
ExistaCititor(Cod)
[ConfirmareDate = True]
pCititor = New Cititor
[True]
[False]
Cancel
pCititor.Salveaza(CNP,NumeCititor,PrenumeCititor,DataNasterii,AdresaCititor,TelefonCititor,eMailCititor)
ColCititori.Add(pCititor)
Introducere Date Abonament
[ConfirmareAbonamentNou = False]
[ConfirmareAbonamentNou = True]
pAbonament = New Abonament
pAbonament.Salveaza(NrAbonament,DataInceput,DataSfarsit)
Cancel
[ConfirmareDate = False]
[ConfirmareDate = True]
ColAbonament.Add(pAbonament)

Diagramele de secvente

Diagrama 1 Aceasta diagrama descrie imprumutul unei carti de un cititor. Acesta se autentifica in sistem, dupa care introduce o noua cerere de imprumut. Pe cerere va introduce mai multe carti ce vor fi adaugate intr-o colectie temporara. Dupa aceea, fiecare carte va fi verificata si, daca este disponibila, atunci va fi imprumutata. Daca nicio carte nu este disponibila, atunci fisa de imprumut generata va fi stearsa. Dupa finalizarea operatiunilor utilizatorul va inchide formularul de imprumut.

Diagrama 2 Aceasta diagrama descrie alegerea unui nou abonament de catre un cititor. Dupa ce se autentifica va introduce datele pentru noul abonament, le va confirma, i se va crea un obiect temporar pentru a reconfirma datele din abonament, dupa care aceste date vor fi incarcate in colectia de abonamente. Acest lucru se va intampla cat timp cititorul va dori abonamente noi. La sfarsit el va iesi din formularul de abonare.

+ Carte : CarteImprumutata

+ Carte : CarteImprumutata
:FrmAcces :ColFisaImprumut :FrmImprumuta :ColTmp :ColCarteImprumutata Cititor par [Autentificare()] :FisaImprumut
:FrmAcces
:ColFisaImprumut
:FrmImprumuta
:ColTmp
:ColCarteImprumutata
Cititor
par
[Autentificare()]
:FisaImprumut
1: Fisa = New FisaImprumut()
2: ColFisaImprumut.Add(Fisa)
loop
[ConfirmareCarteNoua = True]
3: IntroducereDate()
4: ConfirmareDate()
:Carte
5: Carte = New CarteImprumutata()
6: ColTmp.Add(Carte)
NrCartiImprumutate
7: Initializeaza(NrCartiImprumutate)
loop
[Nu au fost trecute toate cartile]
alt
[Cartea este disponibila]
8: Adauga(ColTmp.item(i))
9: IncrementeazaNrCI()
alt
[NrCartiImprumutate = 0]
10: StergeFisaDeImprumut()
11: Close()
:FrmAcces :FrmAbonare :ColAbonamente + AbonamentNou : Abonament Cititor par [Autentificare()] loop
:FrmAcces
:FrmAcces
:FrmAbonare :ColAbonamente + AbonamentNou : Abonament
:FrmAbonare
:ColAbonamente
+ AbonamentNou : Abonament

Cititor

par [Autentificare()]
par
[Autentificare()]
loop [ConfirmareAbonamentNou = True] 1: IntroduceDate() 2: ConfirmaDate() :tmpAbonament 3: AbonamentNou() 4:
loop
[ConfirmareAbonamentNou = True]
1: IntroduceDate()
2: ConfirmaDate()
:tmpAbonament
3: AbonamentNou()
4: ConfirmareDate()
5: AdaugaAbNou()
1: IntroduceDate() 2: ConfirmaDate() :tmpAbonament 3: AbonamentNou() 4: ConfirmareDate() 5: AdaugaAbNou() 6: Close()
1: IntroduceDate() 2: ConfirmaDate() :tmpAbonament 3: AbonamentNou() 4: ConfirmareDate() 5: AdaugaAbNou() 6: Close()

6: Close()

Diagrama de stare

Am prezentat diagrama de stare a platii. Se efectueaza o plata noua. Se calculeaza suma totala platita pana atunci la care se adauga plata noua si daca aceasta va fi mai mare decat valoarea totala a amenzii, atunci plata va fi stearsa.

DatePlata CrearePlata Amenda Entry/IdPlata Entry/IdAmenda Do/AdaugaSuma Do/TotalPlata() Do/AdaugaAmenda
DatePlata
CrearePlata
Amenda
Entry/IdPlata
Entry/IdAmenda
Do/AdaugaSuma
Do/TotalPlata()
Do/AdaugaAmenda
[TotalPlata() + SumaPlatita > ValoareAmenda()]
[TotalPlata() + SumaPlatita > ValoareAmenda()] [TotalPlata() + SumaPlatita <= ValoareAmenda()] Plata

[TotalPlata() + SumaPlatita <= ValoareAmenda()]

+ SumaPlatita > ValoareAmenda()] [TotalPlata() + SumaPlatita <= ValoareAmenda()] Plata Entry/IdPlata Do/Sterge
+ SumaPlatita > ValoareAmenda()] [TotalPlata() + SumaPlatita <= ValoareAmenda()] Plata Entry/IdPlata Do/Sterge
Plata Entry/IdPlata Do/Sterge
Plata
Entry/IdPlata
Do/Sterge

Diagrama de amplasare

In aceasta diagrama avem nodul principal reprezentat de server unde vom avea clasele implementate in VB.Net. Avem si un nod care reprezinta baza de date implementata in Microsoft SQL Server. Nodul cu aplicatii pentru cititori reprezinta totalitatea formularelor accesibile acestora. Nodul cu aplicatii pentru bibliotecari reprezinta totalitatea formularelor accesibile acestora, deoarece ei vor putea executa actiuni speciale.

«device» «device» :AppServer :SQLserver «executionEnvironment» :VB.Net «device» TipAbonament.VB
«device»
«device»
:AppServer
:SQLserver
«executionEnvironment»
:VB.Net
«device»
TipAbonament.VB
:AppCititor
Abonament.VB
«executionEnviron
:VB.Net
Cititor.VB
frmAcces.VB
Plata.VB
Amenda.VB
frmImprumuta.VB
AmendaIntarziere.VB
frmRestituire.VB
AmendaPierdere.VB
frmPlata.VB
Bibliotecar.VB
frmAbonarevb
Carte.VB
FisaImprumut.VB
Gen.VB
Autor.VB
«device»
:AppBibliotecar
Sala.VB
CartiImprumutate.VB
«executionEnvironment»
:VB.Net
frmAcces.VB
frmAdaugaCarte.VB
frmScoateCarte.VB
frmSupervizareAbonament.VB

Diagrama de componente

Reprezinta componenta de imprumut al unei carti. Aceasta se face pe baza introducerii datelor in formularul de imprumut, iar prin intermediul fisei de imprumut se vor adauga toate cartile imprumutate, li se va verifica disponibilitatea in componenta de carti si li se va modifica disponibilitatea daca pot fi imprumutate.

ImprumutCarti «delegate» IntroducereDate :FisaImprumut :CartiImprumutate :Carte
ImprumutCarti
«delegate»
IntroducereDate
:FisaImprumut
:CartiImprumutate
:Carte
ImprumutCarti «delegate» IntroducereDate :FisaImprumut :CartiImprumutate :Carte :frmImprumut

:frmImprumut

Implementare in Microsoft SQL Server

Implementare in Microsoft SQL Server

Putem observa urmatoarele tabele in modelul relational:

Cititor (CNP, NumeCititor, PrenumeCititor, DataNasterii, AdresaCititor, eMailCititor) Abonament(NrAbonament, DataInceput, DataSfarsit, CNP, IdTip, IdBibliotecar) TipAbonament(IdTip, NumeTip, Descriere) Bibliotecar(IdBibliotecar, NumeBibliotecar, PrenumeBibliotecar) Amenda(IdAmenda, CNP, NrFisa) AmendaIntarziere(IdAmenda, SumaAmenda) AmendaPierdere(IdAmenda, ProcentAdaugat) Plata(IdPlata,SumaPlata, IdAmenda, CNP) FisaImprumut(NrFisa, DataIntocmire, DataReturnare, CNP)

CartiImprumutate(IdCarte, NrFisa) Carte(IdCarte, DenumireCarte, Disponibilitate, Valoare, ISBN, DataAparitie, Editura, NrSala, IdGen) Sala(NrSala, DenumireSala, EtajSala, OraDeschidereSala, OraInchidereSala)

Gen(IdGen, NumeGen, VarstaMinima,

Autor(IdAutor, NumeAutor, DataNasterii) AutoriCarte(IdAutor, IdCarte)

NrSala)

Implementare in VB.Net

Cititor

Public Class Cititor Private CNP As String Private NumeCititor As String Private PrenumeCititor As String Private DataNasterii As Date Private AdresaCititor As String Private TelefonCititor As String Private eMailCititor As String Private cAbonament As New Collection Private cAmenda As New Collection Private cPlata As New Collection Private cFisaImprumut As New Collection Property CNPCititor() Get

Return CNP End Get Set(ByVal value) If Len(value) = 13 Then CNP = value End Set End Property Property Nume() Get

Return NumeCititor End Get Set(ByVal value) NumeCititor = value End Set End Property Property Prenume() Get

Return PrenumeCititor End Get Set(ByVal value) PrenumeCititor = value End Set End Property Property DataNasteriiCititor() Get

Return DataNasterii End Get Set(ByVal value) DataNasterii = value End Set End Property Property Adresa() Get

Return AdresaCititor End Get Set(ByVal value) AdresaCititor = value End Set End Property Property Telefon()

Get

Return TelefonCititor End Get Set(ByVal value) If IsNumeric(value) Then TelefonCititor = value End Set End Property Property eMail() Get

Return eMailCititor End Get Set(ByVal value) eMailCititor = value End Set End Property Property Abonament() Get

Return cAbonament End Get Set(ByVal value) cAbonament = value End Set End Property Property Amenda() Get

Return cAmenda End Get Set(ByVal value) cAmenda = value End Set End Property Property Plata() Get

Return cPlata End Get Set(ByVal value) cPlata = value End Set End Property Property FisaImprumut() Get

Return cFisaImprumut End Get Set(ByVal value) cFisaImprumut = value End Set End Property Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pCNP As String, ByVal pNume As String, ByVal pPrenume As String, ByVal pDataNasterii As Date, ByVal pAdresa As String, ByVal pTelefon As String, ByVal peMail As String) CNPCititor = pCNP Nume = pNume Prenume = pPrenume

DataNasteriiCititor = pDataNasterii Adresa = pAdresa Telefon = pTelefon eMail = peMail End Sub

Public Sub Sterge()

End Sub

End Class

Abonament

Public Class Abonament Private NrAbonament As Integer Private DataInceput As Date Private DataSfarsit As Date Private oBibliotecar As Bibliotecar Property NrAb() Get

Return NrAbonament End Get Set(ByVal value) NrAbonament = value End Set End Property Property DataI() Get

Return DataInceput End Get Set(ByVal value) DataInceput = value End Set End Property Property DataSf() Get

Return DataSfarsit End Get Set(ByVal value) If value >= DataI Then DataSfarsit = value End Set End Property Property Bibliotecar() Get

Return oBibliotecar End Get Set(ByVal value) oBibliotecar = value End Set End Property Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pNrAbonament As Integer, ByVal pDataInceput As Date, ByVal pDataSfarsit As Date) NrAb = pNrAbonament

DataI = pDataInceput DataSf = pDataSfarsit End Sub

Public Sub Sterge()

End Sub

Public Function Valabilitate() As Integer Return (DataSf - DataI) End Function End Class

Tip Abonament

Public Class TipAbonament Private IdTip As Integer Private NumeTip As String Private Descriere As String Private cAbonament As New Collection Property IdTipAb() Get

Return IdTip End Get Set(ByVal value) IdTip = value End Set End Property Property Nume() Get

Return NumeTip End Get Set(ByVal value) NumeTip = value End Set End Property Property DescriereAb() Get

Return Descriere End Get Set(ByVal value) Descriere = value End Set End Property Property Abonament() Get

Return cAbonament End Get Set(ByVal value) cAbonament = value End Set End Property Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pIdTip As Integer, ByVal pNume As String, ByVal pDescriereAb As String)

IdTipAb = pIdTip Nume = pNume DescriereAb = pDescriereAb End Sub

Public Sub Sterge()

End Sub

End Class

Amenda

Public Class Amenda Private IdAmenda As Integer Private oFisaImprumut As FisaImprumut Private cPlata As New Collection Property IdAm() Get

Return IdAmenda End Get Set(ByVal value) IdAmenda = value End Set End Property Property FisaImprumut() Get

Return ColFisaImprumut End Get Set(ByVal value) ColFisaImprumut = value End Set End Property Property Plata() Get

Return ColPlata End Get Set(ByVal value) ColPlata = value End Set End Property Public Sub Adauga()

End Sub

Public Overloads Sub Salveaza(ByVal pIdAmenda As Integer, ByVal pFisaImprumut As FisaImprumut) IdAm = pIdAmenda FisaImprumut = pFisaImprumut End Sub

Public Sub Sterge()

End Sub

Public Sub ValoareAmenda() Dim Total As Double Total = ColAmendaIntarziere.Item(cautaAI(IdAm)).TotalAmenda() + ColAmendaPierdere.Item(cautaAP(IdAm))

Return Total End Sub

Public Function TotalPlati() As Double Dim Total As Double Dim k As Integer Total = 0 For k = 0 To Plata.count Total += Plata.Item(k).SumaPlatita Next k Return Total End Function End Class

Amenda Intarziere

Public Class AmendaIntarziere Inherits Amenda Private SumaAmenda As Integer Property Suma() Get

Return SumaAmenda End Get Set(ByVal value) SumaAmenda = value End Set End Property

Public Overloads Sub Salveaza(ByVal pIdAmenda As Integer, ByVal pSumaAmenda As Integer, ByVal pFisaImprumut As FisaImprumut) IdAm = pIdAmenda Suma = pSumaAmenda FisaImprumut = pFisaImprumut End Sub

Public Function NrZileIntarziere() As Integer Return DateDiff(DateInterval.Day, Today, FisaImprumut.DataIn) End Function

Public Function TotalAmenda() As Integer Return (DateDiff(DateInterval.Day, Today, FisaImprumut.DataIn) - 15) * SumaAmenda End Function End Class

Amenda Pierdere

Public Class AmendaPierdere Inherits Amenda Private ProcentAdaugat As Integer Property PrAd() Get

Return ProcentAdaugat End Get Set(ByVal value) ProcentAdaugat = value End Set End Property

Public Overloads Sub Salveaza(ByVal pIdAmenda As Integer, ByVal pProcentAdaugat As Integer, ByVal pFisaImprumut As FisaImprumut) IdAm = pIdAmenda PrAd = pProcentAdaugat FisaImprumut = pFisaImprumut End Sub

Public Function TotalAmenda() As Integer Dim k As Integer Dim Total As Integer Total = 0 For k = 0 To FisaImprumut.Count Total += Carte.Item(cautaC(FisaImprumut.ColCarte(k).IdCarte)).ValoareCarte Next k Return Total End Function

Public Function NrCartiPierdute() As Integer Dim k As Integer Dim Nr As Integer Nr = 0 For k = 0 To FisaImprumut.Count Nr += 1 Next k Return Nr End Function End Class

Fisa Imprumut

Public Class FisaImprumut Private NrFisa As Integer Private DataIntocmire As Date Private DataReturnare As Date = Nothing Private oCititor As Cititor Private cCartiImprumutate As New Collection Property NrF() Get

Return NrFisa End Get Set(ByVal value) NrFisa = value End Set End Property Property DataIn() Get

Return DataIntocmire End Get Set(ByVal value) DataIntocmire = value End Set End Property Property DataR() Get

Return DataReturnare End Get

Set(ByVal value) If value >= DataIn Then DataReturnare = value End Set End Property Property Cititor() Get

Return oCititor End Get Set(ByVal value) oCititor = value End Set End Property Property CartiImprumutate() Get

Return cCartiImprumutate End Get Set(ByVal value) cCartiImprumutate = value End Set End Property Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pNrFisa As Integer, ByVal pDataIntocmire As Date, ByVal pDataReturnare As Date, ByVal pCititor As Cititor) NrF = pNrFisa DataIn = pDataIntocmire DataR = pDataReturnare Cititor = pCititor End Sub

Public Sub Sterge()

End Sub

Public Sub Returnare()

End Sub

End Class

Carti Imprumutate

Public Class CartiImprumutate Private IdCarte As Carte Private NrFisa As FisaImprumut Property IdC() As Integer Get

Return IdCarte End Get Set(ByVal value As Integer) IdCarte = value End Set End Property Property NrF() Get

Return NrFisa End Get

Set(ByVal value) NrFisa = value End Set End Property Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pIdCarte As Carte, ByVal pNrFisa As FisaImprumut) NrF = pNrFisa IdC = pIdCarte End Sub

Public Sub Sterge()

End Sub

Public Function NrCartiImprumutate() As Integer Dim k As Integer Dim Nr As Integer Nr = 0 For k = 0 To ColCartiImprumutate.Count If ColCartiImprumutate.Item(k).NrFisa = NrF Then Nr += 1 Next k Return Nr End Function

Public Function ItemCarte() As Integer Dim k As Integer Dim Item As Integer For k = 0 To ColCarti.Count If ColCarti.Item(k).IdC = IdCarte.IdCarte Then Item = k : Exit

For

Next Return Item End Function

End Class

Carte

Public Class Carte Private IdCarte As Integer Private DenumireCarte As String Private Disponibilitate As Boolean Private Valoare As Integer Private ISBN As String Private DataAparitie As Date Private Editura As String Private cAutor As New Collection Private cCartiImprumutate As New Collection Property IdC() Get

Return IdCarte End Get Set(ByVal value) IdCarte = value

End Set End Property Property Denumire() Get

Return DenumireCarte End Get Set(ByVal value) DenumireCarte = value End Set End Property Property Val() Get

Return Valoare End Get Set(ByVal value) Valoare = value End Set End Property Property ISBNcarte() Get

Return ISBN End Get Set(ByVal value) If Len(value) = 13 Then ISBN = value End Set End Property Property DataAp() Get

Return DataAparitie End Get Set(ByVal value) DataAparitie = value End Set End Property Property EdituraCarte() Get

Return Editura End Get Set(ByVal value) Editura = value End Set End Property Property Autor() Get

Return cAutor End Get Set(ByVal value) cAutor = value End Set End Property Property CartiImprumutate() Get

Return cCartiImprumutate End Get Set(ByVal value) cCartiImprumutate = value End Set

End Property Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pId As Integer, ByVal pDen As String, ByVal pDisponibilitate As Boolean, ByVal pValoare As Integer, ByVal pISBN As String, ByVal pDataAparitie As Date, ByVal pEditura As String) IdC = pId Denumire = pDen Disponibilitate = pDisponibilitate Val = pValoare ISBNcarte = pISBN DataAp = pDataAparitie EdituraCarte = pEditura End Sub

Public Sub Sterge()

End Sub

Public Function NrAutori() As Integer Return cAutor.Count End Function End Class

Autor

Public Class Autor Private IdAutor As Integer Private NumeAutor As String Private DataNastere As Date Property IdAut() Get

Return IdAutor End Get Set(ByVal value) IdAutor = value End Set End Property Property Nume() Get

Return NumeAutor End Get Set(ByVal value) NumeAutor = value End Set End Property Property DataNastereAutor() Get

Return DataNastere End Get Set(ByVal value) DataNastere = value End Set End Property Public Sub Adauga() End Sub

Public Sub Salveaza(ByVal pIdAutor As Integer, ByVal pNumeAutor As String, ByVal pDataNastere As Date) IdAut = pIdAutor Nume = pNumeAutor DataNastereAutor = pDataNastere End Sub Public Sub Sterge() End Sub End Class

Gen

Public Class Gen Private IdGen As Integer Private NumeGen As String Private VarstaMinima As Integer Private cCarte As New Collection Property IdG() Get

Return IdGen End Get Set(ByVal value) IdGen = value End Set End Property Property Nume() Get

Return NumeGen End Get Set(ByVal value) NumeGen = value End Set End Property Property VarstaMin() Get

Return VarstaMinima End Get Set(ByVal value) VarstaMinima = value End Set End Property Property Carte() Get

Return cCarte End Get Set(ByVal value) cCarte = value End Set End Property Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pIdGen As Integer, ByVal pVarstaMin As Integer) IdG = pIdGen VarstaMin = pVarstaMin End Sub

Public Sub Sterge()

End Sub Public Function NrCarti() Return Carte.Count End Function End Class

Sala

Public Class Sala Private NrSala As Integer Private DenumireSala As String Private EtajSala As Integer Private OraDeschidereSala As Integer Private OraInchidereSala As Integer Private cCarte As New Collection Private cGen As New Collection Property Nr() Get

Return NrSala End Get Set(ByVal value) NrSala = value End Set End Property Property Denumire() Get

Return DenumireSala End Get Set(ByVal value) DenumireSala = value End Set End Property Property Etaj() Get

Return EtajSala End Get Set(ByVal value) EtajSala = value End Set End Property Property OraDeschidere() Get

Return OraDeschidereSala End Get Set(ByVal value) OraDeschidereSala = value End Set End Property Property OraInchidere() Get

Return OraInchidereSala End Get Set(ByVal value) If value > OraDeschidere Then OraInchidereSala = value End Set

End Property Property Carte() Get

Return cCarte End Get Set(ByVal value) cCarte = value End Set End Property Property Gen() Get

Return cGen End Get Set(ByVal value) cGen = value End Set End Property Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pNr As Integer, ByVal pDenumire As String, ByVal pEtaj As Integer, ByVal pOraDeschidere As Integer, ByVal pOraInchidere As Integer) Nr = pNr Denumire = pDenumire Etaj = pEtaj OraDeschidere = pOraDeschidere OraInchidere = pOraInchidere End Sub

Public Sub Sterge()

End Sub

Public Function TotalCartiInSala() As Integer Return Carte.count End Function

Public Function NrCartiDisponibileInSala() As Integer Dim k As Integer Dim Nr As Integer Nr = 0 For k = 0 To Carte.count If Carte.Item(k).Disponibila = True Then Nr += 1 Next k Return Nr End Function

Public Function DurataProgram() As Integer Return (OraInchidere - OraDeschidere) End Function

Public Function NumarGenuriInSala() As Integer Return Gen.count End Function End Class

Bibliotecar

Public Class Bibliotecar Private IdBibliotecar As UShort Private NumeBibliotecar As String Private PrenumeBibliotecar As String Public cAbonament As New Collection Property Id() Get

Return IdBibliotecar End Get Set(ByVal value) IdBibliotecar = value End Set End Property Property Nume() Get

Return NumeBibliotecar End Get Set(ByVal value) NumeBibliotecar = value End Set End Property Property Prenume() Get

Return PrenumeBibliotecar End Get Set(ByVal value) PrenumeBibliotecar = value End Set End Property Property Abonament() Get

Return cAbonament End Get Set(ByVal value) cAbonament = value End Set End Property Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pId As Integer, ByVal pNume As String, ByVal pPrenume As String) Id = pId Nume = pNume Prenume = pPrenume End Sub

Public Sub Sterge()

End Sub

Public Sub RepartizeazaAbonament() Dim k As Integer For k = 0 To ColAbonament.Count

If IsDBNull(ColAbonament.Item(k).Bibliotecar) Then ColAbonament.Item(k).Bibliotecar.Salveaza(Id, Nume, Prenume) Exit For End If Next k End Sub End Class

Plata

Public Class Plata Private IdPlata As Integer Private SumaPlatita As Integer Private oAmenda As Amenda Property Id() Get

Return IdPlata End Get Set(ByVal value) IdPlata = value End Set End Property Property Suma() Get

Return SumaPlatita End Get Set(ByVal value) SumaPlatita = value End Set End Property

Property Amenda() Get

Return oAmenda End Get Set(ByVal value) oAmenda = value End Set End Property

Public Sub Adauga()

End Sub

Public Sub Salveaza(ByVal pId As Integer, ByVal pSuma As Integer, ByVal pAmenda As Amenda) Id = pId Suma = pSuma Amenda = pAmenda End Sub

Public Sub Sterge()

End Sub

End Class

Interfata Cititor.Salveaza() (adaugarea datelor unui cititor nou)

Modulul pentru colectia de cititori

Module moduleColCititor Public ColCititor As New Collection End Module

Modulul pentru functia de cautare CNP in colectia de cititori

Module moduleFuncCautaCNP Public Function CautaCNP(ByVal pCNP As String) As Boolean Dim k As Integer For k = 1 To ColCititor.Count If ColCititor.Item(k).CNPCititor = pCNP Then Return True End If Next k Return False End Function End Module

Codul pentru formularul de acces

Public Class frmAcces Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click Dim buton As DialogResult buton = MsgBox("Sunteti sigur ca ati introdus datele corect?", MsgBoxStyle.YesNo, "Confirmare Date") If buton = Windows.Forms.DialogResult.Yes Then If CautaCNP(txtCNP.Text.ToString) Then frmAbonare.ShowDialog()

Else

frmInregistrare.ShowDialog() End If End If End Sub End Class

Codul pentru fomrularul de inregristrare

Public Class frmInregistrare Dim obCititor As Cititor Private Sub frmInregistrare_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.txtCNP.Text = frmAcces.txtCNP.Text.ToString txtDataNasterii.Text = CDate(Format(dtpDataNastere.Value, "D")) End Sub

Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtpDataNastere.ValueChanged txtDataNasterii.Text = CDate(Format(dtpDataNastere.Value, "D")) End Sub

Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click

obCititor = New Cititor obCititor.Salveaza(txtCNP.Text.ToString, txtNume.Text.ToString, txtPrenume.Text.ToString, Convert.ToDateTime(txtDataNasterii.Text), txtAdresa.Text.ToString, txtTelefon.Text.ToString, txteMail.Text.ToString) ColCititor.Add(obCititor) MsgBox("Cititorul a fost adaugat") Me.Close() End Sub End Class

Capturi de ecran din timpul executiei programului

MsgBox("Cititorul a fost adaugat") Me.Close() End Sub End Class Capturi de ecran din timpul executiei programului
MsgBox("Cititorul a fost adaugat") Me.Close() End Sub End Class Capturi de ecran din timpul executiei programului

Evaluare