diff options
| author | Tyler Ferrari <69283684+Sowgro@users.noreply.github.com> | 2025-10-09 08:33:53 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-09 08:33:53 -0400 |
| commit | 1eca2f8681752ad359e8372780cdf719e2b1747d (patch) | |
| tree | ac1ece075909102027be22a5ae2472f286f09b10 /src/main/java/design/controller/userinput/menus | |
| parent | f115308210fd98e6b6f83f8c091ca72dbfb666fb (diff) | |
| parent | 7bbb3d8d7842c5e212124631c302b63bdc370f20 (diff) | |
| download | designproject-design-6-1eca2f8681752ad359e8372780cdf719e2b1747d.tar.gz designproject-design-6-1eca2f8681752ad359e8372780cdf719e2b1747d.tar.bz2 designproject-design-6-1eca2f8681752ad359e8372780cdf719e2b1747d.zip | |
Merge pull request #11 from RIT-SWEN-262/statistic-dev
Statistic dev - Menu implementation
Diffstat (limited to 'src/main/java/design/controller/userinput/menus')
| -rw-r--r-- | src/main/java/design/controller/userinput/menus/StatisticsMenu.java | 120 |
1 files changed, 118 insertions, 2 deletions
diff --git a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java index c609177..3af790e 100644 --- a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java +++ b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java @@ -2,20 +2,136 @@ 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.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; import java.util.List; +import java.util.Scanner; public class StatisticsMenu extends Menu { + Golfer golfer = Session.getCurrentGolfer(); + @Override public String getTitle() { 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); + + System.out.println("Enter year to search: "); + int year = Integer.parseInt(sc.nextLine()); + + Statistics yearStats = new YearlyStats(baseStats, year); + return yearStats; + } + + @SuppressWarnings("resource") + private Statistics getUserCourse(Statistics baseStats){ + Scanner sc = new Scanner(System.in); + 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()); + } + 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){ + 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]); + } + + @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 public List<MenuOption> getMenuOptions() { return List.of( - new MenuOption("return to main menu", () -> new MainMenu().present()) + 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(); + }), + 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); + Statistics yearStats = getUserYear(baseStats); + Statistics courseStats = getUserCourse(yearStats); + Statistics roundStats = getUserRound(courseStats); + + 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); + Statistics yearStats = getUserYear(baseStats); + Statistics courseStats = getUserCourse(yearStats); + Statistics roundStats = getUserRound(courseStats); + Statistics holeStats = getUserHole(roundStats); + + 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 |
