The Smart Task Manager is a JavaFX-based application designed to help users efficiently manage their tasks. Through a user-friendly graphical interface, it allows for adding, removing, and updating tasks. This document explains the project's class hierarchy, use of OOP principles, GUI implementation, version control approach, team contributions, and challenges faced during development.
- Introduction
- Class Hierarchy and Design
- OOP Principles
- GUI Implementation
- Software and Tools Used
- Version Control
- Team Contributions and Challenges
- Conclusion
The Smart Task Manager is a JavaFX application for managing tasks. It features:
- Adding, removing, and updating tasks.
- A visually appealing interface using JavaFX and Scene Builder.
-
Main
(com.fx.Main)- Role: Entry point for the application.
- Functionality: Loads
task.fxml
, sets the scene and primary stage, and starts the application lifecycle.
-
Task
(com.fx.Task)- Type: Abstract class defining the attributes and behaviors of a task.
- Attributes:
String name
: Task title or description.boolean isDone
: Indicates task completion status.
- Methods:
setName(String name)
andsetDone(boolean isDone)
: Mutators.getName()
andisDone()
: Accessors.- Abstract methods for task management to be implemented by subclasses.
-
TaskManager
(com.fx.TaskManager)- Extends:
Task
- Role: Manages multiple tasks using an
ArrayList
. - Key Methods:
addTask(Task task)
removeTask(Task task)
updateTask(int index, String newName)
getTasks()
- Extends:
-
Controller
(com.fx.Controller)- Role: Intermediary between the GUI and task management logic.
- Key Methods:
onAddTaskClick()
: Prompts user to add a task.onRemoveTaskClick()
: Removes selected tasks.onUpdateTaskClick()
: Updates the name of a selected task.
- Abstraction: Abstract methods in
Task
enforce concrete implementation in subclasses. - Inheritance:
TaskManager
extendsTask
, inheriting its properties and methods. - Encapsulation: Private fields with public getters and setters ensure controlled access.
- Polymorphism: Treating
TaskManager
as aTask
reference allows uniform task handling.
-
JavaFX & FXML:
- Components include a welcome label, buttons for task management, and a
ScrollPane
displaying tasks asCheckBox
elements.
- Components include a welcome label, buttons for task management, and a
-
User Interaction:
- Add Task: Prompts user for a task name and displays it as a
CheckBox
. - Remove Task: Removes selected tasks.
- Update Task: Allows renaming of tasks.
- Add Task: Prompts user for a task name and displays it as a
- JavaFX & Scene Builder: For GUI design and development.
- Development Environments:
- IntelliJ IDEA for some team members.
- VS Code and Linux for others.
- Version Control: Git/GitHub.
- Approach:
- Simple workflow: Local changes were committed and pushed directly to the
main
branch.
- Simple workflow: Local changes were committed and pushed directly to the
- Repository: GitHub Repository
Sample Commit History:
add name
(by xnts0)fix errors
(by xnts0)add remove method
(by HaruAzashi)fix update method
(by manaf45)
- Faisal Hassan Ahmed Sumayli (Leader):
- Established project structure and implemented core classes.
- Abdullah:
- Developed
addTask
functionality.
- Developed
- Saleh:
- Implemented
removeTask
functionality.
- Implemented
- Manaf:
- Created the
updateTask
feature.
- Created the
- Scheduling Conflicts: Balancing development with exams and commitments.
- Environment Issues: Transitioning between VS Code and IntelliJ IDEA.
- Debugging Difficulties: Resolving toolchain conflicts across operating systems.
The Smart Task Manager exemplifies the effective application of OOP principles, a well-structured class hierarchy, and a user-friendly GUI. Despite challenges, the team delivered a functional and extensible task management application.
GitHub Repository: Smart Task Manager