Develop a program to maintain a list of homework assignments. When an assignment is assigned, add it to the list, and when it is completed, remove it. You should keep track of the due date. Your program should provide the following services:
- Add a new assignment.
- Remove an assignment.
- Provide a list of the assignments in the order they were assigned.
- Find the assignment(s) with the earliest due date.
Just want to make sure I am doing this correctly. Should these methods in the Main class be happening in the Assignments class or is it fine as it is? Here is my code for both classes:
Assignments Class:
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
public class Assignments {
private String assignmentName;
private LocalDate date;
public Assignments() {
}
public Assignments(String assignmentName, LocalDate date) {
this.assignmentName = assignmentName;
this.date = date;
}
public String getAssignmentName() {
return assignmentName;
}
public void setAssignmentName(String assignmentName) {
this.assignmentName = assignmentName;
}
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}
@Override
public String toString() {
return "Assignment: " + assignmentName + "\nDue Date: " + date;
}
}
Main Class:
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Assignments assignment = new Assignments();
Scanner indata = new Scanner(System.in);
//Creating an ArrayList of assignments
List<Assignments> assignmentList = new ArrayList<>();
assignmentList.add(new Assignments("Assignment1", LocalDate.of(2021, 12, 10)));
assignmentList.add(new Assignments("Assignment2", LocalDate.of(2021, 12, 14)));
assignmentList.add(new Assignments("Assignment3", LocalDate.of(2021, 12, 9)));
assignmentList.add(new Assignments("Assignment4", LocalDate.of(2021, 12, 7)));
assignmentList.add(new Assignments("Assignment5", LocalDate.of(2021, 12, 13)));
assignmentList.add(new Assignments("Assignment6", LocalDate.of(2021, 12, 7)));
menu(assignment, indata, assignmentList);
}
private static void getEarliestDate(List<Assignments> assignmentList) {
selectionSort(assignmentList);
System.out.println();
int j = 0;
for(int i = 0; i < assignmentList.size(); i++) {
if(assignmentList.get(i).getDate().isEqual(assignmentList.get(j).getDate())) {
System.out.println(assignmentList.get(i));
}
}
}
private static void printSortedList(List<Assignments> assignmentList) {
selectionSort(assignmentList);
for(int i = 0; i < assignmentList.size(); i++) {
System.out.println(assignmentList.get(i));
}
}
//Using the selection sort algorithm to sort list from earliest due date to latest due date
private static void selectionSort(List<Assignments> assignmentList) {
for(int i = 0; i < assignmentList.size(); i++) {
int pos = i;
for(int j = i; j < assignmentList.size(); j++) {
if(assignmentList.get(j).getDate().isBefore(assignmentList.get(pos).getDate())) {
pos = j;
}
}
Assignments min = assignmentList.get(pos);
assignmentList.set(pos, assignmentList.get(i));
assignmentList.set(i, min);
}
}
//Method that gives menu options
private static void menu(Assignments assignment, Scanner indata, List<Assignments>
assignmentList) {
int userInput = 1;
while(userInput != 0)
{
System.out.println("Enter 1 to add an assignment");
System.out.println("Enter 2 to remove an assignment");
System.out.println("Enter 3 to get ordered list of assignments");
System.out.println("Enter 4 to find earliest due date");
userInput = indata.nextInt();
switch(userInput)
{
case 1:
addAssignment(assignment, indata, assignmentList);
System.out.println();
break;
case 2:
removeAssignment(indata, assignmentList, assignment);
System.out.println();
break;
case 3:
printSortedList(assignmentList);
System.out.println();
break;
case 4:
getEarliestDate(assignmentList);
System.out.println();
break;
default:
userInput = 0;
break;
}
}
}
private static void removeAssignment(Scanner indata, List<Assignments> assignmentList,
Assignments assignment) {
String assignmentInput;
System.out.print("Remove an assignment: ");
assignmentInput = indata.next();
for(int i = 0; i < assignmentList.size(); i++)
{
if(assignmentList.get(i).getAssignmentName().equals(assignmentInput))
{
assignmentList.remove(i);
}
}
}
private static void addAssignment(Assignments assignment, Scanner indata, List<Assignments>
assignmentList) {
String assignmentInput;
String dateInput;
System.out.print("Assignment: ");
assignmentInput = indata.next();
assignment.setAssignmentName(assignmentInput);
System.out.println();
System.out.print("Due date: (YYYY-MM-DD)");
dateInput = indata.next();
assignment.setDate(LocalDate.parse(dateInput));
assignmentList.add(assignment);
}
}