From 45c57a21b5f0bf3eba5bc2663df8e57c8d129a52 Mon Sep 17 00:00:00 2001 From: Jacob Shimp Date: Tue, 7 Oct 2025 08:19:07 -0400 Subject: added lifetime stats --- .../design/controller/userinput/menus/StatisticsMenu.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/main/java/design/controller/userinput') diff --git a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java index 66d60e3..72a3284 100644 --- a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java +++ b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java @@ -2,6 +2,10 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; +import design.model.Golfer; +import design.model.statistics.LifetimeStats; +import design.model.statistics.Statistics; +import design.runtime.Session; import java.util.List; @@ -15,7 +19,13 @@ public class StatisticsMenu extends Menu { @Override public List getMenuOptions() { return List.of( - new MenuOption("return to main menu", (c) -> new MainMenu().present()) + new MenuOption("return to main menu", (c) -> new MainMenu().present()), + new MenuOption("view lifetime stats", (c) -> { + Golfer golfer = Session.getCurrentGolfer(); + Statistics stats = new LifetimeStats(golfer); + System.out.printf("Total swings: %d\n", stats.get_score()); + System.out.printf("Total distance: %.1f\n", stats.get_distance()); + }) ); } } -- cgit v1.2.3 From 2411189b09dad6339379c62474f671ce8983db75 Mon Sep 17 00:00:00 2001 From: Jacob Shimp Date: Tue, 7 Oct 2025 09:21:57 -0400 Subject: added menu options --- .../controller/userinput/menus/StatisticsMenu.java | 86 +++++++++++++++++++++- 1 file changed, 84 insertions(+), 2 deletions(-) (limited to 'src/main/java/design/controller/userinput') diff --git a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java index ebd2e3f..c299d3e 100644 --- a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java +++ b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java @@ -2,29 +2,111 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; +import design.model.Course; import design.model.Golfer; +import design.model.statistics.CourseStats; import design.model.statistics.LifetimeStats; import design.model.statistics.Statistics; +import design.model.statistics.YearlyStats; import design.runtime.Session; import java.util.List; +import java.util.Scanner; public class StatisticsMenu extends Menu { + Golfer golfer = Session.getCurrentGolfer(); + @Override public String getTitle() { return "statistics menu"; } + private Statistics getUserYear(Statistics baseStats){ + Scanner sc = new Scanner(System.in); + + System.out.println("Enter year to search: "); + int year = Integer.parseInt(sc.nextLine()); + + Statistics yearStats = new YearlyStats(baseStats, year); + return yearStats; + } + + private Statistics getUserCourse(Statistics baseStats){ + Scanner sc = new Scanner(System.in); + + System.out.println("Enter course name to search: "); + String courseName = sc.nextLine(); + System.out.println("Enter location of course"); + String courseLocation = sc.nextLine(); + + Course course = matchCourse(courseName, courseLocation); + Statistics courseStats = new CourseStats(baseStats, course); + return courseStats; + } + private Course matchCourse(String courseName, String courseLocation){ + for(Course course : golfer.getCourses()){ + if(course.getName().toLowerCase().equals(courseName.toLowerCase()) && course.getLocation().toLowerCase().equals(courseLocation.toLowerCase())){ + return course; + } + } + return null; + } + + private Statistics getUserRound(Statistics baseStats){ + return null; + } + @Override public List getMenuOptions() { return List.of( new MenuOption("return to main menu", () -> new MainMenu().present()), - new MenuOption("view lifetime stats", () -> { - Golfer golfer = Session.getCurrentGolfer(); + new MenuOption("view lifetime statistics", () -> { Statistics stats = new LifetimeStats(golfer); System.out.printf("Total swings: %d\n", stats.get_score()); System.out.printf("Total distance: %.1f\n", stats.get_distance()); + this.present(); + }), + new MenuOption("view yearly statistics", () -> { + Statistics baseStats = new LifetimeStats(golfer); + Statistics yearStats = getUserYear(baseStats); + + System.out.printf("Total swings: %d\n", yearStats.get_score()); + System.out.printf("Total distance: %.1f\n", yearStats.get_distance()); + this.present(); + }), + new MenuOption("view course statistics", () -> { + Statistics baseStats = new LifetimeStats(golfer); + Statistics yearStats = getUserYear(baseStats); + Statistics courseStats = getUserCourse(yearStats); + + System.out.printf("Total swings: %d\n", courseStats.get_score()); + System.out.printf("Total distance: %.1f\n", courseStats.get_distance()); + this.present(); + }), + new MenuOption("view round statistics", () -> { + Statistics baseStats = new LifetimeStats(golfer); + Scanner sc = new Scanner(System.in); + + System.out.println("Enter year to search: "); + int year = sc.nextInt(); + Statistics yearStats = new YearlyStats(baseStats, year); + + System.out.printf("Total swings: %d\n", yearStats.get_score()); + System.out.printf("Total distance: %.1f\n", yearStats.get_distance()); + sc.close(); + }), + new MenuOption("view hole statistics", () -> { + Statistics baseStats = new LifetimeStats(golfer); + Scanner sc = new Scanner(System.in); + + System.out.println("Enter year to search: "); + int year = sc.nextInt(); + Statistics yearStats = new YearlyStats(baseStats, year); + + System.out.printf("Total swings: %d\n", yearStats.get_score()); + System.out.printf("Total distance: %.1f\n", yearStats.get_distance()); + sc.close(); }) ); } -- cgit v1.2.3 From 030786488b2956b7da6b0a7fd460923d7b13a25f Mon Sep 17 00:00:00 2001 From: Jacob Shimp Date: Wed, 8 Oct 2025 19:29:56 -0400 Subject: empty getters --- .../controller/userinput/menus/StatisticsMenu.java | 31 +++++++++++----------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'src/main/java/design/controller/userinput') diff --git a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java index c299d3e..16d875a 100644 --- a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java +++ b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java @@ -57,6 +57,10 @@ public class StatisticsMenu extends Menu { return null; } + private Statistics getUserHole(Statistics baseStatistics){ + return null; + } + @Override public List getMenuOptions() { return List.of( @@ -86,27 +90,22 @@ public class StatisticsMenu extends Menu { }), new MenuOption("view round statistics", () -> { Statistics baseStats = new LifetimeStats(golfer); - Scanner sc = new Scanner(System.in); - - System.out.println("Enter year to search: "); - int year = sc.nextInt(); - Statistics yearStats = new YearlyStats(baseStats, year); + Statistics yearStats = getUserYear(baseStats); + Statistics courseStats = getUserCourse(yearStats); + Statistics roundStats = getUserRound(courseStats); - System.out.printf("Total swings: %d\n", yearStats.get_score()); - System.out.printf("Total distance: %.1f\n", yearStats.get_distance()); - sc.close(); + System.out.printf("Total swings: %d\n", roundStats.get_score()); + System.out.printf("Total distance: %.1f\n", roundStats.get_distance()); }), new MenuOption("view hole statistics", () -> { Statistics baseStats = new LifetimeStats(golfer); - Scanner sc = new Scanner(System.in); - - System.out.println("Enter year to search: "); - int year = sc.nextInt(); - Statistics yearStats = new YearlyStats(baseStats, year); + Statistics yearStats = getUserYear(baseStats); + Statistics courseStats = getUserCourse(yearStats); + Statistics roundStats = getUserRound(courseStats); + Statistics holeStats = getUserHole(roundStats); - System.out.printf("Total swings: %d\n", yearStats.get_score()); - System.out.printf("Total distance: %.1f\n", yearStats.get_distance()); - sc.close(); + System.out.printf("Total swings: %d\n", holeStats.get_score()); + System.out.printf("Total distance: %.1f\n", holeStats.get_distance()); }) ); } -- cgit v1.2.3 From 871f353b9d8765594983b8b85d541f0c27447f68 Mon Sep 17 00:00:00 2001 From: Jacob Shimp Date: Wed, 8 Oct 2025 21:48:53 -0400 Subject: implemented all other menu options --- .../controller/userinput/menus/StatisticsMenu.java | 64 +++++++++++++++------- 1 file changed, 44 insertions(+), 20 deletions(-) (limited to 'src/main/java/design/controller/userinput') diff --git a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java index 16d875a..669d270 100644 --- a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java +++ b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java @@ -4,8 +4,13 @@ import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.Course; import design.model.Golfer; +import design.model.Hole; +import design.model.Play; +import design.model.Round; import design.model.statistics.CourseStats; +import design.model.statistics.HoleStats; import design.model.statistics.LifetimeStats; +import design.model.statistics.RoundStats; import design.model.statistics.Statistics; import design.model.statistics.YearlyStats; import design.runtime.Session; @@ -22,6 +27,7 @@ public class StatisticsMenu extends Menu { return "statistics menu"; } + @SuppressWarnings("resource") private Statistics getUserYear(Statistics baseStats){ Scanner sc = new Scanner(System.in); @@ -32,33 +38,48 @@ public class StatisticsMenu extends Menu { return yearStats; } + @SuppressWarnings("resource") private Statistics getUserCourse(Statistics baseStats){ Scanner sc = new Scanner(System.in); - - System.out.println("Enter course name to search: "); - String courseName = sc.nextLine(); - System.out.println("Enter location of course"); - String courseLocation = sc.nextLine(); - - Course course = matchCourse(courseName, courseLocation); - Statistics courseStats = new CourseStats(baseStats, course); - return courseStats; - } - private Course matchCourse(String courseName, String courseLocation){ - for(Course course : golfer.getCourses()){ - if(course.getName().toLowerCase().equals(courseName.toLowerCase()) && course.getLocation().toLowerCase().equals(courseLocation.toLowerCase())){ - return course; - } + Course[] courses = golfer.getCourses(); + for(int i = 0; i < courses.length; i++){ + System.out.println((i+1) + ".) Name: " + courses[i].getName() + ". Location: " + courses[i].getLocation()); } - return null; + System.out.println("Select the course number corresponding to the course. "); + int selection = Integer.parseInt(sc.nextLine()); + return new CourseStats(baseStats, courses[selection - 1]); } + @SuppressWarnings("resource") private Statistics getUserRound(Statistics baseStats){ - return null; + Scanner sc = new Scanner(System.in); + Round[] rounds = baseStats.getRounds(); + for(int i = 0; i < rounds.length; i++){ + System.out.println((i+1) + ".) Date: " + rounds[i].getDateTime().toLocalDate() + ". Time: " + rounds[i].getDateTime().toLocalTime() + ". Final Score: " + rounds[i].getTotalSwings() + ". Total Distance: " + rounds[i].getTotalDistance()); + } + System.out.println("Select the round number: "); + int selection = Integer.parseInt(sc.nextLine()); + return new RoundStats(baseStats, rounds[selection - 1]); } - private Statistics getUserHole(Statistics baseStatistics){ - return null; + @SuppressWarnings("resource") + private Statistics getUserHole(Statistics baseStats){ + Scanner sc = new Scanner(System.in); + Round round = baseStats.getRounds()[0]; // Only 1 round + Play[] plays = round.getPlays(); + for(Play play : plays){ + System.out.println("Hole number: " + play.getHoleNumber()); + } + System.out.println("Enter the hole number: "); + int holeNum = Integer.parseInt(sc.nextLine()); + + Course course = round.getCourse(); + for(Hole hole : course.getHoles()){ + if(hole.getNumber() == holeNum){ + return new HoleStats(baseStats, hole); + } + } + return baseStats; } @Override @@ -67,6 +88,7 @@ public class StatisticsMenu extends Menu { new MenuOption("return to main menu", () -> new MainMenu().present()), new MenuOption("view lifetime statistics", () -> { Statistics stats = new LifetimeStats(golfer); + System.out.printf("Total swings: %d\n", stats.get_score()); System.out.printf("Total distance: %.1f\n", stats.get_distance()); this.present(); @@ -96,6 +118,7 @@ public class StatisticsMenu extends Menu { System.out.printf("Total swings: %d\n", roundStats.get_score()); System.out.printf("Total distance: %.1f\n", roundStats.get_distance()); + this.present(); }), new MenuOption("view hole statistics", () -> { Statistics baseStats = new LifetimeStats(golfer); @@ -106,7 +129,8 @@ public class StatisticsMenu extends Menu { System.out.printf("Total swings: %d\n", holeStats.get_score()); System.out.printf("Total distance: %.1f\n", holeStats.get_distance()); + this.present(); }) ); } -} +} \ No newline at end of file -- cgit v1.2.3 From 1fa4cbcdc3ad86dd94eb76501f0068b37aa5ea4f Mon Sep 17 00:00:00 2001 From: Jacob Shimp Date: Thu, 9 Oct 2025 08:07:29 -0400 Subject: added comment --- src/main/java/design/controller/userinput/menus/StatisticsMenu.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main/java/design/controller/userinput') diff --git a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java index 669d270..3af790e 100644 --- a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java +++ b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java @@ -27,6 +27,7 @@ public class StatisticsMenu extends Menu { return "statistics menu"; } + // Helper classes to get user input and handle finding the data they requested (Course, Hole, Year, etc.) @SuppressWarnings("resource") private Statistics getUserYear(Statistics baseStats){ Scanner sc = new Scanner(System.in); -- cgit v1.2.3