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