📄 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();
}
}