Skip to content
/ FYPMS Public

NTU SC2002 Group Project - Final Year Project Management System (FYPMS)

License

Notifications You must be signed in to change notification settings

pufanyi/FYPMS

Repository files navigation

NTU AY2022/23 Semester 2 SC2002 Group Project - Final Year Project Management System (FYPMS).

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.

The initial password for every user is password.

Links

Team Members

We are a group 6 from tutorial group A50, Nanyang Technological University, Singapore. There are 4 members in our group:

Name Github Account Email
Pu Fanyi pufanyi [email protected]
Jin Qingyang jin-qingyang [email protected]
Jiang Jinyi Jinyi087 [email protected]
Soo Ying Xi niyaojiayou [email protected]

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.

Features

  • Student
    • View my profile
    • Change my password
    • View project list
    • View my project
    • View my supervisor
    • Register for a project
    • Deregister for a project
    • Change title for a project
    • View history and status of my requests
  • Supervisor
    • View my profile
    • Change my password
    • Create a project
    • View all my projects
    • Modify title of projects
    • View all pending student requests
    • Approve/Reject student requests
    • Submit request for transferring
    • View all incoming/outgoing requests' history and status
  • Supervisor
    • View My Profile
    • Change My Password
    • View All Projects
    • View Pending Requests
    • View All Requests' History and Status
    • Accept or Reject Requests
    • Generate Project Details

Build

Download the project from GitHub.

git clone https://github.com/pufanyi/FYPMS.git

Use JetBrains IntelliJ IDEA to build the project.

The project is built with Java 17.

The MANIFEST.MF file is located at src/META-INF/MANIFEST.MF.

Run

The built jar file is located at out/artifacts/FYPMS_jar/FYPMS.jar.

There is a shell script run.sh and a Windows command script run.cmd to run the program.

Or you could run the jar file with the following command:

java -jar ./out/artifacts/FYPMS_jar/FYPMS.jar

Also, you can also use JetBrains IntelliJ IDEA to run the project.

The main class is src/main/Main.java.

Test

The java class src/test/HardReload.java is used to hard reload the database.

UML Class Diagram

The uml diagram is generated by draw.io.

You can refer to the project main page for the UML class diagram.

Here is the source code of the UML class 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}
}

License

MIT © Pu Fanyi, Jin Qingyang, Soo Ying Xi, Jiang Jinyi