Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/flexycode/ccobjpgl_final_project

This repository is intended for our Final Project in CCOBJPGL COM24P by Professor Jay Abaleta
https://github.com/flexycode/ccobjpgl_final_project

case-study project

Last synced: 5 days ago
JSON representation

This repository is intended for our Final Project in CCOBJPGL COM24P by Professor Jay Abaleta

Awesome Lists containing this project

README

        

# CCOBJPGL_FINAL_PROJECT : CASE STUDY STUDENT RECORD MANAGEMENT

### Group Name: [Artificial Ledger Technology - T3](https://github.com/Artificial-Ledger-Technology)ย  ๐Ÿ‡ต๐Ÿ‡ญ
### Subject & Section: ๐Ÿงšโ€โ™‚๏ธ [CCOBJPGL COM24P](https://www.youtube.com/watch?v=dQw4w9WgXcQ)ย ๐Ÿงšโ€โ™€๏ธ
### Professor: ๐Ÿ‘ฆ [Jay D. Abaleta](https://www.youtube.com/watch?v=Zi_XLOBDo_Y)ย ย ย ย ย ย ย ย ย ย  ย  ย ย ย ย ย ย ย 
### No. of Units: [3 Units](https://www.youtube.com/watch?v=d_Z-neEBuWM)
### Prerequisite: [CCPRGG2L Intermediate Programming](https://github.com/flexycode/CCPRGG2L_INTERMEDIATE_PROGRAMMING)ย ย ย ย ย ย ย 
### Course Repo: [CCOBJPGL COM24P1](https://github.com/flexycode/CCOBJPGL)ย ย ย ย ย ย ย ย 

# ๐Ÿ“Š Table of Contents

- [Introduction](#introduction)
- [Lesson](#lesson)ย ย ย ย ย ย  ย ย ย ย 
- [Final Project](#final-project)ย 
- [Contributing](#contributing)ย ย ย ย ย ย ย ย ย ย ย 
- [License](#licensee)ย ย ย 
- [Acknowledgements](#acknowledgements)ย 
- [FAQ](#faq)ย ย ย ย ย ย ย 
- [Changelog](#changelogs)ย ย ย 

# ๐Ÿง  Introduction

A case study for student record with User Management Authenticated by Generated QR Code

## Techstacks
1. IDEA IntelliJ Ultimate or Community Edition (for Free)
2. Java
3. IDE IntelliJ
4. Maven

## [Final Project](#final)ย ย ย 

### ๐Ÿฆ Case Study: Student Record with User Management Authenticated by Generated QR Code ๐Ÿ”’

#### Problem Statement :

๐Ÿš€ Create an Object-Oriented `Student Record with User Management Authenticated by Generated QR Code` that allows an `administrator` to manage student records (add, view, and update student details.)

#### โœจ Features:

โœจ The system should have to options to Login:

- #### Admin : Can manage student records
- #### Student : Can only view student details

#### โ›“๏ธ Program Requirements ย ย ย 

##### ๐Ÿš€ 1. User Management

* Two roles: Admin and Student.

* Admin:
```
Username: Admin

Password: Admin@123
```
* Student:
```
Username: Student

Password: Stud321@
```

##### ๐Ÿš€ 2. Student Records

* Students have:
```
o StudentNo

o Department

o Degree

o Name
```
##### ๐Ÿš€ 3. Encapsulation:

* Ensure all fields are private and provide public getter and setter methods for accessing and modifying them.

##### ๐Ÿš€ 4. All student attributes are private.

##### ๐Ÿš€ 5. Access to student data is through getter and setter methods.

##### ๐Ÿš€ 6. Credentials are accessed through authentication methods.

##### ๐Ÿš€ 7. Student Records will be inputted and manage by the Administrator Account

##### ๐Ÿš€ 8. Student Record existing DBS

```DBS
o StudentNo: 2024117769
```

# ๐Ÿงฎ Screenshots

### Home Page

### Login Panel with Generated Pin Code

### Admin Management GUI

### Student Record View GUI

# ๐Ÿงช Unit Test

### Test Case Coverage

# ๐Ÿ‘ท System Architecture

### ๐Ÿ“œ Breakdown of the Architecture components:

```
1. Presentation Layer
This layer is responsible for the user interface and user interaction. It includes:

- LoginFrame: The main entry point for users to log in. It handles user input for credentials and PIN verification.
- AdminDashboard: The user interface for administrators, providing access to administrative functionalities.
- StudentDashboard: The user interface for students, providing access to student-specific functionalities.

2. Business Logic Layer
This layer contains the core functionality of the application, including business rules and logic. It includes:

- AuthenticationService: Responsible for authenticating users based on their credentials. It checks if the username and password are valid.
- User Service: Manages user-related operations, such as retrieving user information and checking user roles (admin or student).

3. Data Access Layer
This layer is responsible for interacting with the data storage. It includes:

- User Repository: This could be a class or interface that handles data operations related to users, such as fetching user details from a database or file system. (Note: This part is implied in my code but not explicitly shown.)

4. Data Layer
This layer is where the actual data is stored. It could be:

- Database: A relational database (like MySQL, PostgreSQL) or a NoSQL database (like MongoDB) where user credentials and roles are stored.
- File System: If you are using a simple file-based approach, user data could be stored in text files or JSON files. ( This is what I used for this project)

5. Security Layer
This layer ensures that the application is secure. It includes:

- Password Hashing: Storing passwords securely (not shown in my code but recommended).
- PIN Code Generation and Verification: The logic for generating and verifying the PIN code during the login process.

6. Utilities Layer
This layer can include helper classes or utilities that provide common functionalities, such as:

- Image Loading: Handling the loading of images for the UI.
- Random Number Generation: For generating the PIN code.
```

### Diagram Representation

```
+---------------------+
| Presentation Layer |
|---------------------|
| LoginFrame |
| AdminDashboard |
| StudentDashboard |
+---------------------+
|
+------------------------+
| Business Logic Layer |
|------------------------|
| AuthenticationService |
| UserService |
+------------------------+
|
+---------------------+
| Data Access Layer |
|---------------------|
| User Repository |
+---------------------+
|
+-----------------------+
| Data Layer |
|-----------------------|
| Database/File System |
+-----------------------+
|
+---------------------+
| Security Layer |
|---------------------|
| Password Hashing |
| PIN Code Logic |
+---------------------+
|
+---------------------+
| Utilities Layer |
|---------------------|
| Image Loading |
| Random Number Gen. |
+---------------------+
```

# ๐ŸงŠ Student record system - Complete Project Overview

### Project Structure

#### ๐Ÿ’ป Code Project Structure using [Maven](https://www.geeksforgeeks.org/what-is-maven)

Artificial Ledger Student record management tree using "package-by-features" or "package-by-components"ย ย 

##### Student record management v2 (Final Version)
```bash
student-record-system/
โ”œโ”€โ”€ pom.xml
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ main/
โ”‚ โ”‚ โ”œโ”€โ”€ java/
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ com/
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ studentrecord/
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ App.java
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ auth/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ AuthenticationService.java
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ PinCodeGenerator.java
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ QRCodeGenerator.java
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ model/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Student.java
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ User.java
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ service/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ StudentService.java
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ UserService.java
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ui/
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ AdminDashboard.java
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ LoginFrame.java
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ StudentDashboard.java
โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ””โ”€โ”€ resources/
โ”‚ โ”‚ โ”œโ”€โ”€ images/
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ background.jpg
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ logo.png
โ”‚ โ”‚ โ””โ”€โ”€ application.properties
โ”‚ โ””โ”€โ”€ test/
โ”‚ โ””โ”€โ”€ java/
โ”‚ โ””โ”€โ”€ com/
โ”‚ โ””โ”€โ”€ studentrecord/
โ”‚ โ””โ”€โ”€ tests/
โ”‚
โ”œโ”€โ”€ pom.xml
โ”œโ”€โ”€ student-record-system.iml
โ”œโ”€โ”€ students.json
โ”œโ”€โ”€ users.json
โ”œโ”€โ”€ assets
โ”œโ”€โ”€ LICENSE
โ””โ”€โ”€ README.md
```

Previous version (This will be delete after we finish the project)

##### Student record management v1 (Previous Version)
```bash
student-management-system/
โ”œโ”€โ”€ pom.xml
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ main/
โ”‚ โ”‚ โ”œโ”€โ”€ java/
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ com/
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ studentmanagement/
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ StudentManagementApp.java
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ model/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Student.java
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ User.java
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ service/
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ AuthenticationService.java
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ DataPersistenceService.java
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ QRCodeService.java
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ gui/
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ LoginFrame.java
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ AdminFrame.java
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ StudentFrame.java
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ QRLoginDialog.java
โ”‚ โ”‚ โ””โ”€โ”€ resources/
โ”‚ โ”‚ โ”œโ”€โ”€ config/
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ application.properties
โ”‚ โ”‚ โ”œโ”€โ”€ images/
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ logo.png
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ background.jpg
โ”‚ โ”‚ โ””โ”€โ”€ data/
โ”‚ โ”‚ โ””โ”€โ”€ students.json
โ”‚ โ””โ”€โ”€ test/
โ”‚ โ”œโ”€โ”€ java/
โ”‚ โ”‚ โ””โ”€โ”€ com/
โ”‚ โ”‚ โ””โ”€โ”€ studentmanagement/
โ”‚ โ”‚ โ”œโ”€โ”€ model/
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ StudentTest.java
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ UserTest.java
โ”‚ โ”‚ โ””โ”€โ”€ service/
โ”‚ โ”‚ โ”œโ”€โ”€ AuthenticationServiceTest.java
โ”‚ โ”‚ โ”œโ”€โ”€ DataPersistenceServiceTest.java
โ”‚ โ”‚ โ””โ”€โ”€ QRCodeServiceTest.java
โ”‚ โ””โ”€โ”€ resources/
โ”‚ โ””โ”€โ”€ test-data/
โ”‚ โ””โ”€โ”€ test-students.json
โ””โ”€โ”€ docs/
โ”œโ”€โ”€ api/
โ”‚ โ””โ”€โ”€ javadoc/
โ”œโ”€โ”€ design/
โ”‚ โ”œโ”€โ”€ class-diagram.png
โ”‚ โ””โ”€โ”€ sequence-diagrams/
โ””โ”€โ”€ user-manual/
โ”œโ”€โ”€ admin-guide.md
โ””โ”€โ”€ student-guide.mdย ย ย 
...ย 
```

# ๐Ÿ’ป To run the application

1. Set up a new Maven project in IntelliJ IDEA.
2. Make sure the files are into the appropriate package structure.
3. Make sure all dependencies are resolved.
4. Run the Main.java class.

### ๐Ÿ’ป The system provides the following features:

* User authentication with two roles: Admin and Student.
* QR code generation for login credentials.
* Admin can add and view student records.
* Students can view their own information.

### ๐Ÿ’ป To set up this project in IntelliJ IDEA:

1. Open IntelliJ IDEA and select "Create New Project".
2. Choose "Maven" as the project type.
3. Select your project SDK (Java 11 or later is recommended).
4. Enter the GroupId (com.example) and ArtifactId (student-record-management).
5. Choose a project location and finish creating the project.
6. IntelliJ will create the basic structure. You can then create the packages and classes according to the structure above.
7. Copy the contents of the `pom.xml` file we provided earlier into your project's `pom.xml`.
8. Create each Java file in its respective package and copy the code we've provided.

After setting up the project structure, you can start implementing each class. Remember to refresh your Maven project after updating the `pom.xml` to ensure all dependencies are properly downloaded and configured.

##### pom.xml

```pom.xml

4.0.0

com.studentrecord
student-record-system
1.0-SNAPSHOT


17
17
UTF-8




com.google.zxing
core
3.5.1


com.google.zxing
javase
3.5.1



com.google.code.gson
gson
2.8.9



org.junit.jupiter
junit-jupiter-api
5.9.2
test




org.apache.maven.plugins
maven-compiler-plugin
3.11.0


org.apache.maven.plugins
maven-shade-plugin
3.4.1


package

shade




com.studentrecord.App







```

# ๐Ÿ’Ž Components
This tree structure represents the Maven standard directory layout for a Java project. Here's a brief explanation of each component:

1. `student-record-management/`: This is the root directory of your project.
2. `pom.xml`: This file is at the root level and contains the project configuration and dependencies.
3. `src/`: This directory contains all the source files.
4. `main/`: This subdirectory of src/ contains the main application code and resources.
5. `java/`: This contains all the Java source files.
6. `com/studentrecord/`: This is the base package for all your Java classes.
7. `App.java`: The main class to run the application.
8. `model/`: This package contains the data model classes.
9. `service/`: This package contains the service classes that handle business logic.
10. `util/`: This package contains utility classes. (deleted for some reason like there's no use case)
11. `ui/`: This package contains all the GUI-related classes.
12. `auth/`: This package contains all the Authentication, QRCode, Pin Code - related classes.
13. `resources/`: This directory is for non-Java resources like configuration files, images, etc.

# ๐Ÿ† Contributingย ย ย ย 

### Contributingย ย ย ย ย 
If you would like to contribute to the Banking System, please follow these steps:
1. Fork the repository.
2. Create a new branch for your feature or bug fix.
3. Make your changes and commit them.
4. Push your changes to your forked repository.
5. Submit a pull request to the main repository.

### ๐Ÿง  Submitting Changes

๐Ÿง  Contributions are welcome! If you have ideas for improvements or want to add more exercises, follow these steps:

1. Fork the repository.
2. Create a new branch.
3. Make your changes and commit them.
4. Push to your fork and submit a pull request. ๐Ÿ’•๐Ÿ’•๐Ÿ’•๐Ÿ’•

### ๐Ÿ‘‹ Contributors
### Special thanks to all my groupmates:
* #### ๐Ÿ˜Ž [Jay Arre Talosig](https://github.com/flexycode)ย - Machine Learning Engineer | Blockchain Developer | Bioinformatics Scientist ย ย ย 
* #### ๐Ÿงญ [Bherliane Mallari](https://github.com/mallaribs01) - Software Engineerย | Full Stack Developerย | Front-End Developer
* #### ๐Ÿ’ฅ [Hannah Padilla](https://github.com/hnnhpdll) - Software Engineerย | Full Stack Developerย | Back-End Engineer
* #### ๐ŸŽฒ [Brian De Vera](https://github.com/scarfer14) - Network Security Engineerย | Digital Forensic Analystย | Robotics Engineer
* #### ๐Ÿค– [Mystic Love](https://github.com/flexyledger) - Necromancerย | Fortune Tellerย | Rakista

### ๐Ÿ›ธ Reporting Issues

```bash
Some changes need to be address
- Coming Soon
- Coming Soon
- Coming Soon
```

###### ๐Ÿค– If you encounter any issues or have suggestions, please open an issue to let us know.

# ๐Ÿ”ญAcknowledgementsย ย ย ย ย 

### โœจ Professor Jay A. Abaletaย ย ย 
Professor Jay Abaleta is a Senior Software Engineer and esteemed faculty member at National University. With a strong background in teaching the core principles and advanced concepts of Java, he is highly regarded in the field. In addition to his role at National University, Prof. Abaleta also serves as a Professor at Adamson University and as a lecturer of IT/CS at Arba Minch University, sharing his expertise with students worldwide. Having studied at St. Paul University Philippines, Prof. Abaleta brings a wealth of knowledge and experience to his teaching. Known for his friendly and approachable nature, Prof. Abaleta fosters a positive learning environment where students thrive. His dedication and passion for teaching have made him a beloved professor among his students.

# ๐Ÿ”‘ Licenseย ย ย ย ย 

The Artificial Ledger Technology Bank App is licensed under the [MIT License](https://opensource.org/licenses/MIT) and [ALT Licence](https://github.com/flexycode/CCOBJPGL_TEAM2_PROJECT/blob/master/LICENSE).
This project is licensed under the MIT License and Artificial Ledger Technology.

## Changelogs

## [10.1.5] - 2024-10-19ย ย ย ย ย ย 
### Added
- ๐Ÿ’ป Final Project requirements for our project
- โœจ Bootcamp Webinar ni Prof Ponio sa GDSC
- โœจ Brainstorming for our Project requirements
- โœจ Coming Soon ๐Ÿ’ป ๐Ÿš€
- โœจ Coming Soon ๐Ÿง  ๐Ÿ”‘

## [10.1.1] - 2024-09-20
### Activity
- โœจ Will designate a task from all the group members

## [10.1.3] - 2024-09-21ย 
### Activity
- โœจ Finalizing our Case Study: Student Record with User Management Authenticated by Generated QR Code
- โœจ Will designate a task from all the group members
- โœจ Create Architecture tree structure using Maven

## [10.1.2] - 2024-09-22ย 
### HotFix
- โœจ Fix a unresponsive GUI in AdminFrame
- โœจ Coming Soon

## [10.1.2] - 2024-10-23ย 
### Activity
- โœจ Debug StudentService java class
- โœจ Debug UserService java class

## [10.1.2] - 2024-10-24ย 
### Activity
- โœจ Agile Scrum
- โœจ Team Case Study

## [10.1.2] - 2024-10-25ย 
### Activity
- โœจ Agile Scrum
- โœจ Team Case Study

## [10.1.2] - 2024-10-26ย 
### Activity
- โœจ Update the Project Structure
- โœจ Update pom.xml to v1

## [10.1.2] - 2024-10-27ย 
### Activity
- โœจ Update the Project Structure
- โœจ Update pom.xml to final version

## [10.1.2] - 2024-10-28ย 
### Activity
- โœจ Update the Project Structure
- โœจ Upload new project file for student record management
- โœจ Fix README.md

## [10.1.2] - 2024-10-29
### Activity
- โœจ Debug util and services in the Project Structure
- โœจ Upload asset folder
- โœจ Update README.md

## [10.1.3] - 2024-10-30
### Activity
- โœจ Debug auth and 3 class in the Project Structure
- โœจ Finalize the SDLC
- โœจ Update README.md
- โœจ Update the Project Structure

## [10.1.3] - 2024-10-31
### Activity
- โœจ Refactor auth and 3 class
- โœจ Revise pom.xml
- โœจ Update README.md

## [11.1.4] - 2024-11-01
### Activity
- โœจ Refactor all the important features class
- โœจ Fix Pin Code Authentication
- โœจ Add Pin Code Verification
- โœจ Update README.md

## [11.1.3] - 2024-11-02
### Activity
- โœจ Record video for the actual
- โœจ Finalization for SDLC
- โœจ Hide entire codebase in the GitHub, I will soon upload after the submission of this case study
- โœจ Add students.json and users.json file in the Project structure tree
- โœจ Update README.md

๐ŸงŠ Case Study Project

#### [Back to Table of Content](#-introduction)

---


mystreak




mystreak

ย ย ย ย