Witam, czy ktoś może pomóc, bo kompletnie nie wychodzi mi nic:/ niestety z java.sun.com niewiele mogę zrozumieć. Ew. czy może ktoś pokazać podobny kod, bo na zasadzie analizy kodu bardzo szybko łapię.
Potrzebuję sortowania wg. nazwisk i wg. średnie (ale wystarczy jedno, to sobie już dam radę).
Zadanie:
Napisz program, który tworzy klasę Baza1, która posiada metody: wypelnij_tablice();
wyswietl_tablice();
wyszukaj_w_tablicy();
i powinien działać, jak program Baza.java. dołączony w postaci źródłowej do laboratorium, podany również dalej w postaci listingu. Klasa Baza1 posiada atrybuty: int N –rozmiar tablicy podawany z klawiatury, int ile=0-liczba danych w tablicy, na początku równa 0 oraz tablice elementów typu Osoba o nazwie Dane. W metodach, które należy zdefiniować,
należy używać atrybutów klasy w sposób bezpośredni. Ciało tych metod należy zdefiniować wg wskazówek przy komentarzach do funkcji.
Uzupełnij metody klasy Baza1 o metodę sortującą wg nazwiska: sortuj_tablicę_wg_nazwiska(). Należy
wykorzystać metody do sortowania bąbelkowego z programu 2 z laboratorium3. Funkcja babelki teraz
nazywa się sortuj_tablicę_wg_nazwiska(). Wywoływana w niej metoda porownaj_zamien ma teraz postać
W tym celu należy zdefiniować dodatkową metodę porownaj_nazwisko w klasie Osoba. Oznacza to że
porównanie atrybutów klasy Osoba do sortowania powinna wykonywać metoda klasy Osoba, gdyż nazwisko
jest jej atrybutem (zasada hermetyzacji)! Metoda ta powinna zwracać wynik true, gdy nazwisko w obiekcie
Dane[c] powinno być alfabetycznie przez nazwiskiem w obiekcie Dane[a], a w przeciwnym razie false.
3. Uzupełnij klasę Baza1 o metodę sortowanie_wg_sredniej, wg zasad podanych w punkcie 2.
To co mam:
Kod proszę umieszczać w znacznikach code - krzychoocpp
Potrzebuję sortowania wg. nazwisk i wg. średnie (ale wystarczy jedno, to sobie już dam radę).
Zadanie:
Napisz program, który tworzy klasę Baza1, która posiada metody: wypelnij_tablice();
wyswietl_tablice();
wyszukaj_w_tablicy();
i powinien działać, jak program Baza.java. dołączony w postaci źródłowej do laboratorium, podany również dalej w postaci listingu. Klasa Baza1 posiada atrybuty: int N –rozmiar tablicy podawany z klawiatury, int ile=0-liczba danych w tablicy, na początku równa 0 oraz tablice elementów typu Osoba o nazwie Dane. W metodach, które należy zdefiniować,
należy używać atrybutów klasy w sposób bezpośredni. Ciało tych metod należy zdefiniować wg wskazówek przy komentarzach do funkcji.
Uzupełnij metody klasy Baza1 o metodę sortującą wg nazwiska: sortuj_tablicę_wg_nazwiska(). Należy
wykorzystać metody do sortowania bąbelkowego z programu 2 z laboratorium3. Funkcja babelki teraz
nazywa się sortuj_tablicę_wg_nazwiska(). Wywoływana w niej metoda porownaj_zamien ma teraz postać
void porownaj_zamien(int a, int b) // przekazanie indeksów tablicy
{ if (Dane[c].porownaj_nazwisko(Dane[a]))
zamien(a, c);
} } W tym celu należy zdefiniować dodatkową metodę porownaj_nazwisko w klasie Osoba. Oznacza to że
porównanie atrybutów klasy Osoba do sortowania powinna wykonywać metoda klasy Osoba, gdyż nazwisko
jest jej atrybutem (zasada hermetyzacji)! Metoda ta powinna zwracać wynik true, gdy nazwisko w obiekcie
Dane[c] powinno być alfabetycznie przez nazwiskiem w obiekcie Dane[a], a w przeciwnym razie false.
public boolean porownaj_nazwisko (Osoba p)
{ if ( nazwisko.compareTo(p.nazwisko)<0) //metoda compareTo w klasie String działa tak funkcja strcmp w C/C++
return true;
else return false; } 3. Uzupełnij klasę Baza1 o metodę sortowanie_wg_sredniej, wg zasad podanych w punkcie 2.
To co mam:
import javax.swing.*;
import java.util.*;
class Osoba
{ String nazwisko;
float srednia;
String uwagi;
static int ile_obiektow = 0;
public void Inicjuj()
{ ile_obiektow++;}
public void Nadaj_nazwisko(String lan)
{ nazwisko=lan;}
public String Podaj_nazwisko()
{ return nazwisko;}
public void Nadaj_uwagi(String lan)
{ uwagi=lan;}
public String Podaj_uwagi()
{ return uwagi;}
public void Nadaj_srednia(float srednia_)
{ srednia=srednia_;}
public float Podaj_srednia()
{return srednia;}
public void Wstaw()
{ String S;
Inicjuj();
S = JOptionPane.showInputDialog(null, "Podaj nazwisko");
Nadaj_nazwisko(S);
S = JOptionPane.showInputDialog(null, "Podaj srednia");
Nadaj_srednia(Float.parseFloat(S));
S =JOptionPane.showInputDialog(null, "Podaj uwagi");
Nadaj_uwagi(S);
}
public void Wyswietl()
{String napis="";
napis+="\n Nazwisko: "+nazwisko;
napis+="\n srednia: "+srednia;
napis+="\n Uwagi: "+uwagi;
napis+="\n Liczba osób jest równa "+ile_obiektow;
JOptionPane.showMessageDialog(null, napis);
}
public boolean Szukaj(String s)
{ return nazwisko.equals(s);
}
}
public class Baza
{ static int N; //zmienna typu static, która w programie przechowuje aktualny rozmiar tablicy
static public void main(String args[])
{ Osoba Dane[]=null; //referencja do tablicy, która jest tworzona w opcji 1
int ile=0;
String s;
char ch;
do
{ s=JOptionPane.showInputDialog(null, "Podaj wybor"
+"\n1 - Wypelnij tablice,"
+"\n2 - Wyswietl dane osob"
+"\n3 - Wyszukaj osobe i wyswietl jej dane"
+"\nk - Koniec programu");
ch = s.charAt(0); //pobranie opcji
switch(ch)
{case '1' : s=JOptionPane.showInputDialog(null,"Podaj rozmiar tablicy");
N=Integer.parseInt(s);
Dane=new Osoba[N]; //utworzenie tablicy
for (ile=0; ile<Dane.length;ile++)
{ Dane[ile]=new Osoba(); //tworzenie elementów tablicy
Dane[ile].Wstaw();}
break;
case '2' : if (Dane!=null) //jesli tablica istnieje, to moóna wyswietlac
for (int i=0; i<ile;i++)
Dane[i].Wyswietl();
break;
case '3' : if (Dane==null) break; //jeóli tablica nie istnieje, nie moóna wyszukiwaó
s = JOptionPane.showInputDialog(null,"Podaj nazwisko");
for (int i=0; i<ile;i++)
{if (Dane[i].Szukaj(s))
Dane[i].Wyswietl();
}
break;
case 'k' : JOptionPane.showMessageDialog(null, "Koniec programu");
break;
default : JOptionPane.showMessageDialog(null,"Zla opcja");
}
}while (ch != 'k') ;
System.exit(0);
}}Kod proszę umieszczać w znacznikach code - krzychoocpp