The BiblioStead

The BiblioStead

Your one stop destination for all your bookish needs — a Library Management System for IGDTUW.

The problem The BiblioStead solves

It can make managing a library very easy, whether the library be 6 books, or 6000. Issuing, returning, and reserving books are a few major functionalities. Others include easy searching through books by genre or author name, and managing users and user privileges, as well as managing books.

Challenges I ran into

I had initially thought to use the reference material provided and completely skip out on using any database, but then I realised I was making things complicated unnecessarily. Since I had no idea how to use databases or MySQL in Java, I referred to preexisting projects on the internet, but soon discovered many things included in those would not work, ex. using the rs2xml.jar file: I didn't know what exactly it was and any secure site to download it from so I decided to completely forgo that approach and instead use: JTable book_list= new JTable(buildTableModel(result)); JScrollPane scrollPane= new JScrollPane(book_list);

Another thing I had no idea of was how to populate the JTable using resultSet. That I found on StackOverflow: https://stackoverflow.com/questions/10620448/how-to-populate-jtable-from-resultset/10625471#10625471

I was unable to verify passwords that were entered at the time of login to those stored in the database. For this, I took guidance from a mentor who suggested: String myPass=String.valueOf(passwordField.getPassword()); for taking the password as a string rather then a char[]. There is however a downside to this approach, as the getText field is deprecated for passwords in Java because Strings are immutable and thus can pose a security risk. Given more time, I would've liked to have come up with a way to resolve this.

I was unable to retrieve a specific value in a cell from the database using java and swing, then after consulting StackOverflow I understood that I should use the resultSet.getBoolean() for applying the ==true condition, rather than the resultSet.next(), which is used for something completely different. I found out that when I consulted the oracle docs online at https://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html#retrieve_rs

Since I was on a time crunch due to prior commitments, I was unable to experiment with adding images to the GUI; I had wanted to add the logo on every page, as well as improve the layout.

Discussion