Programming-Project-2022-23-UniBz / course-project-manuelalessandro

Hotel Management System by Manuel Villotti and Alessandro Marconi
0 stars 0 forks source link

Hotel Management System

1. About

Introducing our Hotel Management App, a comprehensive solution that caters to the needs of both guests and administrators.

Guests can easily book rooms, update their personal information, and leave reviews, ensuring a personalized and comfortable stay. Our app prioritizes user satisfaction.

Administrators, on the other hand, have access to a suite of essential features. They can effortlessly view all bookings, ensuring smooth check-ins and check-outs. With the ability to check hotel income reports, administrators can make informed decisions to optimize revenue. Additionally, monitoring room availability is a breeze, ensuring efficient room assignment and management.

Our Hotel Management App is the perfect solution for both guests and administrators, creating a harmonious and efficient hotel experience for all.

1.1. Demo

Watch our demo on YouTube: https://youtu.be/5Sl7PLuSNgo

2. Authors

This project was created by:

Collaborator: Khinchi Ganesh Kumar

3. Usage

Application Requirements

To run our application, you will need Java 17 installed on your system. If you haven't already, you can download it from Oracle's official website.

Please ensure that your JAVA_HOME environment variable is correctly set to the installation folder of Java 17.

If you don't have Maven installed on your system, don't worry, it is already implemented in the repository.

Default account credentials

To access the Admin Console, use the following credentials:

To access the User Console, use the following credentials (or register your own account):

Commands

Follow these steps to compile and run the application:

  1. Open a terminal in the repository's path.

  2. It's always a good practice to clean the repository before compiling the code.

    ./mvnw clean
  3. To build the application, use the following command:

    ./mvnw package
  4. After successfully building the application, you can run it either using Maven or directly with Java.

    Using Maven:

    ./mvnw exec:exec

    Alternatively, you can run the JAR file directly:

    java -jar ./<path-to-the-jar-file>.jar
  5. To run the test classes, use the following command:

    ./mvnw test

4. Implementation

4.1. Architectural Overview

src/main/java: This is the main source code directory where our Java classes reside.

a. AdminGUI: This component contains classes related to the graphical user interface for administrators.

b. DesignObjects: This component houses design-related objects or classes, related to the user interface design.

c. Logs: This component contains the log files.

d. Main: This component includes the main class or entry point for our application.

e. Objects: This directory holds most of our backend classes.

f. UserGUI: This component contains classes related to the graphical user interface for regular users.

g. WelcomeGUI: Component responsible for the welcome page.

src/main/resources: This directory holds all non-java files, such as JSON, jpeg, or png.

src/test: This is the directory where our Test units are.

4.2. Third-Party Libraries

org.netbeans.external:AbsoluteLayout (Version: RELEASE170) Justification: This library was used for layout management.

com.toedter:jcalendar (Version: 1.4) Justification: used for calendar-related functionality, for date selection, and display in the application.

com.google.code.gson:gson (Version: 2.10.1) Justification: Gson was used for serializing and deserializing JSON data.

org.junit.jupiter:junit-jupiter-api (Version: 5.7.1) Justification: JUnit was used for writing test cases for our code.

org.junit.jupiter:junit-jupiter-engine (Version: 5.7.1) Justification: This is the JUnit engine required for executing JUnit 5 tests.

joda-time:joda-time (Version: 2.12.5) Justification: Joda-Time was used for handling date and time operations in a more user-friendly and flexible manner compared to Java's built-in date and time classes.

org.apache.maven.plugins:maven-compiler-plugin (Version: 3.8.1) Justification: Used for compiling the project's source code.

org.apache.maven.plugins:maven-resources-plugin (Version: 3.2.0) Justification: Used for managing and copying resources (e.g., configuration files) during the build process.

jfree:jfreechart (Version: 1.0.13) Justification: JFreeChart was used for data visualization in the application, in the admin frame.

org.assertj:assertj-core (Version: 3.22.0) Justification: AssertJ is a library for enhancing assertions in test cases, making it easier to write and read test assertions.

4.3. Programming Techniques

4.4. Tests

Our test suite encompasses unit, integration, boundary, error handling, and performance testing to thoroughly evaluate the main classes and methods, ensuring their functionality, reliability, and robustness under various conditions

5. Experience

5.1. Overall Experience

Creating this Java project was a challenging but rewarding journey. It began with careful planning, followed by meticulous coding and testing phases. Collaboration and adaptation were key. The project honed our skills and provided valuable lessons in software development and project management. In the end, the experience of developing this Java project was both demanding and fulfilling, leaving us with a profound sense of growth and achievement.

5.2. Division of Responsibilities

Describe the roles and responsibilities each member had in this project.

5.3. Main Challenges

Elaborate on the main challenges each group member faced throughout the project and how they were surpassed.

5.4. Learning Outcomes

Describe what you learned with this project.