Proiect - Proiectarea Sistemelor Informatice

Embed Size (px)

DESCRIPTION

Proiect la disciplina Proiectarea Sistemelor Informatice, anul 1 CAIG

Citation preview

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} Se Autentifica include include Analizeaza Abonamentele include extend Refuza Abonamentul extend include Accepta Abonamentul Intocmeste Abonament Nou include extend Cauta extend Cauta Gen extend Adauga Carte Supervizeaza Abonamentul Inregistreaza Cititor Nou

Prezinta Abonamente

Cauta Carte

Cauta Autor

Primeste Cererea

Cititor

include include include Cere Imprumutul Revizuieste Cererea de Imprumut include extend {Carte Indisponibila}

extend {Cartea Se Poate Imprumuta}

Verifica Starea Cartii

include Bibliotecar Inmaneaza Cartea

Primeste Cartea

Returneaza Cartea

include

Primeste Cartea Imprumutata

extend

include Verifica Starea Imprumutului

Plateste Amenda Pentru Depasirea Termenului

include

extend {DataReturnare>15} Amendeaza Pentru Termen Depasit

include

Plateste Amenda Pentru Lipsa Cartii include

extend

Verifica Starea Cartii

Amendeaza Pentru Lipsa Cartii

extend {Carte Lipsa}

extend {Carte Lipsa} Scoate Cartea din Gestiune

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 A Scris 1..* + + + Adauga() : void Salveaza() : void Sterge() : void Apartine 0..* + + 1 + + Gen IdGen: Integer NumeGen: String VarstaMinima: Integer Adauga() : void Salveaza() : void Sterge() : void NrCarti() : Integer 1..* 1 Sala 1 CartiImprumutate + + + + + IdCarte: Carte NrFisa: FisaImprumut Adauga() : void Salveaza() : void Sterge() : void NrCartiImprumutate() : Integer ItemCarte() : Integer + + + + + + + NrSala: Integer DenumireSala: String EtajSala: Integer OraDeschidereSala: Integer OraInchidereSala: Integer Adauga() : void Salveaza() : void Sterge() : void TotalCartiInSala() : Integer NrCartiDisponibileInSala() : Integer DurataProgram() : Integer NumarGenuriInSala() : Integer IdAutor: Integer NumeAutor: String DataNastere: Date OraInchidere > OraDeschidere

/Este Specializata In

0..* Carte + + + + IdCarte: Integer DenumireCarte: String Disponibilitate: Boolean Valoare: Integer ISBN: String DataAparitie: Date Editura: String Adauga() : void Salveaza() : void Sterge() : void NrAutori() : Integer

Se Afla 1..*

Imprumuta DataReturnare >= DataIntocmire

1..*

0..* FisaImprumut + + + + NrFisa: Integer DataIntocmire: Date DataReturnare: Date = Nothing Adauga() : void Salveaza() : void Sterge() : void Returnare() : void 0..* + + + Cititor CNP: String NumeCititor: String PrenumeCititor: String DataNasterii: Date AdresaCititor: String TelefonCititor: String eMailCititor: String Adauga() : void Salveaza() : void Sterge() : void 1 Se Da Efectueaza 0..1 Amenda + + + + + IdAmenda: Integer Adauga() : void Salveaza() : void Sterge() : void ValoareAmenda() : void TotalPlati() : Double Se Plateste 1 0..* + + + IdPlata: Integer SumaPlatita: Integer Supervizeaza Adauga() : void Salveaza() : void Sterge() : void 0..* Plata /I Se Dau 0..* 1 DataSfarsit >= DataInceput

Scrie 1

Abonament Detine + + + + NrAbonament: Integer DataInceput: Date DataSfarsit: Date Adauga() : void Salveaza() : void Sterge() : void Valabilitate() : Integer 0..* 0..* + + + Apartine -

TipAbonament IdTip: Integer NumeTip: String Descriere: String Adauga() : void Salveaza() : void Sterge() : void

1

1

0..*

Bibliotecar + + + + IdBibliotecar: UShort NumeBibliotecar: String PrenumeBibliotecar: String Adauga() : void Salveaza() : void Sterge() : void RepartizeazaAbonament() : void

AmendaIntarziere + + + + + SumaAmenda: Integer Adauga() : void Salveaza() : void Sterge() : void NrZileIntarziere() : Integer TotalAmenda() : Integer + + + + +

AmendaPierdere ProcentAdaugat: Integer Adauga() : void Salveaza() : void Sterge() : void TotalAmenda() : Integer NrCartiPierdute() : Integer

1

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.

Declarare variabile

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

Generare Fisa de Imprumut Noua

Introducere Date Carti

[ConfirmareDate=False] [ConfirmareDate=True] Sterge Fisa De Imprumut

k=1

[ktmp.Count()] [Carte.Item(ItemCarte)=FALSE]

[NumarCartiImprumutate != 0] [Carte.Item(ItemCarte)=TRUE]

Carte.Item(ItemCarte).Disponibila=FALSE Cancel

pCartiImprumutate.Adauga(tmp.k)

NumarCartiImprumutate = NumarCartiImprumutate + 1

tmp = Nothing ; ConfirmareDate=False

Declarare variabile

pCititor : Cititor ConfirmareDate : Boolean ConfirmareAbonamentNou : Boolean pAbonament : Abonament

Introducere Date Cititor

[ConfirmareDate = False] ExistaCititor(Cod) [ConfirmareDate = True]

pCititor = New Cititor [True] Cancel pCititor.Salveaza(CNP,NumeCititor,PrenumeCititor,DataNasterii,AdresaCititor,TelefonCititor,eMailCititor) [False]

ColCititori.Add(pCititor)

[ConfirmareAbonamentNou = False]

[ConfirmareAbonamentNou = True]

Introducere Date Abonament

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 :FrmAcces Cititor par [Autentificare()] :FisaImprumut :ColFisaImprumut :FrmImprumuta :ColTmp :ColCarteImprumutata

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 Cititor par [Autentificare()]

:FrmAbonare

:ColAbonamente

+ AbonamentNou : Abonament

loop [ConfirmareAbonamentNou = True] 1: IntroduceDate()

2: ConfirmaDate() 3: AbonamentNou() :tmpAbonament

4: ConfirmareDate() 5: AdaugaAbNou()

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 Entry/IdPlata Do/AdaugaSuma Do/AdaugaAmenda

Amenda

Entry/IdAmenda Do/TotalPlata()

[TotalPlata() + SumaPlatita > ValoareAmenda()]

[TotalPlata() + SumaPlatita = 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 AbonamentPublic 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

AmendaPublic 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 IntarzierePublic 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 PierderePublic 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 ImprumutPublic 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 ImprumutatePublic 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

CartePublic 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

AutorPublic 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

GenPublic 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

SalaPublic 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

BibliotecarPublic 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

PlataPublic 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 cititoriModule moduleColCititor Public ColCititor As New Collection End Module

Modulul pentru functia de cautare CNP in colectia de cititoriModule 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 accesPublic 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 inregristrarePublic 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