Skip to content

KRazo777/final-project-lregi001-njaga003-krazo003-fsan003

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Note: This repo has been mirrored from the original git repo since the original was under ownership of UCR and was going to be reset. As a result the original project board, pull requests, and issues tabs were reset.

Notetastic

CI_for_NotesApplication

Authors: Liam Regina, Nidhi Jagadeesh, Kevin Razo, Francis Miguel San Juan

Project Description

Reason For Making This: As students we have all faced difficulties in keeping track of lists, due dates, and writing down ideas. This is why we decided to resolve this issue by creating a note taking app. This application will allow users to save notes into a file they will be able to access later, to view as well as edit.

Tools/Technologies: It will utilize C++ and if time permits, we will possibly implement a GUI. We would use certain libraries, like time and filestream, but that will be updated as we go.

Input/Output: The input/output of our project is taking in what the user wants to include in their notes, and saving it; while output is accessing the file that they have saved to see what input they had given as well as the last time it had been edited. It will also request them to title the file before they save it which will be how they are going to be able to access files later on.

Features: Some of our features include adding, editing, and deleting notes. Another would be the ability to create folders in the notes app and move notes into those folders. There will be a function to quit the app as well as possibly implement a trash system in which deleted notes may be accessed or permanently deleted.

User Interface Specification

Navigation Diagram

Screenshot 2024-02-12 011423

Screen Layouts

Screenshot 2024-02-12 011934

When the user initially runs the program, they will prompted to enter their username.

Screenshot 2024-02-12 011955

Once the user enters their username, this will be prompted with a "folders menu" where they have control over creating, deleting, editing folder titles, opening folders to access notes, as well as the choice to quit the program.

Screenshot 2024-02-12 012006

If the user enters "n" to create a folder, they will be shown their currently active folders and will be asked to enter a name for their new folder.

Screenshot 2024-02-12 012014

If the user chooses "d" to delete a folder, they will be shown their currently active folders and will be asked to enter the name for the folder they want to delete. The folder name must be a currently active folder in order to be deleted.

Screenshot 2024-02-12 012025

If the user chooses to edit a folder title, they will be shown their currently active folders and will be asked enter the name of the folder they want to edit. If they enter the name of a currently active folder, they will then be prompted to enter the updated title for the folder.

Screenshot 2024-02-12 012033

If the user chooses "o" in the menu to open a folder and enter the name of an active folder, they will be prompted to the "notes menu". Here, they will be shown the name of the folder they are currently in, the currently active notes in the folder, and a set of options for creating, deleting, adding to, and opening notes. They also have the option of returning to the folders menu or quitting the program.

Screenshot 2024-02-12 012045

If the user chooses "n" to create a new note, they will be prompted to enter the title for the note and then type anything they wish into their note.

Screenshot 2024-02-12 012055

If the user chooses "o" to open a new note and they enter the name of a currently active note, they will be shown the note's title, body, and time of last edit. They will have the option to exit the note and return to the notes menu or quit the program.

Screenshot 2024-02-12 012106

If the user chooses "d" to delete a note, they will be shown their active notes and will be prompted to enter the number for the active note they want to delete or enter "c" to cancel the operation and return to the notes menu.

Screenshot 2024-02-12 012116

If the user chooses "a" to add to an existing note, they will be shown their active notes and prompted to enter the number for the note they want to add to or "c" to cancel the operation. If they enter the number of an active note they will be brought to the next screen ↓

Screenshot 2024-02-12 012130

After, they enter the number for an active note to add to, they will be shown the current title and body of the note, and will be able to add to the body of the note.

Screenshot 2024-02-12 012141

If the user chooses "q" to quit the program in either the folders or notes menu, they will be shown a message saying the program was terminated and then the program will exit.

Class Diagram

ClassDiagram (2)

Our main class acts as an start of the program, where users intially enter their username and are then taken to the folder menu. It is here where they will be able to manage and create their collection of folders. The runMenus class is responsible for running the menus of our program, which is the primary method the user utilizes to interact with the program. These menus display a GUI for the user in order for them to swiftly decide how they may want to manage their folders (using the Folder Menu) or notes (using the Notes Menu). The folder menu allows the user to control the amount of folders they have, change names of folders, as well as being able to open these folders and create notes in each individual folder. Within the notes menu, the user is given the ability to manage their notes within each respective folder, add to notes, or view their created notes.
The Notes class is an object class that manages what is inside of a singular note. This includes writing to a note as well as making sure the time of last edit is updated. It is where all actions that can be taken on note as well as helper functions are implemented.
The Folders class contains notes within it and has an aggregation relationship with the class. This is where notes are managed; adding and deleting notes as well as seeing all the notes in the folder are allowed here.
The Folder Manager class contains folders within it and is what is used to manage all the folders that are contained within.
Solid principles that we applied included Single Responsibility which is shown throughout addition to the Folder Manager Class. We noticed that our Folder class was assigned with many tasks that didn’t align with only one singular goal, so we separated it into a Folder Class and a separate class that manages our folders called FolderManager. This helps us write better code as because each class follows the single responsibility principle, it makes our code easier to implement as well as prevent any bugs or unexpected changes in the future to be limited rather than spread throughout.

Final deliverable

Screenshots

After Logging In...

image

Making a New Folder

image2 image3

Making a New Note

image4 image5

Adding to a New Note

image6 image7

Deleting a Note

image8 image9

Renaming a Folder

image10 image11

Deleting a Folder

image12 image13

Quitting The Program

image14 image15

Installation/Usage

To begin using Notetastic, we'll be cloning the repository into our own IDE, like VSCode. With the IDE of your choice,
in the terminal type: git clone https://github.com/cs100/final-project-lregi001-njaga003-krazo003-fsan003.git

Next, we'll be using cmake and make to construct the Notetastic executable. In the terminal, type cmake . and use make to build the executable.

Now that our executable has been built!
We can run Notetastic by typing ./bin/runProgram in the terminal and begin writing all the notes we'll ever need!

Testing

Notetastic’s functionality was validated through the use of continuous integration, in which we triggered a build every time we would open a pull request or merge a pull request into our default branch. This build would run all of our tests, which would verify that a pull request was satisfactory for merging and that we could catch any errors that may have appeared from adding new code or functions. This build used a variety of tests for every class that we implemented, ensuring that we accounted for as many types of user input as we could. If a pull request did not pass the build, we would debug on the branch of the pull request and make sure we made the necessary commits so that the build would pass, allowing us to review and eventually approve the pull request. This process made our debugging process a lot more efficient and allowed us to rapidly deploy crucial implementations or fixes.

Memcheck-Clean

Screenshot 2024-03-14 at 2 49 08 AM

About

CS100 Final Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published