Question: Hi Please send me code for this task Extend the program that you have written in previous Capstone Projects so that this program also: o
Hi Please send me code for this task
Extend the program that you have written in previous Capstone Projects so that this program also: o Reads details about existing projects from a text file and uses this information to create a list of project objects. o Allows a user to add new objects to this list. o Allows a user to select and update or finalise any project on the list. o Allows a user to see a list of projects that still need to be completed. o Allows a user to see a list of projects that are past the due date. o Writes the updated details about the projects to the text file when the program ends. Besides meeting above criteria, you should also do the following: o Make sure that your program includes exception handling. Use try-catch blocks wherever appropriate. This should include ensuring that your program handles exceptions related to writing or reading to/from text files and exceptions related to acquiring user input. o Make sure that you have completely removed all errors from your code. Take extra care to ensure that logical and runtime errors have been detected and removed. o Make sure that your code has been adequately refactored. previous Capstone Projects
PoisedManager file
public class PoisedManager { public static void main(String[] args) { ArrayList ProjectArray = new ArrayList<>(); try (BufferedReader ProjectReader = new BufferedReader(new FileReader( "CompletedProject.txt"))) { while (ProjectReader.ready()) { String[] temp = ProjectReader.readLine().split("#"); Person Architect = new Person(temp[10], temp[11], Integer.parseInt(temp[12]), temp[13], temp[14]); Person Customer = new Person(temp[15], temp[16], Integer.parseInt(temp[17]), temp[18], temp[19]); Person Contractor = new Person(temp[20], temp[21], Integer.parseInt(temp[22]), temp[23], temp[24]); DateFormat df = DateFormat.getDateInstance(); Date completionDate = null; try { completionDate = df.parse(temp[9]); } catch (ParseException e) { System.out.println("No date item found in file"); } Project tempProj = new Project(Integer.parseInt(temp[0]), temp[1], temp[2], temp[3], Integer.parseInt(temp[4]), Double.parseDouble(temp[5]), Double.parseDouble(temp[6]), temp[7], temp[8], completionDate, Architect, Customer, Contractor); ProjectArray.add(tempProj); } } catch (IOException e) { System.out.println("File not found"); } System.out.println("************Welcome to poised your Project Management Software*************"); while (true) { System.out.println(""" Please make a selection from the menu: 1. Create a new project: 2. Change the due date of the project: 3. Change the total number of the fee paid: 4. Update contractors contact details 5. View completed projects 6. View uncompleted tasks 7. Finalise Project: 8. Exit Program"""); Scanner input = new Scanner(System.in); String userChoice = input.nextLine(); if (userChoice.equals("1")) { int typedProjectNumber; while (true) { try { System.out.println("Enter Project Number:"); typedProjectNumber = input.nextInt(); input.nextLine(); break; } catch (Exception e) { System.out.println("Please enter correct format"); input.next(); } } System.out.println("Enter Project Name: "); String typedProjectName = input.nextLine(); System.out.println("Enter building type: "); String typedBuildingType = input.nextLine(); System.out.println("Enter project physical address: "); String typedProjectAddress = input.nextLine(); int typedErfNumber; while (true) { try { System.out.println("Enter Erf Number: "); typedErfNumber = input.nextInt(); input.nextLine(); break; } catch (Exception e) { System.out.println("Please enter correct format"); input.next(); } } double typedTotalFee; while (true) { try { System.out.println("Enter project total fee (numbers only): "); typedTotalFee = input.nextDouble(); input.nextLine(); break; } catch (Exception e) { System.out.println("Please enter correct format"); input.next(); } } double typedTotalPaid = 0.0; while (true) { try { System.out.println("Enter amount paid by customer (number only): "); typedTotalPaid = input.nextDouble(); input.nextLine(); break; } catch (Exception e) { System.out.println("Please enter correct format"); input.next(); } } System.out.println("Enter due date for example 12 July 2019: "); String typedProjectDeadline = input.nextLine(); String projectCompleted = ("No"); Date defaultDate = null; System.out.println("Enter Architect name:"); String architectName = input.nextLine(); System.out.println("Enter Architect surname:"); String architectSurname = input.nextLine(); int architectPhoneNumber; while (true) { try { System.out.println("Enter Architect phone number"); architectPhoneNumber = input.nextInt(); input.nextLine(); break; } catch (Exception e) { System.out.println("Please enter correct format"); input.next(); } } System.out.println("Enter Architect email address:"); String architectEmail = input.nextLine(); System.out.println("Enter Architect address:"); String architectAddress = input.nextLine(); //Get Customer inputs System.out.println("Enter Customer name:"); String customerName = input.nextLine(); System.out.println("Enter Customer surname:"); String customerSurname = input.nextLine(); int customerPhoneNumber; while (true) { try { System.out.println("Enter Customer number:"); customerPhoneNumber = input.nextInt(); input.nextLine(); break; } catch (Exception e) { System.out.println("Please enter correct format"); input.next(); } } System.out.println("Enter Customer email address"); String customerEmail = input.nextLine(); System.out.println("Enter Customer address"); String customerAddress = input.nextLine(); System.out.println("Enter Contractor name"); String contractorName = input.nextLine(); System.out.println("Enter Contractor surname:"); String contractorSurname = input.nextLine(); int contractorNumber; while (true) { try { System.out.println("Enter Contractor number:"); contractorNumber = input.nextInt(); input.nextLine(); break; } catch (Exception e) { System.out.println("Please enter correct format"); input.next(); } } System.out.println("Enter Contractor email address:"); String contractorEmail = input.nextLine(); System.out.println("Enter Contractor address:"); String contractorAddress = input.nextLine(); Person Architect = new Person(architectName, architectSurname, architectPhoneNumber, architectEmail,architectAddress); Person Customer = new Person(customerName, customerSurname, customerPhoneNumber, customerEmail, customerAddress); Person Contractor = new Person(contractorName, contractorSurname, contractorNumber, contractorEmail, contractorAddress); Project newProject = new Project(typedProjectNumber, typedProjectName, typedBuildingType, typedProjectAddress, typedErfNumber, typedTotalFee, typedTotalPaid, typedProjectDeadline, projectCompleted, null, Architect, Customer, Contractor); ProjectArray.add(newProject); System.out.println(" New project has been created!"); System.out.println(newProject.toString()); if (typedProjectName.equals("")) { newProject.setProjectName(typedBuildingType + " " + customerSurname); } } else if (userChoice.equals("2")) { int deadlineIndex; while (true) { try { System.out.println("Please enter project you want to edit by index:"); deadlineIndex = input.nextInt(); input.nextLine(); deadlineIndex = deadlineIndex - 1; break; } catch (Exception e) { System.out.println("Enter correct format:"); input.next(); } } System.out.println("Enter new project deadline date for example 15 July 2020:"); String newDeadline = input.nextLine(); ProjectArray.get(deadlineIndex).setDeadline(newDeadline); System.out.println(ProjectArray.get(deadlineIndex).toString()); } else if (userChoice.equals("3")) { int feePaidIndex; while(true) { try { System.out.println("Please enter project you want to edit by index:"); feePaidIndex = input.nextInt(); input.nextLine(); feePaidIndex = feePaidIndex - 1; break; } catch(Exception e) { System.out.println("Enter correct format:"); input.next(); } } double newFeePaid; while (true) { try { System.out.println("Enter new fee paid by the customer:"); newFeePaid = input.nextDouble(); input.nextLine(); ProjectArray.get(feePaidIndex).setAmountPaid(newFeePaid); break; } catch (Exception e) { System.out.println("Please enter correct format"); input.next(); } } System.out.println(ProjectArray.get(feePaidIndex).toString()); } else if (userChoice.equals("4")) { int contractorIndex; while(true) { try { System.out.println("Please enter project you want to edit by index:"); contractorIndex = input.nextInt(); input.nextLine(); contractorIndex = contractorIndex - 1; break; } catch(Exception e) { System.out.println("Enter correct format:"); input.next(); } } int newPhoneNumber = 0; while (true) { try { System.out.println("Enter new contractors phone number:"); newPhoneNumber = input.nextInt(); input.nextLine(); ProjectArray.get(contractorIndex).Contractor.setTelephoneNumber(newPhoneNumber); break; } catch (Exception e) { System.out.println("Please enter correct format"); input.next(); } } System.out.println("Enter new contractors email address:"); String newEmailAddress = input.nextLine(); ProjectArray.get(contractorIndex).Contractor.setEmailAddress(newEmailAddress); System.out.println(ProjectArray.get(contractorIndex).Contractor.toString()); } else if (userChoice.equals("5")) { for (Project project : ProjectArray) { if (project.projectCompleted.equals("Yes")) { System.out.println(project.toString()); } } } else if (userChoice.contentEquals("6")) { for (Project project : ProjectArray) { if (project.projectCompleted.equals("No")) { System.out.println(project); } } } else if (userChoice.equals("7")) { int finalisedIndex; while(true) { try { System.out.println("Please enter project you want to edit by index:"); finalisedIndex = input.nextInt(); input.nextLine(); finalisedIndex = finalisedIndex - 1; break; } catch(Exception e) { System.out.println("Please enter correct format"); input.next(); } } Date currentDate = new Date(); double Difference; Difference = ProjectArray.get(finalisedIndex).totalFee - ProjectArray.get(finalisedIndex).amountPaid; if (Difference == 0) { System.out.println("No invoice is needed marking project as completed"); ProjectArray.get(finalisedIndex).setProjectCompleted("Yes"); ProjectArray.get(finalisedIndex).setDateCompleted(currentDate); } else { System.out.println("Invoice generated"); System.out.println(ProjectArray.get(finalisedIndex).Customer.toString()); System.out.println("Your amount owed is R" + Difference); } } else if (userChoice.equals("8")) { break; } else { System.out.println("Incorrect selection made try again"); } try { for (Project project : ProjectArray) { FileWriter myWriter = new FileWriter( "ProjectDetails.txt"); myWriter.write(project.projectNumber + "#" + project.projectName + "#" + project.buildingType + "#" + project.physicalAddress + "#" + project.erfNumber + "#" + project.totalFee + "#" + project.amountPaid + "#" + project.deadline + "#" + project.projectCompleted + "#" + project.dateCompleted + "#" + project.Architect.name + "#" + project.Architect.surname + "#" + project.Architect.telephoneNumber + "#" + project.Architect.emailAddress + "#" + project.Architect.physicalAddress + "#" + project.Customer.name + "#" + project.Customer.surname + "#" + project.Customer.telephoneNumber + "#" + project.Customer.emailAddress + "#" + project.Customer.physicalAddress + "#" + project.Contractor.name + "#" + project.Contractor.surname + "#" + project.Contractor.telephoneNumber + "#" + project.Contractor.emailAddress + "#" + project.Contractor.physicalAddress + " "); myWriter.close(); System.out.println("Successfully wrote to the file."); } } catch (IOException e) { System.out.println("An error occurred."); e.printStackTrace(); } input.close(); } Project.java file
import java.util.Date; public class Project { int projectNumber; String projectName; String buildingType; String physicalAddress; int erfNumber; Double totalFee; Double amountPaid; String deadline; String projectCompleted; Date dateCompleted; Person Architect; Person Customer; Person Contractor; public Project(int projectNumber, String projectName, String buildingType, String physicalAddress, int erfNumber, Double totalFee, Double amountPaid, String deadline, String projectCompleted,Date dateCompleted,Person Architect, Person Customer, Person Contractor) { this.projectNumber = projectNumber; this.projectName = projectName; this.buildingType = buildingType; this.physicalAddress = physicalAddress; this.erfNumber = erfNumber; this.totalFee = totalFee; this.amountPaid = amountPaid; this.deadline = deadline; this.projectCompleted = projectCompleted; this.dateCompleted = dateCompleted; this.Architect = Architect; this.Customer = Customer; this.Contractor = Contractor; } public void setProjectName(String projectName) { this.projectName = projectName; } public void setDeadline (String deadline) { this.deadline = deadline; } public void setAmountPaid (Double amountPaid) { this.amountPaid = amountPaid; } public void setProjectCompleted(String projectCompleted) { this.projectCompleted = projectCompleted; } public void setDateCompleted (Date dateCompleted ) { this.dateCompleted = dateCompleted; } public String toString() { String output = ""; output += " Project Number: " + projectNumber; output += " Project Name: " + projectName; output += " Building Type: " + buildingType; output += " Physical Address: " + physicalAddress; output += " Erf Number: " + erfNumber; output += " Total Fee: " + totalFee; output += " Amount Paid: " + amountPaid; output += " Deadline: " + deadline; output += " Is Project Completed: " + projectCompleted; output += " Completed Date: " + dateCompleted; return output; } Person.java file public class Person {
String name; String surname; int telephoneNumber; String emailAddress; String physicalAddress; public Person(String name,String surname, int telephoneNumber, String emailAddress, String physicalAddress) { this.name = name; this.surname = surname; this.telephoneNumber = telephoneNumber; this.emailAddress = emailAddress; this.physicalAddress = physicalAddress; } public void setTelephoneNumber (int telephoneNumber) { this.telephoneNumber = telephoneNumber ; } public void setEmailAddress (String emailAddress){ this.emailAddress = emailAddress; } public String toString() { String output = ""; output += " Name: " + name + " "+ surname; output += " Telephone Number: " + telephoneNumber; output += " Email Address: " + emailAddress; output += " Physical Address: " + physicalAddress; return output; } Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
