Giter Club home page Giter Club logo

ehsanulhaquesiam / studentmanagementsystem Goto Github PK

View Code? Open in Web Editor NEW
9.0 1.0 5.0 13.77 MB

The Student Management System is a Java and MySQL project that serves as an introductory exploration into database management. This project focuses on implementing fundamental database operations using Java programming language and MySQL. It includes features like simple connection pool, configuration loading, and basic database interactions.

License: MIT License

Java 100.00%
configuration-loading connection-pooling database-management databaseconnectivity databasedesign java jdbc mysql student-management studentmanagementsystem

studentmanagementsystem's Introduction

Student Management System ๐Ÿ“š

Welcome to the Student Management System project! ๐Ÿš€ This project empowers you to efficiently manage student information, handle course registrations, and oversee administrative tasks. Developed in Java and integrated with a MySQL database, it ensures seamless data storage and retrieval.

Table of Contents

Getting Started ๐Ÿ

Embark on your journey with the Student Management System by following these steps:

Prerequisites ๐Ÿ› ๏ธ

Before diving in, ensure you have the following:

Setup Process โš™๏ธ

  1. Clone the Repository: Obtain your own copy of the project:

    git clone https://github.com/EhsanulHaqueSiam/StudentManagementSystem.git
  2. Database Configuration: Configure the database connection:

    • Open src/main/resources/config.properties.
    • Update db.url, db.username, and db.password to match your MySQL setup.
  3. Library Dependencies: Add the MySQL JDBC driver to the classpath:

  4. Compile and Run: Compile and launch the project:

    # Navigate to the project directory
    cd StudentManagementSystem
    
    # Compile the code
    javac -cp .:lib/* -d bin src/main/java/com/StudentManagementSystem/Main.java
    
    # Run the project
    java -cp .:lib/*:bin com.StudentManagementSystem.Main

Features โœจ

Discover the enhanced features of the Student Management System:

Connection Pool ๐ŸŒ

Effortlessly manage database connections using the DatabaseManager class. In complex applications, establishing a new connection to a database can be resource-intensive and slow. The Connection Pool mechanism in the Student Management System addresses this challenge by maintaining a reusable set of connections. This minimizes the overhead of creating and destroying connections for each interaction.

By utilizing the Singleton pattern, the DatabaseManager ensures that a single instance of the connection pool is maintained throughout the application's lifecycle. Whenever the application needs to interact with the database, it can borrow an available connection from the pool, perform the necessary operations, and then return the connection to the pool for future use.

This intelligent management of connections not only enhances the performance of the application but also ensures efficient utilization of system resources. The Connection Pool allows the Student Management System to handle multiple user requests simultaneously while maintaining optimal database interactions.

With the Connection Pool in place, you can focus on seamlessly retrieving and storing data without worrying about the complexities of managing individual database connections.

ConfigLoader Utility โš™๏ธ

Simplify configuration management with the ConfigLoader class. Fetch properties from files with ease, thanks to its Singleton pattern implementation. Experience enhanced code readability and intuitive methods for accessing configuration properties.

DAO Layer ๐Ÿ›๏ธ

Embrace a clear separation of concerns with the robust DAO (Data Access Object) layer. This essential component includes DAO interfaces and implementations, offering a structured approach to database interactions. Each entity, like Authorities, Classes, Course, boasts a dedicated DAO interface (e.g., AuthoritiesDAO, ClassesDAO) and corresponding implementation (e.g., AuthoritiesDAOImpl, ClassesDAOImpl).

Query Constants ๐Ÿ“œ

Maintain structured database queries using dedicated query constants. DAO classes such as AuthoritiesQueryConstants, ClassesQueryConstants encapsulate well-named SQL query constants. This enhances code clarity and minimizes the risk of SQL injection vulnerabilities.

MVC Design Pattern ๐Ÿ›๏ธ

Experience the elegance of the MVC (Model-View-Controller) design pattern. Models include Authorities, Classes, Course, Views comprise AuthoritiesView, ClassesView, CourseView, and Controllers expertly manage interactions between Models and Views.

Testing with JUnit 5 ๐Ÿงช

Ensure reliability with comprehensive JUnit 5 test cases. Validate controller behaviors with test classes like AdminControllerTest, StudentControllerTest. Verify utility functionalities using ConfigLoaderTest and DatabaseManagerTest.

Project Structure Highlights ๐ŸŒŸ

Explore the organized project structure:

  • Separate Test Resources: The test directory holds essential resources like expectedOutput.txt, testConfig.properties, and testData.json for effective testing.

  • Library Dependencies: The lib directory contains critical library JAR files, including junit-platform-console-standalone-1.10.0.jar, ojdbc11.jar, and mysql-connector-j-8.1.0.jar.

  • VSCode Settings: Inside the .vscode directory, discover tailored configuration files like launch.json and settings.json designed for seamless integration with Visual Studio Code.

  • Clear Hierarchy: Navigate the src directory, which boasts distinct subdirectories for various project aspects, such as:

    • Main: Home to the primary application code, including the pivotal entry point Main.java.
    • Controller: Manage user interface interactions and data orchestration, e.g., AuthoritiesController, ClassesController.
    • Data: Houses Data Access Object (DAO) classes, each comprising an interface and implementation, e.g., AuthoritiesDAO, AuthoritiesDAOImpl.
    • Model: Defines critical entities such as Authorities, Classes, Course.
    • Util: Hosts utility classes like ConfigLoader, DatabaseManager.
    • View: Provides intuitive user interfaces including AuthoritiesView, ClassesView.
    • Resources: Safeguard configuration files like config.properties, as well as assets like images stored within the images subdirectory.
    • Test: Dedicated to JUnit 5 test classes, fortifying the system's robustness and correctness.
  • Well-Documented Code: Delve into the well-commented and documented Java source files, offering insights into functionality, usage, and design considerations. This comprehensive documentation eases comprehension, maintenance, and extension of the system.

  • Multi-Threading with Main Thread: The application leverages multi-threading in the main thread to enhance user experience and database interaction. While the user interacts with the command line interface, the main thread concurrently establishes and maintains a database connection in the background. This design ensures that the user doesn't experience delays caused by database connections, leading to a seamless and responsive user experience.

  • Graceful Shutdown with Shutdown Hook: To ensure proper closing of the database connection when the program ends, a shutdown hook is registered. The shutdown hook, implemented as a separate thread, closes the database connection gracefully, preventing any resource leaks or data corruption.

Acknowledgments ๐Ÿ™

We extend our sincere gratitude to our esteemed faculty:

๐ŸŽ“ MD SAJID BIN-FAISAL
๐ŸŽ“ Database Faculty, AIUB

Your invaluable guidance has played a pivotal role in shaping this project, fostering a deep understanding of database management and software development principles.

Contact ๐Ÿ“ฌ

For inquiries, suggestions, or feedback, please don't hesitate to reach out to us:

๐Ÿ“ง [email protected]

Embark on this coding journey with confidence and wield your newfound skills to manage students with finesse! ๐Ÿง™โ€โ™‚๏ธโœจ

studentmanagementsystem's People

Contributors

ehsanulhaquesiam avatar nitpaul avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.