Diagrama cazurilor de utilizare Pentru aceasta diagrama am folosit urmatoarele i
nteractiuni intre actorii cititor si bibliotecar: 1. Un cititor se autentifica i
n sistem. Daca acesta nu este inregistrat, atunci se va trece la inregistrarea s a. 2. Dupa ce a fost inregistrat acesta va analiza abonamentele prezentate de bi bliotecar. Cititorul poate refuza sau accepta o oferta. Daca accepta oferta, atu nci 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 u rma cautarii efectuate, acesta cere imprumutul, iar bibliotecarul ii va primi ce rerea, 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, bi bliotecarul o primeste si verifica daca imprumutul a durat mai mult de 15 zile i i 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 pl ateasca, si va scoate cartea din gestiune. 7. Bibliotecarul poate adauga carti i n gestiune. extend {cititor inexistent} Se Autentifica include include Analizeaza Abonamentele inc ude extend Refuza Abonamentul extend include Accepta Abonamentul Intocmeste Abonament ou include extend Cauta extend Cauta Gen extend Adauga Carte Supervizeaza Abonamentul registreaza Cititor Nou Prezinta Abonamente Cauta Carte Cauta Autor Primeste Cererea Cititor include include include Cere Imprumutul Revizuieste Cererea de Imprumut include exte rte 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 d e gestiune: 1. Un cititor are unul sau mai multe abonamente. 2. Un abonament est e dat unui singur cititor. 3. Un abonament apartine unui singur tip de abonament e. 4. Un tip de abonament este folosit de mai multe abonamente. 5. Un cititor sc rie 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 m ai multe fise de imprumut (deoarece este returnatade obicei). 8. O carte apartin e unui gen. 9. O sala are mai multe carti. 10. Un gen apartine doar unei sali. 1 1. 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 amen da 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 bib liotecar supervizeaza mai multe abonamente. 21. Un abonament este supervizat de un bibliotecar. Restrictii: 1.Data returnarii care apare pe o fisa de imprumut t rebuie sa fie mai mare sau egala cu cea a imprumutului. 2. Data de sfarsit a abo namentului trebuie sa fie mai mare sau egala cu cea de inceput. 3. Ora de inchid ere a unei sali trebuie sa fie dupa ora deschiderii. Autor A Scris 1..* + + + Adauga() : void Salveaza() : void Sterge() : void Apart ine 0..* + + 1 + + Gen IdGen: Integer NumeGen: String VarstaMinima: Integer Adau ga() : void Salveaza() : void Sterge() : void NrCarti() : Integer 1..* 1 Sala 1 CartiImprumutate + + + + + IdCarte: Carte NrFisa: FisaImprumut Adauga() : void S alveaza() : void Sterge() : void NrCartiImprumutate() : Integer ItemCarte() : In teger + + + + + + + NrSala: Integer DenumireSala: String EtajSala: Integer OraDe schidereSala: Integer OraInchidereSala: Integer Adauga() : void Salveaza() : voi d Sterge() : void TotalCartiInSala() : Integer NrCartiDisponibileInSala() : Inte ger DurataProgram() : Integer NumarGenuriInSala() : Integer IdAutor: Integer Num eAutor: String DataNastere: Date OraInchidere > OraDeschidere /Este Specializata In 0..* Carte + + + + IdCarte: Integer DenumireCarte: String Disponibilitate: Boole an Valoare: Integer ISBN: String DataAparitie: Date Editura: String Adauga() : v oid Salveaza() : void Sterge() : void NrAutori() : Integer Se Afla 1..* Imprumuta DataReturnare >= DataIntocmire 1..* 0..* FisaImprumut + + + + NrFisa: Integer DataIntocmire: Date DataReturnare: Dat e = Nothing Adauga() : void Salveaza() : void Sterge() : void Returnare() : void 0..* + + + Cititor CNP: String NumeCititor: String PrenumeCititor: String DataN asterii: 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 V aloareAmenda() : void TotalPlati() : Double Se Plateste 1 0..* + + + IdPlata: In teger 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: Dat e Adauga() : void Salveaza() : void Sterge() : void Valabilitate() : Integer 0.. * 0..* + + + Apartine - TipAbonament IdTip: Integer NumeTip: String Descriere: String Adauga() : void Sa lveaza() : void Sterge() : void 1 1 0..* Bibliotecar + + + + IdBibliotecar: UShort NumeBibliotecar: String PrenumeBibliot ecar: String Adauga() : void Salveaza() : void Sterge() : void RepartizeazaAbona ment() : 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 cart i. Mai intai utilizatorul incarca lista intr-o colectie temporara. Din aceasta c olectie se va parcurge fiecare carte, i se va afla pozitia corespunzatoare din c olectia de carti, iar daca aceasta este disponibila, i se va modifica disponibil itatea si va fi adaugata pe lista. Daca la sfarsitul acestei bucle nu se afla ni cio 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 intreba t daca doreste un tip de abonament si cat timp va dori un abonament, va introduc e 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 NumarCartiI mprumutate: Integer =0 Generare Fisa de Imprumut Noua Introducere Date Carti [ConfirmareDate=False] [ConfirmareDate=True] Sterge Fisa De Imprumut k=1 [k<=tmp.Count()] [NumarCartiImprumutate = 0] ItemCarte=tmp.Item(k).ItemCarte() [ k>tmp.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 pAb onament : Abonament Introducere Date Cititor [ConfirmareDate = False] ExistaCititor(Cod) [ConfirmareDate = True] pCititor = New Cititor [True] Cancel pCititor.Salveaza(CNP,NumeCititor,PrenumeCi titor,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 cere re 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 di sponibila, atunci va fi imprumutata. Daca nicio carte nu este disponibila, atunc i fisa de imprumut generata va fi stearsa. Dupa finalizarea operatiunilor utiliz atorul va inchide formularul de imprumut. Diagrama 2 Aceasta diagrama descrie al egerea unui nou abonament de catre un cititor. Dupa ce se autentifica va introdu ce 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 incarcat e in colectia de abonamente. Acest lucru se va intampla cat timp cititorul va do ri 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 nou a si daca aceasta va fi mai mare decat valoarea totala a amenzii, atunci plata v a fi stearsa. DatePlata CrearePlata Entry/IdPlata Do/AdaugaSuma Do/AdaugaAmenda Amenda Entry/IdAmenda Do/TotalPlata() [TotalPlata() + SumaPlatita > ValoareAmenda()] [TotalPlata() + SumaPlatita <= ValoareAmenda()] Plata Entry/IdPlata Do/Sterge Diagrama de amplasare In aceasta diagrama avem nodul principal reprezentat de se rver unde vom avea clasele implementate in VB.Net. Avem si un nod care reprezint a baza de date implementata in Microsoft SQL Server. Nodul cu aplicatii pentru c ititori reprezinta totalitatea formularelor accesibile acestora. Nodul cu aplica tii pentru bibliotecari reprezinta totalitatea formularelor accesibile acestora, deoarece ei vor putea executa actiuni speciale. device :AppServer device :SQLserver executionEnvironment :VB.Net TipAbonament.VB device :AppCititor Abonament.VB executionEnviron... :VB.Net Cititor.VB frmAcces.VB Plata.VB Amenda.VB AmendaIntarziere.VB frmImprumuta.VB frmRestituire.VB AmendaPierdere.VB Bibliotecar.VB frmPlata.VB frmAbonarevb Carte.VB FisaImprumut.VB Gen.VB Autor.VB Sala.VB device :AppBibliotecar 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 interme diul fisei de imprumut se vor adauga toate cartile imprumutate, li se va verific a disponibilitatea in componenta de carti si li se va modifica disponibilitatea daca pot fi imprumutate. ImprumutCarti :frmImprumut delegate IntroducereDate :FisaImprumut :CartiImprumutate :Carte Implementare in Microsoft SQL Server Putem observa urmatoarele tabele in modelul relational: Cititor (CNP, NumeCitito r, PrenumeCititor, DataNasterii, AdresaCititor, eMailCititor) Abonament(NrAbonam ent, DataInceput, DataSfarsit, CNP, IdTip, IdBibliotecar) TipAbonament(IdTip, Nu meTip, Descriere) Bibliotecar(IdBibliotecar, NumeBibliotecar, PrenumeBibliotecar ) Amenda(IdAmenda, CNP, NrFisa) AmendaIntarziere(IdAmenda, SumaAmenda) AmendaPie rdere(IdAmenda, ProcentAdaugat) Plata(IdPlata,SumaPlata, IdAmenda, CNP) FisaImpr umut(NrFisa, DataIntocmire, DataReturnare, CNP) CartiImprumutate(IdCarte, NrFisa ) Carte(IdCarte, DenumireCarte, Disponibilitate, Valoare, ISBN, DataAparitie, Ed itura, NrSala, IdGen) Sala(NrSala, DenumireSala, EtajSala, OraDeschidereSala, Or aInchidereSala) Gen(IdGen, NumeGen, VarstaMinima, NrSala) Autor(IdAutor, NumeAut or, DataNasterii) AutoriCarte(IdAutor, IdCarte) 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 c Abonament 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) Nu meCititor = value End Set End Property Property Prenume() Get Return PrenumeCiti tor End Get Set(ByVal value) PrenumeCititor = value End Set End Property Propert y DataNasteriiCititor() Get Return DataNasterii End Get Set(ByVal value) DataNas terii = value End Set End Property Property Adresa() Get Return AdresaCititor En d Get Set(ByVal value) AdresaCititor = value End Set End Property Property Telef on() Get Return TelefonCititor End Get Set(ByVal value) If IsNumeric(value) Then Tele fonCititor = value End Set End Property Property eMail() Get Return eMailCititor End Get Set(ByVal value) eMailCititor = value End Set End Property Property Abo nament() Get Return cAbonament End Get Set(ByVal value) cAbonament = value End S et End Property Property Amenda() Get Return cAmenda End Get Set(ByVal value) cA menda = value End Set End Property Property Plata() Get Return cPlata End Get Se t(ByVal value) cPlata = value End Set End Property Property FisaImprumut() Get R eturn cFisaImprumut End Get Set(ByVal value) cFisaImprumut = value End Set End P roperty Public Sub Adauga() End Sub Public Sub Salveaza(ByVal pCNP As String, By Val pNume As String, ByVal pPrenume As String, ByVal pDataNasterii As Date, ByVa l pAdresa As String, ByVal pTelefon As String, ByVal peMail As String) CNPCitito r = 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 Dat e Private DataSfarsit As Date Private oBibliotecar As Bibliotecar Property NrAb( ) Get Return NrAbonament End Get Set(ByVal value) NrAbonament = value End Set En d Property Property DataI() Get Return DataInceput End Get Set(ByVal value) Data Inceput = value End Set End Property Property DataSf() Get Return DataSfarsit En d Get Set(ByVal value) If value >= DataI Then DataSfarsit = value End Set End Pr operty Property Bibliotecar() Get Return oBibliotecar End Get Set(ByVal value) o Bibliotecar = value End Set End Property Public Sub Adauga() End Sub Public Sub Salveaza(ByVal pNrAbonament As Integer, ByVal pDataInceput As Date, ByVal pDataS farsit As Date) NrAb = pNrAbonament DataI = pDataInceput DataSf = pDataSfarsit End Sub Public Sub Sterge() End Sub P ublic Function Valabilitate() As Integer Return (DataSf - DataI) End Function En d Class Tip Abonament Public Class TipAbonament Private IdTip As Integer Private NumeTip As String Pri vate Descriere As String Private cAbonament As New Collection Property IdTipAb() Get Return IdTip End Get Set(ByVal value) IdTip = value End Set End Property Pr operty Nume() Get Return NumeTip End Get Set(ByVal value) NumeTip = value End Se t End Property Property DescriereAb() Get Return Descriere End Get Set(ByVal val ue) Descriere = value End Set End Property Property Abonament() Get Return cAbon ament End Get Set(ByVal value) cAbonament = value End Set End Property Public Su b Adauga() End Sub Public Sub Salveaza(ByVal pIdTip As Integer, ByVal pNume As S tring, ByVal pDescriereAb As String) IdTipAb = pIdTip Nume = pNume DescriereAb = pDescriereAb End Sub Public Sub Ster ge() End Sub End Class Amenda Public Class Amenda Private IdAmenda As Integer Private oFisaImprumut As FisaImp rumut Private cPlata As New Collection Property IdAm() Get Return IdAmenda End G et Set(ByVal value) IdAmenda = value End Set End Property Property FisaImprumut( ) Get Return ColFisaImprumut End Get Set(ByVal value) ColFisaImprumut = value En d 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 Overlo ads 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.I tem(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).SumaP latita Next k Return Total End Function End Class Amenda Intarziere Public Class AmendaIntarziere Inherits Amenda Private SumaAmenda As Integer Prop erty Suma() Get Return SumaAmenda End Get Set(ByVal value) SumaAmenda = value En d Set End Property Public Overloads Sub Salveaza(ByVal pIdAmenda As Integer, ByVal pSumaAmenda As I nteger, 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 Intege r Return (DateDiff(DateInterval.Day, Today, FisaImprumut.DataIn) - 15) * SumaAme nda End Function End Class Amenda Pierdere Public Class AmendaPierdere Inherits Amenda Private ProcentAdaugat As Integer Pr operty 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 = pProcen tAdaugat FisaImprumut = pFisaImprumut End Sub Public Function TotalAmenda() As Integer Dim k As Integer Dim Total As Integer T otal = 0 For k = 0 To FisaImprumut.Count Total += Carte.Item(cautaC(FisaImprumut .ColCarte(k).IdCarte)).ValoareCarte Next k Return Total End Function Public Func tion 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 Dat e Private DataReturnare As Date = Nothing Private oCititor As Cititor Private cC artiImprumutate As New Collection Property NrF() Get Return NrFisa End Get Set(B yVal value) NrFisa = value End Set End Property Property DataIn() Get Return Dat aIntocmire End Get Set(ByVal value) DataIntocmire = value End Set End Property P roperty DataR() Get Return DataReturnare End Get Set(ByVal value) If value >= DataIn Then DataReturnare = value End Set End Prope rty Property Cititor() Get Return oCititor End Get Set(ByVal value) oCititor = v alue End Set End Property Property CartiImprumutate() Get Return cCartiImprumuta te End Get Set(ByVal value) cCartiImprumutate = value End Set End Property Publi c Sub Adauga() End Sub Public Sub Salveaza(ByVal pNrFisa As Integer, ByVal pData Intocmire 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 FisaImp rumut Property IdC() As Integer Get Return IdCarte End Get Set(ByVal value As In teger) 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 Nr CartiImprumutate() 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 E nd Class Carte Public Class Carte Private IdCarte As Integer Private DenumireCarte As String Pr ivate Disponibilitate As Boolean Private Valoare As Integer Private ISBN As Stri ng 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(By Val value) DenumireCarte = value End Set End Property Property Val() Get Return Valoare End Get Set(ByVal value) Valoare = value End Set End Property Property I SBNcarte() 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 Prope rty Property Autor() Get Return cAutor End Get Set(ByVal value) cAutor = value E nd 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 Intege r, ByVal pDen As String, ByVal pDisponibilitate As Boolean, ByVal pValoare As In teger, ByVal pISBN As String, ByVal pDataAparitie As Date, ByVal pEditura As Str ing) 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 Privat e DataNastere As Date Property IdAut() Get Return IdAutor End Get Set(ByVal valu e) IdAutor = value End Set End Property Property Nume() Get Return NumeAutor End Get Set(ByVal value) NumeAutor = value End Set End Property Property DataNaster eAutor() 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 = pDa taNastere End Sub Public Sub Sterge() End Sub End Class Gen Public Class Gen Private IdGen As Integer Private NumeGen As String Private Vars taMinima As Integer Private cCarte As New Collection Property IdG() Get Return I dGen 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 Propert y Property VarstaMin() Get Return VarstaMinima End Get Set(ByVal value) VarstaMi nima = 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 Pu blic Sub Salveaza(ByVal pIdGen As Integer, ByVal pVarstaMin As Integer) IdG = pI dGen VarstaMin = pVarstaMin End Sub Public Sub Sterge() End Sub Public Function NrCarti() Return Carte.Count End Fun ction End Class Sala Public Class Sala Private NrSala As Integer Private DenumireSala As String Priva te EtajSala As Integer Private OraDeschidereSala As Integer Private OraInchidere Sala 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 OraDesch idere() 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 va lue) cGen = value End Set End Property Public Sub Adauga() End Sub Public Sub Sa lveaza(ByVal pNr As Integer, ByVal pDenumire As String, ByVal pEtaj As Integer, ByVal pOraDeschidere As Integer, ByVal pOraInchidere As Integer) Nr = pNr Denumi re = pDenumire Etaj = pEtaj OraDeschidere = pOraDeschidere OraInchidere = pOraIn chidere End Sub Public Sub Sterge() End Sub Public Function TotalCartiInSala() A s Integer Return Carte.count End Function Public Function NrCartiDisponibileInSa la() As Integer Dim k As Integer Dim Nr As Integer Nr = 0 For k = 0 To Carte.cou nt If Carte.Item(k).Disponibila = True Then Nr += 1 Next k Return Nr End Functio n Public Function DurataProgram() As Integer Return (OraInchidere - OraDeschider e) 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 Collect ion Property Id() Get Return IdBibliotecar End Get Set(ByVal value) IdBiblioteca r = value End Set End Property Property Nume() Get Return NumeBibliotecar End Ge t Set(ByVal value) NumeBibliotecar = value End Set End Property Property Prenume () Get Return PrenumeBibliotecar End Get Set(ByVal value) PrenumeBibliotecar = v alue End Set End Property Property Abonament() Get Return cAbonament End Get Set (ByVal value) cAbonament = value End Set End Property Public Sub Adauga() End Su b Public Sub Salveaza(ByVal pId As Integer, ByVal pNume As String, ByVal pPrenum e 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 ColAb onament.Count If IsDBNull(ColAbonament.Item(k).Bibliotecar) Then ColAbonament.Item(k).Bibliote car.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 Pri vate 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 Propert y Public Sub Adauga() End Sub Public Sub Salveaza(ByVal pId As Integer, ByVal pS uma 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 Bool ean Dim k As Integer For k = 1 To ColCititor.Count If ColCititor.Item(k).CNPCiti tor = 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, ByV al e As System.EventArgs) Handles btnOK.Click Dim buton As DialogResult buton = MsgBox("Sunteti sigur ca ati introdus datele corect?", MsgBoxStyle.YesNo, "Confi rmare Date") If buton = Windows.Forms.DialogResult.Yes Then If CautaCNP(txtCNP.T ext.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 frmInregistrar e_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBas e.Load Me.txtCNP.Text = frmAcces.txtCNP.Text.ToString txtDataNasterii.Text = CDa te(Format(dtpDataNastere.Value, "D")) End Sub Private Sub DateTimePicker1_ValueC hanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtpDa taNastere.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.To String, txtPrenume.Text.ToString, Convert.ToDateTime(txtDataNasterii.Text), txtA dresa.Text.ToString, txtTelefon.Text.ToString, txteMail.Text.ToString) ColCitito r.Add(obCititor) MsgBox("Cititorul a fost adaugat") Me.Close() End Sub End Class Capturi de ecran din timpul executiei programului