From 91815b880cb3cff435e0aa01f5233d46f073a24b Mon Sep 17 00:00:00 2001 From: Derwin Bell Date: Fri, 6 Mar 2026 13:10:36 -0500 Subject: [PATCH 1/9] Structure done --- src/main/java/org/codedifferently/CleaningRequest.java | 4 ++++ src/main/java/org/codedifferently/MaintenanceRequest.java | 4 ++++ src/main/java/org/codedifferently/ResidentAccount.java | 4 ++++ src/main/java/org/codedifferently/ServiceRequest.java | 4 ++++ 4 files changed, 16 insertions(+) create mode 100644 src/main/java/org/codedifferently/CleaningRequest.java create mode 100644 src/main/java/org/codedifferently/MaintenanceRequest.java create mode 100644 src/main/java/org/codedifferently/ResidentAccount.java create mode 100644 src/main/java/org/codedifferently/ServiceRequest.java diff --git a/src/main/java/org/codedifferently/CleaningRequest.java b/src/main/java/org/codedifferently/CleaningRequest.java new file mode 100644 index 0000000..8f99bdb --- /dev/null +++ b/src/main/java/org/codedifferently/CleaningRequest.java @@ -0,0 +1,4 @@ +package org.codedifferently; + +public class CleaningRequest { +} diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java new file mode 100644 index 0000000..c36e5bc --- /dev/null +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -0,0 +1,4 @@ +package org.codedifferently; + +public class MaintenanceRequest { +} diff --git a/src/main/java/org/codedifferently/ResidentAccount.java b/src/main/java/org/codedifferently/ResidentAccount.java new file mode 100644 index 0000000..f982351 --- /dev/null +++ b/src/main/java/org/codedifferently/ResidentAccount.java @@ -0,0 +1,4 @@ +package org.codedifferently; + +public class ResidentAccount { +} diff --git a/src/main/java/org/codedifferently/ServiceRequest.java b/src/main/java/org/codedifferently/ServiceRequest.java new file mode 100644 index 0000000..f878fce --- /dev/null +++ b/src/main/java/org/codedifferently/ServiceRequest.java @@ -0,0 +1,4 @@ +package org.codedifferently; + +public abstract class ServiceRequest { +} From 9bcd638b895d83ac285cbc20b1f89de5cfa07794 Mon Sep 17 00:00:00 2001 From: Derwin Bell Date: Fri, 6 Mar 2026 13:15:15 -0500 Subject: [PATCH 2/9] Main, RA, SQ classes started --- src/main/java/org/codedifferently/Main.java | 15 +++--- .../org/codedifferently/ResidentAccount.java | 45 +++++++++++++++++- .../org/codedifferently/ServiceRequest.java | 46 ++++++++++++++++++- 3 files changed, 96 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java index 435139b..167d9b4 100644 --- a/src/main/java/org/codedifferently/Main.java +++ b/src/main/java/org/codedifferently/Main.java @@ -1,17 +1,16 @@ package org.codedifferently; +import java.util.ArrayList; + //TIP To Run code, press or // click the icon in the gutter. public class Main { public static void main(String[] args) { - //TIP Press with your caret at the highlighted text - // to see how IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); + ArrayList requests = new ArrayList<>(); + ArrayList accounts = new ArrayList<>(); + + + - for (int i = 1; i <= 5; i++) { - //TIP Press to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing . - System.out.println("i = " + i); - } } } \ No newline at end of file diff --git a/src/main/java/org/codedifferently/ResidentAccount.java b/src/main/java/org/codedifferently/ResidentAccount.java index f982351..653e2ec 100644 --- a/src/main/java/org/codedifferently/ResidentAccount.java +++ b/src/main/java/org/codedifferently/ResidentAccount.java @@ -1,4 +1,47 @@ package org.codedifferently; public class ResidentAccount { -} + + + private String residentName; + private int apartmentNumber; + private double balanceDue; + + public ResidentAccount(String residentName, int apartmentNumber, double balanceDue) { + this.residentName = residentName; + this.apartmentNumber = apartmentNumber; + this.balanceDue = balanceDue; + } + + public String getResidentName() { + return residentName; + } + + public int getApartmentNumber() { + return apartmentNumber; + } + + public double getBalanceDue() { + return balanceDue; + } + + public void addCharge(double amount) { + if (amount > 0) { + balanceDue += amount; + } + } + + public void makePayment(double amount) { + if (amount > 0 && amount <= balanceDue) { + balanceDue -= amount; + } + } + + @Override + public String toString() { + return "Resident: " + residentName + + " | Apt: " + apartmentNumber + + " | Balance Due: $" + balanceDue; + } + } + diff --git a/src/main/java/org/codedifferently/ServiceRequest.java b/src/main/java/org/codedifferently/ServiceRequest.java index f878fce..08d3542 100644 --- a/src/main/java/org/codedifferently/ServiceRequest.java +++ b/src/main/java/org/codedifferently/ServiceRequest.java @@ -1,4 +1,48 @@ package org.codedifferently; public abstract class ServiceRequest { -} + + protected String residentName; + protected int apartmentNumber; + protected String severity; + protected String status; + + public ServiceRequest(String residentName, int apartmentNumber, String severity) { + this.residentName = residentName; + this.apartmentNumber = apartmentNumber; + this.severity = severity; + this.status = "NEW"; + } + + public String getResidentName() { + return residentName; + } + + public int getApartmentNumber() { + return apartmentNumber; + } + + public String getSeverity() { + return severity; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public abstract String getRequestType(); + + @Override + public String toString() { + return getRequestType() + + " | Resident: " + residentName + + " | Apt: " + apartmentNumber + + " | Severity: " + severity + + " | Status: " + status; + } + } + From 057e74b8b02eee6927857131c463d97b321b6fb0 Mon Sep 17 00:00:00 2001 From: Corey Scott Date: Fri, 6 Mar 2026 15:11:24 -0500 Subject: [PATCH 3/9] maintenance request & sprint 1 --- src/main/java/org/codedifferently/Main.java | 17 ---- src/main/java/org/coreyscott/Main.java | 8 ++ .../org/coreyscott/MaintenanceRequest.java | 89 +++++++++++++++++++ src/main/java/org/coreyscott/README.md | 19 ++++ 4 files changed, 116 insertions(+), 17 deletions(-) delete mode 100644 src/main/java/org/codedifferently/Main.java create mode 100644 src/main/java/org/coreyscott/Main.java create mode 100644 src/main/java/org/coreyscott/MaintenanceRequest.java create mode 100644 src/main/java/org/coreyscott/README.md diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java deleted file mode 100644 index 435139b..0000000 --- a/src/main/java/org/codedifferently/Main.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.codedifferently; - -//TIP To Run code, press or -// click the icon in the gutter. -public class Main { - public static void main(String[] args) { - //TIP Press with your caret at the highlighted text - // to see how IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); - - for (int i = 1; i <= 5; i++) { - //TIP Press to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing . - System.out.println("i = " + i); - } - } -} \ No newline at end of file diff --git a/src/main/java/org/coreyscott/Main.java b/src/main/java/org/coreyscott/Main.java new file mode 100644 index 0000000..39b4529 --- /dev/null +++ b/src/main/java/org/coreyscott/Main.java @@ -0,0 +1,8 @@ +package org.coreyscott; + +public class Main { + public static void main(String[] args) { + + + } + } diff --git a/src/main/java/org/coreyscott/MaintenanceRequest.java b/src/main/java/org/coreyscott/MaintenanceRequest.java new file mode 100644 index 0000000..d0f8b37 --- /dev/null +++ b/src/main/java/org/coreyscott/MaintenanceRequest.java @@ -0,0 +1,89 @@ +package org.coreyscott; + +public class MaintenanceRequest { + private String tenantName; + private String apartmentNumber; + private String issueType; + private int issueSeverity; + private String status; + + public MaintenanceRequest() { + this.status = "NEW"; + } + + public MaintenanceRequest(String tenantName, String apartmentNumber, String issueType, int issueSeverity) { + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.issueType = issueType; + this.issueSeverity = issueSeverity; + this.status = "NEW"; + this.estimatedCost = new EstimatedCost(issueSeverity); + } + + //getters + public String getTenantName() { + return tenantName; + } + + public String getApartmentNumber() { + return apartmentNumber; + } + + public String getIssueType() { + return issueType; + } + + public int getIssueSeverity() { + return issueSeverity; + } + public String getEstimatedCostBreakdown() { + return estimatedCost.getBreakdown(); + } + public double getEstimatedTotalCost() { + return estimatedCost.getTotal(); + } + + public String getStatus() { + return status; + } + + //setters + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } + + public void setApartmentNumber(String apartmentNumber) { + this.apartmentNumber = apartmentNumber; + } + + public void setIssueType(String issueType) { + this.issueType = issueType; + } + + public void setIssueSeverity(int issueSeverity) { + this.issueSeverity = issueSeverity; + } + + public void setStatus(String status) { + if (status.equals("NEW") || status.equals("IN PROGRESS") || status.equals("COMPLETE")) { + this.status = status; + } else { + System.out.println("INVALID STATUS UPDATE"); + } + } + + @Override + public String toString () { + return "Tenant: " + tenantName + + " | Apt: " + apartmentNumber + + " | Issue: " + issueType + + " | Severity: " + issueSeverity + + " | Status: " + status; + } + + private EstimatedCost estimatedCost; + +} + + +} diff --git a/src/main/java/org/coreyscott/README.md b/src/main/java/org/coreyscott/README.md new file mode 100644 index 0000000..d45257a --- /dev/null +++ b/src/main/java/org/coreyscott/README.md @@ -0,0 +1,19 @@ +Sprint 1 — The Plan +Our project is a Property Management Resident System, a Java application designed to help manage resident service requests in an apartment or housing complex. The goal of the program is to simulate a real property management system where residents can submit requests and management can track them. +The program helps organize common resident needs such as maintenance requests, cleaning requests, and resident account information in one system instead of handling them manually. +The main features we planned to build include: +Creating and storing resident accounts +Submitting maintenance requests +Submitting cleaning requests +Organizing services using an abstract Service class +Displaying request details through a command-line interface + + +The main classes used in the system are: +ResidentAccount +MaintenanceRequest +CleaningRequest +Service (abstract class) + + +We divided the work based on our strengths and previous experience. We also reused and adapted code from earlier projects to help build the system more efficiently. My role in the project is documenting the sprint phases and building the MaintenanceRequest class. My partner, Derwin, is responsible for developing the ResidentAccount, CleaningRequest, and Service classes and integrating the overall functionality. From 029f53043234a8c22687c62efee497ec9b28c97e Mon Sep 17 00:00:00 2001 From: Derwin Bell Date: Fri, 6 Mar 2026 15:58:46 -0500 Subject: [PATCH 4/9] Main, RA, SQ classes started --- .../codedifferently/MaintenanceRequest.java | 1 + src/main/java/org/coreyscott/Main.java | 8 -- .../org/coreyscott/MaintenanceRequest.java | 89 ------------------- src/main/java/org/coreyscott/README.md | 19 ---- 4 files changed, 1 insertion(+), 116 deletions(-) delete mode 100644 src/main/java/org/coreyscott/Main.java delete mode 100644 src/main/java/org/coreyscott/MaintenanceRequest.java delete mode 100644 src/main/java/org/coreyscott/README.md diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index c36e5bc..03c0035 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -1,4 +1,5 @@ package org.codedifferently; public class MaintenanceRequest { + } diff --git a/src/main/java/org/coreyscott/Main.java b/src/main/java/org/coreyscott/Main.java deleted file mode 100644 index 39b4529..0000000 --- a/src/main/java/org/coreyscott/Main.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.coreyscott; - -public class Main { - public static void main(String[] args) { - - - } - } diff --git a/src/main/java/org/coreyscott/MaintenanceRequest.java b/src/main/java/org/coreyscott/MaintenanceRequest.java deleted file mode 100644 index d0f8b37..0000000 --- a/src/main/java/org/coreyscott/MaintenanceRequest.java +++ /dev/null @@ -1,89 +0,0 @@ -package org.coreyscott; - -public class MaintenanceRequest { - private String tenantName; - private String apartmentNumber; - private String issueType; - private int issueSeverity; - private String status; - - public MaintenanceRequest() { - this.status = "NEW"; - } - - public MaintenanceRequest(String tenantName, String apartmentNumber, String issueType, int issueSeverity) { - this.tenantName = tenantName; - this.apartmentNumber = apartmentNumber; - this.issueType = issueType; - this.issueSeverity = issueSeverity; - this.status = "NEW"; - this.estimatedCost = new EstimatedCost(issueSeverity); - } - - //getters - public String getTenantName() { - return tenantName; - } - - public String getApartmentNumber() { - return apartmentNumber; - } - - public String getIssueType() { - return issueType; - } - - public int getIssueSeverity() { - return issueSeverity; - } - public String getEstimatedCostBreakdown() { - return estimatedCost.getBreakdown(); - } - public double getEstimatedTotalCost() { - return estimatedCost.getTotal(); - } - - public String getStatus() { - return status; - } - - //setters - public void setTenantName(String tenantName) { - this.tenantName = tenantName; - } - - public void setApartmentNumber(String apartmentNumber) { - this.apartmentNumber = apartmentNumber; - } - - public void setIssueType(String issueType) { - this.issueType = issueType; - } - - public void setIssueSeverity(int issueSeverity) { - this.issueSeverity = issueSeverity; - } - - public void setStatus(String status) { - if (status.equals("NEW") || status.equals("IN PROGRESS") || status.equals("COMPLETE")) { - this.status = status; - } else { - System.out.println("INVALID STATUS UPDATE"); - } - } - - @Override - public String toString () { - return "Tenant: " + tenantName + - " | Apt: " + apartmentNumber + - " | Issue: " + issueType + - " | Severity: " + issueSeverity + - " | Status: " + status; - } - - private EstimatedCost estimatedCost; - -} - - -} diff --git a/src/main/java/org/coreyscott/README.md b/src/main/java/org/coreyscott/README.md deleted file mode 100644 index d45257a..0000000 --- a/src/main/java/org/coreyscott/README.md +++ /dev/null @@ -1,19 +0,0 @@ -Sprint 1 — The Plan -Our project is a Property Management Resident System, a Java application designed to help manage resident service requests in an apartment or housing complex. The goal of the program is to simulate a real property management system where residents can submit requests and management can track them. -The program helps organize common resident needs such as maintenance requests, cleaning requests, and resident account information in one system instead of handling them manually. -The main features we planned to build include: -Creating and storing resident accounts -Submitting maintenance requests -Submitting cleaning requests -Organizing services using an abstract Service class -Displaying request details through a command-line interface - - -The main classes used in the system are: -ResidentAccount -MaintenanceRequest -CleaningRequest -Service (abstract class) - - -We divided the work based on our strengths and previous experience. We also reused and adapted code from earlier projects to help build the system more efficiently. My role in the project is documenting the sprint phases and building the MaintenanceRequest class. My partner, Derwin, is responsible for developing the ResidentAccount, CleaningRequest, and Service classes and integrating the overall functionality. From 96a21eb3426f00264e8f4a50ca18f245b2ca7996 Mon Sep 17 00:00:00 2001 From: Corey Scott Date: Fri, 6 Mar 2026 16:11:53 -0500 Subject: [PATCH 5/9] update maintenance --- .../codedifferently/MaintenanceRequest.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 03c0035..05600fe 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -1,5 +1,81 @@ package org.codedifferently; public class MaintenanceRequest { + private String tenantName; + private String apartmentNumber; + private String issueType; + private int issueSeverity; + private String status; + + public MaintenanceRequest() { + this.status = "NEW"; + } + + public MaintenanceRequest(String tenantName, String apartmentNumber, String issueType, int issueSeverity) { + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.issueType = issueType; + this.issueSeverity = issueSeverity; + this.status = "NEW"; + } + + //getters + public String getTenantName() { + return tenantName; + } + + public String getApartmentNumber() { + return apartmentNumber; + } + + public String getIssueType() { + return issueType; + } + + public int getIssueSeverity() { + return issueSeverity; + } + + + public String getStatus() { + return status; + } + + //setters + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } + + public void setApartmentNumber(String apartmentNumber) { + this.apartmentNumber = apartmentNumber; + } + + public void setIssueType(String issueType) { + this.issueType = issueType; + } + + public void setIssueSeverity(int issueSeverity) { + this.issueSeverity = issueSeverity; + } + + public void setStatus(String status) { + if (status.equals("NEW") || status.equals("IN PROGRESS") || status.equals("COMPLETE")) { + this.status = status; + } else { + System.out.println("INVALID STATUS UPDATE"); + } + } + + @Override + public String toString () { + return "Tenant: " + tenantName + + " | Apt: " + apartmentNumber + + " | Issue: " + issueType + + " | Severity: " + issueSeverity + + " | Status: " + status; + } + } + + From 75f3b2cb36694bf5fbbe3b89fed4866ff6483c03 Mon Sep 17 00:00:00 2001 From: Derwin Bell Date: Mon, 9 Mar 2026 13:11:58 -0400 Subject: [PATCH 6/9] Readme added --- .../org/codedifferently/CleaningRequest.java | 47 ++- src/main/java/org/codedifferently/Main.java | 270 +++++++++++++++++- .../codedifferently/MaintenanceRequest.java | 52 +--- src/main/java/org/codedifferently/README.md | 0 .../org/codedifferently/ResidentAccount.java | 69 +++-- .../org/codedifferently/ServiceRequest.java | 67 +++-- 6 files changed, 389 insertions(+), 116 deletions(-) create mode 100644 src/main/java/org/codedifferently/README.md diff --git a/src/main/java/org/codedifferently/CleaningRequest.java b/src/main/java/org/codedifferently/CleaningRequest.java index 8f99bdb..c66ab74 100644 --- a/src/main/java/org/codedifferently/CleaningRequest.java +++ b/src/main/java/org/codedifferently/CleaningRequest.java @@ -1,4 +1,47 @@ package org.codedifferently; -public class CleaningRequest { -} +public class CleaningRequest extends ServiceRequest { + private String cleaningArea; + private int issueSeverity; + + public CleaningRequest() { + super(); + } + + public CleaningRequest(String tenantName, String apartmentNumber, String cleaningArea, int issueSeverity) { + super(tenantName, apartmentNumber); + this.cleaningArea = cleaningArea; + this.issueSeverity = issueSeverity; + } + + @Override + public String getRequestType() { + return "Cleaning"; + } + + public String getCleaningArea() { + return cleaningArea; + } + + public int getIssueSeverity() { + return issueSeverity; + } + + public void setCleaningArea(String cleaningArea) { + this.cleaningArea = cleaningArea; + } + + public void setIssueSeverity(int issueSeverity) { + this.issueSeverity = issueSeverity; + } + + @Override + public String toString() { + return "Tenant: " + tenantName + + " | Apt: " + apartmentNumber + + " | Type: " + getRequestType() + + " | Area: " + cleaningArea + + " | Severity: " + issueSeverity + + " | Status: " + status; + } +} \ No newline at end of file diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java index 167d9b4..3294200 100644 --- a/src/main/java/org/codedifferently/Main.java +++ b/src/main/java/org/codedifferently/Main.java @@ -1,16 +1,282 @@ package org.codedifferently; import java.util.ArrayList; +import java.util.Scanner; -//TIP To Run code, press or -// click the icon in the gutter. public class Main { public static void main(String[] args) { ArrayList requests = new ArrayList<>(); ArrayList accounts = new ArrayList<>(); + Scanner scan = new Scanner(System.in); + boolean running = true; + while (running) { + System.out.println("\n=== Apartment Service & Payment System ==="); + System.out.println("1. Add Resident Account"); + System.out.println("2. Submit Maintenance Request"); + System.out.println("3. Submit Cleaning Request"); + System.out.println("4. View All Requests"); + System.out.println("5. Update Request Status"); + System.out.println("6. View Resident Accounts"); + System.out.println("7. Make Payment"); + System.out.println("8. Daily Report"); + System.out.println("9. Exit"); + System.out.print("Choose an option: "); + int choice; + if (scan.hasNextInt()) { + choice = scan.nextInt(); + scan.nextLine(); + } else { + System.out.println("Please enter a number."); + scan.nextLine(); + continue; + } + switch (choice) { + case 1: + addResidentAccount(accounts, scan); + break; + case 2: + addMaintenanceRequest(requests, accounts, scan); + break; + case 3: + addCleaningRequest(requests, accounts, scan); + break; + case 4: + viewAllRequests(requests); + break; + case 5: + updateRequestStatus(requests, scan); + break; + case 6: + viewResidentAccounts(accounts); + break; + case 7: + makePayment(accounts, scan); + break; + case 8: + dailyReport(requests, accounts); + break; + case 9: + running = false; + System.out.println("Goodbye."); + break; + default: + System.out.println("Invalid choice."); + } + } + + scan.close(); + } + + public static void addResidentAccount(ArrayList accounts, Scanner scan) { + System.out.print("Enter resident name: "); + String name = scan.nextLine(); + + System.out.print("Enter apartment number: "); + String apartmentNumber = scan.nextLine(); + + System.out.print("Enter starting balance: "); + double balance = readDouble(scan); + + ResidentAccount account = new ResidentAccount(name, apartmentNumber, balance); + accounts.add(account); + + System.out.println("Resident account added."); + } + + public static void addMaintenanceRequest(ArrayList requests, + ArrayList accounts, + Scanner scan) { + System.out.print("Enter tenant name: "); + String tenantName = scan.nextLine(); + + System.out.print("Enter apartment number: "); + String apartmentNumber = scan.nextLine(); + + System.out.print("Enter issue type: "); + String issueType = scan.nextLine(); + + System.out.print("Enter issue severity (1-5): "); + int severity = readInt(scan); + + MaintenanceRequest request = new MaintenanceRequest(tenantName, apartmentNumber, issueType, severity); + requests.add(request); + + ResidentAccount account = findAccount(accounts, apartmentNumber); + if (account != null) { + account.addCharge(15.00); + System.out.println("Maintenance request submitted. $15.00 charge added."); + } else { + System.out.println("Maintenance request submitted. No matching resident account found."); + } + } + + public static void addCleaningRequest(ArrayList requests, + ArrayList accounts, + Scanner scan) { + System.out.print("Enter tenant name: "); + String tenantName = scan.nextLine(); + + System.out.print("Enter apartment number: "); + String apartmentNumber = scan.nextLine(); + + System.out.print("Enter cleaning area: "); + String cleaningArea = scan.nextLine(); + + System.out.print("Enter severity (1-5): "); + int severity = readInt(scan); + + CleaningRequest request = new CleaningRequest(tenantName, apartmentNumber, cleaningArea, severity); + requests.add(request); + + ResidentAccount account = findAccount(accounts, apartmentNumber); + if (account != null) { + account.addCharge(25.00); + System.out.println("Cleaning request submitted. $25.00 charge added."); + } else { + System.out.println("Cleaning request submitted. No matching resident account found."); + } + } + + public static void viewAllRequests(ArrayList requests) { + if (requests.isEmpty()) { + System.out.println("No requests found."); + return; + } + + System.out.println("\n--- ALL REQUESTS ---"); + for (int i = 0; i < requests.size(); i++) { + System.out.println((i + 1) + ". " + requests.get(i)); + } + } + + public static void updateRequestStatus(ArrayList requests, Scanner scan) { + if (requests.isEmpty()) { + System.out.println("No requests to update."); + return; + } + + viewAllRequests(requests); + System.out.print("Choose request number to update: "); + int choice = readInt(scan); + + if (choice < 1 || choice > requests.size()) { + System.out.println("Invalid request number."); + return; + } + + ServiceRequest request = requests.get(choice - 1); + + if (request.getStatus().equals("NEW")) { + request.setStatus("IN_PROGRESS"); + } else if (request.getStatus().equals("IN_PROGRESS")) { + request.setStatus("DONE"); + } else { + System.out.println("Request is already DONE."); + return; + } + + System.out.println("Updated request:"); + System.out.println(request); + } + + public static void viewResidentAccounts(ArrayList accounts) { + if (accounts.isEmpty()) { + System.out.println("No resident accounts found."); + return; + } + + System.out.println("\n--- RESIDENT ACCOUNTS ---"); + for (ResidentAccount account : accounts) { + System.out.println(account); + } + } + + public static void makePayment(ArrayList accounts, Scanner scan) { + if (accounts.isEmpty()) { + System.out.println("No resident accounts available."); + return; + } + + System.out.print("Enter apartment number: "); + String apartmentNumber = scan.nextLine(); + + ResidentAccount account = findAccount(accounts, apartmentNumber); + if (account == null) { + System.out.println("Account not found."); + return; + } + + System.out.print("Enter payment amount: "); + double amount = readDouble(scan); + + account.makePayment(amount); + System.out.println("Updated account:"); + System.out.println(account); + } + + public static void dailyReport(ArrayList requests, ArrayList accounts) { + int newCount = 0; + int inProgressCount = 0; + int doneCount = 0; + int maintenanceCount = 0; + int cleaningCount = 0; + + for (ServiceRequest request : requests) { + if (request.getStatus().equals("NEW")) { + newCount++; + } else if (request.getStatus().equals("IN_PROGRESS")) { + inProgressCount++; + } else if (request.getStatus().equals("DONE")) { + doneCount++; + } + + if (request.getRequestType().equals("Maintenance")) { + maintenanceCount++; + } else if (request.getRequestType().equals("Cleaning")) { + cleaningCount++; + } + } + + System.out.println("\n--- DAILY REPORT ---"); + System.out.println("Total Requests: " + requests.size()); + System.out.println("Maintenance Requests: " + maintenanceCount); + System.out.println("Cleaning Requests: " + cleaningCount); + System.out.println("NEW: " + newCount); + System.out.println("IN_PROGRESS: " + inProgressCount); + System.out.println("DONE: " + doneCount); + System.out.println("Resident Accounts: " + accounts.size()); + } + + public static ResidentAccount findAccount(ArrayList accounts, String apartmentNumber) { + for (ResidentAccount account : accounts) { + if (account.getApartmentNumber().equals(apartmentNumber)) { + return account; + } + } + return null; + } + + public static int readInt(Scanner scan) { + while (!scan.hasNextInt()) { + System.out.println("Please enter a valid whole number."); + scan.nextLine(); + } + int value = scan.nextInt(); + scan.nextLine(); + return value; + } + + public static double readDouble(Scanner scan) { + while (!scan.hasNextDouble()) { + System.out.println("Please enter a valid number."); + scan.nextLine(); + } + double value = scan.nextDouble(); + scan.nextLine(); + return value; } } \ No newline at end of file diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 05600fe..effac30 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -1,31 +1,22 @@ package org.codedifferently; -public class MaintenanceRequest { - private String tenantName; - private String apartmentNumber; +public class MaintenanceRequest extends ServiceRequest { private String issueType; private int issueSeverity; - private String status; public MaintenanceRequest() { - this.status = "NEW"; + super(); } public MaintenanceRequest(String tenantName, String apartmentNumber, String issueType, int issueSeverity) { - this.tenantName = tenantName; - this.apartmentNumber = apartmentNumber; + super(tenantName, apartmentNumber); this.issueType = issueType; this.issueSeverity = issueSeverity; - this.status = "NEW"; } - //getters - public String getTenantName() { - return tenantName; - } - - public String getApartmentNumber() { - return apartmentNumber; + @Override + public String getRequestType() { + return "Maintenance"; } public String getIssueType() { @@ -36,20 +27,6 @@ public int getIssueSeverity() { return issueSeverity; } - - public String getStatus() { - return status; - } - - //setters - public void setTenantName(String tenantName) { - this.tenantName = tenantName; - } - - public void setApartmentNumber(String apartmentNumber) { - this.apartmentNumber = apartmentNumber; - } - public void setIssueType(String issueType) { this.issueType = issueType; } @@ -58,24 +35,13 @@ public void setIssueSeverity(int issueSeverity) { this.issueSeverity = issueSeverity; } - public void setStatus(String status) { - if (status.equals("NEW") || status.equals("IN PROGRESS") || status.equals("COMPLETE")) { - this.status = status; - } else { - System.out.println("INVALID STATUS UPDATE"); - } - } - @Override - public String toString () { + public String toString() { return "Tenant: " + tenantName + " | Apt: " + apartmentNumber + + " | Type: " + getRequestType() + " | Issue: " + issueType + " | Severity: " + issueSeverity + " | Status: " + status; } - - -} - - +} \ No newline at end of file diff --git a/src/main/java/org/codedifferently/README.md b/src/main/java/org/codedifferently/README.md new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/org/codedifferently/ResidentAccount.java b/src/main/java/org/codedifferently/ResidentAccount.java index 653e2ec..c031355 100644 --- a/src/main/java/org/codedifferently/ResidentAccount.java +++ b/src/main/java/org/codedifferently/ResidentAccount.java @@ -1,47 +1,46 @@ package org.codedifferently; public class ResidentAccount { + private String residentName; + private String apartmentNumber; + private double balanceDue; + + public ResidentAccount(String residentName, String apartmentNumber, double balanceDue) { + this.residentName = residentName; + this.apartmentNumber = apartmentNumber; + this.balanceDue = balanceDue; + } + public String getResidentName() { + return residentName; + } - private String residentName; - private int apartmentNumber; - private double balanceDue; - - public ResidentAccount(String residentName, int apartmentNumber, double balanceDue) { - this.residentName = residentName; - this.apartmentNumber = apartmentNumber; - this.balanceDue = balanceDue; - } - - public String getResidentName() { - return residentName; - } - - public int getApartmentNumber() { - return apartmentNumber; - } - - public double getBalanceDue() { - return balanceDue; - } + public String getApartmentNumber() { + return apartmentNumber; + } - public void addCharge(double amount) { - if (amount > 0) { - balanceDue += amount; - } - } + public double getBalanceDue() { + return balanceDue; + } - public void makePayment(double amount) { - if (amount > 0 && amount <= balanceDue) { - balanceDue -= amount; - } + public void addCharge(double amount) { + if (amount > 0) { + balanceDue += amount; } + } - @Override - public String toString() { - return "Resident: " + residentName + - " | Apt: " + apartmentNumber + - " | Balance Due: $" + balanceDue; + public void makePayment(double amount) { + if (amount > 0 && amount <= balanceDue) { + balanceDue -= amount; + } else { + System.out.println("INVALID PAYMENT AMOUNT"); } } + @Override + public String toString() { + return "Resident: " + residentName + + " | Apt: " + apartmentNumber + + " | Balance Due: $" + String.format("%.2f", balanceDue); + } +} diff --git a/src/main/java/org/codedifferently/ServiceRequest.java b/src/main/java/org/codedifferently/ServiceRequest.java index 08d3542..d3db545 100644 --- a/src/main/java/org/codedifferently/ServiceRequest.java +++ b/src/main/java/org/codedifferently/ServiceRequest.java @@ -1,48 +1,47 @@ package org.codedifferently; public abstract class ServiceRequest { + protected String tenantName; + protected String apartmentNumber; + protected String status; - protected String residentName; - protected int apartmentNumber; - protected String severity; - protected String status; - - public ServiceRequest(String residentName, int apartmentNumber, String severity) { - this.residentName = residentName; - this.apartmentNumber = apartmentNumber; - this.severity = severity; - this.status = "NEW"; - } + public ServiceRequest() { + this.status = "NEW"; + } - public String getResidentName() { - return residentName; - } + public ServiceRequest(String tenantName, String apartmentNumber) { + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.status = "NEW"; + } - public int getApartmentNumber() { - return apartmentNumber; - } + public String getTenantName() { + return tenantName; + } - public String getSeverity() { - return severity; - } + public String getApartmentNumber() { + return apartmentNumber; + } - public String getStatus() { - return status; - } + public String getStatus() { + return status; + } - public void setStatus(String status) { - this.status = status; - } + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } - public abstract String getRequestType(); + public void setApartmentNumber(String apartmentNumber) { + this.apartmentNumber = apartmentNumber; + } - @Override - public String toString() { - return getRequestType() + - " | Resident: " + residentName + - " | Apt: " + apartmentNumber + - " | Severity: " + severity + - " | Status: " + status; + public void setStatus(String status) { + if (status.equals("NEW") || status.equals("IN_PROGRESS") || status.equals("DONE")) { + this.status = status; + } else { + System.out.println("INVALID STATUS UPDATE"); } } + public abstract String getRequestType(); +} \ No newline at end of file From 4ee077907807905dcc2f899c5044db1ada6f7954 Mon Sep 17 00:00:00 2001 From: Corey Scott Date: Mon, 9 Mar 2026 13:22:26 -0400 Subject: [PATCH 7/9] updated READ.ME --- src/main/java/org/codedifferently/README.md | 50 +++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main/java/org/codedifferently/README.md b/src/main/java/org/codedifferently/README.md index e69de29..67408c9 100644 --- a/src/main/java/org/codedifferently/README.md +++ b/src/main/java/org/codedifferently/README.md @@ -0,0 +1,50 @@ +# Property Management Resident System + +A Java command-line application designed to help manage resident service requests in an apartment or housing complex. The system allows residents to submit service requests while management can track and organize them. + +--- + +## Sprint 1 — The Plan + +Our project is a **Property Management Resident System**, a Java application designed to help manage resident service requests in an apartment or housing complex. The goal of the program is to simulate a real property management system where residents can submit requests and management can track them. + +The program helps organize common resident needs such as **maintenance requests, cleaning requests, and resident account information** in one system instead of handling them manually. + +### Planned Features +- Creating and storing resident accounts +- Submitting maintenance requests +- Submitting cleaning requests +- Organizing services using an abstract `Service` class +- Displaying request details through a command-line interface + +### Planned Classes +- `ResidentAccount` +- `MaintenanceRequest` +- `CleaningRequest` +- `Service` (abstract class) + +### Work Distribution +We divided the work based on our strengths and previous experience. We also reused and adapted code from earlier projects to help build the system more efficiently. + +- **Corey**: Documented the sprint phases and built the `MaintenanceRequest` class. +- **Derwin**: Developed the `ResidentAccount`, `CleaningRequest`, and `Service` classes and worked on integrating the overall functionality. + +--- + +## Sprint 2 — The Build + +During this sprint, we built the foundation of the **Property Management Resident System** by combining and refactoring code from previous projects. We implemented the main class structure including `MaintenanceRequest`, `CleaningRequest`, `ResidentAccount`, and the abstract `Service` class. This structure helped organize the system so resident information and service requests are handled separately. + +Some parts of the project changed from our original plan. Instead of building everything from scratch, we reused and modified older code to fit the new system. This allowed us to focus more on integrating the classes and applying object-oriented design. + +One challenge was making code from different projects work together consistently. We had to adjust class structures, naming conventions, and logic so everything fit into one cohesive system. We addressed this by reviewing each class, identifying shared behaviors, and using inheritance through the `Service` abstract class to organize the program more effectively. + +--- + +## Sprint 3 — The Reflection + +One thing that works well in our program is the way it models a real property management system using separate classes with clear responsibilities. The `ResidentAccount` class manages resident information, while `MaintenanceRequest` and `CleaningRequest` handle different types of service requests. The abstract `Service` class helps organize shared behavior between request types. + +If we had more time, we would improve the system by adding features such as a better way to catch user input and stronger connections between residents and their service requests. We could also expand the command-line interface to make the program more interactive. + +Throughout this project, we used several Java concepts including **classes and objects, inheritance, abstract classes, constructors, and encapsulation**. This experience helped us better understand how to design and organize a larger program while applying object-oriented programming principles. \ No newline at end of file From 114fb4f90c915c72f2fd1354557faa48a2ce52d9 Mon Sep 17 00:00:00 2001 From: Derwin Bell Date: Mon, 9 Mar 2026 13:27:03 -0400 Subject: [PATCH 8/9] Code Commented --- .../java/org/codedifferently/CleaningRequest.java | 11 +++++++++++ .../org/codedifferently/MaintenanceRequest.java | 14 +++++++++++++- .../java/org/codedifferently/ResidentAccount.java | 9 ++++++++- .../java/org/codedifferently/ServiceRequest.java | 12 ++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/codedifferently/CleaningRequest.java b/src/main/java/org/codedifferently/CleaningRequest.java index c66ab74..bd45d02 100644 --- a/src/main/java/org/codedifferently/CleaningRequest.java +++ b/src/main/java/org/codedifferently/CleaningRequest.java @@ -1,24 +1,33 @@ package org.codedifferently; +// CleaningRequest represents cleaning services for an apartment public class CleaningRequest extends ServiceRequest { + + // Area that needs cleaning private String cleaningArea; + + // Severity level of cleaning request private int issueSeverity; + // Default constructor public CleaningRequest() { super(); } + // Constructor with parameters public CleaningRequest(String tenantName, String apartmentNumber, String cleaningArea, int issueSeverity) { super(tenantName, apartmentNumber); this.cleaningArea = cleaningArea; this.issueSeverity = issueSeverity; } + // Overrides abstract method @Override public String getRequestType() { return "Cleaning"; } + // Getter methods public String getCleaningArea() { return cleaningArea; } @@ -27,6 +36,7 @@ public int getIssueSeverity() { return issueSeverity; } + // Setter methods public void setCleaningArea(String cleaningArea) { this.cleaningArea = cleaningArea; } @@ -35,6 +45,7 @@ public void setIssueSeverity(int issueSeverity) { this.issueSeverity = issueSeverity; } + // Convert object into readable string @Override public String toString() { return "Tenant: " + tenantName + diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index effac30..3c29184 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -1,24 +1,34 @@ package org.codedifferently; +// MaintenanceRequest extends ServiceRequest +// This represents a repair or maintenance issue in an apartment public class MaintenanceRequest extends ServiceRequest { + + // Type of maintenance issue (plumbing, electrical, etc.) private String issueType; + + // Severity level (1–5) private int issueSeverity; + // Default constructor public MaintenanceRequest() { - super(); + super(); // calls parent constructor } + // Constructor with details public MaintenanceRequest(String tenantName, String apartmentNumber, String issueType, int issueSeverity) { super(tenantName, apartmentNumber); this.issueType = issueType; this.issueSeverity = issueSeverity; } + // Overrides abstract method from ServiceRequest @Override public String getRequestType() { return "Maintenance"; } + // Getter methods public String getIssueType() { return issueType; } @@ -27,6 +37,7 @@ public int getIssueSeverity() { return issueSeverity; } + // Setter methods public void setIssueType(String issueType) { this.issueType = issueType; } @@ -35,6 +46,7 @@ public void setIssueSeverity(int issueSeverity) { this.issueSeverity = issueSeverity; } + // Converts the object to a readable string @Override public String toString() { return "Tenant: " + tenantName + diff --git a/src/main/java/org/codedifferently/ResidentAccount.java b/src/main/java/org/codedifferently/ResidentAccount.java index c031355..0edbe40 100644 --- a/src/main/java/org/codedifferently/ResidentAccount.java +++ b/src/main/java/org/codedifferently/ResidentAccount.java @@ -1,16 +1,20 @@ package org.codedifferently; +// Represents a resident's account for billing and payments public class ResidentAccount { + private String residentName; private String apartmentNumber; private double balanceDue; + // Constructor public ResidentAccount(String residentName, String apartmentNumber, double balanceDue) { this.residentName = residentName; this.apartmentNumber = apartmentNumber; this.balanceDue = balanceDue; } + // Getter methods public String getResidentName() { return residentName; } @@ -23,12 +27,14 @@ public double getBalanceDue() { return balanceDue; } + // Adds a charge to the resident's balance public void addCharge(double amount) { if (amount > 0) { balanceDue += amount; } } + // Allows resident to make a payment public void makePayment(double amount) { if (amount > 0 && amount <= balanceDue) { balanceDue -= amount; @@ -37,10 +43,11 @@ public void makePayment(double amount) { } } + // Display account information @Override public String toString() { return "Resident: " + residentName + " | Apt: " + apartmentNumber + " | Balance Due: $" + String.format("%.2f", balanceDue); } -} +} \ No newline at end of file diff --git a/src/main/java/org/codedifferently/ServiceRequest.java b/src/main/java/org/codedifferently/ServiceRequest.java index d3db545..1168313 100644 --- a/src/main/java/org/codedifferently/ServiceRequest.java +++ b/src/main/java/org/codedifferently/ServiceRequest.java @@ -1,20 +1,28 @@ package org.codedifferently; +// Abstract class representing a general service request. +// Other request types (Maintenance, Cleaning) will inherit from this. public abstract class ServiceRequest { + + // Protected so subclasses can access these fields protected String tenantName; protected String apartmentNumber; protected String status; + // Default constructor + // Every new request starts with status NEW public ServiceRequest() { this.status = "NEW"; } + // Constructor used when tenant name and apartment number are known public ServiceRequest(String tenantName, String apartmentNumber) { this.tenantName = tenantName; this.apartmentNumber = apartmentNumber; this.status = "NEW"; } + // Getter methods public String getTenantName() { return tenantName; } @@ -27,6 +35,7 @@ public String getStatus() { return status; } + // Setter methods public void setTenantName(String tenantName) { this.tenantName = tenantName; } @@ -35,6 +44,7 @@ public void setApartmentNumber(String apartmentNumber) { this.apartmentNumber = apartmentNumber; } + // Only allow valid status updates public void setStatus(String status) { if (status.equals("NEW") || status.equals("IN_PROGRESS") || status.equals("DONE")) { this.status = status; @@ -43,5 +53,7 @@ public void setStatus(String status) { } } + // Abstract method that subclasses must implement + // This allows different request types (Cleaning, Maintenance) public abstract String getRequestType(); } \ No newline at end of file From 739a9a9da9e8d859ef65883f98ab6e3b8a44983d Mon Sep 17 00:00:00 2001 From: Derwin Bell Date: Mon, 9 Mar 2026 15:25:56 -0400 Subject: [PATCH 9/9] Code Complete --- src/main/java/org/codedifferently/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java index 3294200..53c0653 100644 --- a/src/main/java/org/codedifferently/Main.java +++ b/src/main/java/org/codedifferently/Main.java @@ -33,7 +33,7 @@ public static void main(String[] args) { scan.nextLine(); continue; } - +// switch (choice) { case 1: addResidentAccount(accounts, scan);