From 3b6a5a81e8de03eb7b69e7d55af0435f2d20d872 Mon Sep 17 00:00:00 2001 From: ridvanbozoglu Date: Thu, 17 Oct 2024 10:08:59 +0300 Subject: [PATCH] task is done. --- .idea/misc.xml | 2 +- .idea/uiDesigner.xml | 124 ++++++++++++ .idea/vcs.xml | 6 + README.md | 2 +- out/production/s16-Challenge/Main.class | Bin 0 -> 2727 bytes .../s16-Challenge/Shared/CustomDate.class | Bin 0 -> 2719 bytes out/production/s16-Challenge/book/Book.class | Bin 0 -> 5380 bytes .../s16-Challenge/book/BookEdition.class | Bin 0 -> 1354 bytes .../s16-Challenge/book/BookStatus.class | Bin 0 -> 1290 bytes .../s16-Challenge/book/GenreEnum.class | Bin 0 -> 2105 bytes .../book/bookSubClasses/Journals.class | Bin 0 -> 670 bytes .../book/bookSubClasses/Magazines.class | Bin 0 -> 673 bytes .../book/bookSubClasses/StudyBooks.class | Bin 0 -> 676 bytes out/production/s16-Challenge/description.puml | 117 ++++++++++++ .../s16-Challenge/library/Library.class | Bin 0 -> 6017 bytes .../s16-Challenge/person/Author.class | Bin 0 -> 1959 bytes .../s16-Challenge/person/Librarian.class | Bin 0 -> 3169 bytes .../s16-Challenge/person/Person.class | Bin 0 -> 336 bytes .../person/reader/MemberRecord.class | Bin 0 -> 3315 bytes .../s16-Challenge/person/reader/Reader.class | Bin 0 -> 2343 bytes .../person/reader/membershipType.class | Bin 0 -> 1259 bytes src/Main.java | 47 ++++- src/Shared/CustomDate.java | 113 +++++++++++ src/book/Book.java | 178 ++++++++++++++++++ src/book/BookEdition.java | 11 ++ src/book/BookStatus.java | 11 ++ src/book/GenreEnum.java | 25 +++ src/book/bookSubClasses/Journals.java | 13 ++ src/book/bookSubClasses/Magazines.java | 13 ++ src/book/bookSubClasses/StudyBooks.java | 13 ++ src/description.puml | 116 ++++++++++++ src/library/Library.java | 139 ++++++++++++++ src/person/Author.java | 44 +++++ src/person/Librarian.java | 78 ++++++++ src/person/Person.java | 7 + src/person/reader/MemberRecord.java | 84 +++++++++ src/person/reader/Reader.java | 62 ++++++ src/person/reader/membershipType.java | 9 + 38 files changed, 1211 insertions(+), 3 deletions(-) create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 out/production/s16-Challenge/Main.class create mode 100644 out/production/s16-Challenge/Shared/CustomDate.class create mode 100644 out/production/s16-Challenge/book/Book.class create mode 100644 out/production/s16-Challenge/book/BookEdition.class create mode 100644 out/production/s16-Challenge/book/BookStatus.class create mode 100644 out/production/s16-Challenge/book/GenreEnum.class create mode 100644 out/production/s16-Challenge/book/bookSubClasses/Journals.class create mode 100644 out/production/s16-Challenge/book/bookSubClasses/Magazines.class create mode 100644 out/production/s16-Challenge/book/bookSubClasses/StudyBooks.class create mode 100644 out/production/s16-Challenge/description.puml create mode 100644 out/production/s16-Challenge/library/Library.class create mode 100644 out/production/s16-Challenge/person/Author.class create mode 100644 out/production/s16-Challenge/person/Librarian.class create mode 100644 out/production/s16-Challenge/person/Person.class create mode 100644 out/production/s16-Challenge/person/reader/MemberRecord.class create mode 100644 out/production/s16-Challenge/person/reader/Reader.class create mode 100644 out/production/s16-Challenge/person/reader/membershipType.class create mode 100644 src/Shared/CustomDate.java create mode 100644 src/book/Book.java create mode 100644 src/book/BookEdition.java create mode 100644 src/book/BookStatus.java create mode 100644 src/book/GenreEnum.java create mode 100644 src/book/bookSubClasses/Journals.java create mode 100644 src/book/bookSubClasses/Magazines.java create mode 100644 src/book/bookSubClasses/StudyBooks.java create mode 100644 src/description.puml create mode 100644 src/library/Library.java create mode 100644 src/person/Author.java create mode 100644 src/person/Librarian.java create mode 100644 src/person/Person.java create mode 100644 src/person/reader/MemberRecord.java create mode 100644 src/person/reader/Reader.java create mode 100644 src/person/reader/membershipType.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 07115cdf..de8c3387 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 00000000..2b63946d --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index cf4d4e1c..34a2b98f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Proje sayımız ilerledikçe proje yönetimimizi kolaylaştırmak adına projele ### Hedeflerimiz: -### Library System +### library.Library System * ![](challenge1.png) * Bir kütüphane sistemi modelimiz mevcut. diff --git a/out/production/s16-Challenge/Main.class b/out/production/s16-Challenge/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..23de7a269126c046a4030bc705747bb5eff3b540 GIT binary patch literal 2727 zcmaJ@*>@9F82{Zi$xNmLrPH+7QlJIFgtVkBlmiW7mjp;jTTDZ0alvUbrbClSnIy%6 zD~h6m8{&%MzKha__GmpG&jDY2@X2@o4<9^!Hx}j$eFqFGJF##e&Wl|qCRdd=Gwx|Sw z>!@H@GpU)GwBhT{WyjN|h&3c0(c@F9AwfbVH?oeQ#vNWVGn6%TBjM+&6$V#9fvKr+ z&Gbd`M1+gMmeR7Cgep`DSkF+ulCfV)jcR5@8%vvUC+biyV1tYXY-DIy$(hP?X2$i& z==7wo z-3-oAZ9+9WI`*_lXu@`G`W}Y8C6c!~oh2-BB_0_&;AK$Mc--WPYFhd^u@9XB{4)0AUP|AhqF`Ll>S==-@n9%26g?3PgrcFr z0SY)=%;OhuA4Ap9xN2%~UvDmxO{W4Bn1lo9=DF@6m)xOH$P;rSfS`bbG7jM|!`i&6 zLz-b~K_i!yDIg;wi`)vl z8=B5!HL7NLI!CBiV^u~^`;HPmWeKG;HRTs^nv|zBL!0>H8nwza&ImXw;|UIH)%nV; zlpuVW1CTWCyx!S$S%@d92XJxR@o z_vFK@rPf;2Io8R2Nyf`~g-&ilpVE5Nu?b7U=I-PBwYVhXRlG)?l2-w3l7c6s4{%T3 z;GVom*y|2(e13~Y{i;sK%hsEY6LwaHbweA-ap;Yzqe)s(!s#(J8ByMjvE1-mp4VPp=@@I0guMV`aj{&`f5DAjYQ8JI`yh%|${ zTD)`E)M=YX6R{{;X|}D?UT1Hag?pGtooyD)!}Dkzk(!luWw#4^X0Uf22S#kRD&em= zbj_f54xvs5=W!w2tPCheU5J$C5-hH0vl3GtaN&4qF45w8s9AYLdDMl`8N?SXQaofa z!7Vy1u9J7>lDu_}StN(Ob%I4ii#RPJaWaERWoj0WdujG0pLr<|8qVU`#Vr@2O7$$B zANEQGN<7x6&Q5X{xE#;c#aX;wkngOZK|yS(h*Q`|1zQJ^UOfu^8&C}|Y6vB3(S`L0 z(L*PNdg_b~_?dS9q34bro0&{clxj4wdTe1$*vj14##*tR?V zkU%pt(88waZa;@sb`fp)ra5CZ2Cm{m@6&W*L6`AC9Q6qyPW_ literal 0 HcmV?d00001 diff --git a/out/production/s16-Challenge/Shared/CustomDate.class b/out/production/s16-Challenge/Shared/CustomDate.class new file mode 100644 index 0000000000000000000000000000000000000000..78dc6f70e193e517b24b226a866d3811346202b2 GIT binary patch literal 2719 zcmZ`**>V#{6g@4CG+IVR@`{mUgB{1R3J@Q_r6r9zhXd{Zjq^vq}hM7iA4eY^XfbI-lE?SKCJ{VxFLPzb>TuL?zj z4}O8@9sQo3DeKizCbxdaC|Cmi1+!{erv$vInbi;i2&xEa2tyNyt!(ObqnKH2Hmq9Z zylxo+VY9KSm(8NH@~5)d?99y|@AYZeg(&?L^=$!>m9~Bj1JdTJ)T-8|v=MrOHI(8~^eZ?*P~z({Jw@$mZgymT?8;eAXC zs3pV7ld`Q-R_@GbNXwlFcP`8DC`*&X#<5?+f!5A>eLJ^dZ%b`6lJX&nZp*eBz!3`C ziEBH6IXY|^Y|#Svuq$?{nsoG$hT}LP5HcIfhQ8%6Q&LPt01E4m$O^)2`C5Yyc2T)5Dz*I8~(NeuNY1xCj-GnoQ`R=#O#xHhT$Dz~_{ zb4@)tb+Qs>KQyvc*X~)%s>t)GRcq-s*eXA}FWX8)%*K*lFPl_gQ?JUr^k6@8lg(AL zHf0L^#@9`~OgTa;wPw9wTrj0>yE@H#Q05)`SUw)U4qlFISk64MN$oFNlivvF6o)uw zxq1kNKfrAIIYc_1NIrx507L2cQ$*51{*jzQ%Z zrUMOqbUeUuH(~c8#_k!wCGMsj_gKbdt_Wn)6820IlVoS*t3jVvIH%qx@I?udTOUTr zYfqb*!uhB8jAw!vvRSab$iZPYz}TdSUZP*cw96sGujKDb|AxquHk98sj@zy^=YSiu zz)H`{u{SSI_Pop&itc2xx{(Lpygc3W@-z5`m;Z8x+>{%Lgue?=u^_1#bY z0H60sLV1W_BC7o?7g6nxP~ICI&*hb9BA55cnLj#~%d2u0kh7>?PNTLV>R5udC1mf0 zIX|JK*{{bQAULWh(PS?EBf}e25=!ylPf(S|P`t8AoMxTi%K$8q)CKr)ku93FTXc=e z71&@VOI$YWoI|>u+WYN>z3;XKLvkB-jnaIMJblW<_rdQEiGOij#m(3m!4lzLF;|RR zT*>N-$JMRx5sF8P{Dk8%@g2W!QgvGCMwjOCHl4WJr4o?;`b1POkp$Lo%SF0M{<1w& z{qz1m;mLbt&Aq_MmAoR;Z_i}w4$9dJEOs6X2lloN>vV9c-NCog%Y3YP1fJtE;Sb0 zYAoVQzN=0J2H=Z~jGkfa0$;W1Zn$)(Tktzbwixc9pHn-Cofau7=hTa%My(5Wx(z$s Q1?z)nil72IuX?clKZ51RBme*a literal 0 HcmV?d00001 diff --git a/out/production/s16-Challenge/book/Book.class b/out/production/s16-Challenge/book/Book.class new file mode 100644 index 0000000000000000000000000000000000000000..b8f233fed716b3b74502aa6c1c2a61ed74a96067 GIT binary patch literal 5380 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 DTNa-G literal 0 HcmV?d00001 diff --git a/out/production/s16-Challenge/book/bookSubClasses/Magazines.class b/out/production/s16-Challenge/book/bookSubClasses/Magazines.class new file mode 100644 index 0000000000000000000000000000000000000000..31b1caf95620c79bdc793c52a22c72bf1ee9695f GIT binary patch literal 673 zcmZ`%+fLg+5IvjNxp7ZQ!M#O&10?DXa8;>E0D%lIK|J+k6EDe@csE+F`@moDDSfKc zhkigms$zDNB9($Ijc3lz%$Ygs-+zAo0?C;V0_Q7{C3oe74Gl){TL9|?2GM>9g& zsUGv$6*tnwOE9ogNk!cS*>hbJTG^eQW(@3%0`8Y}EdOp#^or-6>^~hCLMyGCB%B*L zrY{>X)Wt#pH=p0EM?8O3VOYyZ3Vl5<&3Njz>pUS8HJmt=7&aek#?TsSsujo55wAb! z^udjX_o&k)yN8Bx*G#ra(H&Ok1v&@a!zhTt-CER$no;Wq*mr^}XpwdQ2PmzLRiFID zmv$&xBbb*8af%jgJ7kY0SFNxaa?O+!T??rgE?DraPh>I?s@Cx4D E1KQ`G^#A|> literal 0 HcmV?d00001 diff --git a/out/production/s16-Challenge/book/bookSubClasses/StudyBooks.class b/out/production/s16-Challenge/book/bookSubClasses/StudyBooks.class new file mode 100644 index 0000000000000000000000000000000000000000..266ef66e4920f397b0905f92dfe997878d60113b GIT binary patch literal 676 zcmZ`%+fLg+5IvjNxd9DL%Ehz=`UaI+e}Jn>Bmo4ncnRXEFPnHtmd3l$dR?iX(NF0U z5)b`=epJQmhKp#aEsbZ+&dixP>)(HFegWuVr-cftbp*=@QDbP1wEi0R$S~ACNhR%P zhJ5cdoeNWF6(5v#s!ft!@ozkyaW#pD)<`vZ1{tIey$&;JrB+EgoN^%7{Z%=E?p=9Sw$UU+c`U9Q9|sC`3V2W%k|8Rxkv8oe73^DwQ}Z^N}#;d^97Z zlj<>_U2r2^d&_2`%joPcjB}N&)xlI+~~Z6TjlQXZuG9hR{muMhWLe zj_Jz=40W;4zzygqyvFysFsx)GhQ6GaW;_)%Y4;hasNuxv#IX9eY7DKRrdn|%9dY|n zsgG_xyhEMt**!FkyJ@mbihf{;UZDGa=R*`k;btvrM9rvm4fd1Z3R+~{F9J&IVA&^s z@ugjgRtTqJyg-{8I&T#(QT1MjqQHBv$P2x5=U;qFB literal 0 HcmV?d00001 diff --git a/out/production/s16-Challenge/description.puml b/out/production/s16-Challenge/description.puml new file mode 100644 index 00000000..6f8cae07 --- /dev/null +++ b/out/production/s16-Challenge/description.puml @@ -0,0 +1,117 @@ +@startuml +package person { + + class Person { + - name: String + # whoyouare(): String + } + + class Reader { + - member_record: MemberRecord + --- + + setMember_record(memberRecord: MemberRecord): void + + getMember_record(): MemberRecord + # whoyouare(): String + } + + class Author { + - books: Set + + show_book(): Set + + setBooks(books: Set): void + + new_book(book: Book): boolean + + whoyouare(): String + } + + class Librarian { + - password: String + - library: Library + + Librarian(name: String, password: String, library: Library) + + getLibrary(): Library + + createRecord(reader: Reader, memberRecord: MemberRecord): boolean + + addReaderToLibrary(reader: Reader): boolean + + giveBackBook(bookId: long): boolean + + whoyouare(): String + } + + class MemberRecord { + - member_id: long + - library: Library + - reader: Reader + - type: membershipType + - date_of_membership: CustomDate + - lendedBooks: Set + - MAX_LENDED_BOOKS: int + - dept: double + + MemberRecord() + + MemberRecord(member_id: long, type: membershipType, reader: Reader, library: Library) + + getDept(): double + + getLendedBooks(): Set + + getLibrary(): Library + + setLibrary(library: Library): void + + addBookToLendedBooks(book: Book): boolean + + returnBook(id: long): boolean + + toString(): String + } + + Person <|-- Author : Inherits + Person <|-- Reader : Inherits + Person <|-- Librarian : Inherits + Reader --> MemberRecord : Has a + MemberRecord --> Library : Uses +} + +package book { + class Book { + + getPrice(): double + + getName(): String + + setStatus(status: BookStatus): void + + setOwner(owner: MemberRecord): void + + get_author(): Author + + getGenre(): GenreEnum + + lendBook(record: MemberRecord): void + + getBookId(): long + } + + class BookStatus { + <> + + AVAILABLE + + ON_HOLD + + LENT_OUT + } + + class GenreEnum { + <> + + FICTION + + NON_FICTION + + SCI_FI + + BIOGRAPHY + + FANTASY + } +} + +package library { + class Library { + - books: Map + - readers: Map + + Library() + + Library(books: Map, readers: Map) + + get_book(): Map + + get_book(id: long): Book + + get_book(name: String): Book + + get_book(author: Author): Set + + deleteBook(id: long): boolean + + getBooksByGenre(genre: GenreEnum): List + + get_readers(): Map + + searchForReader(name: String): Reader + + new_book(book: Book): boolean + + addReader(reader: Reader): boolean + + lendBook(bookId: long, readerName: String): boolean + + toString(): String + } +} + +Author --> Book : Has a Set of +Library --> Book : Contains +Library --> Reader : Contains +Library --> MemberRecord : Uses +@enduml diff --git a/out/production/s16-Challenge/library/Library.class b/out/production/s16-Challenge/library/Library.class new file mode 100644 index 0000000000000000000000000000000000000000..3c52efd7bda0c86c9eaccb9943877802e6703a34 GIT binary patch literal 6017 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 literal 0 HcmV?d00001 diff --git a/out/production/s16-Challenge/person/Person.class b/out/production/s16-Challenge/person/Person.class new file mode 100644 index 0000000000000000000000000000000000000000..e4741c1857952e795a8ce63033f297d1174aec63 GIT binary patch literal 336 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 literal 0 HcmV?d00001 diff --git a/out/production/s16-Challenge/person/reader/membershipType.class b/out/production/s16-Challenge/person/reader/membershipType.class new file mode 100644 index 0000000000000000000000000000000000000000..ca8037ec5a3ce105c0b8acc84c4c2ec72a913bc9 GIT binary patch literal 1259 zcmah|?@!ZE6g_Wk*RB?sLlKbQplqNF6#T&^GUkj+1|#cOviPZt3ME}fx{kze{z*C# zAsP*z{iBTcJ!c$2=aTlmdwS1#@7{Oz{m18T05yo-JHoV@uv4NbPQow#h`%^ z+@ZtQ+=ge9P&`pMvQDg|Yk3FB;@**63sO49Fs@?4z$B*VRDTL`UaL;Ko>*?nF1}@0 zjd!uLuGMU&x&Slq9q%C3y#p5z`ZES*ahF<6JDwA)GYoc1b(r}?MT4SK!!sHp8Vn8n z8e$xHU|z1`whT(VAaWr!6T zHOsA7zQaX2O0s9wNicSGAPmthJ2-6Y?^r(71mrKWRdDD~h?vfSX9X>vs8T#pA@ihb zZf8bIU0QsS>D~uhPci6bqvhA^R}OD(;If++`NeK5(=^BE4-noM=Eepnl3PV2hl)t9 z6p^e5L`S&!h@nv35|YGUrfixb|LJWEe8TMu41J)CCQ9$H_$E>PBpx9o>Q^Xoh8|<{ z=NP>JZ5|Nav z9igBj^!f|w#O_IFm^+0elDI4qRU`>TB)UlE!y@Su$$~19=sE76Vu1JeYqBGv7a4tY Y8+<(n6)Vt?p>c#dO{MXi>O)xn3G?3l`Tzg` literal 0 HcmV?d00001 diff --git a/src/Main.java b/src/Main.java index 3e59c38f..12245f31 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,5 +1,50 @@ +import Shared.CustomDate; +import book.Book; +import book.BookEdition; +import book.GenreEnum; +import library.Library; +import person.Author; +import person.Librarian; + +import person.reader.MemberRecord; +import person.reader.Reader; +import person.reader.membershipType; + + public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + Library library = new Library(); + Author author = new Author("Ridvan"); + Reader mete = new Reader("mete"); + MemberRecord meteRecord = new MemberRecord(1, membershipType.PREMIUM,mete,library); + + Librarian librarian = new Librarian("Ridvan","bekar5561",library); + librarian.addReaderToLibrary(mete); + librarian.createRecord(mete,meteRecord); + + Book book1 = new Book(1,author,"Narnia", "Cadı, kapı, aslan 1",20.00, BookEdition.FIRST_EDITION, new CustomDate(1,1,1998),GenreEnum.ADVENTURE); + Book book2 = new Book(2,author,"Narnia 1","Cadı, kapı, aslan 2",18.00, BookEdition.FIRST_EDITION, new CustomDate(1,1,1998),GenreEnum.ADVENTURE); + Book book3 = new Book(3,author,"Narnia 2","Cadı, kapı, aslan 3",16.00, BookEdition.FIRST_EDITION, new CustomDate(1,1,1998),GenreEnum.ADVENTURE); + Book book4 = new Book(4,author,"Atatürk","Ülke nasıl kurulur?",300.00, BookEdition.HARDCOVER_EDITION, new CustomDate(1,1,1881),GenreEnum.HISTORICAL); + Book book5 = new Book(5,author,"Atatürk","Ülke nasıl kurulur?",300.00, BookEdition.HARDCOVER_EDITION, new CustomDate(1,1,1881),GenreEnum.HISTORICAL); + + library.new_book(book1); + library.new_book(book2); + library.new_book(book3); + library.new_book(book4); + library.new_book(book5); + + System.out.println("menekşe"); + library.get_book(1); + System.out.println(library.get_book(2)); + System.out.println("menekşe"); + library.lendBook(3,"mete"); + library.lendBook(1,"mete"); + library.lendBook(2,"mete"); + librarian.giveBackBook(1); + System.out.println(meteRecord.getDept()); + + Book istegim = library.get_book(2); + library.lendBook(3,"mete"); } } \ No newline at end of file diff --git a/src/Shared/CustomDate.java b/src/Shared/CustomDate.java new file mode 100644 index 00000000..78870032 --- /dev/null +++ b/src/Shared/CustomDate.java @@ -0,0 +1,113 @@ +package Shared; + +import java.time.LocalDate; + +public class CustomDate { + private int day; + private int month; + private int year; + + // Constructor + public CustomDate(int day, int month, int year) { + if (isValidDate(day, month, year)) { + this.day = day; + this.month = month; + this.year = year; + } else { + throw new IllegalArgumentException("Invalid date"); + } + } + + public static CustomDate now(){ + LocalDate currentDate = LocalDate.now(); + int year = currentDate.getYear(); + int month = currentDate.getMonthValue(); + int day = currentDate.getDayOfMonth(); + return new CustomDate(day,month,year); + } + + // Getters + public int getDay() { + return day; + } + + public int getMonth() { + return month; + } + + public int getYear() { + return year; + } + + // Setters with validation + public void setDay(int day) { + if (isValidDate(day, this.month, this.year)) { + this.day = day; + } else { + throw new IllegalArgumentException("Invalid day"); + } + } + + public void setMonth(int month) { + if (isValidDate(this.day, month, this.year)) { + this.month = month; + } else { + throw new IllegalArgumentException("Invalid month"); + } + } + + public void setYear(int year) { + if (isValidDate(this.day, this.month, year)) { + this.year = year; + } else { + throw new IllegalArgumentException("Invalid year"); + } + } + + // Method to check if the date is valid + private boolean isValidDate(int day, int month, int year) { + if (year < 0) { + return false; + } + if (month < 1 || month > 12) { + return false; + } + int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + + // Check for leap year + if (isLeapYear(year)) { + daysInMonth[1] = 29; // February has 29 days in leap year + } + + return day > 0 && day <= daysInMonth[month - 1]; + } + + // Leap year checker + private boolean isLeapYear(int year) { + return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); + } + + // Method to display the date as a string + @Override + public String toString() { + return String.format("%02d/%02d/%04d", day, month, year); + } + + // Compare two dates (returns true if this date is earlier than another) + public boolean isEarlierThan(CustomDate other) { + if (this.year < other.year) { + return true; + } else if (this.year == other.year) { + if (this.month < other.month) { + return true; + } else if (this.month == other.month) { + return this.day < other.day; + } + } + return false; + } + // Check if two dates are equal + public boolean equals(CustomDate other) { + return this.day == other.day && this.month == other.month && this.year == other.year; + } +} diff --git a/src/book/Book.java b/src/book/Book.java new file mode 100644 index 00000000..ac52b9e6 --- /dev/null +++ b/src/book/Book.java @@ -0,0 +1,178 @@ +package book; + +import Shared.CustomDate; +import person.Author; +import person.Person; +import person.reader.MemberRecord; +import person.reader.Reader; + +import java.time.LocalDate; +import java.util.Objects; + +public class Book implements Comparable{ + private long bookId; + private Author author; + private MemberRecord owner; + private String name; + private String title; + private GenreEnum genre; + private double price; + private BookStatus status; + private BookEdition edition; + private CustomDate dateofpurches; + private CustomDate dateoflending; + + public Book(long bookId, Author author, String name, String title, double price, BookEdition edition, CustomDate dateofpurches, GenreEnum genre) { + this.bookId = bookId; + this.author = author; + this.name = name; + this.genre = genre; + this.title = title; + this.price = price; + this.status = BookStatus.AVAILABLE; + this.edition = edition; + this.dateofpurches = dateofpurches; + } + + public Book lendBook(MemberRecord owner){ + this.owner = owner; + setStatus(BookStatus.ON_HOLD); + setDateoflending(CustomDate.now()); + return this; + } + + public Book giveBackBook(){ + setDateoflending(null); + this.owner = null; + setStatus(BookStatus.AVAILABLE); + return this; + } + + public GenreEnum getGenre() { + return genre; + } + + public void setGenre(GenreEnum genre) { + this.genre = genre; + } + + public long getBookId() { + return bookId; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + public void setBookId(long bookId) { + this.bookId = bookId; + } + + public void setAuthor(Author author) { + this.author = author; + } + + public void setOwner(MemberRecord owner) { + this.owner = owner; + } + + public void setName(String name) { + this.name = name; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setStatus(BookStatus status) { + this.status = status; + } + + public void setEdition(BookEdition edition) { + this.edition = edition; + } + + public BookStatus getStatus() { + return status; + } + + public void setDateofpurches(CustomDate dateofpurches) { + this.dateofpurches = dateofpurches; + } + + public String getName() { + return name; + } + + public String get_title() { + return title; + } + + public Author get_author() { + return author; + } + + public void change_owner(MemberRecord owner) { + this.owner = owner; + } + + public MemberRecord get_owner() { + return owner; + } + + public CustomDate getDateoflending() { + return dateoflending; + } + + public void setDateoflending(CustomDate dateoflending) { + this.dateoflending = dateoflending; + } + + public String display() { + return "Book{" + + "bookId=" + bookId + + ", author=" + author + + ", name='" + name + '\'' + + ", title='" + title + '\'' + + ", price=" + price + + ", status=" + status + + ", edition=" + edition + + ", dateofpurches=" + dateofpurches + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Book book = (Book) o; + return bookId == book.bookId && Objects.equals(name, book.name) && Objects.equals(title, book.title); + } + + + @Override + public int hashCode() { + return Objects.hash(bookId, name, title); + } + + @Override + public int compareTo(Object o) { + Book book = (Book) o; + if(book.equals(this))return 0; + return this.dateoflending.isEarlierThan(book.getDateoflending()) ? 1 : -1; + } + + @Override + public String toString() { + return "Book{" + + "bookId=" + bookId + + ", name='" + name + '\'' + + ", author=" + author + + ", title='" + title + '\'' + + '}'; + } +} diff --git a/src/book/BookEdition.java b/src/book/BookEdition.java new file mode 100644 index 00000000..1d1a709f --- /dev/null +++ b/src/book/BookEdition.java @@ -0,0 +1,11 @@ +package book; + +public enum BookEdition { + FIRST_EDITION, + REVISED_EDITION, + EXPANDED_EDITION, + SPECIAL_EDITION, + POCKET_EDITION, + HARDCOVER_EDITION, + PAPERBACK_EDITION +} diff --git a/src/book/BookStatus.java b/src/book/BookStatus.java new file mode 100644 index 00000000..14094fc3 --- /dev/null +++ b/src/book/BookStatus.java @@ -0,0 +1,11 @@ +package book; + +public enum BookStatus { + AVAILABLE, + SOLD, + CHECKED_OUT, + RESERVED, + ON_HOLD, + LOST, + DAMAGED +} diff --git a/src/book/GenreEnum.java b/src/book/GenreEnum.java new file mode 100644 index 00000000..4961a810 --- /dev/null +++ b/src/book/GenreEnum.java @@ -0,0 +1,25 @@ +package book; + +public enum GenreEnum { + FICTION, + NON_FICTION, + MYSTERY, + FANTASY, + SCIENCE_FICTION, + BIOGRAPHY, + HISTORICAL, + ROMANCE, + THRILLER, + CHILDREN, + YOUNG_ADULT, + CLASSICS, + SELF_HELP, + POETRY, + DYSTOPIAN, + ADVENTURE, + HORROR, + GRAPHIC_NOVEL, + RELIGIOUS, + COOKBOOK, + ANTHOLOGY +} diff --git a/src/book/bookSubClasses/Journals.java b/src/book/bookSubClasses/Journals.java new file mode 100644 index 00000000..ebd50747 --- /dev/null +++ b/src/book/bookSubClasses/Journals.java @@ -0,0 +1,13 @@ +package book.bookSubClasses; + +import Shared.CustomDate; +import book.Book; +import book.BookEdition; +import book.GenreEnum; +import person.Author; + +public class Journals extends Book { + public Journals(long bookId, Author author, String name, String title, double price, BookEdition edition, CustomDate dateofpurches, GenreEnum genre) { + super(bookId, author, name, title, price, edition, dateofpurches,genre); + } +} diff --git a/src/book/bookSubClasses/Magazines.java b/src/book/bookSubClasses/Magazines.java new file mode 100644 index 00000000..e5b77178 --- /dev/null +++ b/src/book/bookSubClasses/Magazines.java @@ -0,0 +1,13 @@ +package book.bookSubClasses; + +import Shared.CustomDate; +import book.Book; +import book.BookEdition; +import book.GenreEnum; +import person.Author; + +public class Magazines extends Book { + public Magazines(long bookId, Author author, String name, String title, double price, BookEdition edition, CustomDate dateofpurches, GenreEnum genre) { + super(bookId, author, name, title, price, edition, dateofpurches, genre); + } +} diff --git a/src/book/bookSubClasses/StudyBooks.java b/src/book/bookSubClasses/StudyBooks.java new file mode 100644 index 00000000..50980edc --- /dev/null +++ b/src/book/bookSubClasses/StudyBooks.java @@ -0,0 +1,13 @@ +package book.bookSubClasses; + +import Shared.CustomDate; +import book.Book; +import book.BookEdition; +import book.GenreEnum; +import person.Author; + +public class StudyBooks extends Book { + public StudyBooks(long bookId, Author author, String name, String title, double price, BookEdition edition, CustomDate dateofpurches, GenreEnum genre) { + super(bookId, author, name, title, price, edition, dateofpurches, genre); + } +} diff --git a/src/description.puml b/src/description.puml new file mode 100644 index 00000000..b8b52e85 --- /dev/null +++ b/src/description.puml @@ -0,0 +1,116 @@ +@startuml +package person { + + class Person { + - name: String + # whoyouare(): String + } + + class Reader { + - member_record: MemberRecord + --- + + setMember_record(memberRecord: MemberRecord): void + + getMember_record(): MemberRecord + # whoyouare(): String + } + + class Author { + - books: Set + + show_book(): Set + + setBooks(books: Set): void + + new_book(book: Book): boolean + + whoyouare(): String + } + + class Librarian { + - password: String + - library: Library + + getLibrary(): Library + + createRecord(reader: Reader, memberRecord: MemberRecord): boolean + + addReaderToLibrary(reader: Reader): boolean + + giveBackBook(bookId: long): boolean + + whoyouare(): String + } + + class MemberRecord { + - member_id: long + - library: Library + - reader: Reader + - type: membershipType + - date_of_membership: CustomDate + - lendedBooks: Set + - MAX_LENDED_BOOKS: int + - dept: double + + MemberRecord() + + MemberRecord(member_id: long, type: membershipType, reader: Reader, library: Library) + + getDept(): double + + getLendedBooks(): Set + + getLibrary(): Library + + setLibrary(library: Library): void + + addBookToLendedBooks(book: Book): boolean + + returnBook(id: long): boolean + + toString(): String + } + + Person <|-- Author : Inherits + Person <|-- Reader : Inherits + Person <|-- Librarian : Inherits + Reader --> MemberRecord : Has a + MemberRecord --> Library : Uses +} + +package book { + class Book { + + getPrice(): double + + getName(): String + + setStatus(status: BookStatus): void + + setOwner(owner: MemberRecord): void + + get_author(): Author + + getGenre(): GenreEnum + + lendBook(record: MemberRecord): void + + getBookId(): long + } + + class BookStatus { + <> + + AVAILABLE + + ON_HOLD + + LENT_OUT + } + + class GenreEnum { + <> + + FICTION + + NON_FICTION + + SCI_FI + + BIOGRAPHY + + FANTASY + } +} + +package library { + class Library { + - books: Map + - readers: Map + + Library() + + Library(books: Map, readers: Map) + + get_book(): Map + + get_book(id: long): Book + + get_book(name: String): Book + + get_book(author: Author): Set + + deleteBook(id: long): boolean + + getBooksByGenre(genre: GenreEnum): List + + get_readers(): Map + + searchForReader(name: String): Reader + + new_book(book: Book): boolean + + addReader(reader: Reader): boolean + + lendBook(bookId: long, readerName: String): boolean + + toString(): String + } +} + +Author --> Book : Has a Set of +Library --> Book : Contains +Library --> Reader : Contains +Library --> MemberRecord : Uses +@enduml diff --git a/src/library/Library.java b/src/library/Library.java new file mode 100644 index 00000000..018808c5 --- /dev/null +++ b/src/library/Library.java @@ -0,0 +1,139 @@ +package library; + +import book.Book; + +import book.BookStatus; +import book.GenreEnum; +import person.Author; +import person.reader.MemberRecord; +import person.reader.Reader; + +import java.util.*; + +public class Library { + private Map books; + private Map readers; + + public Library() { + this.books = new HashMap<>(); + this.readers = new HashMap<>(); + } + + public Library(Map books, Map readers) { + this.books = (books != null) ? books : new HashMap<>(); + this.readers = (readers != null) ? readers : new HashMap<>(); + } + + public Map get_book() { + return books; + } + + public Book get_book(long id) { + return books.get(id); + } + + public Book get_book(String name) { + for ( Book book : books.values()) { + if (book.getName().equals(name)) { + return book; + } + } + return null; + } + + public Set get_book(Author author) { + Set bookSet = new HashSet<>(); + for (Book book : books.values()) { + if (book.get_author().equals(author)) { + bookSet.add(book); + } + } + return bookSet.isEmpty() ? null : bookSet; + } + + public boolean deleteBook(long id){ + Book book = books.remove(id); + return book != null; + } + + public List getBooksByGenre(GenreEnum genre) { + List bookList = new ArrayList<>(); + for (Book book : books.values()) { + if (book.getGenre().equals(genre)) { + bookList.add(book); + } + } + return bookList; + } + + public Map get_readers() { + return readers; + } + + public Reader searchForReader(String name) { + return readers.get(name); + } + + public boolean new_book(Book book) { + if (book == null || books.containsKey(book.getBookId())) { + return false; + } else { + books.put(book.getBookId(), book); + return true; + } + } + + public boolean addReader(Reader reader){ + if (reader != null){ + readers.put(reader.name,reader); + System.out.println(reader.name + " is added to library"); + return true; + }else { + System.out.println("Reader is null"); + return false; + } + } + + + public boolean lendBook(long bookId, String readerName) { + Book book = get_book(bookId); + boolean success = false; + if (book == null) { + System.out.println("Book with ID " + bookId + " is not in the library."); + return false; + } else if (book.getStatus()!= BookStatus.AVAILABLE) { + System.out.println("Book is not available"); + return false; + } + + Reader reader = searchForReader(readerName); + if (reader == null) { + System.out.println("Reader " + readerName + " is not signed in!"); + return false; + } + + MemberRecord record = reader.getMember_record(); + if (record != null) { + success = record.addBookToLendedBooks(book); + } else { + System.out.println("Please create a record to lend a book."); + return false; + } + + if (success) { + book.lendBook(record); + System.out.println("Book with ID " + bookId + " successfully lent to " + readerName + "."); + } else { + System.out.println("Failed to lend book with ID " + bookId + " to " + readerName + "."); + } + return success; + } + + @Override + public String toString() { + return "Library{" + + "books=" + books + + ", readers=" + readers + + '}'; + } +} diff --git a/src/person/Author.java b/src/person/Author.java new file mode 100644 index 00000000..6d2db48c --- /dev/null +++ b/src/person/Author.java @@ -0,0 +1,44 @@ +package person; + +import book.Book; + +import java.util.HashSet; +import java.util.Set; + +public class Author extends Person{ + private Set books; + + public Author(String name) { + this.name = name; + this.books = new HashSet<>(); + } + + public Author(String name, Set books) { + this.name = name; + this.books = books; + } + + + public Set show_book() { + return books; + } + + public void setBooks(Set books) { + this.books = books; + } + + public boolean new_book(Book book){ + if(!books.contains(book)){ + books.add(book); + return true; + }else return false; + } + + @Override + public String whoyouare() { + return "Author{" + + "name" + name + + "books=" + books + + '}'; + } +} diff --git a/src/person/Librarian.java b/src/person/Librarian.java new file mode 100644 index 00000000..73896783 --- /dev/null +++ b/src/person/Librarian.java @@ -0,0 +1,78 @@ +package person; + +import book.Book; +import book.BookStatus; +import book.GenreEnum; +import library.Library; +import person.reader.MemberRecord; +import person.reader.Reader; + + +import java.util.*; + +public class Librarian extends Person{ + private String password; + private Library library; + + public Library getLibrary() { + return library; + } + + public Librarian(String name, String password, Library library) { + this.name = name; + this.password = password; + this.library = library; + } + + @Override + public String whoyouare() { + return "Librarian :" + + "Name :" + name; + } + + public boolean createRecord(Reader reader, MemberRecord memberRecord){ + reader.setMember_record(memberRecord); + return true; + } + + public boolean addReaderToLibrary(Reader reader){ + boolean success = library.addReader(reader); + if (success){ + System.out.println(reader.name + " is added to " + library); + }else System.out.println("Not successful"); + return success; + } + + public boolean giveBackBook(long bookId) { + Book book = library.get_book(bookId); + MemberRecord record; + + if (book == null) { + System.out.println("Book with ID " + bookId + " signed in to library."); + return false; + } else if (book.getStatus()!=BookStatus.ON_HOLD) { + System.out.println("Book is not lended!"); + return false; + }else { + record = book.get_owner(); + book.giveBackBook(); + } + + if (record != null){ + record.returnBook(bookId); + System.out.println("Book with ID " + bookId + " has been successfully returned."); + return true; + } + System.out.println("Book with ID " + bookId + " has no owner record."); + return false; + } + + @Override + public String toString() { + return "Librarian{" + + "password='" + password + '\'' + + ", library=" + library + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/src/person/Person.java b/src/person/Person.java new file mode 100644 index 00000000..022dd3ef --- /dev/null +++ b/src/person/Person.java @@ -0,0 +1,7 @@ +package person; + +public abstract class Person { + public String name; + + public abstract String whoyouare(); +} diff --git a/src/person/reader/MemberRecord.java b/src/person/reader/MemberRecord.java new file mode 100644 index 00000000..3ce5f976 --- /dev/null +++ b/src/person/reader/MemberRecord.java @@ -0,0 +1,84 @@ +package person.reader; + +import Shared.CustomDate; +import book.Book; +import book.BookStatus; +import library.Library; + +import java.util.*; + +public class MemberRecord { + private long member_id; + private Library library; + private Reader reader; + private membershipType type; + private CustomDate date_of_membership; + private Set lendedBooks = new HashSet<>(); + private final int MAX_LENDED_BOOKS = 5; + private double dept; + + public MemberRecord() { + } + + public MemberRecord(long member_id, membershipType type, Reader reader, Library library) { + this.member_id = member_id; + this.type = type; + this.reader = reader; + this.library = library; + dept = 0; + } + + public double getDept() { + return dept; + } + + public Set getLendedBooks() { + return lendedBooks; + } + + public Library getLibrary() { + return library; + } + + public void setLibrary(Library library) { + this.library = library; + } + + public boolean addBookToLendedBooks(Book book) { + if (lendedBooks.size()<6){ + lendedBooks.add(book); + System.out.println("Kitap fiyatları " + book.getPrice()); + dept += book.getPrice(); + } + return true; + } + + public boolean returnBook(long id) { + Book book = library.get_book(id); + + if (book == null) { + System.out.println("Book does not exist!"); + return false; + } + + if (!lendedBooks.contains(book)) { + System.out.println("This book was not lent out!"); + return false; + } + + book.setStatus(BookStatus.AVAILABLE); + lendedBooks.remove(book); + book.setOwner(null); + System.out.println("Book " + book.getName() + " has been returned successfully."); + + dept -= book.getPrice(); + return true; + } + + @Override + public String toString() { + return "MemberRecord{" + + "Reader = " + this.reader + + '}'; + } +} diff --git a/src/person/reader/Reader.java b/src/person/reader/Reader.java new file mode 100644 index 00000000..af9fe7b3 --- /dev/null +++ b/src/person/reader/Reader.java @@ -0,0 +1,62 @@ +package person.reader; + +import book.Book; +import book.BookStatus; +import person.Person; + +import java.util.Collection; +import java.util.Objects; +import java.util.Set; + +public class Reader extends Person { + private MemberRecord member_record; + + public Reader(String name) { + this.name = name; + } + + public Reader(String name, MemberRecord member_record) { + this.name = name; + this.member_record = member_record; + } + + public MemberRecord getMember_record(){ + if (member_record == null) { + System.out.println("Not a member"); + return new MemberRecord(); + }; + return member_record; + } + + public void setMember_record(MemberRecord member_record) { + this.member_record = member_record; + } + + @Override + public String whoyouare() { + return "Reader{" + + ", name='" + name + '\'' + + "member_record=" + member_record + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Reader reader = (Reader) o; + return Objects.equals(name, reader.name); + } + + @Override + public int hashCode() { + return Objects.hashCode(name); + } + + @Override + public String toString() { + return "Reader{" + + "name='" + name + '\'' + + '}'; + } +} diff --git a/src/person/reader/membershipType.java b/src/person/reader/membershipType.java new file mode 100644 index 00000000..b199ec89 --- /dev/null +++ b/src/person/reader/membershipType.java @@ -0,0 +1,9 @@ +package person.reader; + +public enum membershipType { + BASIC, + PREMIUM, + STUDENT, + SENIOR, + CORPORATE; +}