Skip to content

seanxpw/TaskPro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaskPro

Authors: Faris Mohammady, Banff Jiang, Cathy Wu, Xiaopei Wang

Motive

As a university student or student in general, it is extremely important to schedule your upcoming assignments and events well, as it can be stressful when not planned properly. Having a tool that organizes your tasks cleanly minimizes stress levels and allows students to appropriately focus on what's ahead of them.

Tools/Description

We plan to entirely code this project in C++. We will use VSCode to code, and GitHub to collaborate with our team and keep track of what each person is doing. The user of our tool will input a list of tasks that they want to keep track of. The output will be their lists of tasks they have to do and the date they have to complete them. In this application, users can create separate lists with different subtasks in them. For example, a user can create a task list to study for an upcoming midterm and have the subtasks be to complete study guide, review lecture notes, and review past assignments. Additionally, the tasks are labeled with the date they were created, and a date to complete them by. Implement features where users can easily delete and add their custom tasks Implement a sort feature by highest priority (closest due date)

User Interface Specification

image

Class Diagram

Class Diagram Template (2)

The 'Tasklist' class serves as a container or manager for tasks. It includes methods such as adding, removing, and retrieving tasks within the list. Its association with the 'Task' class is composition as it manages instances of tasks.

The 'Task' class represents a generic task in the system with attributes such as a task name, description, and priority. It's inherited by two subclasses, 'Subtask' and 'MainTask'.

The 'Subtask' class is a subclass of the 'Task' class, meaning it inherits properties and behaviors from the 'Task' class.

The 'MainTask' is another subclass of the 'Task' class, representing larger, overarching tasks that may be composed of subtasks.

Screen Layouts

Welcome screen Add Task1 (study finals) Add Task2 (pack for winter break) Add Task3 (chores) Add subtask1 (vacuum) Add subtask2 (laundry) Edit priority (none --  2) Sort by priority before sort by priority after sort by priority Sort by deadline post sort by deadline delete subtask post delete subtask export tasks txt file delete task post delete task

For the Deadline, Description, and Priority classes we followed the single responsibility principle by having each class only implement one feature. For example, the Deadline class only implements the "deadline" feature and the Priority class only implements the "priority" feature. Furthermore, to ensure that each class only has one responsibility, we created a Subtask class to separate the responsibilities of modifying tasks and subtasks. Both task and subtask classes will directly use the Deadline, Description, and Priority features classes. Originally, we had an object of type Taskist * taskList in the MainMenu class, but we moved it to the Tasklist class since it violated the interface segregation principle. Since the main menu did not have to use taskList, we moved it to the TaskList class to make sure we were complying with this guideline.

Screenshots

Screenshots of the input/output after running your application

Installation/Usage

Option 1: Build From source.

  1. Clone this GitHub repository by copying the hyperlink from the green "code" button on the upper right (code-->local-->https) into the following command:
    git clone --recursive https://github.com/cs100/final-project-fmoha020-cwu247-bjian018-xwang571.git

Or you can get the source from our release.

  1. Once you have this repo cloned, type these commands into the terminal in the following order:
     1. cd build
     2. cmake ..
     3. make
     4. ./bin/TaskPro.out
  1. Then, this program should run! Keep in mind you only have to run cmake and make once, then you can just run
    ./bin/TaskPro.out
  1. Use this task manager to add, delete, and edit tasks in your upcoming schedule. Additional features include creating subtasks within a task and sorting lists of tasks by their priorities or deadlines. A display feature allows users to view their list of tasks.

Option 2: Download Executable File

In the release we've compiled an executable file for you! If you use Linux, simply download the TaskPro.out and run it.

Tesing

We used gtest to test all of our classes: MainTask.cpp, Task.cpp, and TaskList.cpp. Additionally, we also used Continuous integration (CI) by GitHub Actions.

About

2023 Fall CS100 final project

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 5