📄 MailHesap.java .java dosyası
⬇️ İndir
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
public class MailHesap {
public static String isim;
public static String soyad;
public static String password;
public static int passwordLength = 8;
public static String departman;
public static JComboBox departmanCombo;
public static int mailBoxKapasitesi;
public static String alternatifMail;
public static String sirketMailOnEk;
public static String sirketMailUzantisi = "kesinbisirket.com";
public static JComboBox mailBoxKotaCombo;
public static JTextField sirketMailTextField;
public static JTextField sirketMailKotaTextField;
public static JPanel anaPanel = new JPanel();
public static String[] sonucPanelGoster = new String[7];
public MailHesap() {
JFrame frame = new JFrame("Şirket İçi Mail Hesabı Oluşturma TXT Kayıt ve JTable Görüntüleme | Java Blackboard [135]");
frame.setLayout(null);
anaPanel.setLayout(null);
anaPanel.setBackground(new Color(217, 217, 217));
anaPanel.setBounds(50, 50, 900, 500);
sonucPanelGoster[0] = "mailBekleniyor.jpg";
sonucPanelGoster[1] = "İsim Soyad";
sonucPanelGoster[2] = "Departman";
sonucPanelGoster[3] = "Şirket mail";
sonucPanelGoster[4] = " 0 MB";
sonucPanelGoster[5] = "Şifre";
sonucPanelGoster[6] = "Alternatif mail";
anaPanel.add(infoPanel());
anaPanel.add(sonucPanel(sonucPanelGoster));
frame.add(anaPanel);
frame.setSize(1000, 622);
frame.setLocationRelativeTo(null);
frame.getContentPane().setBackground(new Color(217, 185, 91));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static JPanel logoPanel() {
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBackground(new Color(140, 28, 3));
ImageIcon icon = new ImageIcon("src/images/sirketLogo.jpg");
JLabel logoLabel = new JLabel();
logoLabel.setIcon(icon);
logoLabel.setBounds(0, 0, 350, 100);
panel.add(logoLabel);
panel.setBounds(25, 25, 350, 100);
return panel;
}
public static JPanel mailOlusturulduPanel(String dosyaIsmi) {
// iki tane dosyamiz var bunlar da duruma gore degisecek
// 1) mailBekleniyor.jpg
// 2) mailOlusturuldu.jpg
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBackground(new Color(140, 28, 3));
ImageIcon iconMail = new ImageIcon("src/images/" + dosyaIsmi);
JLabel mailLabel = new JLabel();
mailLabel.setIcon(iconMail);
mailLabel.setBounds(0, 0, 350, 100);
panel.add(mailLabel);
panel.setBounds(25, 25, 350, 100);
return panel;
}
public static JPanel infoPanel() {
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBackground(new Color(169, 203, 217));
panel.add(logoPanel());
int xStart = 10;
int x = xStart;
int y = 150;
int xFark = 100;
int yFark = 30;
int labelGenislik = 150;
int textFieldGenislik = 280;
int ortakYukseklik = 30;
JLabel isimLabel = new JLabel("İsim : ");
isimLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
JTextField isimTextField = new JTextField();
isimTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel soyadLabel = new JLabel("Soyad : ");
soyadLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
JTextField soyadTextField = new JTextField();
soyadTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel passwordLabel = new JLabel("Password : ");
passwordLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
password = randomPassword();
JTextField passwordTextField = new JTextField(password);
passwordTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel departmanLabel = new JLabel("Departman : ");
departmanLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
String[] departmanIsim = {"Seçiniz", "Fitness", "Satış Pazarlama", "Teknoloji",
"Muhasebe", "Güvenlik", "Yiyecek/İçecek", "Müşteri İlişkileri", "Ön Büro"};
departmanCombo = new JComboBox(departmanIsim);
departmanCombo.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel mailBoxKotasiLabel = new JLabel("Mailbox Kotası : ");
mailBoxKotasiLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
String[] mailBoxKota = {"Kota Seçiniz", "500 MB", "1 GB",
"3 GB", "5 GB", "10 GB"};
mailBoxKotaCombo = new JComboBox(mailBoxKota);
mailBoxKotaCombo.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel alternatifMailLabel = new JLabel("Alternatif Mail : ");
alternatifMailLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
JTextField alternatifMailTextField = new JTextField();
alternatifMailTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart + xFark;
y = y + (yFark*2);
JButton mailOusturButon = new JButton("Şirket Maili Oluştur");
mailOusturButon.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart + xFark;
y = y + yFark;
JButton tablodaGosterButon = new JButton("Mailleri Tabloda Göster");
tablodaGosterButon.setBounds(x, y, textFieldGenislik, ortakYukseklik);
mailOusturButon.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
anaPanel.removeAll();
// Formdan alınan bilgileri kullanarak mail oluşturma işlemi burada yapılabilir.
// Örnek olarak:
isim = isimTextField.getText();
soyad = soyadTextField.getText();
departman = (String) departmanCombo.getSelectedItem();
int departmanInteger = (int) departmanCombo.getSelectedIndex();
switch (departmanInteger) {
case 0: sirketMailOnEk = "free";
break;
case 1: sirketMailOnEk = "sale";
break;
case 2: sirketMailOnEk = "tech";
break;
case 3: sirketMailOnEk = "acc";
break;
case 4: sirketMailOnEk = "sec";
break;
case 5: sirketMailOnEk = "fb";
break;
case 6: sirketMailOnEk = "cr";
break;
case 7: sirketMailOnEk = "fof";
break;
}
int mailBoxKapasitesiInteger = (int) mailBoxKotaCombo.getSelectedIndex();
switch (mailBoxKapasitesiInteger) {
case 0 : mailBoxKapasitesi = 0;
break;
case 1 : mailBoxKapasitesi = 500;
break;
case 2 : mailBoxKapasitesi = 1024;
break;
case 3 : mailBoxKapasitesi = 3072;
break;
case 4 : mailBoxKapasitesi = 5120;
break;
case 5 : mailBoxKapasitesi = 10240;
break;
}
alternatifMail = alternatifMailTextField.getText();
// Şirket içi mail oluşturma ve sonuçları gösterme işlemi burada yapılabilir.
// Örnek olarak:
String sirketMail = isim.toLowerCase() + "." + soyad.toLowerCase() +
"@" + sirketMailOnEk + "." +sirketMailUzantisi;
String sirketMailKota = "" + mailBoxKapasitesi;
/*
System.out.println("İsim = " + isim);
System.out.println("Soyad = " + soyad);
System.out.println("Departman = " + departman);
System.out.println("Mail Kota = " + mailBoxKapasitesi);
System.out.println("Şirket Mail = " + sirketMail);
System.out.println("Mail Kota = " + sirketMailKota);
System.out.println("Alternatif = " + alternatifMail);
*/
// Mail formundan geen bilgileri
// sonuç paneline gonderiyoruz.
sonucPanelGoster[0] = "mailOlusturuldu.jpg";
sonucPanelGoster[1] = isim + " " + soyad; // isim soyad text field.
sonucPanelGoster[2] = departman;
sonucPanelGoster[3] = sirketMail;
sonucPanelGoster[4] = "" + sirketMailKota + " MB";
sonucPanelGoster[5] = password;
sonucPanelGoster[6] = alternatifMail;
anaPanel.add(infoPanel());
anaPanel.add(sonucPanel(sonucPanelGoster));
anaPanel.revalidate();
anaPanel.repaint();
// Formdan alınan bilgileri bir metin dosyasına yazdırma
try {
FileWriter fileWriter = new FileWriter("src/data/acilanSirketMailBilgileri.txt", true);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
// Bilgileri dosyaya yazdırma
bufferedWriter.write("İsim: " + isim);
bufferedWriter.newLine(); // Yeni satıra geçmek için
bufferedWriter.write("Soyad: " + soyad);
bufferedWriter.newLine();
bufferedWriter.write("Departman: " + departman);
bufferedWriter.newLine();
bufferedWriter.write("Şirket Mail: " + sirketMail);
bufferedWriter.newLine();
bufferedWriter.write("Şirket Mail Kota: " + sirketMailKota + " MB");
bufferedWriter.newLine();
bufferedWriter.write("Password: " + password);
bufferedWriter.newLine();
bufferedWriter.write("Alternatif Mail: " + alternatifMail);
bufferedWriter.newLine();
// Dosyayı kapatma
bufferedWriter.close();
System.out.println("Bilgiler dosyaya yazıldı.");
} catch (IOException ex) {
System.err.println("Dosya yazma hatası: " + ex.getMessage());
}
}
});
tablodaGosterButon.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
anaPanel.removeAll(); // anaPanel'i silip buraya JScrollPane ile bir tablo eklenecek.
// TXT dosya yolu : "src/data/acilanSirketMailBilgileri.txt"
String[] columnNames = {"İsim", "Soyad", "Departman", "Şirket Mail", "Mail Kota",
"Password", "Alternatif Mail"};
String[][] data = sirketMailVerileriniDosyadanOku("src/data/acilanSirketMailBilgileri.txt");
JTable mailTable = new JTable(data, columnNames);
JScrollPane scrollPane = new JScrollPane(mailTable);
// Ana panelin boyutları
int anaPanelX = 50;
int anaPanelY = 50;
int anaPanelWidth = 900;
int anaPanelHeight = 500;
// Scroll pane'in boyutları (örneğin, ana panelin sınırları içinde)
int scrollPaneX = 10; // Scroll pane'in x koordinatı
int scrollPaneY = 10; // Scroll pane'in y koordinatı
int scrollPaneWidth = anaPanelWidth - 2 * scrollPaneX; // Scroll pane'in genişliği (kenar boşluğunu bırakarak)
int scrollPaneHeight = anaPanelHeight - 2 * scrollPaneY; // Scroll pane'in yüksekliği (kenar boşluğunu bırakarak)
// Scroll pane'in boyutlarını ayarlayın
scrollPane.setBounds(scrollPaneX, scrollPaneY, scrollPaneWidth, scrollPaneHeight);
// Scroll pane'i ana panele ekleyin
anaPanel.add(scrollPane);
anaPanel.add(scrollPane);
anaPanel.revalidate();
anaPanel.repaint();
}
});
panel.add(isimLabel);
panel.add(isimTextField);
panel.add(soyadLabel);
panel.add(soyadTextField);
panel.add(passwordLabel);
panel.add(passwordTextField);
panel.add(departmanLabel);
panel.add(departmanCombo);
panel.add(mailBoxKotasiLabel);
panel.add(mailBoxKotaCombo);
panel.add(alternatifMailLabel);
panel.add(alternatifMailTextField);
panel.add(mailOusturButon);
panel.add(tablodaGosterButon);
panel.setBounds(25, 25, 400, 450);
return panel;
}
public static String[][] sirketMailVerileriniDosyadanOku(String dosyaYolu) {
// -------TXT Dosyasindaki veri seti yapisi:-------
// İsim: Tom
// Soyad: Kruz
// Departman: Muhasebe
// Şirket Mail: tom.kruz@acc.kesinbisirket.com
// Şirket Mail Kota: 3072 MB
// Password: #D9AXDAO
// Alternatif Mail: tomk@yahoo.com
int satirSayisi = 0;
// Ilk olaraqk TXT dosyasi içindeki SATIR SAYISINI belirliyoruz.
// Çünkü her bir veri seti'miz 7 satir oldugu için SATIR SAYISI 7 'nin x kati olmali.
// Örnegimizde satirSayisi = 70; oluyor.
try (BufferedReader br = new BufferedReader(new FileReader(dosyaYolu))) {
while (br.readLine() != null) {
satirSayisi++;
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("TXT deki satir sayisi = " + satirSayisi);
// Elimizdeki bu satirSayisi (70) degiskenini 7'ye bolerek
// Kaç kisinin mail kaydini tuttugumuzu buluyoruz.
int kisiSayisi = satirSayisi/7; // Ornegimizde bu sayi kisiSayisi=10; oluyor.
String[] veriSeti = new String[satirSayisi]; // 70 tane veriyi tek bir diziye aliyoruz.
int veriSetiIndex = 0;
// bu try/catch blogunda her satiri : karakteri ile ikiye boluyoruz
// ikinci kismi aliyoruz
// ilk kismi isleme tabi tutmuyoruz.
// örnek -> İsim: Tom -> burada
// veriParcalari [0] = İsim: yazan kisimi isleme almiyoruz
// veriParcalari [1] = Tom yazan kismi tutuyoruz.
// Her seferinde veriParcalari index=1 olan parcayi veriSeti'mize ekliyoruz.
// Boylece sonucta elimizde 70 veri oluyor.
try (BufferedReader br = new BufferedReader(new FileReader(dosyaYolu))) {
String line;
try {
while ((line = br.readLine()) != null) {
// Satırı ':' karakterine göre bölelim ve sadece değerleri alalım
String[] veriParcalari = line.split(":");
veriSeti[veriSetiIndex++] = veriParcalari[1].trim();
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
// Simdi bizim elimizde 70 tane verisi olan bir set var -> veriSeti[] dizisi
// Bunu 7 serli bloklar halinde String[][] dizi haline getirecegiz.
// Sonrada return komutuyla döndürecegiz ve tabloda gorunmesini saglayacagiz.
// Ikili String dizimizi olusturmak için gereken islemleri yapiyoruz.
String[][] mailDataSet = new String[kisiSayisi][7];
int kisiIndex = -1; // -1 den baslatiyoruz çünkü ilk dizi elemani 0 olmali
for(int i=0 ; i<satirSayisi ; i++) {
if (i%7 == 0) kisiIndex++;
mailDataSet[kisiIndex][i%7] = veriSeti[i];
}
return mailDataSet;
}
public static JPanel sonucPanel(String[] sonucPanelInfo) {
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBackground(new Color(169, 203, 217));
panel.add(mailOlusturulduPanel(sonucPanelInfo[0]));
int xStart = 10;
int x = xStart;
int y = 150;
int xFark = 100;
int yFark = 30;
int labelGenislik = 150;
int textFieldGenislik = 280;
int ortakYukseklik = 30;
JLabel isimLabel = new JLabel("İsim : ");
isimLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
JTextField isimTextFieldSonuc = new JTextField(sonucPanelInfo[1]);
isimTextFieldSonuc.setEditable(false);
isimTextFieldSonuc.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel departmanLabel = new JLabel("Departman : ");
departmanLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
JTextField departmanTextField = new JTextField(sonucPanelInfo[2]);
departmanTextField.setEditable(false);
departmanTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel sirketMailLabel = new JLabel("Sirket Mail : ");
sirketMailLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
sirketMailTextField = new JTextField(sonucPanelInfo[3]);
sirketMailTextField.setEditable(false);
sirketMailTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel sirketMailKotaLabel = new JLabel("Mail Kotasi : ");
sirketMailKotaLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
sirketMailKotaTextField = new JTextField(sonucPanelInfo[4]);
sirketMailKotaTextField.setEditable(false);
sirketMailKotaTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel passwordLabel = new JLabel("Password : ");
passwordLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
JTextField passwordTextField = new JTextField(sonucPanelInfo[5]);
passwordTextField.setEditable(false);
passwordTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart;
y = y + yFark;
JLabel alternatifMailLabel = new JLabel("Alternatif Mail : ");
alternatifMailLabel.setBounds(x, y, labelGenislik, ortakYukseklik);
x = x + xFark;
JTextField alternatifMailTextField = new JTextField(sonucPanelInfo[6]);
alternatifMailTextField.setEditable(false);
alternatifMailTextField.setBounds(x, y, textFieldGenislik, ortakYukseklik);
x = xStart + xFark;
y = y + (yFark*2);
JButton mailFormTemizleButon = new JButton("Mail Formunu Temizle");
mailFormTemizleButon.setBounds(x, y, textFieldGenislik, ortakYukseklik);
mailFormTemizleButon.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
anaPanel.removeAll();
// Formdaki tüm JTextField'ların içeriğini temizliyoruz.
sonucPanelGoster[0] = "mailBekleniyor.jpg";
sonucPanelGoster[1] = "İsim Soyad";
sonucPanelGoster[2] = "Departman";
sonucPanelGoster[3] = "Şirket mail";
sonucPanelGoster[4] = " 0 MB";
sonucPanelGoster[5] = "Şifre";
sonucPanelGoster[6] = "Alternatif mail";
anaPanel.add(infoPanel());
anaPanel.add(sonucPanel(sonucPanelGoster));
anaPanel.revalidate();
anaPanel.repaint();
}
});
panel.add(isimLabel);
panel.add(isimTextFieldSonuc);
panel.add(departmanLabel);
panel.add(departmanTextField);
panel.add(sirketMailLabel);
panel.add(sirketMailTextField);
panel.add(sirketMailKotaLabel);
panel.add(sirketMailKotaTextField);
panel.add(passwordLabel);
panel.add(passwordTextField);
panel.add(alternatifMailLabel);
panel.add(alternatifMailTextField);
panel.add(mailFormTemizleButon);
panel.setBounds(475, 25, 400, 450);
return panel;
}
public static String randomPassword() {
String passwordSet = "QWERTYUIOPASDFGHJKLZXCVBNM0123456789!#$%&*";
char[] password = new char[passwordLength];
for (int i=0 ; i<passwordLength ; i++) {
int rastgele = (int) (Math.random() * passwordSet.length());
password[i] = passwordSet.charAt(rastgele);
}
String pass = new String(password);
return pass;
}
public static void main(String[] args) {
new MailHesap();
}
}