diff --git a/src/main/java/Main.java b/src/main/java/Main.java index b7b5c1e..9f68d2b 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -14,7 +14,6 @@ public class Main { manager.addTicket(new Ticket("S002", "SUMMER SONIC 2026", "2026-08-15", 21000)); manager.addTicket(new Ticket("S003", "SUMMER SONIC 2026", "2026-08-16", 21000)); - Scanner scanner = new Scanner(System.in); while (true) { @@ -36,6 +35,7 @@ public class Main { manager.showAllTockets(); } else if (serchMenu == 2) { System.out.println("検索するイベント名を入力してください"); + scanner.nextLine(); String keyword = scanner.nextLine(); manager.searchByEventName(keyword); } else { @@ -79,7 +79,7 @@ public class Main { // 配列から選択された値を取り出す String date = dates[detailChoice - 1]; int price = prices[detailChoice - 1]; - + String nextId = prefix + String.format("%03d", manager.getCountByPrefix(prefix) + 1); Ticket newTicket = new Ticket(nextId, name, date, price); @@ -90,9 +90,64 @@ public class Main { break; case 3: System.out.println("予約内容の変更"); + scanner.nextLine(); + System.out.println("変更したいチケットIDを入力してください。"); + String targetId = scanner.nextLine(); + + // IDでチケット検索 + BaseTicket targetTicket = manager.findTicketById(targetId); + + if (targetTicket == null) { + System.out.println("指定されたチケットが見つかりませんでした。"); + break; + } + + // 予約内容表示 + System.out.println("現在の予約内容"); + targetTicket.showInfo(); + + String[] changeDates; + if (targetTicket.getTicketId().toUpperCase().startsWith("R")) { + changeDates = new String[] { "2026-09-12", "2026-09-13", "2026-09-19", "2026-09-20", "2026-09-21" }; + } else { + changeDates = new String[] { "2026-08-14", "2026-08-15", "2026-08-16" }; + } + + System.out.println("新しい開催日を選択してください。"); + for (int i = 0; i < changeDates.length; i++) { + System.out.println((i + 1) + ":" + changeDates[i]); + } + System.out.print("番号を選択してください: "); + int changeChoice = scanner.nextInt(); + scanner.nextLine(); + + if (changeChoice < 1 || changeChoice > changeDates.length) { + System.out.println("無効な番号です。変更を中止します。"); + break; + } + + // カプセル化されたセッターを使って日付を上書き + String newDate = changeDates[changeChoice - 1]; + targetTicket.setEventData(newDate); + + System.out.println("\n予約内容が正常に変更されました!"); + System.out.println("変更後の内容:"); + targetTicket.showInfo(); + break; case 4: System.out.println("予約のキャンセル"); + scanner.nextLine(); + + System.out.println("キャンセルしたいチケットのIDを入力してください。"); + String cancelId = scanner.nextLine(); + + boolean isDeleted = manager.removeTicketById(cancelId); + if (isDeleted) { + System.out.println("チケットID:" + cancelId + "の予約がキャンセルされました。"); + } else { + System.out.println("指定されたチケットIDが見つかりませんでした。"); + } break; case 0: System.out.println("チケット予約管理システムを終了します"); diff --git a/src/main/java/TicketManager.java b/src/main/java/TicketManager.java index f20448b..34ca27f 100644 --- a/src/main/java/TicketManager.java +++ b/src/main/java/TicketManager.java @@ -61,4 +61,24 @@ public class TicketManager { } return count; } + + // チケットIDから検索 + public BaseTicket findTicketById(String id) { + for (BaseTicket ticket : tickets) { + if (ticket.getTicketId().equalsIgnoreCase(id)) { + return ticket; + } + } + return null; + } + + public boolean removeTicketById(String id) { + for (int i = 0; i < tickets.size(); i++) { + if (tickets.get(i).getTicketId().equalsIgnoreCase(id)) { + tickets.remove(i); + return true; + } + } + return false; + } }