Witam. Mam problem z 3 rzeczami w moim programie:
- przyciski sa przycinane w polowie okna programu i nie widac ich wszystkich w oknie
- metody ktore sa przypisane do przyciskow nie dzialaja tzw naciskam przycisk i zero reakcji ze strony programu
- metoda Zapiszsqldopliku() nie dzialaja jak nalezy -> zamiast odczytac wszystko to odczytuje co drugi wiersz
Baza danych sklada sie z id, imie, pensja oraz urlop
Plik z ktorego odczytuje dane wyglada tak:
1: a pensja: 400 urlop: false
2: b pensja: 1400 urlop: true
Kod programu:
// STRUKTURA PRACOWNIKA
abstract class pracownik
{
public String imie;
public int pensja;
public boolean urlop;
public pracownik(String iImie, int iPensja, boolean iUrlop)
{
this.imie = iImie;
this.pensja = iPensja;
this.urlop = iUrlop;
}
public String wypiszstatus()
{
return "pracownik";
}
}
// RAMKA
class Ramka extends JFrame
{
public Ramka()
{
//rozmiar okna
setSize(500, 300);
//polozenie okna wzgledem ekranu
setLocation(50, 50);
//tytulu calego okna
setTitle("Obsluga pracownikow");
GridLayout g = new GridLayout(4,3);
setLayout(g);
JSrodek p1 = new JSrodek();
add(p1);
}
}
public class Pracownicy
{
public static void main(String[] args)
{
Ramka ramka = new Ramka();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.setVisible(true);
}
}
class JSrodek extends JPanel implements ActionListener
{
JButton Wyswietlpracownikow = new JButton("Wyswietl pracownikow");
JButton Dodajpracownika = new JButton("Dodaj pracownika");
JButton Dajpodwyzke = new JButton("Daj podwyzke");
JButton Przeniesnaurlop = new JButton("Przenies na urlop");
JButton Zapisdopliku = new JButton("Zapis do pliku");
JButton Usunieciepracownika = new JButton("Usuniecie pracownika");
JButton Odczytzpliku = new JButton("Odczyt z pliku");
JButton Zapiszplikudosql = new JButton("Zapis z pliku do sql");
JButton Zapiszsqldopliku = new JButton("Zapis z sql do pliku");
JSrodek()
{
add(Wyswietlpracownikow);
add(Dodajpracownika);
add(Dajpodwyzke);
add(Przeniesnaurlop);
add(Zapisdopliku);
add(Usunieciepracownika);
add(Odczytzpliku);
add(Zapiszplikudosql);
add(Zapiszsqldopliku);
}
//PRZYCISKI
public void actionPerformed (ActionEvent e)
{
List<pracownik> pracownicy = new ArrayList<pracownik>();
if (e.getSource() == Wyswietlpracownikow)
{
for (int i=0, j=1; i<pracownicy.size(); i++, j++)
{
String komunikat = "i " + j + " imie " + pracownicy.get(i).imie + " pensja " + pracownicy.get(i).pensja + " urlop " + pracownicy.get(i).urlop;
JOptionPane.showMessageDialog(null, komunikat);
}
}
if (e.getSource() == Dodajpracownika)
{
String imie;
imie = JOptionPane.showInputDialog("Podaj imie:");
int pensja;
pensja = Integer.parseInt((JOptionPane.showInputDialog("Podaj pensje:")));
pracownicy.add(new pracownik(imie, pensja, false) {});
String komunikat = "Pracownik zostal dodany";
JOptionPane.showMessageDialog(null, komunikat);
}
if (e.getSource() == Dajpodwyzke)
{
int nr = 0, pensja = 0;
nr = Integer.parseInt((JOptionPane.showInputDialog("Podaj numer pracownika ktoremu chcesz przyznac podwyzke:")));
pensja = Integer.parseInt((JOptionPane.showInputDialog("Podaj o ile podwyzszyc pensje:")));
pracownicy.get(nr-1).pensja = pracownicy.get(nr-1).pensja + pensja;
String komunikat = "Dodano podwyzke";
JOptionPane.showMessageDialog(null, komunikat);
}
if (e.getSource() == Przeniesnaurlop)
{
int nr;
nr = Integer.parseInt((JOptionPane.showInputDialog("Podaj numer pracownika ktorego chcesz przeniesc na urlop")));
pracownicy.get(nr-1).urlop = true;
String komunikat = "Pracownik zostal przeniesiony na urlop";
JOptionPane.showMessageDialog(null, komunikat);
}
if (e.getSource() == Zapisdopliku)
{
try
{
PrintWriter raport = new PrintWriter("raport.txt");
for (int i=0, j=1; i<pracownicy.size(); i++, j++)
{
raport.println(j+": "+ pracownicy.get(i).imie+ " pensja: "+pracownicy.get(i).pensja+" urlop: "+pracownicy.get(i).urlop);
}
raport.close();
String komunikat = "Zapisano pracownikow z listy do pliku";
JOptionPane.showMessageDialog(null, komunikat);
}
catch (IOException err)
{
System.out.println("blad podczas zapisu pliku");
}
}
if (e.getSource() == Usunieciepracownika)
{
int nr;
nr = Integer.parseInt((JOptionPane.showInputDialog("Podaj nr pracownika do usuniecia (0-9)")));
pracownicy.remove(nr-1);
String komunikat = "Pracownik zostal usuniety";
JOptionPane.showMessageDialog(null, komunikat);
}
if (e.getSource() == Odczytzpliku)
{
try
{
Scanner sc = new Scanner(new File("raport.txt"));
while(sc.hasNextLine())
{
String line = sc.nextLine();
Scanner sc2 = new Scanner(line);
sc2.next();
String imie = sc2.next();
sc2.next();
int pensja = sc2.nextInt();
sc2.next();
boolean urlop = sc2.nextBoolean();
pracownicy.add(new pracownik(imie,pensja,urlop) {});
}
sc.close();
String komunikat = "Zapisano pracownikow z pliku do listy";
JOptionPane.showMessageDialog(null, komunikat);
}
catch(FileNotFoundException a)
{
System.out.println("Plik raport.txt nie istnieje");
}
catch(Exception b)
{
System.out.println("Plik raport.txt jest niedostepny");
}
}
if (e.getSource() == Zapiszplikudosql)
{
try
{
String k1 = "Nawiazanie polaczenia";
JOptionPane.showMessageDialog(null, k1);
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/","postgres", "test");
String k2 = "Logowanie do bazy powiodlo sie";
JOptionPane.showMessageDialog(null, k2);
Statement st = conn.createStatement();
PreparedStatement pst;
ResultSet rs;
Scanner sc = new Scanner(new File("raport.txt"));
String k3 = "Zapis pracownikow do bazy";
JOptionPane.showMessageDialog(null, k3);
int i=1;
while(sc.hasNextLine())
{
String line = sc.nextLine();
Scanner sc2 = new Scanner(line);
sc2.next();
String imie = sc2.next();
sc2.next();
int pensja = sc2.nextInt();
sc2.next();
boolean urlop = sc2.nextBoolean();
String stm = "INSERT INTO pracownicy(id, imie, pensja, urlop) VALUES("+i+",'"+imie+"',"+pensja+","+urlop+");";
pst = conn.prepareStatement(stm);
pst.executeUpdate();
i++;
}
sc.close();
conn.close();
String k4 = "Dodano pracownikow do postgresql";
JOptionPane.showMessageDialog(null, k4);
}
catch (ClassNotFoundException a)
{
a.printStackTrace();
System.out.append("Brak sterownika");
}
//wyjatek dotyczacy z baza
catch (SQLException b)
{
b.printStackTrace();
System.out.append("Blad z POSTGRESQL / Niepoprawne dane do logowania");
}
catch(FileNotFoundException c)
{
c.printStackTrace();
System.out.println("Plik raport.txt nie istnieje");
}
}
if (e.getSource() == Zapiszsqldopliku)
{
try
{
String k1 = "Nawiazanie polaczenia";
JOptionPane.showMessageDialog(null, k1);
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/","postgres", "test");
String k2 = "Logowanie do bazy powiodlo sie";
JOptionPane.showMessageDialog(null, k2);
Statement st = conn.createStatement();
PreparedStatement pst;
ResultSet rs;
PrintWriter sc = new PrintWriter("raport.txt");
String k3 = "Zapis pracownikow do pliku";
JOptionPane.showMessageDialog(null, k3);
pst = conn.prepareStatement("SELECT * FROM pracownicy");
rs = pst.executeQuery();
while(rs.next())
{
int liczba = rs.getInt(1);
String imie = rs.getString(2);
int pensja = rs.getInt(3);
boolean urlop = rs.getBoolean(4);
sc.println(liczba+": "+ imie+ " pensja: "+pensja+" urlop: "+urlop);
rs.next();
}
conn.close();
sc.close();
String k4 = "Zapisano pracownikow do pliku";
JOptionPane.showMessageDialog(null, k4);
}
//wyjatek dotyczacy z baza
catch (ClassNotFoundException a)
{
a.printStackTrace();
System.out.append("Brak sterownika");
}
//wyjatek dotyczacy z baza
catch (SQLException a)
{
a.printStackTrace();
System.out.append("Blad z POSTGRESQL / Niepoprawne dane do logowania");
}
catch(FileNotFoundException a)
{
a.printStackTrace();
System.out.println("Plik raport.txt nie istnieje");
}
}
}
}