0% found this document useful (0 votes)
8 views18 pages

Codefi

The document contains a Java program for a To-Do List application that allows users to log in or register, manage tasks, and view or edit entries. It includes functionalities for adding, editing, viewing, and removing tasks, as well as sorting them based on urgency. The program utilizes file handling to store user credentials and task details in a structured manner.

Uploaded by

lxdbantilan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views18 pages

Codefi

The document contains a Java program for a To-Do List application that allows users to log in or register, manage tasks, and view or edit entries. It includes functionalities for adding, editing, viewing, and removing tasks, as well as sorting them based on urgency. The program utilizes file handling to store user credentials and task details in a structured manner.

Uploaded by

lxdbantilan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

MAIN CLASS:

import [Link].*;
import [Link].*;

public class Todo {

public static Scanner sc = new Scanner([Link]);


public static ArrayList<Task> tasks = new ArrayList<>();
public static String currentUsername = "";
public static int taskCounter = 1;

public static void main(String[] args) throws IOException {


login();
loadTasks();
sortTasks();

while (true) {
[Link]("\nTo Do List App");

if ([Link]() == 0) {
[Link]("No task yet, you are doing great :)");
} else {
Task mostUrgent = [Link](0);
[Link]("MOST URGENT TASK!!: \"" + [Link]() + "\"
(Due: " + [Link]() + ")");
}

[Link]("[1] View Entries");


[Link]("[2] Edit Entries");
[Link]("[3] Exit");
[Link]("Choose: ");
String choice = [Link]();

switch (choice) {
case "1":
viewEntries();
break;
case "2":
editEntries();
break;
case "3":
[Link]("Exiting...");
return;
default:
[Link]("Invalid choice.");
}
}
}

public static void login() throws IOException {


while (true) {
[Link]("---- LABORER'S TO-DO-LIST APPLICATION ----");
[Link]("[1] Login | [2] Register");
String option = [Link]();

if ([Link]("2")) {
while (true) {
[Link]("Enter new username: ");
currentUsername = [Link]();
File userFolder = new File(currentUsername);
if ([Link]()) {
[Link]("Username already exists. Try another.");
} else {
[Link]();
[Link]("Enter password: ");
String password = [Link]();

FileWriter writer = new FileWriter(new File(userFolder, "[Link]"));


[Link](password);
[Link]();

[Link]("Registration successful! You are now logged in as " +


currentUsername);
break;
}
}
} else if ([Link]("1")) {
while (true) {
[Link]("Enter username: ");
currentUsername = [Link]();
File userFolder = new File(currentUsername);
if (![Link]()) {
[Link]("Username not found. Try again.");
break;
} else {
[Link]("Enter password: ");
String password = [Link]();

File passFile = new File(userFolder, "[Link]");


Scanner passReader = new Scanner(passFile);
String storedPass = [Link]();
[Link]();

if ([Link](storedPass)) {
[Link]("Login successful!");
return;
} else {
[Link]("Incorrect password.");
break;
}
}
}
}
}
}

public static void loadTasks() throws IOException {


File userFolder = new File(currentUsername);
if (![Link]()) {
[Link]();
}

File[] files = [Link]((dir, name) -> [Link](".txt") &&


![Link]("[Link]"));
if (files == null) {
return;
}
for (File file : files) {
Scanner reader = new Scanner(file);
int id = [Link]([Link]());
String group = [Link]();
boolean completed = [Link]([Link]());
String dueDate = [Link]();
String header = [Link]();
String description = [Link]();
[Link](new Task(id, group, completed, dueDate, header, description));
if (id >= taskCounter) {
taskCounter = id + 1;
}
[Link]();
}
}

public static void sortTasks() {


for (int i = 0; i < [Link](); i++) {
for (int j = i + 1; j < [Link](); j++) {
Task task1 = [Link](i);
Task task2 = [Link](j);

if ([Link]() != [Link]()) {
if ([Link]()) {
[Link](i, task2);
[Link](j, task1);
}
} else {
if ([Link]().compareTo([Link]()) > 0) {
[Link](i, task2);
[Link](j, task1);
}
}
}
}
}

public static void viewEntries() {


sortTasks();

[Link]("%-9s %-10s %-10s %-15s %-20s\n", "List No.", "Group", "Status",


"Due Date", "Header");
[Link]("--------------------------------------------------------------------------");
if ([Link]() == 0) {
[Link]("No tasks available.");
} else {
int listNumber = 1;
for (Task task : tasks) {
[Link]("%-9d %-10s %-10s %-15s %-20s\n",
listNumber,
[Link](),
[Link](),
[Link](),
[Link]().length() > 17 ? [Link]().substring(0, 17) + "..." :
[Link]()
);
listNumber++;
}
}

[Link]("--------------------------------------------------------------------------");
String choice = "";
while (![Link]("1") && ![Link]("4")) {
[Link]("[1] View Task | [4] Return");
[Link]("Choice: ");
choice = [Link]();

if (![Link]("1") && ![Link]("4")) {


[Link]("Invalid choice. Please enter 1 or 4.");
}
}

if ([Link]("1")) {
[Link]("Enter Task Number: ");
String input = [Link]();
int num = [Link](input);
viewTask(num);
}
}

public static void viewTask(int num) {


if (num <= 0 || num > [Link]()) {
[Link]("Task not found.");
return;
}

Task t = [Link](num - 1);


[Link]("\n--- VIEWING TASK " + num + " ---");
[Link]("[" + [Link]() + "] " + [Link]());
[Link]([Link]());
[Link]("press any key to return");
[Link]();
}

public static void editEntries() throws IOException {


sortTasks();

[Link]("%-9s %-10s %-10s %-15s %-20s\n", "List No.", "Group", "Status",


"Due Date", "Header");
[Link]("--------------------------------------------------------------------------");
if ([Link]() == 0) {
[Link]("No tasks available.");
} else {
int listNumber = 1;
for (Task task : tasks) {
[Link]("%-9d %-10s %-10s %-15s %-20s\n",
listNumber,
[Link](),
[Link](),
[Link](),
[Link]().length() > 17 ? [Link]().substring(0, 17) + "..." :
[Link]()
);
listNumber++;
}
}
[Link]("--------------------------------------------------------------------------");
String choice = "";
while (![Link]("1") && ![Link]("2") && ![Link]("3") &&
![Link]("7")) {
[Link]("[1] Add Task | [2] Edit Task | [3] Remove Task/s | [7] Return");
[Link]("Choice: ");
choice = [Link]();

if (![Link]("1") && ![Link]("2") && ![Link]("3") &&


![Link]("7")) {
[Link]("Invalid choice.");
}
}

switch (choice) {
case "1":
addTask();
break;
case "2":
editTask();
break;
case "3":
removeTask();
break;
case "7":
break;
}
}

public static void editTask() throws IOException {


[Link]("Enter Task Number (List no.) to Edit: ");
int index = [Link]([Link]()) - 1;

if (index < 0 || index >= [Link]()) {


[Link]("Invalid task number.");
return;
}

Task task = [Link](index);


[Link]("\n-- Editing Task: " + [Link]());

[Link]("Enter new header (leave blank to keep current): ");


String newHeader = [Link]();

boolean hasHeader = false;


for (int i = 0; i < [Link](); i++) {
if ([Link](i) != ' ') {
hasHeader = true;
break;
}
}
if (hasHeader) {
[Link](newHeader);
}

[Link]("Enter new due date (yyyy-mm-dd, leave blank to keep current): ");
String newDate = [Link]();

boolean hasDate = false;


for (int i = 0; i < [Link](); i++) {
if ([Link](i) != ' ') {
hasDate = true;
break;
}
}
if (hasDate) {
[Link](newDate);
}

[Link]("Enter new description (leave blank to keep current): ");


String newDesc = [Link]();
boolean hasDesc = false;
for (int i = 0; i < [Link](); i++) {
if ([Link](i) != ' ') {
hasDesc = true;
break;
}
}
if (hasDesc) {
[Link](newDesc);
}

[Link]("Mark as completed? (yes/no): ");


String status = [Link]();
if ([Link]("yes")) {
[Link](true);
} else if ([Link]("no")) {
[Link](false);
}

File userFolder = new File(currentUsername);


File taskFile = new File(userFolder, "task" + [Link]() + ".txt");
FileWriter fw = new FileWriter(taskFile);
[Link]([Link]() + "\n");
[Link]([Link]() + "\n");
[Link]([Link]() + "\n");
[Link]([Link]() + "\n");
[Link]([Link]() + "\n");
[Link]([Link]() + "\n");
[Link]();

[Link]("Task updated successfully!");


sortTasks();
}

public static void removeTask() {


[Link]("\n---- Remove Task/s ----");
[Link]("How many do you want to remove?");
[Link]("[1] Single");
[Link]("[2] Multiple");
[Link]("[3] All");
[Link]("[4] Return");
[Link]("Choice: ");
String choice = [Link]();

if ([Link]("1")) {
[Link]("%-9s %-10s %-10s %-15s %-20s\n", "List No.", "Group", "Status",
"Due Date", "Header");
[Link]("--------------------------------------------------------------------------");
if ([Link]() == 0) {
[Link]("No tasks available.");
} else {
int listNumber = 1;
for (Task task : tasks) {
[Link]("%-9d %-10s %-10s %-15s %-20s\n",
listNumber,
[Link](),
[Link](),
[Link](),
[Link]().length() > 17 ? [Link]().substring(0, 17) + "..." :
[Link]()
);
listNumber++;
}
}
[Link]("--------------------------------------------------------------------------");
[Link]("Enter Task Number (List No.): ");
int index = [Link]([Link]()) - 1;

if (index < 0 || index >= [Link]()) {


[Link]("Invalid task number.");
return;
}

Task removed = [Link](index);


[Link]("Are you sure you want to remove \"" + [Link]() +
"\"? (yes/no): ");
String confirm = [Link]();

if ([Link]("yes")) {
[Link](index);
File userFolder = new File(currentUsername);
File taskFile = new File(userFolder, "task" + [Link]() + ".txt");
if ([Link]()) {
[Link]();
}
[Link]("Removed: " + [Link]());
} else {
[Link]("Cancelled.");
}

} else if ([Link]("2")) {
[Link]("%-9s %-10s %-10s %-15s %-20s\n", "List No.", "Group", "Status",
"Due Date", "Header");
[Link]("--------------------------------------------------------------------------");
if ([Link]() == 0) {
[Link]("No tasks available.");
} else {
int listNumber = 1;
for (Task task : tasks) {
[Link]("%-9d %-10s %-10s %-15s %-20s\n",
listNumber,
[Link](),
[Link](),
[Link](),
[Link]().length() > 17 ? [Link]().substring(0, 17) + "..." :
[Link]()
);
listNumber++;
}
}
[Link]("--------------------------------------------------------------------------");
[Link]("Enter Task Numbers (ex. [1, 3, 5]): ");
String input = [Link]();

input = [Link]("[", "").replace("]", "").replace(",", " ");


String[] parts = [Link](" ");

ArrayList<Integer> indexes = new ArrayList<>();


for (String part : parts) {
if (![Link]("")) {
int val = [Link](part) - 1;
if (val >= 0 && val < [Link]()) {
[Link](val);
}
}
}

if ([Link]() == 0) {
[Link]("No valid task numbers provided.");
return;
}

[Link]("Are you sure you want to remove these " + [Link]() + "
tasks? (yes/no): ");
String confirm = [Link]();

if ([Link]("yes")) {
for (int i = 0; i < [Link]() - 1; i++) {
for (int j = i + 1; j < [Link](); j++) {
if ([Link](i) < [Link](j)) {
int temp = [Link](i);
[Link](i, [Link](j));
[Link](j, temp);
}
}
}

for (int idx : indexes) {


Task removed = [Link](idx);
File userFolder = new File(currentUsername);
File taskFile = new File(userFolder, "task" + [Link]() + ".txt");

if ([Link]()) {
[Link]();
}

[Link]("Removed: " + [Link]());


[Link](idx);
}
} else {
[Link]("Cancelled.");
}
} else if ([Link]("3")) {
[Link]("%-9s %-10s %-10s %-15s %-20s\n", "List No.", "Group", "Status",
"Due Date", "Header");
[Link]("--------------------------------------------------------------------------");
if ([Link]() == 0) {
[Link]("No tasks available.");
} else {
int listNumber = 1;
for (Task task : tasks) {
[Link]("%-9d %-10s %-10s %-15s %-20s\n",
listNumber,
[Link](),
[Link](),
[Link](),
[Link]().length() > 17 ? [Link]().substring(0, 17) + "..." :
[Link]()
);
listNumber++;
}
}
[Link]("--------------------------------------------------------------------------");
if ([Link]() == 0) {
[Link]("There are no tasks to remove.");
return;
}

[Link]("Are you sure you want to remove ALL tasks? (yes/no): ");
String confirm = [Link]();

if ([Link]("yes")) {
for (Task task : tasks) {
File userFolder = new File(currentUsername);
File taskFile = new File(userFolder, "task" + [Link]() + ".txt");
if ([Link]()) {
[Link]();
}
}

[Link]();
[Link]("All tasks removed.");
} else {
[Link]("Cancelled.");
}

} else if ([Link]("4")) {
return;
} else {
[Link]("Invalid choice.");
}

sortTasks();
}

public static void addTask() throws IOException {


[Link]("\n---- ADD TASK ----");
String group = chooseGroup();
boolean completed = false;
[Link]("Due Date (YYYY-MM-DD): ");
String dueDate = [Link]();
[Link]("Header: ");
String header = [Link]();
[Link]("Description: ");
String description = [Link]();
Task newTask = new Task(taskCounter, group, completed, dueDate, header,
description);
[Link](newTask);

File userFolder = new File(currentUsername);


File file = new File(userFolder, "task" + taskCounter + ".txt");
FileWriter fw = new FileWriter(file);
[Link](taskCounter + "\n");
[Link](group + "\n");
[Link](completed + "\n");
[Link](dueDate + "\n");
[Link](header + "\n");
[Link](description + "\n");
[Link]();

sortTasks();
[Link]("Task saved!");
taskCounter++;
}

public static String chooseGroup() {


String input = "";
while (![Link]("1") && ![Link]("2") && ![Link]("3") &&
![Link]("4")) {
[Link]("Group:\n[1] Work\n[2] School\n[3] House\n[4] Other");
[Link]("Choose group: ");
input = [Link]();

if (![Link]("1") && ![Link]("2") && ![Link]("3") &&


![Link]("4")) {
[Link]("Invalid choice.");
}
}

switch (input) {
case "1":
return "Work";
case "2":
return "School";
case "3":
return "House";
case "4":
return "Other";
}
return "Other";
}
}
ENTRY CLASS:
public abstract class Entry {

protected int id;


protected String header;
protected String description;

public Entry(int id, String header, String description) {


[Link] = id;
[Link] = header;
[Link] = description;
}

public int getId() {


return id;
}

public String getHeader() {


return header;
}

public void setHeader(String header) {


[Link] = header;
}

public String getDescription() {


return description;
}

public void setDescription(String description) {


[Link] = description;
}

public abstract String getDetails();


}
TASK CLASS:
public class Task extends Entry {
private String group;
private boolean isCompleted;
private String dueDate;
public Task(int id, String group, boolean isCompleted, String dueDate, String header,
String description) {
super(id, header, description);
[Link] = group;
[Link] = isCompleted;
[Link] = dueDate;
}

public String getStatusIcon() {


return isCompleted ? "/" : "X";
}

public String getDetails() {


return [Link]("Group: %s\nStatus: %s\nDue Date: %s\nHeader:
%s\nDescription: %s",
group, getStatusIcon(), dueDate, header, description);
}

public String getGroup() {


return group;
}

public void setGroup(String group) {


[Link] = group;
}

public boolean isIsCompleted() {


return isCompleted;
}

public void setIsCompleted(boolean isCompleted) {


[Link] = isCompleted;
}

public String getDueDate() {


return dueDate;
}
public void setDueDate(String dueDate) {
[Link] = dueDate;
}

@Override
public String toString() {
return [Link]("%d %s %s %s %s", id, group, getStatusIcon(), dueDate, header);
}
}

You might also like