Skip to content

Karrtii/Library-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Library-System

A client-server library system where users can search for library items available in the database to reserve. The main purpose of this project to is to learn how a client-server system can be set up with a database, and to produce clean code using design patterns and SOLID design principles.

About the library system

Users will be prompted with a login request when the program is launhed. If the user has not already registered, they will be given an option to register.

image

Once the user is logged in, they desired item can be searched and found if it exists, and then can be borrowed for a fixed time period.

image

If a chosen item has already been reserved or borrowed by another user, a prompt will be displayed stating that it has been reserved/borrowed by another person.

image

The items then must be returned by users before the time period is up. If they failed to return it, a fine will be issued to their account.

Design of the library system

The library system is built using the layered architecture, namely with two layers, Client and Server. Both Client and Server layers are implemented in Java, and JavaFX and Scenebuilder was used for the GUI.

image

An important aspect of this project is to learn and properly apply SOLID design principles, CRUD operations and DRY rule. For the most part, this was doable, expect for the DRY rule, where is is broken in one class in the Server layer.

In the Client layer, MVVM design pattern is used so that it provides division of responsibilities. Observer and Singleton patterns are also used in this layer.

The Client and Server layers communicate with each other using RMI.

In the Server layer, the RMI server and the Data Access Objects (DAO) can be found. Singleton pattern is used here so that the DAOs can get an instance of the database without instantiating it each time it is called. An Adpater pattern is also used so that the methods from the DAOs can be called.

The database was made in PostgreSQL, and JDBC was used to connect the Server layer to the database.

Testing of the system

The two main types of tests made for the system were unit tests and usability tests.

Usability testing is concerned with the intuitiveness of the system, testing on users who had no prior experience with the system.

Unit testing’s purpose is to test the logical functionality of the system. The reason why this testing was included was to ensure the functionality in case of future system’s improvements, enhancements and/or upgrades.

About

A client-server library system where users can search for library items available in the database to reserve.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors