📄 JavaSinifAsistani.java .java dosyası

⬇️ İndir
/* * LapisClass v2.1 | Java Sınıf Takip Asistanı * * Java Blackboard YouTube kanali üzerinden yayinlandi : Ekim / 2023 * * Bu kodlar GPL altında yayınlanan bir Java yazılımıdır. * GPL-3.0-or-later olarak lisanslanmistir. * * CC BY-NC-SA Atıf-GayriTicari-AynıLisanslaPaylaş (Attribution-NonCommercial-ShareAlike) * */ import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; public class JavaSinifAsistani { public static JPanel anaPanel; public static String okulIlIlce = "KADIKÖY"; public static String okulAdiBirinciSatir = "JAVA BLACKBOARD"; public static String okulAdiIkinciSatir = "ORTA OKULU"; public static String dersAdi = "Matematik"; public static String[] sinif = { "5/A", "5/B", "6/A" }; public static String[] kayitDosyasi = new String[6]; public static String[][] listeSube5A; public static String[][] listeSube5B; public static String[][] listeSube6A; public static String[][] notlarSube5A; public static String[][] notlarSube5B; public static String[][] notlarSube6A; public static JLabel labelOgrenciResmi; public static int anaPanelYukseklik = 2500; public JavaSinifAsistani() { JFrame frame = new JFrame("LapisClass v2.1 | Java Sınıf Takip Asistanı | Java Blackboard [141]"); frame.setLayout(null); durumKontrol(); anaPanel = new JPanel(); anaPanel.setLayout(null); anaPanel.setBackground(background("anaPanel")); anaPanel.setPreferredSize(new Dimension(900, anaPanelYukseklik)); anaPanel.add(menuPaneli()); anaPanel.add(okulTabelaPaneli()); anaPanel.add(karsilamaPaneli()); JScrollPane anaPanelScroll = new JScrollPane(anaPanel); anaPanelScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); anaPanelScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); anaPanelScroll.setBounds(50, 50, 900, 600); frame.add(anaPanelScroll); frame.setSize(1000, 722); frame.setLocationRelativeTo(null); frame.getContentPane().setBackground(background("frame")); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); frame.setVisible(true); } public static void durumKontrol() { // Bu void türü metod program ilk açıldığında TXT dosya kontrolü yapar. // Eğer TXT dosyalarımız yoksa program hatasız çalışsın diye // önce onları oluşturur. kayitDosyasi[0] = "ogrenciBilgileri5A.txt"; kayitDosyasi[1] = "ogrenciBilgileri5B.txt"; kayitDosyasi[2] = "ogrenciBilgileri6A.txt"; kayitDosyasi[3] = "ogrenciNotlari5A.txt"; kayitDosyasi[4] = "ogrenciNotlari5B.txt"; kayitDosyasi[5] = "ogrenciNotlari6A.txt"; String dosyaYolu = "src/data/"; // Dosyaların bulunduğu dizin yolu for (String dosya : kayitDosyasi) { File dosyaObjesi = new File(dosyaYolu + dosya); if (!dosyaObjesi.exists()) { try { dosyaObjesi.createNewFile(); System.out.println(dosya + " dosyası oluşturuldu."); } catch (IOException e) { System.err.println("Hata: " + e.getMessage()); } } } // Dosya içinde veri varsa String[][] diziye alalim String dosyaListe5A = dosyaYolu + "ogrenciBilgileri5A.txt"; String dosyaListe5B = dosyaYolu + "ogrenciBilgileri5B.txt"; String dosyaListe6A = dosyaYolu + "ogrenciBilgileri6A.txt"; ArrayList<String[]> liste5A = new ArrayList<>(); ArrayList<String[]> liste5B = new ArrayList<>(); ArrayList<String[]> liste6A = new ArrayList<>(); // 5A Sınıf Listesini aliyoruz. try (BufferedReader br = new BufferedReader(new FileReader(dosyaListe5A))) { String line; while ((line = br.readLine()) != null) { String[] ogrenciBilgileri = line.split(","); liste5A.add(ogrenciBilgileri); } } catch (IOException e) { e.printStackTrace(); } // Dosyadan okunan verileri 5A String[][] dizisine aktaralim listeSube5A = new String[liste5A.size()][]; liste5A.toArray(listeSube5A); // 5B Sınıf Listesini aliyoruz. try (BufferedReader br = new BufferedReader(new FileReader(dosyaListe5B))) { String line; while ((line = br.readLine()) != null) { String[] ogrenciBilgileri = line.split(","); liste5B.add(ogrenciBilgileri); } } catch (IOException e) { e.printStackTrace(); } // Dosyadan okunan verileri 5B String[][] dizisine aktaralim listeSube5B = new String[liste5B.size()][]; liste5B.toArray(listeSube5B); // 6A Sınıf Listesini aliyoruz. try (BufferedReader br = new BufferedReader(new FileReader(dosyaListe6A))) { String line; while ((line = br.readLine()) != null) { String[] ogrenciBilgileri = line.split(","); liste6A.add(ogrenciBilgileri); } } catch (IOException e) { e.printStackTrace(); } // Dosyadan okunan verileri 6A String[][] dizisine aktaralim listeSube6A = new String[liste6A.size()][]; liste6A.toArray(listeSube6A); // Simdide ögrenci notlatini aliyoruz. String dosyaNot5A = dosyaYolu + "ogrenciNotlari5A.txt"; String dosyaNot5B = dosyaYolu + "ogrenciNotlari5B.txt"; String dosyaNot6A = dosyaYolu + "ogrenciNotlari6A.txt"; ArrayList<String[]> not5A = new ArrayList<>(); ArrayList<String[]> not5B = new ArrayList<>(); ArrayList<String[]> not6A = new ArrayList<>(); // 5A Sınıf Notlarını alıyoruz. try (BufferedReader br = new BufferedReader(new FileReader(dosyaNot5A))) { String line; while ((line = br.readLine()) != null) { String[] ogrenciBilgileri = line.split(","); not5A.add(ogrenciBilgileri); } } catch (IOException e) { e.printStackTrace(); } // Dosyadan okunan verileri 5A String[][] dizisine aktaralim notlarSube5A = new String[not5A.size()][]; not5A.toArray(notlarSube5A); // 5B Sınıf Notlarını alıyoruz. try (BufferedReader br = new BufferedReader(new FileReader(dosyaNot5B))) { String line; while ((line = br.readLine()) != null) { String[] ogrenciBilgileri = line.split(","); not5B.add(ogrenciBilgileri); } } catch (IOException e) { e.printStackTrace(); } // Dosyadan okunan verileri 5B String[][] dizisine aktaralim notlarSube5B = new String[not5B.size()][]; not5B.toArray(notlarSube5B); // 6A Sınıf Notlarını alıyoruz. try (BufferedReader br = new BufferedReader(new FileReader(dosyaNot6A))) { String line; while ((line = br.readLine()) != null) { String[] ogrenciBilgileri = line.split(","); not6A.add(ogrenciBilgileri); } } catch (IOException e) { e.printStackTrace(); } // Dosyadan okunan verileri 6A String[][] dizisine aktaralim notlarSube6A = new String[not6A.size()][]; not6A.toArray(notlarSube6A); } public static JPanel menuPaneli() { // Menümüzü bu panel ile gösteriyoruz. // butonlarimizin oldugu pabel. JPanel panel = new JPanel(); panel.setLayout(null); panel.setBackground(background("menuPaneli")); panel.setBounds(20, 20, 150, 400); int startX = 10; int startY = 20; int x = startX; int y = startY; int genislik = 130; int yukseklik = 30; int farkX = 0; int farkY = 35; JLabel labelDersAdi = new JLabel(dersAdi); labelDersAdi.setFont(font("labelDersAdi")); labelDersAdi.setHorizontalAlignment(JLabel.CENTER); labelDersAdi.setBounds(0, y, 150, yukseklik); y = y + farkY; JButton butonOgrenciKayit = new JButton("Öğrenci Kayıt"); butonOgrenciKayit.setBounds(x, y, genislik, yukseklik); y = y + farkY; JButton butonNotGir5A = new JButton("5/A Not Gir"); butonNotGir5A.setBounds(x, y, genislik, yukseklik); y = y + farkY; JButton butonNotGir5B = new JButton("5/B Not Gir"); butonNotGir5B.setBounds(x, y, genislik, yukseklik); y = y + farkY; JButton butonNotGir6A = new JButton("6/A Not Gir"); butonNotGir6A.setBounds(x, y, genislik, yukseklik); y = y + farkY; JButton butonListe5A = new JButton("5/A Liste"); butonListe5A.setBounds(x, y, genislik, yukseklik); y = y + farkY; JButton butonListe5B = new JButton("5/B Liste"); butonListe5B.setBounds(x, y, genislik, yukseklik); y = y + farkY; JButton butonListe6A = new JButton("6/A Liste"); butonListe6A.setBounds(x, y, genislik, yukseklik); y = y + farkY; butonOgrenciKayit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { anaPanel.removeAll(); anaPanel.add(menuPaneli()); anaPanel.add(okulTabelaPaneli()); anaPanel.add(ogrenciKayitPaneli()); anaPanel.repaint(); anaPanel.revalidate(); } }); butonListe5A.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { anaPanel.removeAll(); anaPanel.add(menuPaneli()); anaPanel.add(okulTabelaPaneli()); anaPanel.add(sinifListesiPaneli(0)); anaPanel.repaint(); anaPanel.revalidate(); } }); butonListe5B.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { anaPanel.removeAll(); anaPanel.add(menuPaneli()); anaPanel.add(okulTabelaPaneli()); anaPanel.add(sinifListesiPaneli(1)); anaPanel.repaint(); anaPanel.revalidate(); } }); butonListe6A.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { anaPanel.removeAll(); anaPanel.add(menuPaneli()); anaPanel.add(okulTabelaPaneli()); anaPanel.add(sinifListesiPaneli(2)); anaPanel.repaint(); anaPanel.revalidate(); } }); butonNotGir5A.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { anaPanel.removeAll(); anaPanel.add(menuPaneli()); anaPanel.add(okulTabelaPaneli()); anaPanel.add(notGirDuzenle(notlarSube5A)); anaPanel.repaint(); anaPanel.revalidate(); } }); butonNotGir5B.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { anaPanel.removeAll(); anaPanel.add(menuPaneli()); anaPanel.add(okulTabelaPaneli()); anaPanel.add(notGirDuzenle(notlarSube5B)); anaPanel.repaint(); anaPanel.revalidate(); } }); butonNotGir6A.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { anaPanel.removeAll(); anaPanel.add(menuPaneli()); anaPanel.add(okulTabelaPaneli()); anaPanel.add(notGirDuzenle(notlarSube6A)); anaPanel.repaint(); anaPanel.revalidate(); } }); panel.add(labelDersAdi); panel.add(butonOgrenciKayit); // Bu kısım dosya varsa butonların eklenmesi gerektiğini kontrol eder. // Eğer dosya varsa (ve içeriği boş değilse), // ilgili butonları Ekleyelim. // Eğer dosya yoksa veya içeriği boşsa buton eklemesi yapılmayacak. String dosyaYolu = "src/data/"; for (String dosyaAdi : kayitDosyasi) { Path dosyaYoluNesnesi = Paths.get(dosyaYolu + dosyaAdi); // dosyaVarMi(dosyaYoluNesnesi) metodu bize true/false döndürür. if (dosyaVarMi(dosyaYoluNesnesi)) { // Dosya varsa ilgili butonu ekrana ekleyelim. switch (dosyaAdi) { case "ogrenciBilgileri5A.txt" : panel.add(butonListe5A); break; case "ogrenciBilgileri5B.txt" : panel.add(butonListe5B); break; case "ogrenciBilgileri6A.txt" : panel.add(butonListe6A); break; case "ogrenciNotlari5A.txt" : panel.add(butonNotGir5A); break; case "ogrenciNotlari5B.txt" : panel.add(butonNotGir5B); break; case "ogrenciNotlari6A.txt" : panel.add(butonNotGir6A); break; } } } return panel; } public static boolean dosyaVarMi(Path dosyaYolu) { boolean varYok = false; try { varYok = Files.exists(dosyaYolu) && Files.isReadable(dosyaYolu) && Files.size(dosyaYolu) > 0; } catch (IOException e) { e.printStackTrace(); } return varYok; } public static JPanel okulTabelaPaneli() { // Adından da anlaşılacağı üzere okul tabelasını göstermeye yarayan panel. // images klasöründen kurumsalBosTabela.jpg dosyasını alıp // üzerine okul ismini yazıyoruz. JPanel panel = new JPanel(); panel.setLayout(null); panel.setBackground(background("logoPaneli")); panel.setBounds(190, 20, 670, 150); // Bos okul tabelasini ImageIcon'a ekliyoruz. ImageIcon okulTabelaIcon = new ImageIcon("src/images/kurumsalBosTabela.jpg"); // JLabel'a bos tabelanin ImageIcon'unu ekleyelim JLabel labelOkulAdiTabela = new JLabel(okulTabelaIcon); labelOkulAdiTabela.setBounds(0, 0, 670, 150); JLabel labelOkulIlIlce = new JLabel(okulIlIlce); labelOkulIlIlce.setFont(font("labelOkulIlIlce")); labelOkulIlIlce.setBounds(160, 20, 510, 35); JLabel labelOkulAdi = new JLabel(okulAdiBirinciSatir); labelOkulAdi.setFont(font("labelOkulIsmi")); labelOkulAdi.setBounds(160, 65, 510, 35); JLabel labelOkulAdi2 = new JLabel(okulAdiIkinciSatir); labelOkulAdi2.setFont(font("labelOkulIsmi")); labelOkulAdi2.setBounds(160, 95, 510, 35); panel.add(labelOkulIlIlce); panel.add(labelOkulAdi); panel.add(labelOkulAdi2); panel.add(labelOkulAdiTabela); return panel; } public static JPanel karsilamaPaneli() { // Uygulama ilk çalıştığında boş gelen içerik paneli. // Belki bir karşılama mesajı olabilir :) JPanel panel = new JPanel(); panel.setLayout(null); panel.setBackground(background("icerikPaneli")); JLabel labelKarsilamaMesaji = new JLabel("Hoşgeldiniz. 5/A 5/B 6/A Sınıf işlemleri"); labelKarsilamaMesaji.setFont(font("labelOgrenciAdSoyad")); labelKarsilamaMesaji.setBounds(50, 50, 500, 30); panel.add(labelKarsilamaMesaji); panel.setBounds(190, 190, 670, 400); return panel; } public static JPanel ogrenciKayitPaneli() { JPanel panel = new JPanel(); panel.setLayout(null); panel.setBackground(background("icerikPaneli")); panel.setBounds(190, 190, 670, 500); int startX = 20; int startY = 20; int x = startX; int y = startY; int genislikLabel = 150; int genislikButon = 100; int genislikField = 350; int yukseklik = 35; int farkX = 10; int farkY = 40; // Resmi bir JLabel içinde görüntüleyelim labelOgrenciResmi = new JLabel(vesikalik105x135 ("src/images/defaultOgrenciVesikalik.jpg")); labelOgrenciResmi.setBounds(550, 20, 105, 135); // Sınıf, ad, soyad, öğrenci numarası gibi bilgilerin alinmasi burada yapilacak. JLabel labelSinif = new JLabel("Öğrencinin Sınıfı:"); labelSinif.setFont(font("labelRegular")); labelSinif.setHorizontalAlignment(JLabel.RIGHT); labelSinif.setBounds(x, y, genislikLabel, yukseklik); x = startX + farkX + genislikLabel; JComboBox comboSinif = new JComboBox(sinif); comboSinif.setFont(font("labelRegular")); comboSinif.setBounds(x, y, genislikField, yukseklik); x = startX; y = y + farkY; JLabel labelOgrenciNo = new JLabel("Öğrenci No:"); labelOgrenciNo.setFont(font("labelRegular")); labelOgrenciNo.setHorizontalAlignment(JLabel.RIGHT); labelOgrenciNo.setBounds(x, y, genislikLabel, yukseklik); x = startX + farkX + genislikLabel; JTextField fieldOgrenciNo = new JTextField(); fieldOgrenciNo.setFont(font("labelRegular")); fieldOgrenciNo.setBounds(x, y, genislikField, yukseklik); x = startX; y = y + farkY; JLabel labelOgrenciAdi = new JLabel("Öğrenci Adı:"); labelOgrenciAdi.setFont(font("labelRegular")); labelOgrenciAdi.setHorizontalAlignment(JLabel.RIGHT); labelOgrenciAdi.setBounds(x, y, genislikLabel, yukseklik); x = startX + farkX + genislikLabel; JTextField fieldOgrenciAdi = new JTextField(); fieldOgrenciAdi.setFont(font("labelRegular")); fieldOgrenciAdi.setBounds(x, y, genislikField, yukseklik); x = startX; y = y + farkY; JLabel labelOgrenciSoyadi = new JLabel("Öğrenci Soyadı:"); labelOgrenciSoyadi.setFont(font("labelRegular")); labelOgrenciSoyadi.setHorizontalAlignment(JLabel.RIGHT); labelOgrenciSoyadi.setBounds(x, y, genislikLabel, yukseklik); x = startX + farkX + genislikLabel; JTextField fieldOgrenciSoyadi = new JTextField(); fieldOgrenciSoyadi.setFont(font("labelRegular")); fieldOgrenciSoyadi.setBounds(x, y, genislikField, yukseklik); x = startX; y = y + farkY; JLabel labelResimSec = new JLabel("Öğrenci Resmi:"); labelResimSec.setFont(font("labelRegular")); labelResimSec.setHorizontalAlignment(JLabel.RIGHT); labelResimSec.setBounds(x, y, genislikLabel, yukseklik); x = startX + farkX + genislikLabel; // Vesikalik için dosya seçiciyi oluşturuyoruz JFileChooser fileChooser = new JFileChooser(); // İlk açılışta masaüstünü varsayılan dizin olarak ayarlayalım // ama vesikalık fotograflarin hepsi de src/images/vesikalik/ klasörü içinde olsun. // vesikalik klasörü içinden resim seçin. // Lunux Mac OS X ve Windows isletim sistemlerinde dosya yollari farkli olacagi için // proje içinden bir klasör gösterdik dersimizde. String desktopPath = System.getProperty("user.home") + File.separator + "Desktop" ; fileChooser.setCurrentDirectory(new File(desktopPath)); // Dosya seçiciyi açma düğmesi JButton butonResimSec = new JButton("Resim Seç"); butonResimSec.setFont(font("labelRegular")); butonResimSec.setBounds(x, y, genislikButon, yukseklik); x = x + genislikButon + 10; JTextField fieldDosyaAdi = new JTextField("dosyaAdi.jpg"); fieldDosyaAdi.setEditable(false); fieldDosyaAdi.setFont(font("labelRegular")); // Metin rengini GRI ayarlayalim ki editible FALSE oldugu anlasilsin. fieldDosyaAdi.setForeground(Color.GRAY); fieldDosyaAdi.setBounds(x, y, genislikField-(genislikButon+10), yukseklik); x = startX; y = y + farkY; JLabel labelOgrenciDogumYili = new JLabel("Öğrenci Doğum Yılı:"); labelOgrenciDogumYili.setFont(font("labelRegular")); labelOgrenciDogumYili.setHorizontalAlignment(JLabel.RIGHT); labelOgrenciDogumYili.setBounds(x, y, genislikLabel, yukseklik); x = startX + farkX + genislikLabel; String[] yil = {"2008" ,"2009", "2010", "2011", "2012"}; JComboBox comboOgrenciDogumYili = new JComboBox(yil); comboOgrenciDogumYili.setFont(font("labelRegular")); comboOgrenciDogumYili.setBounds(x, y, genislikField, yukseklik); x = startX; y = y + farkY; JLabel labelOgrenciCinsiyet = new JLabel("Öğrencinin Cinsiyeti:"); labelOgrenciCinsiyet.setFont(font("labelRegular")); labelOgrenciCinsiyet.setHorizontalAlignment(JLabel.RIGHT); labelOgrenciCinsiyet.setBounds(x, y, genislikLabel, yukseklik); x = startX + farkX + genislikLabel; String[] cinsiyet = {"Erkek", "Kız"}; JComboBox comboCinsiyet = new JComboBox(cinsiyet); comboCinsiyet.setFont(font("labelRegular")); comboCinsiyet.setBounds(x, y, genislikField, yukseklik); x = startX; y = y + farkY; JLabel labelEpostaAdresi = new JLabel("Öğrenci Eposta:"); labelEpostaAdresi.setFont(font("labelRegular")); labelEpostaAdresi.setHorizontalAlignment(JLabel.RIGHT); labelEpostaAdresi.setBounds(x, y, genislikLabel, yukseklik); x = startX + farkX + genislikLabel; JTextField fieldEpostaAdresi = new JTextField(); fieldEpostaAdresi.setFont(font("labelRegular")); fieldEpostaAdresi.setBounds(x, y, genislikField, yukseklik); x = startX; y = y + farkY; JLabel labelTelefonNumarasi = new JLabel("Öğrenci Telefon:"); labelTelefonNumarasi.setFont(font("labelRegular")); labelTelefonNumarasi.setHorizontalAlignment(JLabel.RIGHT); labelTelefonNumarasi.setBounds(x, y, genislikLabel, yukseklik); x = startX + farkX + genislikLabel; JTextField fieldTelefonNumarasi = new JTextField(); fieldTelefonNumarasi.setFont(font("labelRegular")); fieldTelefonNumarasi.setBounds(x, y, genislikField, yukseklik); // x = startX; y = y + farkY + 10; // Son buton için 10 fark ekledik. JButton butonKaydet = new JButton("Kaydet"); butonKaydet.setFont(font("labelRegular")); butonKaydet.setBounds(x, y, genislikButon, yukseklik); butonResimSec.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { panel.remove(labelOgrenciResmi); String secilenDosyaYolu = "src/images/hata.jpg"; int returnValue = fileChooser.showOpenDialog(null); // Kullanıcı bir dosya seçtiyse if (returnValue == JFileChooser.APPROVE_OPTION) { // Seçilen dosyanın yolunu alın secilenDosyaYolu = fileChooser.getSelectedFile().getPath(); // Burada seçilen dosya yolu ile ne yapmak istiyorsanız yapabilirsiniz // Örneğin, bu yolu öğrenci bilgilerine bağlayabilirsiniz. // Burada seçilen dosya türünü kontrol edin (örneğin, .jpg) if (secilenDosyaYolu.toLowerCase().endsWith(".jpg")) { // Seçilen dosya bir .jpg ise, resmi görüntüleyin labelOgrenciResmi.setIcon(vesikalik105x135(secilenDosyaYolu)); File secilenDosya = new File(secilenDosyaYolu); String vesikalikDosyaAdi = secilenDosya.getName(); fieldDosyaAdi.setText(vesikalikDosyaAdi); } else { // Seçilen dosya .jpg değilse, hata mesajı görüntüleyin ve varsayılan resmi gösterin labelOgrenciResmi.setIcon(vesikalik105x135("src/images/hata.jpg")); JOptionPane.showMessageDialog(null, "Geçersiz dosya türü! Sadece .jpg dosyaları desteklenir.", "Hata", JOptionPane.ERROR_MESSAGE); } panel.add(labelOgrenciResmi); panel.revalidate(); panel.repaint(); } else { labelOgrenciResmi.setIcon(vesikalik105x135 (secilenDosyaYolu)); panel.add(labelOgrenciResmi); panel.revalidate(); panel.repaint(); } } }); butonKaydet.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { anaPanel.removeAll(); // Ögrenci bilgileri String infoSinif = (String) comboSinif.getSelectedItem(); String infoNo = fieldOgrenciNo.getText(); String infoAdi = fieldOgrenciAdi.getText(); String infoSoyadi = fieldOgrenciSoyadi.getText(); String infoVesikalik = fieldDosyaAdi.getText(); String infoDogumyili = (String) comboOgrenciDogumYili.getSelectedItem(); String infoCinsiyet = (String) comboCinsiyet.getSelectedItem(); String infoEposta = fieldEpostaAdresi.getText(); String infoTelefon = fieldTelefonNumarasi.getText(); String formInfo = infoSinif + "," + infoNo + "," + infoAdi + "," + infoSoyadi + "," + infoVesikalik + "," + infoDogumyili + "," + infoCinsiyet + "," + infoEposta + "," + infoTelefon + "\n"; try { String dosyaAdi = ""; if (infoSinif.equals("5/A")) dosyaAdi = "5A"; if (infoSinif.equals("5/B")) dosyaAdi = "5B"; if (infoSinif.equals("6/A")) dosyaAdi = "6A"; FileWriter dosyaOgrenciBilgileri = new FileWriter("src/data/ogrenciBilgileri"+dosyaAdi+".txt", true); BufferedWriter dosyaKayit = new BufferedWriter(dosyaOgrenciBilgileri); // Öğrenci bilgilerini dosyaya yazalım dosyaKayit.write(formInfo); dosyaKayit.close(); } catch (IOException ex) { ex.printStackTrace(); } String formInfoNot = infoSinif + "," + infoNo + "," + infoAdi + "," + infoSoyadi + ",0" + ",0" + ",0" + "\n"; try { if (infoSinif.equals("5/A")) { FileWriter dosyaOgrenciNotBilgileri = new FileWriter("src/data/ogrenciNotlari5A.txt", true); BufferedWriter dosyaNotKayit = new BufferedWriter(dosyaOgrenciNotBilgileri); // Öğrenci bilgilerini dosyaya yazalım dosyaNotKayit.write(formInfoNot); dosyaNotKayit.close(); durumKontrol(); } else if (infoSinif.equals("5/B")) { FileWriter dosyaOgrenciNotBilgileri = new FileWriter("src/data/ogrenciNotlari5B.txt", true); BufferedWriter dosyaNotKayit = new BufferedWriter(dosyaOgrenciNotBilgileri); // Öğrenci bilgilerini dosyaya yazalım dosyaNotKayit.write(formInfoNot); dosyaNotKayit.close(); } else if (infoSinif.equals("6/A")) { FileWriter dosyaOgrenciNotBilgileri = new FileWriter("src/data/ogrenciNotlari6A.txt", true); BufferedWriter dosyaNotKayit = new BufferedWriter(dosyaOgrenciNotBilgileri); // Öğrenci bilgilerini dosyaya yazalım dosyaNotKayit.write(formInfoNot); dosyaNotKayit.close(); } } catch (IOException ex) { ex.printStackTrace(); } comboSinif.setSelectedIndex(0); fieldOgrenciNo.setText(""); fieldOgrenciAdi.setText(""); fieldOgrenciSoyadi.setText(""); fieldDosyaAdi.setText(""); comboOgrenciDogumYili.setSelectedIndex(0); comboCinsiyet.setSelectedIndex(0); fieldEpostaAdresi.setText(""); fieldTelefonNumarasi.setText(""); anaPanel.add(menuPaneli()); anaPanel.add(okulTabelaPaneli()); anaPanel.add(ogrenciKayitPaneli()); durumKontrol(); anaPanel.revalidate(); anaPanel.repaint(); } }); panel.add(labelOgrenciResmi); panel.add(labelOgrenciNo); panel.add(fieldOgrenciNo); panel.add(labelSinif); panel.add(comboSinif); panel.add(labelOgrenciAdi); panel.add(fieldOgrenciAdi); panel.add(labelOgrenciSoyadi); panel.add(fieldOgrenciSoyadi); panel.add(labelResimSec); panel.add(butonResimSec); panel.add(fieldDosyaAdi); panel.add(labelOgrenciDogumYili); panel.add(comboOgrenciDogumYili); panel.add(labelOgrenciCinsiyet); panel.add(comboCinsiyet); panel.add(labelEpostaAdresi); panel.add(fieldEpostaAdresi); panel.add(labelTelefonNumarasi); panel.add(fieldTelefonNumarasi); panel.add(butonKaydet); return panel; } public static JPanel sinifListesiPaneli(int sinif) { // integer deger alip ilgili sinifin ogrenci listesini gosterecegiz. // parametre : 0 - 5/A // parametre : 1 - 5/B // parametre : 2 - 6/A String sube = ""; int mevcudiyet = 0; String[][] ilgiliSinifListesi = null; switch (sinif) { case 0 : sube = "5/A"; mevcudiyet = listeSube5A.length; ilgiliSinifListesi = new String[mevcudiyet][9]; ilgiliSinifListesi = listeSube5A; break; case 1 : sube = "5/B"; mevcudiyet = listeSube5B.length; ilgiliSinifListesi = new String[mevcudiyet][9]; ilgiliSinifListesi = listeSube5B; break; case 2 : sube = "6/A"; mevcudiyet = listeSube6A.length;; ilgiliSinifListesi = new String[mevcudiyet][9]; ilgiliSinifListesi = listeSube6A; break; } JPanel panel = new JPanel(); panel.setLayout(null); panel.setBackground(background("icerikPaneli")); panel.setBounds(190, 190, 670, anaPanelYukseklik-210); // -210 ile içerik panelinin anaPanelin içinde kalmasini sagliyoruz. int startX = 20; int startY = 20; int x = startX; int y = startY; int genislikLabel = 150; int genislikButon = 100; int genislikField = 350; int yukseklik = 35; int farkX = 10; int farkY = 40; File dosyaSubeKodu = new File("src/images/SinifSube.jpg"); Image imageYuklenenSubeKodu = null; try { imageYuklenenSubeKodu = ImageIO.read(dosyaSubeKodu); } catch (IOException e1) { e1.printStackTrace(); } ImageIcon imageIconSubeKodu = new ImageIcon(imageYuklenenSubeKodu); JLabel labelSubeKoduTabela = new JLabel(imageIconSubeKodu); labelSubeKoduTabela.setBounds(20, 20, 320, 96); JLabel labelSinifSubeKodu = new JLabel(sube); labelSinifSubeKodu.setFont(font("labelSubeKoduTabela")); labelSinifSubeKodu.setBounds(50, 42, 100, 50); JLabel labelSinifMevcudu = new JLabel("Sınıf Mevcudu"); labelSinifMevcudu.setFont(font("labelSubeMevcuduTabela")); labelSinifMevcudu.setHorizontalAlignment(JLabel.CENTER); labelSinifMevcudu.setBounds(150, 30, 200, 20); JLabel labelSinifSubeMevcudu = new JLabel(""+mevcudiyet); labelSinifSubeMevcudu.setFont(font("labelSubeKoduTabela")); labelSinifSubeMevcudu.setHorizontalAlignment(JLabel.CENTER); labelSinifSubeMevcudu.setBounds(150, 50, 200, 50); // Ogrencilerin vesikalik fotograflarinin yolu String vesikalikYolu = "src/images/vesikalik/"; // dosyaismi.jpg JLabel[] labelOgrenciVesikalik = new JLabel[mevcudiyet]; JLabel[] labelOgrenciAdSoyad = new JLabel[mevcudiyet]; JLabel[] labelOgrenciNo = new JLabel[mevcudiyet]; JLabel[] labelOgrenciInfo = new JLabel[mevcudiyet]; mevcudiyet = ilgiliSinifListesi.length; for (int i=0 ; i<mevcudiyet ; i++) { labelOgrenciVesikalik[i] = new JLabel(vesikalik105x135 (vesikalikYolu+ilgiliSinifListesi[i][4])); labelOgrenciVesikalik[i].setBounds(20, 130+(i*155), 105, 135); panel.add(labelOgrenciVesikalik[i]); labelOgrenciAdSoyad[i] = new JLabel(ilgiliSinifListesi[i][2] + " " + ilgiliSinifListesi[i][3]); labelOgrenciAdSoyad[i].setFont(font("labelOgrenciAdSoyad")); labelOgrenciAdSoyad[i].setBounds(135, 130+(i*155), 500, 30); panel.add(labelOgrenciAdSoyad[i]); labelOgrenciNo[i] = new JLabel(ilgiliSinifListesi[i][1]); labelOgrenciNo[i].setFont(font("labelSubeKoduTabela")); labelOgrenciNo[i].setBounds(135, 170+(i*155), 105, 50); panel.add(labelOgrenciNo[i]); String labelOgrenciInfoSatiri = ilgiliSinifListesi[i][5] + " / " + ilgiliSinifListesi[i][6] + " / " + ilgiliSinifListesi[i][7] + " / " + ilgiliSinifListesi[i][8]; labelOgrenciInfo[i] = new JLabel(labelOgrenciInfoSatiri); labelOgrenciInfo[i].setFont(font("labelOgrenciInfo")); labelOgrenciInfo[i].setBounds(135, 240+(i*155), 500, 30); panel.add(labelOgrenciInfo[i]); } panel.add(labelSinifSubeKodu); panel.add(labelSinifMevcudu); panel.add(labelSinifSubeMevcudu); panel.add(labelSubeKoduTabela); return panel; } public static JPanel notGirDuzenle(String[][] sinifNot) { // Iki boyutlu Sitring[][] dizi ile sinifin not listesini gosterecegiz. // Dizinin ilk elemani yani inde : [0][0] subeyi veriyor. String sinifSubesi = sinifNot[0][0]; int sinifMevcudu = sinifNot.length; JPanel panel = new JPanel(); panel.setLayout(null); panel.setBackground(background("icerikPaneli")); panel.setBounds(190, 190, 670, anaPanelYukseklik-210); int startX = 20; int startY = 130; int x = startX; int y = startY; int genislikLabel = 250; int genislikButon = 100; int genislikField = 60; int yukseklik = 35; int farkX = 10; int farkY = 40; File dosyaSubeKodu = new File("src/images/SinifSube.jpg"); Image imageYuklenenSubeKodu = null; try { imageYuklenenSubeKodu = ImageIO.read(dosyaSubeKodu); } catch (IOException e1) { e1.printStackTrace(); } ImageIcon imageIconSubeKodu = new ImageIcon(imageYuklenenSubeKodu); JLabel labelSubeKoduTabela = new JLabel(imageIconSubeKodu); labelSubeKoduTabela.setBounds(20, 20, 320, 96); JLabel labelSinifSubeKodu = new JLabel(sinifSubesi); labelSinifSubeKodu.setFont(font("labelSubeKoduTabela")); labelSinifSubeKodu.setBounds(50, 42, 100, 50); JLabel labelSinifMevcudu = new JLabel("Sınıf Mevcudu"); labelSinifMevcudu.setFont(font("labelSubeMevcuduTabela")); labelSinifMevcudu.setHorizontalAlignment(JLabel.CENTER); labelSinifMevcudu.setBounds(150, 30, 200, 20); JLabel labelSinifSubeMevcudu = new JLabel(""+sinifMevcudu); labelSinifSubeMevcudu.setFont(font("labelSubeKoduTabela")); labelSinifSubeMevcudu.setHorizontalAlignment(JLabel.CENTER); labelSinifSubeMevcudu.setBounds(150, 50, 200, 50); JButton butonNotKaydet = new JButton("Kaydet"); butonNotKaydet.setBounds(550, 80, genislikButon, yukseklik); JLabel[] labelOgrenciAdSoyadNo = new JLabel[sinifMevcudu]; JLabel[] labelOgrenciNo = new JLabel[sinifMevcudu]; // Bu String[]'ler actionListener'da da lazim olacak. String[] ogrenciOkulNo = new String[sinifMevcudu]; String[] ogrenciAdi = new String[sinifMevcudu]; String[] ogrenciSoyadi = new String[sinifMevcudu]; // Sinav notu girisleri JTextField[] fieldSinav1 = new JTextField[sinifMevcudu]; JTextField[] fieldSinav2 = new JTextField[sinifMevcudu]; JTextField[] fieldSinav3 = new JTextField[sinifMevcudu]; for(int i=0 ; i<sinifMevcudu ; i++) { ogrenciOkulNo[i] = new String(sinifNot[i][1]); ogrenciAdi[i] = new String(sinifNot[i][2]); ogrenciSoyadi[i] = new String(sinifNot[i][3]); labelOgrenciAdSoyadNo[i] = new JLabel(ogrenciOkulNo[i] + " " + ogrenciAdi[i] +" "+ ogrenciSoyadi[i]); labelOgrenciAdSoyadNo[i].setFont(font("labelOgrenciNotu")); labelOgrenciAdSoyadNo[i].setBounds(x, y+(i*40), genislikLabel, 30); panel.add(labelOgrenciAdSoyadNo[i]); x = x+genislikLabel+farkX; fieldSinav1[i] = new JTextField(sinifNot[i][4]+""); fieldSinav1[i].setFont(font("labelOgrenciNotu")); fieldSinav1[i].setHorizontalAlignment(JTextField.CENTER); fieldSinav1[i].setBounds(x, y+(i*40), genislikField, 30); panel.add(fieldSinav1[i]); x = x+genislikField+farkX; fieldSinav2[i] = new JTextField(sinifNot[i][5]+""); fieldSinav2[i].setFont(font("labelOgrenciNotu")); fieldSinav2[i].setHorizontalAlignment(JTextField.CENTER); fieldSinav2[i].setBounds(x, y+(i*40), genislikField, 30); panel.add(fieldSinav2[i]); x = x+genislikField+farkX; fieldSinav3[i] = new JTextField(sinifNot[i][6]+""); fieldSinav3[i].setFont(font("labelOgrenciNotu")); fieldSinav3[i].setHorizontalAlignment(JTextField.CENTER); fieldSinav3[i].setBounds(x, y+(i*40), genislikField, 30); panel.add(fieldSinav3[i]); x = startX; } panel.add(labelSinifSubeKodu); panel.add(labelSinifMevcudu); panel.add(labelSinifSubeMevcudu); panel.add(labelSubeKoduTabela); panel.add(butonNotKaydet); butonNotKaydet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Dosyanın yolu String dosyaYolu = ""; if (sinifSubesi.equals("5/A")) dosyaYolu = "src/data/ogrenciNotlari5A.txt"; if (sinifSubesi.equals("5/B")) dosyaYolu = "src/data/ogrenciNotlari5B.txt"; if (sinifSubesi.equals("6/A")) dosyaYolu = "src/data/ogrenciNotlari6A.txt"; // Ögrenci sinav bilgileri String[] yaziliNotu1 = new String[sinifMevcudu]; String[] yaziliNotu2 = new String[sinifMevcudu]; String[] yaziliNotu3 = new String[sinifMevcudu]; for (int i = 0; i < sinifMevcudu; i++) { // İlgili JTextField'lardan verileri alıyoruz yaziliNotu1[i] = fieldSinav1[i].getText(); yaziliNotu2[i] = fieldSinav2[i].getText(); yaziliNotu3[i] = fieldSinav3[i].getText(); } // Eski dosyayı siliyoruz. try { Files.delete(Path.of(dosyaYolu)); } catch (IOException e1) { e1.printStackTrace(); } try { FileWriter dosyaOgrenciBilgileri = new FileWriter(dosyaYolu, true); BufferedWriter dosyaKayit = new BufferedWriter(dosyaOgrenciBilgileri); // Öğrenci notlarini field'lardan alalim: // Öğrenci bilgilerini dosyaya kaydetmek için bir döngü kullanalim for (int i = 0; i < sinifMevcudu; i++) { String satir = sinifSubesi + "," + ogrenciOkulNo[i]+ "," + ogrenciAdi[i] + "," + ogrenciSoyadi[i] + "," + yaziliNotu1[i] + "," + yaziliNotu2[i] + "," + yaziliNotu3[i]; dosyaKayit.write(satir); dosyaKayit.newLine(); // Her öğrenci için yeni bir satır ekleyin } dosyaKayit.close(); } catch (IOException ex) { ex.printStackTrace(); } durumKontrol(); } }); return panel; } public static Font font(String fontAlani) { Font font = new Font("Ubuntu", Font.PLAIN, 15); switch (fontAlani) { case "labelRegular" : font = new Font("Ubuntu", Font.PLAIN, 15); break; case "labelDersAdi": font = new Font("Ubuntu", Font.BOLD, 21); break; case "labelOkulIsmi" : font = new Font("Ubuntu", Font.BOLD, 35); break; case "labelSubeKoduTabela": font = new Font("Ubuntu", Font.BOLD, 55); break; case "labelSubeMevcuduTabela": font = new Font("Ubuntu", Font.PLAIN, 17); break; case "labelOgrenciAdSoyad": font = new Font("Ubuntu", Font.PLAIN, 27); break; case "labelOkulIlIlce": font = new Font("Ubuntu", Font.PLAIN, 35); break; case "labelOgrenciInfo": font = new Font("Ubuntu", Font.PLAIN, 15); break; case "labelOgrenciNotu": font = new Font("Ubuntu", Font.PLAIN, 21); break; } return font; } public static Color background(String renkAlani) { Color color = new Color(109, 63, 140); switch (renkAlani) { case "frame" : color = new Color(228, 231, 247); break; case "anaPanel" : color = new Color(217, 158, 50); break; case "menuPaneli" : color = new Color(242, 240, 213); break; case "icerikPaneli" : color = new Color(194, 255, 184); break; case "logoPaneli" : color = new Color(133, 211, 242); break; } return color; } public static ImageIcon vesikalik105x135 (String dosyaYolu) { // Bu metod yuklenen vesiklaligin 105x135 pixel olarak // yeniden ölçeklendirilmesini saglar. // ve resmi ImageIcon olarak return eder.. File dosyaYuklenenVesikalik = new File(dosyaYolu); Image imageYuklenenVesikalik = null; try { imageYuklenenVesikalik = ImageIO.read(dosyaYuklenenVesikalik); } catch (IOException e1) { e1.printStackTrace(); } int vesikalikGenislik = 105; int vesikalikYukseklik = 135; Image imageVesiklaik = imageYuklenenVesikalik.getScaledInstance(vesikalikGenislik, vesikalikYukseklik, Image.SCALE_DEFAULT); ImageIcon vesikalikSonHali = new ImageIcon(imageVesiklaik); return vesikalikSonHali; } public static void main(String[] args) { new JavaSinifAsistani(); } }