Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/flexycode/ccobjpgl_final_project
- Owner: flexycode
- License: mit
- Created: 2024-10-19T03:15:02.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-11-12T14:41:56.000Z (3 months ago)
- Last Synced: 2024-11-12T15:33:03.186Z (3 months ago)
- Topics: case-study, project
- Language: Java
- Homepage: https://github.com/flexycode/CCOBJPGL_TEAM3_PROJECT
- Size: 1.7 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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: AdminPassword: Admin@123
```
* Student:
```
Username: StudentPassword: Stud321@
```##### ๐ 2. Student Records
* Students have:
```
o StudentNoo 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)
---
![]()
![]()
![]()
ย ย ย ย