W tym miejscu umieszczono zadania do samodzielnego wykonania przez studentów.
Proszę o wrzucenie każdego zadania w osobny projekt. Cały program robimy w obrębie jednego projektu. Program należy podzielić na klasy według uznania, dodać stosowne komentarze w javadoc.
Po wykonaniu wszystkich zadań i dwukrotnym ich sprawdzeniu można wysłać do mnie maila o temacie:
PWJ ZAD_SAMODZIELNE_2 NUMER_GRUPY_Z_USOS
numer grupy w USOS sprawdzimy tutaj: https://usosweb.uksw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazGrupyZajec&zaj_cyk_id=137217 (po wybraniu szczegóły swojej grupy powinniśmy zobaczyć listę studentów i siebie pośród nich).
W treści wiadomości proszę podać swoje IMIĘ, nazwisko, numer indeksu, środowisko w jakim napisano projekt, a w załączniku przynajmniej jedno archiwum odpowiednio nazwane proj1.zip oraz proj2.zip
Przykład prawidłowego tematu dla grupy nr 2
PwJ ZAD_SAMODZIELNE_2 2
Przykład prawidłowej treści
Hubert Zembrowski 61316 vim
Jak wygląda proces weryfikacji?
Program ma spełniać postawione w nim założenia oraz rozwiązywać zadany problem. Działać powinien dla danych z uwzględnieniem przypadków brzegowych. Jeśli program jasno nie precyzuje jak wykonać dany problem można iść po najmniejszej linii oporu. Jak to zrozumieć? Jak nie ma zdefiniowanego typu danych – przyjmijmy ten dla nas wygodniejszy. Jak nie zdefiniowano jak pobierane są dane – dane pobierane są w sposób dowolny.
Pamiętajcie, że to zadania do samodzielnego treningu, nie rozliczam czy zadanie zrobione zostało w 100%. Najważniejsze to zrealizować zadanie samemu i dać z siebie wszystko!
Wykonać wystarczy jedno zadanie z dwóch. Pierwsze zadanie dotyczy SWINGa:
1. Napisz program, w którym przy pomocy graficznego interfejsu użytkownika przygotujesz system tzw. „CRUD” do przechowywania wyników studentów z przedmiotu Progamowanie w Javie.
Program powinien pozwalać na:
wprowadzanie n grup studenckich. Każda grupa studencka ma przypisany numer oraz termin zajęć np. grupa nr 1 zajęcia wtorek 16.45 – 18.45
Wprowadzanie n studentów w grupie studenckiej. Każdy student powinien posiadać imie, nazwisko, numer USOS, oraz pozostałe dane niewymagane przy wprowadzaniu go po raz pierwszy: ocenę końcową, punkty kolokwium I, punkty kolokwium II oraz automatycznie wyliczaną sumę punktów.
Każdą z powyższych danych oczywiście można wprowadzić, podglądać/czytać, edytować i usuwać. W widoku studenta oprócz wprowadzania danych dodaj 2 guziki pierwszy: WYSTAW OCENĘ wyliczający ocenę na podstawie punktów wprowadzonych do systemu( ocena 2 do 50% punktów, ocena 3 do 60% punktów, ocena 3,5 do 70% punktów, ocena 4 do 80% punktów, ocena 4,5 do 90% punktów oraz ocena 5 do 100% punktów), do tego celu przygotuj pole umożliwiające wprowadzenie sumy wszystkich możliwych do zdobycia punktów oraz drugi: WYSTAW 2, guzik który w miejscu gdzie jest brak oceny wystawi ocenę 2 dla studenta.
Jeśli uznasz za stosowne możesz rozbudować ten moduł o dodatkowe funkcjonalności, które w Twoim odczuciu taki program powinien posiadać.
Aplikacja zapisuje dane a po uruchomieniu je odczytuje – zatem jest możliwość ciągłości pracy po wyłączeniu aplikacji. Dane przechowuj w pliku lub (dla chętnych) w bazie danych. W celu połączenia do bazy danych przeczytaj o JDBC np. tutaj Będzie wspaniale, jak przy projektowaniu aplikacji wykorzystasz wzorzec projektowy DAO przykład dla DAO w połączeniu z JDBC tutaj . Serwer baz danych dowolnie wybrany przez studenta – wystarczy PostgreSQL czy mySQL. W razie problemów ze zbudowaniem środowiska – proszę o maila. Komponent DAO można napisać także na plikach – DAO jest elementem architektury oprogramowania a medium zapisu danych jest decyzją projektanta aplikacji – wami, choć powszechnie stosuję się zapis do bazy danych.
Alternatywne zadanie nr 2:
Napisz program pozwalający na tworzenie figur w dwuwymiarowej przestrzeni kartezjańskiej. Pierwszą przygotowaną klasą będzie klasa Punkt. Punkt posiadać będzie dwa pola – double pozycjaX oraz double pozycjaY pozwalając na umiejscowienie punktu w przestrzeni kartezjańskiej. Przygotuj odpowiednie metody do manipulowania polami tej klasy. Przygotuj interfejs Figura, która posiadać będzie metody:
pole – obliczająca polę figury;
obwod – obliczająca obwód figury.
Kolejnym etapem będzie przygotowanie Abstrakcyjnej klasa FiguraForemna, będącej implementacją interfejsu Figura posiadać bedzię 3 pola – double bok, string nazwa oraz Punkt punkt.
Stwórz także zwykłą klasę Koło, która zaimplementuje interfejs figura oraz odpowiedni uzupełni metody obliczające pole oraz obwód, bok dla Koła będzie przechowywał promień Koła, przygotuj stałą PI o wartości 3.14159265359.
Przygotuj następnie klasę Kwadrat, która będzie dziedziczyć po klasie FiguraForemna, tak jak w przypadku koła uzupełnij odpowiednio metody obliczające pole oraz obwód.
Przygotuj klasę Prostokąt, która będzie implementować interfejs figura. Dodaj pola: Punkt punkt, double bokA, double bokB; oraz uzupełnij metody obliczające pole oraz obwód.
Przeciąż metodę toString w klasach, umieść w nim przynajmniej takie informacje jak: nazwa, obwód, pole, rodzaj figury (koło, kwadrat lub prostokąt).
Utwórz klasę Rysunek, w której będzie program główny pozwalający na tworzenie figur. Figury umieść w kontenerze TreeSet,jako typ przyjmij Figura – tak aby koło, prostokąt oraz kwadrat mogły znaleźć się na jednym kontenerze.
Przygotuj menu pozwalające na wprowadzanie figur ze standardowego wejścia (klawiatury).
Danymi wejściowymi dla koła jest: promień, wsp X oraz wsp Y punktu
Danymi wejściowymi dla kwadratu jest: bok, wsp X oraz wsp Y lewego dolnego punktu
Danymi wejściowymi dla prostokąta jest: bokA, bokB, wsp X oraz wsp Y lewego dolnego punktu.
Użytkownik może podać dowolną liczbę figur, w Menu pozostaw opcję na zakończenie wprowadzania danych.
Przygotuj przechwytywanie wyjątków
- jeśli użytkownik poda literę zamiast liczby dla danych wejściowych;
- jeśli użytkownik poda wartość ujemną dla boku lub promienia;
- jeśli użytkownik spróbuje podać już istniejący element;
program rzuci wyjątek i jako obsługa poinformuje o tym co zaszło nie tak (podano literę zamiast liczby, podano wartość ujemną dla boku lub promienia, podano istniejący element).
Przy użyciu Comparable lub Comparator posortuj figury rosnąco według wielkości Pola figury. Wypisz tak uporządkowaną listę za pomocą for each przy użyciu odpowiedniego iteratora.
Na koniec przygotuj program tak aby był w stanie przeliczyć które figury się ze sobą przecinają i wypisać je. Jeśli będzie kilka grup to każdą z nich wypisze oddzielnie. Aby wykonać tę część zadania odpowiednio zmodyfikuj wcześniejsze klasy tak, aby była możliwość weryfikacji takich zależności. Jak dokonać weryfikacji? np. Koło z kołem przecina się jak dwa punkty (ich środki) leżą bliżej niż suma ich promieni. Analogicznie można wykonać obliczenia dla pozostałych figur.