FYPMS: Final Year Project Management System

Nanyang Technological University, Singapore

Final Year Project Management System (FYPMS) is a Java console application that utilizes object-oriented concepts to efficiently manage final year project settings. The program is designed with a focus on reusability, extensibility, and maintainability, allowing for easy upgrades and future development. It provides flexibility to accommodate different user types and their requirements.

This project is for the course SC2002 Object Oriented Programming, AY2022/23 Semester 2.

Video

Highlights

  • Reflection: The interface Model uses reflection to convert between classes and strings, enabling dynamic handling of model data without manual mapping.
  • Generic Repository Class: Repository<Model> class with generics allows for flexible data storage and retrieval for any model type, reducing duplication and improving maintainability.
  • SHA-3 Password Encryption: User passwords are encrypted using the SHA-3 algorithm for enhanced security.
  • Batch CSV Data Import: The system supports batch importing of initial data from CSV files, making it convenient to process large datasets in chunks.
  • Factory Design Pattern: The factory pattern is used to quickly generate requests based on different requirements, enhancing system scalability and adaptability.
  • Data Syncing: The system automatically saves data and synchronizes it with the database, ensuring that data is not lost in the event of a crash. You can even open multiple instances of the program and they will all be synchronized.
  • JUnit 5: We used JUnit 5 to test our classes; it helps to ensure the correctness and robustness of our code.

UMLs

The UML diagrams are generated using draw.io. You can download the source files here.

Main Diagram

Entity Sub Diagram

Controller Sub Diagram

Boundary Sub Diagram


BibTeX

@software{Pu_FYPMS_Final_Year_2023,
  author  = {Pu, Fanyi and Jin, Qingyang and Soo, Ying Xi and Jiang, Jinyi},
  month   = apr,
  title   = {{FYPMS: Final Year Project Management System}},
  year    = {2023}
}