import java.time.LocalTime; import java.util.*; public class Kalendarz { private ArrayList[] kalendarz = new ArrayList[7]; public Kalendarz() { for(int i = 0; i < kalendarz.length; i++) { kalendarz[i] = new ArrayList<>(); } } public boolean dodajZdarzenie(int dzien, Zdarzenie zdarzenie) { if(sprawdzCzyZdarzenieIstnieje(dzien, zdarzenie.getCzasRozpoczecia()) == null) { kalendarz[dzien - 1].add(zdarzenie); return true; } else return false; } public boolean usunZdarzenie(int dzien, LocalTime czasRozpoczecia) { if(sprawdzCzyZdarzenieIstnieje(dzien, czasRozpoczecia) != null) { kalendarz[dzien - 1].remove(sprawdzCzyZdarzenieIstnieje(dzien, czasRozpoczecia)); return true; }else return false; } public boolean modyfikujZdarzenie(int dzien, LocalTime czasRozpoczecia, Zdarzenie zdarzenie){ //modyfikuj konkretny obiekt w klasie zdarzenie Zdarzenie temp; if((temp = sprawdzCzyZdarzenieIstnieje(dzien, czasRozpoczecia)) != null){ usunZdarzenie(dzien , czasRozpoczecia); if(dodajZdarzenie(dzien, zdarzenie)) { return true; } else { dodajZdarzenie(dzien, temp); return false; } } else { return false; } } public Zdarzenie sprawdzCzyZdarzenieIstnieje(int dzien, LocalTime czasRozpoczecia) { // to ma być w modyfikuj zdarzenie for(Zdarzenie zad: kalendarz[dzien - 1]) { if(zad.getCzasRozpoczecia().equals(czasRozpoczecia)) { return zad; } } return null; } public ArrayList getDzien(int dzien) { // TU MÓWIŁ że get dzień ma być return kalendarz[dzien - 1]; } } import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.Scanner; public class Main { static Scanner scanner = new Scanner(System.in); static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("H:m"); public static void main(String[] args) { Kalendarz kalendarz = new Kalendarz(); boolean info = true; do { System.out.println("KALENDARZ"); opcje(); switch (scanner.next()) { case "1": dodajZdarzenie(kalendarz); break; case "2": usunZdarzenie(kalendarz); break; case "3": modyfikujZdarzenie(kalendarz); break; case "4": wyswietlZdarzenie(kalendarz); break; case "5": info = false; break; default: System.out.println("Nie ma takiej opcji, spróbuj jeszcze raz:"); break; } } while (info == true); } public static void opcje() { System.out.println("Dodaj zdarzenie - 1"); System.out.println("Usuń zdarzenie - 2"); System.out.println("Modyfikuj zdarzenie - 3"); System.out.println("Wyświetl zdarzenie z danego dnia - 4"); System.out.println("Wyjdź z kalendarza - 5"); } public static void dniTygodnia() { System.out.println("Poniedziałek - 1"); System.out.println("Wtorek - 2"); System.out.println("Sroda - 3"); System.out.println("Czwartek - 4"); System.out.println("Piątek - 5"); System.out.println("Sobota - 6"); System.out.println("Niedziela - 7"); } public static void dodajZdarzenie(Kalendarz kalendarz) { Scanner sc = new Scanner(System.in); int dzien; String czasRozpoczecia, czasZakonczenia, tresc; LocalTime terminRozpoczecia, terminZakonczenia; do { System.out.println("Wybierz dzień tygodnia do którego chcesz dodać zdarzenie za pomocą numerów: "); dniTygodnia(); dzien = scanner.nextInt(); } while(poprawnoscDnia(dzien) == false); System.out.println("Wpisz godzinę rozpoczęcia zdarzenia, podaj w foramcie:'Godzina:minuta' "); czasRozpoczecia = sc.nextLine(); terminRozpoczecia = LocalTime.parse(czasRozpoczecia, formatter); do { System.out.println("Wpisz godzinę zakończenia zdarzenia, podaj w foramcie:'Godzina:minuta' "); czasZakonczenia = sc.nextLine(); terminZakonczenia = LocalTime.parse(czasZakonczenia, formatter); if(terminZakonczenia.isAfter(terminRozpoczecia) == false) System.out.println("Termin zakończenia nie może występować przed terminem rozpoczęcia. Spróbuj ponownie"); } while (terminZakonczenia.isAfter(terminRozpoczecia) == false); System.out.println("Podaj treść zdarzenia: "); tresc = sc.nextLine(); Zdarzenie zdarzenie = new Zdarzenie(terminRozpoczecia, terminZakonczenia, tresc); if(kalendarz.dodajZdarzenie(dzien, zdarzenie) == true) { System.out.println("Zdarzenie zostało dodane"); } else System.out.println("Istnieje już zdarzenie o tej godzinie, spróbuj ponownie:"); } public static void usunZdarzenie(Kalendarz kalendarz) { Scanner sc = new Scanner(System.in); int dzien; String czasRozpoczecia; LocalTime terminRozpoczecia; do { System.out.println("Podaj dzień tygodnia z którego chcesz usunąć zdarzenie za pomocą liczby: "); dniTygodnia(); dzien = scanner.nextInt();; } while(poprawnoscDnia(dzien) == false); System.out.println("Wybierz godzinę z której chcesz usunąć zdarzenie, podaj w formacie 'Godzina:minuta' "); czasRozpoczecia = sc.nextLine(); terminRozpoczecia = LocalTime.parse(czasRozpoczecia, formatter); if(kalendarz.usunZdarzenie(dzien, terminRozpoczecia) == true) { System.out.println("Zdarzenie zostało usuniete"); } else System.out.println("Termin nie był zajęty"); } public static void modyfikujZdarzenie(Kalendarz kalendarz) { Scanner sc = new Scanner(System.in); int dzien; String czasRozpoczecia, czasZakonczenia, tresc; LocalTime terminRozpoczecia, terminRozpoczeciaNowego, terminZakonczenia; do { System.out.println("Podaj dzień tygodnia w którym chcesz zmodyfikować zdarzenie za pomocą liczby: "); dniTygodnia(); dzien = scanner.nextInt(); } while(poprawnoscDnia(dzien) == false); System.out.println("Wpisze godzinę zdarzenia do modyfikacji, podaj w formacie 'Godzina:minuta' "); czasRozpoczecia = sc.nextLine(); terminRozpoczecia = LocalTime.parse(czasRozpoczecia, formatter); do { System.out.println("Wybierz nowa godzinę zakończenia zdarzenia, podaj w formacie 'Godzina:minuta' "); czasZakonczenia = sc.nextLine(); terminZakonczenia = LocalTime.parse(czasZakonczenia, formatter); if(terminZakonczenia.isAfter(terminRozpoczecia) == false) System.out.println("Termin zakończenia nie może występować przed terminem rozpoczęcia. Spróbuj ponownie"); } while (terminZakonczenia.isAfter(terminRozpoczecia) == false); System.out.println("Podaj nowa treść modyfikowanego zdarzenia: "); tresc = sc.nextLine(); Zdarzenie zdarzenie = new Zdarzenie(terminRozpoczecia, terminZakonczenia, tresc); if(kalendarz.modyfikujZdarzenie(dzien, terminRozpoczecia, zdarzenie)) { System.out.println("Zdarzenie zostało zmodyfikowane"); } else { System.out.println("Zdarzenie nie zostalo zmodyfikowane, nie ma zdarzenia o takiej godzine"); } } public static void wyswietlZdarzenie(Kalendarz kalendarz) { int dzien; do { System.out.println("Podaj dzień tygodnia, z którego chcesz wyświetlić zdarzenia za pomocą liczby: "); dniTygodnia(); dzien = scanner.nextInt(); } while(poprawnoscDnia(dzien) == false); if(kalendarz.getDzien(dzien).size() == 0) { System.out.println("Brak zdarzeń do wyświetlenia w tym dniu"); } for(Zdarzenie z: kalendarz.getDzien(dzien)) { System.out.println(z); } } public static boolean poprawnoscDnia(int dzien) { if(dzien > 7 || dzien < 1) { System.out.println("Nie ma takiego dnia, podaj ponownie"); return false; } else return true; } }