📄 AnketAnalizBeraber.java .java dosyası
⬇️ İndir
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
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;
public class AnketAnalizBeraber {
public static String[] soruMetinleri = {
"Menü seçimi ve yemek çeşitlerinin uygunluğu",
"Yemeklerin sunuluş biçimi",
"Yemeklerin lezzeti",
"Yemeklerin sıcaklığı",
"Yemeklerin miktarı",
"Restoran personelinin davranışı",
"Servisin kalitesi",
"Temizlik ve hijyen kurallarına uyum",
"Restoranımızı tavsiye eder misiniz?"
};
private static int[][] cevapSayilari = new int[soruMetinleri.length][3];
private static int erkekSayisi = 0;
private static int kadinSayisi = 0;
private static JLabel isimLabel;
private static JLabel yasLabel;
private static JLabel cinsiyetLabel;
private static JTextField fieldIsim;
private static JTextField fieldYas;
private static JRadioButton[] cinsiyetSecenekleri;
private static JRadioButton[][] soruSecenekleri;
public AnketAnalizBeraber() {
JFrame frame = new JFrame();
frame.setTitle("Restoran Memnuniyet Anketi ve Analiz JMenu | Java Blaclboard [155]");
frame.setLayout(null);
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem anketItem = new JMenuItem("Anket");
JMenu bosItem = new JMenu("Boş"); // File altında sağa açılır menü oluşturacak.
JMenuItem analizItem = new JMenuItem("Analiz");
JMenuItem exitItem = new JMenuItem("Exit");
fileMenu.add(anketItem);
fileMenu.add(bosItem);
fileMenu.addSeparator(); // Ayırıcı ekleyelim bi tane
fileMenu.add(analizItem);
fileMenu.addSeparator(); // Ayırıcı ekleyelim bi tane
fileMenu.add(exitItem);
menuBar.add(fileMenu);
JPanel anaPanel = new JPanel();
anaPanel.setLayout(null);
anaPanel.setBackground(new Color(156, 190, 196));
anaPanel.setBounds(30, 30, 1000, 540);
anaPanel.add(anketPaneli());
// ActionListener ekleyerek "anketItem" menü öğesine tıklanınca çağrılacak metod
anketItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
anaPanel.removeAll();
anaPanel.add(anketPaneli());
anaPanel.repaint();
}
});
// ActionListener ekleyerek "analizItem" menü öğesine tıklanınca çağrılacak metod
analizItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
anaPanel.removeAll();
anaPanel.add(analizPaneli());
anaPanel.repaint();
}
});
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Yöntem 1 -> Uygulamayi kapatir.
System.exit(0);
// Yöntem 2 -> belirli bir JFrame'in kapatılmasını sağlar.
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
}
});
frame.add(anaPanel);
frame.setJMenuBar(menuBar);
frame.setSize(1060, 640);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static JPanel anketPaneli() {
JPanel anketPaneli = new JPanel();
anketPaneli.setLayout(null);
anketPaneli.setBackground(new Color(230, 225, 195));
anketPaneli.setBounds(5, 5, 990, 530);
// Giriş formu bileşenleri
isimLabel = new JLabel("İsim:");
isimLabel.setBounds(20, 20, 100, 30);
fieldIsim = new JTextField();
fieldIsim.setBounds(120, 20, 200, 30);
yasLabel = new JLabel("Yaş:");
yasLabel.setBounds(20, 50, 100, 30);
fieldYas = new JTextField();
fieldYas.setBounds(120, 50, 200, 30);
cinsiyetLabel = new JLabel("Cinsiyet:");
cinsiyetLabel.setBounds(20, 80, 100, 30);
ButtonGroup cinsiyetGrubu = new ButtonGroup();
cinsiyetSecenekleri = new JRadioButton[]{
new JRadioButton("Erkek"),
new JRadioButton("Kadın")
};
int cinsiyetX = 120;
int cinsiyetIndex = 0;
for (JRadioButton radio : cinsiyetSecenekleri) {
cinsiyetGrubu.add(radio);
cinsiyetSecenekleri[cinsiyetIndex].setBounds(cinsiyetX, 80, 100, 30);
anketPaneli.add(radio);
cinsiyetIndex++;
cinsiyetX+=100;
}
// Anket formu bileşenleri
soruSecenekleri = new JRadioButton[soruMetinleri.length][3];
JLabel[] soruLabel = new JLabel[soruMetinleri.length];
int soruY = 110;
int soruFark = 30;
for (int i = 0; i < soruMetinleri.length; i++) {
soruLabel[i] = new JLabel((i + 1) + ". " + soruMetinleri[i]);
soruLabel[i].setBounds(20, soruY, 400, 30);
anketPaneli.add(soruLabel[i]);
ButtonGroup soruGrubu = new ButtonGroup();
for (int j = 0; j < 3; j++) {
soruSecenekleri[i][j] = new JRadioButton(getSecenekMetni(j));
soruSecenekleri[i][j].setBounds(420+(100*j), soruY, 100, 30);
soruGrubu.add(soruSecenekleri[i][j]);
anketPaneli.add(soruSecenekleri[i][j]);
}
soruY+=soruFark;
}
// Bitir düğmesi
JButton butonBitir = new JButton("Bitir");
butonBitir.setBounds(20, soruY, 100, 30);
butonBitir.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
anketiKaydet();
}
});
anketPaneli.add(isimLabel);
anketPaneli.add(fieldIsim);
anketPaneli.add(yasLabel);
anketPaneli.add(fieldYas);
anketPaneli.add(cinsiyetLabel);
anketPaneli.add(butonBitir);
return anketPaneli;
}
private static String getSecenekMetni(int indeks) {
switch (indeks) {
case 0:
return "Çok İyi";
case 1:
return "İyi";
case 2:
return "Kötü";
default:
return "";
}
}
private static void anketiKaydet() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter("src/Anket.txt", true))) {
String isimYasCinsiyet = fieldIsim.getText() + "," + fieldYas.getText() + ","+ secilenCinsiyet();
String cevap = "";
for (int i = 0; i < soruMetinleri.length; i++) {
cevap = cevap + "," + secilenSoruCevabi(soruSecenekleri[i]);
}
writer.write(isimYasCinsiyet + cevap + "\n");
JOptionPane.showMessageDialog(null, "Anket başarıyla kaydedildi!");
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Anket kaydedilirken bir hata oluştu.");
}
}
private static String secilenCinsiyet() {
for (JRadioButton radio : cinsiyetSecenekleri) {
if (radio.isSelected()) {
return radio.getText();
}
}
return "Cinsiyet seçilmedi";
}
private static String secilenSoruCevabi(JRadioButton[] secenekler) {
for (JRadioButton radio : secenekler) {
if (radio.isSelected()) {
return radio.getText();
}
}
return "-1";
}
public static JPanel analizPaneli() {
JPanel anketPaneli = new JPanel();
anketPaneli.setLayout(null);
anketPaneli.setBackground(new Color(230, 225, 195));
anketPaneli.setBounds(5, 5, 990, 530);
Font font = new Font("Ubuntu", Font.PLAIN, 29);
// Anket.txt dosyasi her seferinde bastan okundugu için
// variable degerlerini SIFIRLIYORUZ.
erkekSayisi = 0;
kadinSayisi = 0;
for(int i = 0 ; i< soruMetinleri.length ; i++) {
for (int j = 0 ; j < 3 ; j++) {
cevapSayilari[i][j] = 0;
}
}
String[] anketDizisi = analizYap("src/Anket.txt");
JLabel[] labelVeriInfo = new JLabel[anketDizisi.length+1];
labelVeriInfo[0] = new JLabel("Erkek " + erkekSayisi + " Kadın " + kadinSayisi);
labelVeriInfo[0].setFont(font);
labelVeriInfo[0].setBounds(30, 30, 960, 50);
anketPaneli.add(labelVeriInfo[0]);
for (int i=0 ; i < anketDizisi.length ; i++) {
// System.out.println(anketDizisi[i] + "\n");
labelVeriInfo[i]=new JLabel(anketDizisi[i]);
labelVeriInfo[i].setFont(font);
labelVeriInfo[i].setBounds(30, 80+(i*45), 960, 50);
anketPaneli.add(labelVeriInfo[i]);
}
return anketPaneli;
}
public static String[] analizYap(String dosyaYolu) {
try (BufferedReader okuyucu = new BufferedReader(new FileReader(dosyaYolu))) {
String satir;
while ((satir = okuyucu.readLine()) != null) {
String[] parcalar = satir.split(",");
// Cinsiyeti kontrol et
if (parcalar[2].equals("Erkek")) {
erkekSayisi++;
} else if (parcalar[2].equals("Kadın")) {
kadinSayisi++;
}
// Cevaplari al
for (int i = 3; i < parcalar.length; i++) {
if (parcalar[i].equals("Çok İyi")) {
cevapSayilari[i - 3][0]++;
} else if (parcalar[i].equals("İyi")) {
cevapSayilari[i - 3][1]++;
} else if (parcalar[i].equals("Kötü")) {
cevapSayilari[i - 3][2]++;
}
}
}
// Sonuçları oluştur
String[] sonuclar = new String[soruMetinleri.length];
for (int i = 0; i < soruMetinleri.length; i++) {
sonuclar[i] = String.format("%s: %d çok iyi, %d iyi, %d kötü",
soruMetinleri[i], cevapSayilari[i][0], cevapSayilari[i][1], cevapSayilari[i][2]);
}
return sonuclar;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
new AnketAnalizBeraber();
}
}