SlideShare a Scribd company logo
1 of 16
BÁO CÁO: BÀI THỰC HÀNH 1
Họ và tên SV:Trần Phan Kỳ
MSSV:16070991
Môn học: CÔNG NGHỆ LẬP TRÌNH TÍCH HỢP NC
Giảng viên: Trần Thị Minh Khoa
Lớp môn học: DHCNTT12A DHCNTT12B
Nhóm thực hành: Nhóm 1 Nhóm 2 Nhóm 3
Ngày nộp:18/3/2019
Yêu cầu:
Yêu cầu:
Thiết kế Ứng dụng gồm 3 modules: ‘Login Page, ‘mail box’ và
‘delete mail’. Trong đó tập trung chủ yếu vào phần Mail Box:
Kiểm tra tích hợp của nó để delete mail.
Test case ID Test title Description Expected results
1 Kiểm tra link giao
diện, login và
mailbox module
Điền đầy đủ thông
tin đăng nhập và
clicknút Login
Chuyển sang hộp
thư đến
2 Kiểm tra link giao
diện, mailbox và
delete mail module
Từ hộp thư chọn 1
mail vàxóa nó
Mail đã xóa phải ở
trong hộp thư đã
xóa hoặc thư mục
trash
BÀI LÀM
File User.java
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;// can phai khao bao thu vien PreparedStatement de su dung cho PreparedStatement
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;publicclassUser extends JFrame implements ActionListener{
JPanel panelNullLayout;
JLabel lb_username,lb_password;
JTextField txt_username;
JPasswordField txt_password;
JButton btn_dangnhap,btn_thoat;
Tạo ra Layout baogồm hộptextUsername & Passwordđể nhập vào , và nútbutton(login,exit) để
Connectioncon;
Statementst;
StringhostName ="localhost";
Stringusername,userpassword;
StringdbName = "user";
StringuserName ="root";
Stringpassword= "123456";
publicUser()
{
panelNullLayout=newJPanel();
lb_username =newJLabel("Username:");
lb_password= newJLabel("Password:");
txt_username =newJTextField();
txt_password= newJPasswordField();
btn_dangnhap= newJButton("Login");
btn_thoat= newJButton("Exit");
panelNullLayout.setLayout(null);
lb_username.setBounds(10,10,100, 20);
txt_username.setBounds(95,10, 100, 25);
lb_password.setBounds(10,40, 80, 20);
txt_password.setBounds(95,40, 80, 20);
btn_dangnhap.setBounds(50,70, 80, 20);
btn_thoat.setBounds(135,70,80, 20);
panelNullLayout.add(lb_username);
panelNullLayout.add(txt_username);
panelNullLayout.add(lb_password);
panelNullLayout.add(txt_password);
panelNullLayout.add(btn_dangnhap);
panelNullLayout.add(btn_thoat);
this.add(panelNullLayout);
btn_dangnhap.addActionListener(this);
btn_thoat.addActionListener(this);
}
đăng nhập và thoátkhỏi giao diệnvàadd chúngvào Layout.
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==btn_dangnhap)
{ if(txt_username.getText().equals(""))
{
JOptionPane.showMessageDialog(this,"Chua nhap username!");
}
else if(txt_password.getText().equals(""))
{
JOptionPane.showMessageDialog(this,"Chua nhap password!");
}
else
{try
{
Class.forName("com.mysql.jdbc.Driver");
String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName;
Connection conn = DriverManager.getConnection(connectionURL, userName,
password);
st = conn.createStatement();
String sql="SELECT *FROM USERSn" + "WHERE USERNAME=? AND PASSWORD=?";
PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1, txt_username.getText());
ps.setString(2, txt_password.getText());
ResultSet rs = ps.executeQuery();
if(rs.next())
{
JOptionPane.showMessageDialog(this,"Dangnhap thanh cong!");
}
else
{
JOptionPane.showMessageDialog(this,"Dangnhap that bai!");
Mail mailfr=newMail();
mailfr.setVisible(true);
}
}
catch(Exception e2)
{
System.out.println(e2);
}
}
}
if(e.getSource()==btn_thoat)
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
User.this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
}
Gán sự kiệncho buttonLogin,Exit. Khi nhấnvào buttonLogindữ liệutừ
textbox(username,password) sẽ đươcxemxétnếuchưanhập sẽ bắt nhậplại.Khi đã nhậpđầy đủ
username,passworddữliệusẽ đượcđemsosanh với username,passwordtrongdatabse (đãkếtnối
khi ta nhấn vào buttonLogin) .Nếudữliệutrùngkhớp“Đăngnhập thànhcông” và ngược lại.
Khi ta đăng nhập thànhcông, sẽ chuyểnsanggiao diệnmới (GiaodiệnMail)
File Maildata.java
public classMailData {
privateString idMail,nguoiGui,tieuDe,noiDung;
public StringgetIdMail() {
return idMail;
}
public void setIdMail(StringidMail) {
this.idMail =idMail;
}
public StringgetNguoiGui() {
return nguoiGui;
}
public void setNguoiGui(StringnguoiGui) {
this.nguoiGui = nguoiGui;
}
public StringgetTieuDe() {
return tieuDe;
}
public void setTieuDe(String tieuDe) {
this.tieuDe = tieuDe;
}
public StringgetNoiDung() {
return noiDung;
}
public void setNoiDung(StringnoiDung) {
this.noiDung= noiDung;
}
public MailData(StringidMail,StringnguoiGui,StringtieuDe, String noiDung) {
super();
this.idMail =idMail;
this.nguoiGui = nguoiGui;
this.tieuDe = tieuDe;
this.noiDung= noiDung;
}
public MailData() {
super();
// TODO Auto-generated constructor stub
}
File Maildata.java:
Khởi tạo đối tượngMailData bao gồmcác dữ liệu(IDMail,Người Gửi,TiêuĐề,Nội Dung).
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;
public classDanhSachMail {
public static ArrayList<MailData>ds;
public DanhSachMail()
{
super();
ds = new ArrayList<MailData>();
}
public ArrayList<MailData>getDs()
{
return ds;
}
public intsoMail()
{
return ds.size();
}
public boolean themMail(MailData md)
{
if(!ds.contains(md))
return ds.add(md);
return false;
}
@Override
publicStringtoString() {
// TODO Auto-generatedmethodstub
return"Mail [idMail="+ idMail + ",nguoGui="+ nguoiGui + ",tieuDe="+ tieuDe + ", noiDung=" +
noiDung+"]";
}
}
File DanhSachMail.java:
Tạo ra danhsách đối tượngMailData
Tạo ra các hàm thêmMail vào danhsách,Xóamail
publicvoid XoaMail(StringidMail)
{
for(inti=0;i<ds.size();i++)
if(ds.get(i).getIdMail().equalsIgnoreCase(idMail))
{
ds.remove(ds.get(i));
}
}
publicvoidxuatDanhSach()
{
for (inti=0;i<ds.size();i++) {
System.out.println(ds);
}
}
}
File DatabaseMail.java:
Đọc dữ liệumail từfile txtvà lưuvàodanh sách Mail.
importjava.io.File;
importjava.util.Scanner;
publicclassDatabaseMail {
publicDatabaseMail()
{
super();
}
publicDanhSachMail readMail(Stringpart) throwsException
{
DanhSachMail ds = newDanhSachMail();
File f = newFile(part);
if(f.exists())
{
Scanners = newScanner(f);
while(s.hasNextLine())
{
Stringline = s.nextLine();
String[] data= line.split(",");
MailData md= newMailData(data[0],data[1],data[2],data[3]);
ds.themMail(md);
}
s.close();
}
else
{
f.createNewFile();
}
returnds;
}
}
import java.awt.BorderLayout;
import java.awt.List;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import com.mysql.cj.xdevapi.Table;
import com.sun.corba.se.impl.encoding.CodeSetConversion.BTCConverter;
import com.sun.media.sound.ModelAbstractChannelMixer;
public classMail extends JFrame implements ActionListener{
JLabel l1;
JLabel l2;
JButton btn_xoa;
JTable table,table2;
DefaultTableModel model,model2;
privateDatabaseMail database;
privateDanhSachMail ds;
public Mail()
{
super("Mail Box");
database= new DatabaseMail();
gui();
try {
loadData();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
privatevoid loadData() throws Exception
{
ds=database.readMail("D:data.txt");
for(MailData md:ds.getDs())
{
String[] row= {md.getIdMail(),md.getNguoiGui(),md.getTieuDe(),md.getNoiDung()};
model.addRow(row);
}
}
privatevoid gui()
{
Box b = Box.createVerticalBox();
Box b1 = Box.createHorizontalBox();
Box b3 = Box.createHorizontalBox();
Box b4 = Box.createHorizontalBox();
Box b5 = Box.createHorizontalBox();
b.add(b1);
b.add(Box.createVerticalStrut(5));
b.add(b3);
b.add(Box.createVerticalStrut(10));
b.add(b4);
b.add(Box.createHorizontalStrut(5));
b.add(b5);
b.add(Box.createHorizontalStrut(5));
this.add(b,BorderLayout.NORTH);
b1.add(l1=new JLabel("Hộp Thư Đến"));
JPanel panel = new JPanel();
b3.add(panel);
panel.add(btn_xoa=new JButton("Xóa"));
taotable();
//taotable2();
btn_xoa.addActionListener(this);
b4.add(l2 = new JLabel("Thư Đã Xóa"));
}
private voidtaotable()
{
model = newDefaultTableModel();
model2= newDefaultTableModel();
table = newJTable(model);
table2= newJTable(model2);
model.addColumn("IDMail");
model.addColumn("Nguoi Gui");
model.addColumn("TieuDe");
model.addColumn("NoiDung");
model2.addColumn("IDMail");
model2.addColumn("NguoiGui");
model2.addColumn("TieuDe");
model2.addColumn("Noi Dung");
JScrollPane sc1= new
JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEE
DED);
this.add(sc1,BorderLayout.CENTER);
JScrollPane sc2= new
JScrollPane(table2,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_N
EEDED);
this.add(sc2,BorderLayout.SOUTH);
}
File Mail.java:
Tạo ra giaodiệnMail Box bao gồm (HộpThư Đên và Thư Đã Xóa)
Thông tinthư baogồm (IDMail,Người Gửi,TiêuĐề,Nội Dung).Thôngtinthưđược hiểnthị trongbảng
Jtable.
Dữ liệusẽ được đọc từ file txtvàlưu vào danh sách Mail và truyềnxuốngcho bảngJtable.
@Override
publicvoidactionPerformed(ActionEvente) {
// TODO Auto-generatedmethodstub
intdongChon= table.getSelectedRow();
StringidMail=""+ table.getValueAt(dongChon,0);
Stringnguoigui=""+ table.getValueAt(dongChon,1);
Stringtieude=""+table.getValueAt(dongChon,2);
Stringnoidung=""+ table.getValueAt(dongChon,3);
if(e.getSource()==btn_xoa)
{
ds.XoaMail(idMail);
updatetable();
//addmail delete
DefaultTableModelmodel2= (DefaultTableModel) table2.getModel();
String[] row={idMail,nguoigui,tieude,noidung};
model2.addRow(row);
}
}
publicvoidupdatetable() {
DefaultTableModelmodel =(DefaultTableModel)table.getModel();
model.setRowCount(0);
for(MailDatamd:ds.getDs())
{
String[] row=
{md.getIdMail(),md.getNguoiGui(),md.getTieuDe(),md.getNoiDung()};
model.addRow(row);
}
}
}
Hộp thư đã xóa làmột Jtable default(rỗng).Saukhi nhấnnút Xóadữ liệusẽ đượcchuyểnxuyếnHộp
Thư Đã Xóa.
File Frame.java:làtrangtạo giaodiệnvới hàmmaingọi lại giaodiệnĐăng nhậpvà giaodiệnMail
Box;
importjavax.swing.SwingUtilities;
importjavax.swing.JFrame;
importsun.swing.SwingAccessor;
publicclassFrame {
publicstaticvoidmain(String[] args) {
SwingUtilities.invokeLater(newRunnable() {
publicvoidrun() {
User giaodien=new User();
giaodien.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
giaodien.setVisible(true);
giaodien.setSize(300,300);
/*Mail mail = new Mail();
mail.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mail.setVisible(true);
mail.setSize(1200,1100);*/
}
});
}
}

More Related Content

Similar to Cnthnc minhkhoa baith2

Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPTBài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPTMasterCode.vn
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson07
Lap trinh huong_doi_tuong_cpp_dhct_lesson07Lap trinh huong_doi_tuong_cpp_dhct_lesson07
Lap trinh huong_doi_tuong_cpp_dhct_lesson07xcode_esvn
 
Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Kuli An
 
Tu dong dat hang tu he thong ban le lon nhat trung quoc
Tu dong dat hang tu he thong ban le lon nhat trung quocTu dong dat hang tu he thong ban le lon nhat trung quoc
Tu dong dat hang tu he thong ban le lon nhat trung quochazzaz
 
Oop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpOop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpTráng Hà Viết
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson08
Lap trinh huong_doi_tuong_cpp_dhct_lesson08Lap trinh huong_doi_tuong_cpp_dhct_lesson08
Lap trinh huong_doi_tuong_cpp_dhct_lesson08xcode_esvn
 
6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdfSonNguyen642431
 
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung QuocNguyen Duc Phu
 
Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituongMinh Ngoc Tran
 
Cau hoi trac nghiem lt nc (1)
Cau hoi trac nghiem lt nc (1)Cau hoi trac nghiem lt nc (1)
Cau hoi trac nghiem lt nc (1)Pharmacist Ctump
 
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quocPhan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quocTrung Phan Thai
 

Similar to Cnthnc minhkhoa baith2 (20)

Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPTBài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
Bài 5 Lập trình PHP (phần 3) Làm việc với dữ liệu của form - Giáo trình FPT
 
Chuong5 (2)
Chuong5 (2)Chuong5 (2)
Chuong5 (2)
 
02 access
02 access02 access
02 access
 
T3
T3T3
T3
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson07
Lap trinh huong_doi_tuong_cpp_dhct_lesson07Lap trinh huong_doi_tuong_cpp_dhct_lesson07
Lap trinh huong_doi_tuong_cpp_dhct_lesson07
 
Oop 5
Oop 5Oop 5
Oop 5
 
Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#
 
LINQ
LINQLINQ
LINQ
 
Tu dong dat hang tu he thong ban le lon nhat trung quoc
Tu dong dat hang tu he thong ban le lon nhat trung quocTu dong dat hang tu he thong ban le lon nhat trung quoc
Tu dong dat hang tu he thong ban le lon nhat trung quoc
 
Window Form
Window FormWindow Form
Window Form
 
Oop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpOop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớp
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson08
Lap trinh huong_doi_tuong_cpp_dhct_lesson08Lap trinh huong_doi_tuong_cpp_dhct_lesson08
Lap trinh huong_doi_tuong_cpp_dhct_lesson08
 
6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf
 
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
 
Mô hình 3 lớp trong C#
Mô hình 3 lớp trong C#Mô hình 3 lớp trong C#
Mô hình 3 lớp trong C#
 
Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituong
 
Ung dung web chuong 7
Ung dung web  chuong 7Ung dung web  chuong 7
Ung dung web chuong 7
 
Cau hoi trac nghiem lt nc (1)
Cau hoi trac nghiem lt nc (1)Cau hoi trac nghiem lt nc (1)
Cau hoi trac nghiem lt nc (1)
 
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quocPhan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quoc
 
Bài tập javascript
Bài tập javascriptBài tập javascript
Bài tập javascript
 

Cnthnc minhkhoa baith2

  • 1. BÁO CÁO: BÀI THỰC HÀNH 1 Họ và tên SV:Trần Phan Kỳ MSSV:16070991 Môn học: CÔNG NGHỆ LẬP TRÌNH TÍCH HỢP NC Giảng viên: Trần Thị Minh Khoa Lớp môn học: DHCNTT12A DHCNTT12B Nhóm thực hành: Nhóm 1 Nhóm 2 Nhóm 3 Ngày nộp:18/3/2019 Yêu cầu: Yêu cầu: Thiết kế Ứng dụng gồm 3 modules: ‘Login Page, ‘mail box’ và ‘delete mail’. Trong đó tập trung chủ yếu vào phần Mail Box: Kiểm tra tích hợp của nó để delete mail. Test case ID Test title Description Expected results 1 Kiểm tra link giao diện, login và mailbox module Điền đầy đủ thông tin đăng nhập và clicknút Login Chuyển sang hộp thư đến 2 Kiểm tra link giao diện, mailbox và delete mail module Từ hộp thư chọn 1 mail vàxóa nó Mail đã xóa phải ở trong hộp thư đã xóa hoặc thư mục trash
  • 3. File User.java import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.sql.PreparedStatement;// can phai khao bao thu vien PreparedStatement de su dung cho PreparedStatement import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField;publicclassUser extends JFrame implements ActionListener{ JPanel panelNullLayout; JLabel lb_username,lb_password; JTextField txt_username; JPasswordField txt_password; JButton btn_dangnhap,btn_thoat;
  • 4. Tạo ra Layout baogồm hộptextUsername & Passwordđể nhập vào , và nútbutton(login,exit) để Connectioncon; Statementst; StringhostName ="localhost"; Stringusername,userpassword; StringdbName = "user"; StringuserName ="root"; Stringpassword= "123456"; publicUser() { panelNullLayout=newJPanel(); lb_username =newJLabel("Username:"); lb_password= newJLabel("Password:"); txt_username =newJTextField(); txt_password= newJPasswordField(); btn_dangnhap= newJButton("Login"); btn_thoat= newJButton("Exit"); panelNullLayout.setLayout(null); lb_username.setBounds(10,10,100, 20); txt_username.setBounds(95,10, 100, 25); lb_password.setBounds(10,40, 80, 20); txt_password.setBounds(95,40, 80, 20); btn_dangnhap.setBounds(50,70, 80, 20); btn_thoat.setBounds(135,70,80, 20); panelNullLayout.add(lb_username); panelNullLayout.add(txt_username); panelNullLayout.add(lb_password); panelNullLayout.add(txt_password); panelNullLayout.add(btn_dangnhap); panelNullLayout.add(btn_thoat); this.add(panelNullLayout); btn_dangnhap.addActionListener(this); btn_thoat.addActionListener(this); }
  • 5. đăng nhập và thoátkhỏi giao diệnvàadd chúngvào Layout.
  • 6. @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==btn_dangnhap) { if(txt_username.getText().equals("")) { JOptionPane.showMessageDialog(this,"Chua nhap username!"); } else if(txt_password.getText().equals("")) { JOptionPane.showMessageDialog(this,"Chua nhap password!"); } else {try { Class.forName("com.mysql.jdbc.Driver"); String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName; Connection conn = DriverManager.getConnection(connectionURL, userName, password); st = conn.createStatement(); String sql="SELECT *FROM USERSn" + "WHERE USERNAME=? AND PASSWORD=?"; PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql); ps.setString(1, txt_username.getText()); ps.setString(2, txt_password.getText()); ResultSet rs = ps.executeQuery(); if(rs.next()) { JOptionPane.showMessageDialog(this,"Dangnhap thanh cong!"); } else { JOptionPane.showMessageDialog(this,"Dangnhap that bai!"); Mail mailfr=newMail(); mailfr.setVisible(true); } } catch(Exception e2) { System.out.println(e2); } } } if(e.getSource()==btn_thoat) { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); User.this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } }
  • 7. Gán sự kiệncho buttonLogin,Exit. Khi nhấnvào buttonLogindữ liệutừ textbox(username,password) sẽ đươcxemxétnếuchưanhập sẽ bắt nhậplại.Khi đã nhậpđầy đủ username,passworddữliệusẽ đượcđemsosanh với username,passwordtrongdatabse (đãkếtnối khi ta nhấn vào buttonLogin) .Nếudữliệutrùngkhớp“Đăngnhập thànhcông” và ngược lại. Khi ta đăng nhập thànhcông, sẽ chuyểnsanggiao diệnmới (GiaodiệnMail)
  • 8. File Maildata.java public classMailData { privateString idMail,nguoiGui,tieuDe,noiDung; public StringgetIdMail() { return idMail; } public void setIdMail(StringidMail) { this.idMail =idMail; } public StringgetNguoiGui() { return nguoiGui; } public void setNguoiGui(StringnguoiGui) { this.nguoiGui = nguoiGui; } public StringgetTieuDe() { return tieuDe; } public void setTieuDe(String tieuDe) { this.tieuDe = tieuDe; } public StringgetNoiDung() { return noiDung; } public void setNoiDung(StringnoiDung) { this.noiDung= noiDung; } public MailData(StringidMail,StringnguoiGui,StringtieuDe, String noiDung) { super(); this.idMail =idMail; this.nguoiGui = nguoiGui; this.tieuDe = tieuDe; this.noiDung= noiDung; } public MailData() { super(); // TODO Auto-generated constructor stub }
  • 9. File Maildata.java: Khởi tạo đối tượngMailData bao gồmcác dữ liệu(IDMail,Người Gửi,TiêuĐề,Nội Dung). import java.util.ArrayList; import javax.swing.table.DefaultTableModel; public classDanhSachMail { public static ArrayList<MailData>ds; public DanhSachMail() { super(); ds = new ArrayList<MailData>(); } public ArrayList<MailData>getDs() { return ds; } public intsoMail() { return ds.size(); } public boolean themMail(MailData md) { if(!ds.contains(md)) return ds.add(md); return false; } @Override publicStringtoString() { // TODO Auto-generatedmethodstub return"Mail [idMail="+ idMail + ",nguoGui="+ nguoiGui + ",tieuDe="+ tieuDe + ", noiDung=" + noiDung+"]"; } }
  • 10. File DanhSachMail.java: Tạo ra danhsách đối tượngMailData Tạo ra các hàm thêmMail vào danhsách,Xóamail publicvoid XoaMail(StringidMail) { for(inti=0;i<ds.size();i++) if(ds.get(i).getIdMail().equalsIgnoreCase(idMail)) { ds.remove(ds.get(i)); } } publicvoidxuatDanhSach() { for (inti=0;i<ds.size();i++) { System.out.println(ds); } } }
  • 11. File DatabaseMail.java: Đọc dữ liệumail từfile txtvà lưuvàodanh sách Mail. importjava.io.File; importjava.util.Scanner; publicclassDatabaseMail { publicDatabaseMail() { super(); } publicDanhSachMail readMail(Stringpart) throwsException { DanhSachMail ds = newDanhSachMail(); File f = newFile(part); if(f.exists()) { Scanners = newScanner(f); while(s.hasNextLine()) { Stringline = s.nextLine(); String[] data= line.split(","); MailData md= newMailData(data[0],data[1],data[2],data[3]); ds.themMail(md); } s.close(); } else { f.createNewFile(); } returnds; } }
  • 12. import java.awt.BorderLayout; import java.awt.List; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import com.mysql.cj.xdevapi.Table; import com.sun.corba.se.impl.encoding.CodeSetConversion.BTCConverter; import com.sun.media.sound.ModelAbstractChannelMixer; public classMail extends JFrame implements ActionListener{ JLabel l1; JLabel l2; JButton btn_xoa; JTable table,table2; DefaultTableModel model,model2; privateDatabaseMail database; privateDanhSachMail ds; public Mail() { super("Mail Box"); database= new DatabaseMail(); gui(); try { loadData(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
  • 13. privatevoid loadData() throws Exception { ds=database.readMail("D:data.txt"); for(MailData md:ds.getDs()) { String[] row= {md.getIdMail(),md.getNguoiGui(),md.getTieuDe(),md.getNoiDung()}; model.addRow(row); } } privatevoid gui() { Box b = Box.createVerticalBox(); Box b1 = Box.createHorizontalBox(); Box b3 = Box.createHorizontalBox(); Box b4 = Box.createHorizontalBox(); Box b5 = Box.createHorizontalBox(); b.add(b1); b.add(Box.createVerticalStrut(5)); b.add(b3); b.add(Box.createVerticalStrut(10)); b.add(b4); b.add(Box.createHorizontalStrut(5)); b.add(b5); b.add(Box.createHorizontalStrut(5)); this.add(b,BorderLayout.NORTH); b1.add(l1=new JLabel("Hộp Thư Đến")); JPanel panel = new JPanel(); b3.add(panel); panel.add(btn_xoa=new JButton("Xóa")); taotable(); //taotable2(); btn_xoa.addActionListener(this); b4.add(l2 = new JLabel("Thư Đã Xóa")); }
  • 14. private voidtaotable() { model = newDefaultTableModel(); model2= newDefaultTableModel(); table = newJTable(model); table2= newJTable(model2); model.addColumn("IDMail"); model.addColumn("Nguoi Gui"); model.addColumn("TieuDe"); model.addColumn("NoiDung"); model2.addColumn("IDMail"); model2.addColumn("NguoiGui"); model2.addColumn("TieuDe"); model2.addColumn("Noi Dung"); JScrollPane sc1= new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEE DED); this.add(sc1,BorderLayout.CENTER); JScrollPane sc2= new JScrollPane(table2,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_N EEDED); this.add(sc2,BorderLayout.SOUTH); }
  • 15. File Mail.java: Tạo ra giaodiệnMail Box bao gồm (HộpThư Đên và Thư Đã Xóa) Thông tinthư baogồm (IDMail,Người Gửi,TiêuĐề,Nội Dung).Thôngtinthưđược hiểnthị trongbảng Jtable. Dữ liệusẽ được đọc từ file txtvàlưu vào danh sách Mail và truyềnxuốngcho bảngJtable. @Override publicvoidactionPerformed(ActionEvente) { // TODO Auto-generatedmethodstub intdongChon= table.getSelectedRow(); StringidMail=""+ table.getValueAt(dongChon,0); Stringnguoigui=""+ table.getValueAt(dongChon,1); Stringtieude=""+table.getValueAt(dongChon,2); Stringnoidung=""+ table.getValueAt(dongChon,3); if(e.getSource()==btn_xoa) { ds.XoaMail(idMail); updatetable(); //addmail delete DefaultTableModelmodel2= (DefaultTableModel) table2.getModel(); String[] row={idMail,nguoigui,tieude,noidung}; model2.addRow(row); } } publicvoidupdatetable() { DefaultTableModelmodel =(DefaultTableModel)table.getModel(); model.setRowCount(0); for(MailDatamd:ds.getDs()) { String[] row= {md.getIdMail(),md.getNguoiGui(),md.getTieuDe(),md.getNoiDung()}; model.addRow(row); } } }
  • 16. Hộp thư đã xóa làmột Jtable default(rỗng).Saukhi nhấnnút Xóadữ liệusẽ đượcchuyểnxuyếnHộp Thư Đã Xóa. File Frame.java:làtrangtạo giaodiệnvới hàmmaingọi lại giaodiệnĐăng nhậpvà giaodiệnMail Box; importjavax.swing.SwingUtilities; importjavax.swing.JFrame; importsun.swing.SwingAccessor; publicclassFrame { publicstaticvoidmain(String[] args) { SwingUtilities.invokeLater(newRunnable() { publicvoidrun() { User giaodien=new User(); giaodien.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); giaodien.setVisible(true); giaodien.setSize(300,300); /*Mail mail = new Mail(); mail.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mail.setVisible(true); mail.setSize(1200,1100);*/ } }); } }