Winform_phan1
Bài 1
import [Link].*;
public class swingbai1{
public static void main(String[] args) {
JFrame jf = new JFrame("HelloWorld");
[Link](250, 200); [Link](300, 200); [Link](JFrame.EXIT_ON_CLOSE); [Link](true);
Bài 2
import [Link].*;
import [Link].*;
public class swingbai2 {
public static void main(String[] args) {
JFrame jf = new JFrame("Flowlayout Example");
[Link](300, 300); [Link](new FlowLayout());
JLabel l1 , l2;
JTextField t1, t2;
l1 = new JLabel("Enter your name"); [Link](50, 100, 200, 30);
t1 = new JTextField(15);
l2 = new JLabel("Enter your city"); [Link](50, 150, 200, 30);
t2 = new JTextField(15);
JButton btnClear, btnSubmit, btnExit;
btnClear = new JButton("Clear"); btnSubmit = new JButton("Submit");btnExit = new JButton("Exit");
[Link](l1); [Link](l2);
[Link](t1); [Link](t2); [Link](btnClear); [Link](btnSubmit); [Link](btnExit);
[Link](true); [Link](JFrame.EXIT_ON_CLOSE);
}
Bài 3
import [Link].*; import [Link].*;
public class swingbai3 {
public static void main(String[] args) {
JFrame frame = new JFrame("GridLayout Test");
[Link](JFrame.EXIT_ON_CLOSE);
[Link](new GridLayout(3, 3));
JButton b1 = new JButton("press1");JButton b2 = new JButton("press2");JButton b3 = new JButton("press3");
JButton b4 = new JButton("press4");JButton b5 = new JButton("press5");JButton b6 = new JButton("press6");
JButton b7 = new JButton("press7");JButton b8 = new JButton("press8");
[Link](b1); [Link](b2); [Link](b3); [Link](b4); [Link](b5); [Link](b6); [Link](b7);
[Link](b8);
[Link](300,300);
[Link](true);
}}
Bài 4
import [Link].*;import [Link].*;
public class swingbai4 {
public static void main(String[] args) {
JFrame f = new JFrame("Border Layout");
[Link](JFrame.EXIT_ON_CLOSE);
JButton b1 = new JButton(" Top"); JButton b2 = new JButton(" left"); JButton b3 = new JButton(" right");
JButton b4 = new JButton(" Center"); JButton b5 = new JButton(" bottom");
[Link](b1, [Link]); [Link](b2, [Link]); [Link](b3, [Link]);
[Link](b4, [Link]); [Link](b5, [Link]);
[Link](300, 300); [Link](true);
}}
Bài 5
import [Link].*; import [Link].*;
public class swingbai5 {
public static void main(String[] args) {
JFrame f = new JFrame("JPanel Demo Program");
JPanel p = new JPanel(new FlowLayout([Link], 20, 20));
[Link](p); [Link](150,150);
[Link]([Link]("Login Panel"));
[Link](new JLabel("Enter username:")); [Link](new JTextField(15)); [Link](new JLabel("Enter password:"));
[Link](new JTextField(15)); [Link](new JButton("Login"));
[Link](JFrame.EXIT_ON_CLOSE);
[Link](350, 200); [Link](300, 300); [Link](true); [Link](null);
Winform_phan2
Bài 1
import [Link].*; import [Link].*;
public class bai1 {
int value = 0;
public bai1 (){
JFrame frame = new JFrame("Counter");
JButton button = new JButton("Click me"); [Link](50, 0, 100, 30);
JLabel label = new JLabel("Click count: 0"); [Link](170, 0, 100, 30);
[Link](button); [Link](label); [Link](300, 300);
[Link](null); [Link](JFrame.EXIT_ON_CLOSE);
[Link](new ActionListener(){
@Override
public void actionPerformed (ActionEvent e){
value++; [Link]("Click count: " + value); }});
[Link](true);
public static void main(String[] args) {
new bai1();}}
Bài 2
import [Link].*; import [Link].*;
public class test {
public test(){
JFrame f = new JFrame("SimpleCalculator");
[Link](JFrame.EXIT_ON_CLOSE); [Link](300, 200);
JLabel lb1 = new JLabel("Num 1:"); [Link](20, 20, 50, 20);
JLabel lb2 = new JLabel("Num 2:"); [Link](20, 50, 50, 20);
JLabel lb3 = new JLabel("Result:"); [Link](20, 80, 50, 20);
JTextField tf1 = new JTextField(15); [Link](100, 20, 150, 20);
JTextField tf2 = new JTextField(15); [Link](100, 50, 150, 20);
JTextField result = new JTextField(); [Link](100, 80, 150, 20);
[Link](false);
JButton add = new JButton("+"); [Link](40, 120, 50, 30);
JButton sub = new JButton("-"); [Link](80, 120, 50, 30);
JButton mul = new JButton("*"); [Link](120, 120, 50, 30);
JButton div = new JButton("/");[Link](160, 120, 50, 30);
[Link](lb1); [Link](lb2); [Link](lb3); [Link](tf1); [Link](tf2); [Link](result);
[Link](add); [Link](sub); [Link](mul); [Link](div); [Link](null);
ActionListener actionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
double num1 = [Link]([Link]());
double num2 = [Link]([Link]());
double Result = 0;
if ([Link]() == add) { Result = num1 + num2;}
else if([Link]() == sub){ Result = num1 - num2;}
else if([Link]() == mul){ Result = num1 * num2 }
else if([Link]() == div){
if(num2 == 0){
[Link](null, "Error: Division by zero");
return; }
Result = num1 / num2;}
[Link]([Link](Result));
} catch (NumberFormatException ex) {
[Link](null, "Error: Invalid input");
}}};
[Link](actionListener); [Link](actionListener);
[Link](actionListener); [Link](actionListener);
[Link](true);
public static void main(String[] args) {
new test();
}}
Bài 3
import [Link].*; import [Link].*; import [Link].*;
public class bai3Combox {
public JFrame f;
public bai3Combox(){
f = new JFrame();
String combo[] ={"White", "Green", "Blue", "Yellow", "Red"};
JComboBox cb = new JComboBox(combo);
[Link](50, 50, 90, 20);
[Link](cb);
[Link](new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
changeBackgroundColor((String) [Link]());
}});
[Link](null); [Link](400, 300); [Link](true);
[Link](JFrame.EXIT_ON_CLOSE);
private void changeBackgroundColor(String color){
switch (color) {
case "White": [Link]().setBackground([Link]); break;
case "Green": [Link]().setBackground([Link]); break;
case "Blue": [Link]().setBackground([Link]); break;
case "Yellow": [Link]().setBackground([Link]); break;
case "Red": [Link]().setBackground([Link]); break;
default: break;
}}
public static void main(String[] args) {
new bai3Combox();
}}
Bài 5
import [Link]; import [Link].*; import [Link].*;
public class bai5 {
public bai5(){
JFrame f = new JFrame("Food Ordering");
[Link](JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Menu");
JCheckBox cb1 = new JCheckBox("Pizza($25)");
JCheckBox cb2 = new JCheckBox("Burger($20)");
JCheckBox cb3 = new JCheckBox("Tea($5)");
JCheckBox cb4 = new JCheckBox("Coffee($10)");
JButton b = new JButton("Order");
JPanel panel = new JPanel();
[Link](new BoxLayout(panel, BoxLayout.Y_AXIS));
[Link](label);
[Link](new FlowLayout([Link], 10, 10));
[Link](label); [Link](cb1); [Link](cb2); [Link](cb3); [Link](cb4); [Link](b); [Link](250, 200);
[Link](new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
int sum = 0;
StringBuffer orderDetails = new StringBuffer();
if([Link]()){ [Link]("Pizza: $25\n"); sum += 25; }
if([Link]()){[Link]("Burger: $20\n"); sum += 20;}
if([Link]()){[Link]("Tea: $5\n"); sum += 5;}
if([Link]()){[Link]("Coffee: $10\n"); sum += 10;}
[Link]("----------------\n: $" + sum);
[Link](f, "Order Details:\n" + [Link]() + "\
nTotal");
});
[Link](true);
public static void main(String[] args) {
new bai5();}}
winform_phan3
bài 1
import [Link].*; import [Link].*; import [Link].*;
import [Link];
public class PhonebookApp extends JFrame {
private JTable table; private DefaultTableModel model;
public PhonebookApp() {
setTitle("Phonebook"); setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
model = new DefaultTableModel(new String[]{"Name", "Phone no"}, 0);
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
JButton btnAdd = new JButton("Add Contact"); JButton btnDelete = new JButton("Delete Contact");
JPanel panel = new JPanel(); [Link](btnAdd); [Link](btnDelete);
[Link](e -> {
String name = [Link](this, "Enter name:");
if (name == null || [Link]().isEmpty()) return;
String phone = [Link](this, "Enter phone number:");
if (phone == null || [Link]().isEmpty()) return;
[Link](new Object[]{name, phone});
});
[Link](e -> {
int selectedRow = [Link]();
if (selectedRow != -1) { [Link](selectedRow);}
});
add(new JLabel("Phonebook", [Link]), [Link]);
add(scrollPane, [Link]); add(panel, [Link]);
setVisible(true);
}
public static void main(String[] args) {
[Link](PhonebookApp::new);
Bài 2
import [Link].*; import [Link].*; import [Link].*;
public class ColorChangerFrame extends JFrame {
private JLabel label;
public ColorChangerFrame() {
setTitle("Color Menu"); setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
label = new JLabel("Hello Java!", [Link]);
[Link](new Font("Arial", [Link], 24));
add(label);
JMenuBar menuBar = new JMenuBar();
JMenu textColorMenu = new JMenu("Màu chữ");
addColorMenuItems(textColorMenu, true);
JMenu bgColorMenu = new JMenu("Màu nền");
addColorMenuItems(bgColorMenu, false);
[Link](textColorMenu); [Link](bgColorMenu);
setJMenuBar(menuBar); setVisible(true);
private void addColorMenuItems(JMenu menu, boolean isTextColor) {
String[] colors = {"Xanh", "Vàng", "Đỏ"};
Color[] colorValues = {[Link], [Link], [Link]};
for (int i = 0; i < [Link]; i++) {
JMenuItem item = new JMenuItem(colors[i]);
final Color color = colorValues[i];
[Link](e -> {
if (isTextColor) { [Link](color);}
else { getContentPane().setBackground(color);}
});
[Link](item);
public static void main(String[] args) {
[Link](ColorChangerFrame::new);
Kết nối database
A) viết hàm đọc danh sách nhan vien ghi vào ArrayList
public static List<NhanVienDTO> getDanhSachNhanVien() {
List<NhanVienDTO> danhSach = new ArrayList<>();
try (Connection conn = [Link]("jdbc:mysql://localhost:3306/your_database", "user",
"password");
Statement stmt = [Link]();
ResultSet rs = [Link]("SELECT * FROM nhanvientbl")) {
while ([Link]()) {
NhanVienDTO nv = new NhanVienDTO(
[Link]("maNV"),
[Link]("hoTen"),
[Link]("namSinh"),
[Link]("soDT"),
[Link]("diaChi")
);
[Link](nv);
} catch (SQLException e) {
[Link]();
return danhSach;
B) thêm nhân viên
public static boolean themNhanVien(NhanVienDTO nv) {
String sql = "INSERT INTO nhanvientbl(maNV, hoTen, namSinh, soDT, diaChi) VALUES (?, ?, ?, ?, ?)";
try (Connection conn = [Link]("jdbc:mysql://localhost:3306/your_database", "user",
"password");
PreparedStatement pstmt = [Link](sql)) {
[Link](1, [Link]());[Link](2, [Link]());
[Link](3, [Link]()); [Link](4, [Link]()); [Link](5, [Link]());
return [Link]() > 0;
} catch (SQLException e) {
[Link]();
return false;
}}
c) Cập nhật thông tin nhân viên
public static boolean capNhatNhanVien(NhanVienDTO nv) {
String sql = "UPDATE nhanvientbl SET hoTen=?, namSinh=?, soDT=?, diaChi=? WHERE maNV=?";
try (Connection conn = [Link](DB_URL, USER, PASS);
PreparedStatement ps = [Link](sql)) {
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
return [Link]() > 0;
} catch (SQLException e) {
[Link]();
return false;
d) Xóa nhân viên
public static boolean xoaNhanVien(String maNV) {
String sql = "DELETE FROM nhanvientbl WHERE maNV=?";
try (Connection conn = [Link](DB_URL, USER, PASS);
PreparedStatement ps = [Link](sql)) {
[Link](1, maNV);
return [Link]() > 0;
} catch (SQLException e) {
[Link]();
return false;
e) Tìm kiếm nhân viên theo mã hoặc tên
public static List<NhanVienDTO> timKiemNhanVien(String keyword) {
List<NhanVienDTO> list = new ArrayList<>();
String sql = "SELECT * FROM nhanvientbl WHERE maNV LIKE ? OR hoTen LIKE ?";
try (Connection conn = [Link](DB_URL, USER, PASS);
PreparedStatement ps = [Link](sql)) {
String kw = "%" + keyword + "%";
[Link](1, kw);
[Link](2, kw);
ResultSet rs = [Link]();
while ([Link]()) {
NhanVienDTO nv = new NhanVienDTO(
[Link]("maNV"),
[Link]("hoTen"),
[Link]("namSinh"),
[Link]("soDT"),
[Link]("diaChi")
);
[Link](nv);
} catch (SQLException e) {
[Link]();
return list;
}
public static double tinhGiaTriBieuThuc(double x, int k) {
double sum = 0;
for (int i = 1; i <= k; i++) {
sum += [Link](x, i);
return sum;
b)
import [Link].*;
import [Link].*;
public class TinhBieuThucGUI extends JFrame {
private JTextField txtX, txtK, txtKetQua; private JButton btnTinh;
public TinhBieuThucGUI() {
setTitle("Tính biểu thức S = x + x^2 + ... + x^k");
setSize(300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(null);
JLabel lblX = new JLabel("Nhập x:"); [Link](20, 20, 80, 25); add(lblX);
txtX = new JTextField(); [Link](100, 20, 150, 25); add(txtX);
JLabel lblK = new JLabel("Nhập k:"); [Link](20, 50, 80, 25); add(lblK);
txtK = new JTextField(); [Link](100, 50, 150, 25); add(txtK);
JLabel lblKetQua = new JLabel("Kết quả:"); [Link](20, 80, 80, 25); add(lblKetQua);
txtKetQua = new JTextField();[Link](100, 80, 150, 25); add(txtKetQua);
[Link](false);
btnTinh = new JButton("Tính"); [Link](100, 120, 80, 30); add(btnTinh);
// Gắn sự kiện cho nút "Tính"
[Link](new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
double x = [Link]([Link]());
int k = [Link]([Link]());
double result = tinhGiaTriBieuThuc(x, k);
[Link]([Link](result));
} catch (NumberFormatException ex) {
[Link](null, "Vui lòng nhập đúng định dạng số!");
});
setVisible(true);
public static void main(String[] args) {
new TinhBieuThucGUI();
}
public static double tinhBieuThuc(double x, double a, int n) {
double sum = 0;
for (int k = 0; k <= n; k++) {
sum += [Link](x, k) * [Link](a, n - k);
return sum;
b)
public class test {
public JFrame f;
public test(){
f = new JFrame("Tính giá trị biểu thức");
[Link](350,250);
[Link](EXIT_ON_CLOSE);
[Link](null);
JLabel lblX = new JLabel("Nhập x:"); [Link](20,20,100,25); [Link](lblX);
JTextField txtX = new JTextField();[Link](100,20,180, 25); [Link](txtX);
JLabel lbla = new JLabel("Nhập a:"); [Link](20,50,100,25); [Link](lbla);
JTextField txta = new JTextField();[Link](100,50,180, 25); [Link](txta);
JLabel lbln = new JLabel("Nhập n:"); [Link](20,80,100,25); [Link](lbln);
JTextField txtn = new JTextField();[Link](100,80,180, 25); [Link](txtn);
JLabel lblKQ = new JLabel("Kết quả S(x,a,n)"); [Link](20,110,100,25); [Link](lblKQ);
JTextField txtKQ = new JTextField();[Link](100,110,180, 25); [Link](false); [Link](txtKQ);
JButton btnTinh = new JButton("Tính"); [Link](40,150,100,25); [Link](btnTinh);
JButton btnDong = new JButton("Đóng"); [Link](150,150,100,25); [Link](btnDong);
// Nút Tính
[Link](new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
double x = [Link]([Link]());
double a = [Link]([Link]());
int n = [Link]([Link]());
double result = tinhBieuThuc(x, a, n);
[Link]([Link](result));
} catch (Exception ex) {
[Link](null, "Dữ liệu không hợp lệ!");
});
// Nút Đóng
[Link](new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose(); // hoặc [Link](0);
});
[Link](true);
public static void main(String[] args) {
new test();
}
2.1 capNhatTrangSucDAO
public boolean capNhatTrangSuc(TrangSucDTO ts) {
String sql = "UPDATE TrangSuc SET Ten=?, DonGia=?, SoLuong=?, DacDiem=? WHERE MaTrangSuc=?";
try (Connection conn = [Link]();
PreparedStatement ps = [Link](sql)) {
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
return [Link]() > 0;
} catch (Exception e) {
[Link]();
return false;
}}
2.2 capNhatTrangSucBUS
public boolean capNhatTrangSuc(TrangSucDTO ts) {
TrangSucDAO dao = new TrangSucDAO();
return [Link](ts);
2.3 timkiemtrangsucDTO
public List<TrangSucDTO> timKiemTheoDacDiem(String keyword) {
List<TrangSucDTO> result = new ArrayList<>();
for (TrangSucDTO ts : danhSachTrangSuc) {
if ([Link]().toLowerCase().contains([Link]())) {
[Link](ts);
return result;
}
2.4 ve form
setTitle("Cập nhật Trang Sức");
setSize(700, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(null);
// Label + TextField
JLabel lblMa = new JLabel("Mã:"); [Link](20, 20, 80, 25); add(lblMa);
txtMa = new JTextField();[Link](100, 20, 200, 25); add(txtMa);
[Link](false); // Không cho sửa mã
JLabel lblTen = new JLabel("Tên:");
[Link](20, 50, 80, 25);
add(lblTen);
txtTen = new JTextField();
[Link](100, 50, 200, 25);
add(txtTen);
JLabel lblDonGia = new JLabel("Đơn giá:");
[Link](20, 80, 80, 25);
add(lblDonGia);
txtDonGia = new JTextField();
[Link](100, 80, 200, 25);
add(txtDonGia);
JLabel lblSoLuong = new JLabel("Số lượng:");
[Link](20, 110, 80, 25);
add(lblSoLuong);
txtSoLuong = new JTextField();
[Link](100, 110, 200, 25);
add(txtSoLuong);
JLabel lblDacDiem = new JLabel("Đặc điểm:");
[Link](20, 140, 80, 25);
add(lblDacDiem);
txtDacDiem = new JTextField();
[Link](100, 140, 200, 25);
add(txtDacDiem);
// Button cập nhật
btnCapNhat = new JButton("Cập nhật"); [Link](100, 180, 120, 30); add(btnCapNhat);
// Bảng hiển thị danh sách
model = new DefaultTableModel(new String[]{"Mã", "Tên", "Đơn giá", "Số lượng", "Đặc điểm"}, 0);
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
[Link](320, 20, 350, 300);
add(scrollPane);
setVisible(true);
2.5 xu kien capnhat
[Link](new ActionListener() {
public void actionPerformed(ActionEvent e) {
TrangSucDTO ts = new TrangSucDTO();
[Link]([Link]());
[Link]([Link]());
[Link]([Link]([Link]()));
[Link]([Link]([Link]()));
[Link]([Link]());
if ([Link](ts)) {
[Link](null, "Cập nhật thành công");
hienThiDanhSach();
} else {
[Link](null, "Cập nhật thất bại");
});
[Link](new ActionListener() {
public void actionPerformed(ActionEvent e) {
String tuKhoa = [Link]().trim();
if ([Link]()) {
[Link](null, "Vui lòng nhập từ khóa tìm kiếm!");
return;
List<TrangSucDTO> ketQua = [Link](tuKhoa);
hienThiKetQuaTimKiem(ketQua);
});
private void hienThiKetQuaTimKiem(List<TrangSucDTO> danhSach) {
DefaultTableModel model = (DefaultTableModel) [Link]();
[Link](0); // xóa dữ liệu cũ
for (TrangSucDTO ts : danhSach) {
[Link](new Object[]{
[Link](), [Link](), [Link](), [Link](), [Link]()
});
Hàm tìm kiếm trong TrangSucBUS (nếu chưa có)
public List<TrangSucDTO> timKiemTheoDacDiem(String keyword) {
List<TrangSucDTO> ketQua = new ArrayList<>();
for (TrangSucDTO ts : danhSachTrangSuc) {
if ([Link]().toLowerCase().contains([Link]())) {
[Link](ts);
return ketQua;
1. Trong lớp TrangSucDAO – Hàm themTrangSuc()
public boolean themTrangSuc(TrangSucDTO ts) {
String sql = "INSERT INTO TrangSuc (MaTrangSuc, Ten, DonGia, SoLuong, DacDiem) VALUES (?, ?, ?, ?, ?)";
try (Connection conn = [Link]();
PreparedStatement ps = [Link](sql)) {
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
return [Link]() > 0;
} catch (Exception e) {
[Link]();
return false;
2. Trong lớp TrangSucBUS – Hàm gọi DAO để thêm
public boolean themTrangSuc(TrangSucDTO ts) {
return [Link](ts);
3. Gợi ý sử dụng trong form TrangSucFRM (ví dụ nếu bạn có nút Thêm):
[Link](e -> {
TrangSucDTO ts = new TrangSucDTO(
[Link](),
[Link](),s
[Link]([Link]()),
[Link]([Link]()),
[Link]()
);
if ([Link](ts)) {
[Link](this, "Thêm thành công");
hienThiDanhSach();
} else {
[Link](this, "Thêm thất bại");
});
Xử lý sự kiện cho nút Xóa
[Link](e -> {
String ma = [Link]().trim();
if ([Link]()) {
[Link](this, "Vui lòng chọn trang sức để xóa.");
return;
int confirm = [Link](this,
"Bạn có chắc muốn xóa trang sức mã: " + ma + "?",
"Xác nhận xóa", JOptionPane.YES_NO_OPTION);
if (confirm == JOptionPane.YES_OPTION) {
if ([Link](ma)) {
[Link](this, "Xóa thành công!");
hienThiDanhSach();
clearForm();
} else {
[Link](this, "Xóa thất bại!");
});
2.1 themDAOpublic class ThuCungDAO
public boolean themThuCung(ThuCungDTO tc) {
try {
Connection conn = [Link]();
String sql = "INSERT INTO ThuCung (MaThuCung, Ten, MauLong, DonGia, SoLuong) VALUES (?, ?, ?, ?, ?)";
PreparedStatement pst = [Link](sql);
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
return [Link]() > 0;
} catch (Exception e) {
[Link]();
return false;
2.2 themBUS
public class ThuCungBUS {
private ThuCungDAO dao = new ThuCungDAO();
private ArrayList<ThuCungDTO> dsthucung = new ArrayList<>();
public boolean themThuCung(ThuCungDTO tc) {
boolean ok = [Link](tc);
if (ok) {
[Link](tc);
return ok;
}}
2.3 TimBUS // Hàm duyệt trong bộ nhớ (ArrayList – không truy cập CSDL)
public ArrayList<ThuCungDTO> timTheoMauLong(String mauTim) {
ArrayList<ThuCungDTO> ketQua = new ArrayList<>();
for (ThuCungDTO tc : dsthucung) {
if ([Link]().equalsIgnoreCase(mauTim)) {
[Link](tc);
return ketQua;
2.5 xu ly btnthem
[Link](e -> {
String ma = [Link]();
String ten = [Link]();
String mau = [Link]();
float gia = [Link]([Link]());
int sl = [Link]([Link]());
ThuCungDTO tc = new ThuCungDTO(ma, ten, mau, gia, sl);
boolean ok = [Link](tc);
if (ok) {
[Link](this, "Thêm thành công!");
} else {
[Link](this, "Thêm thất bại!");
});
2.6 xu ly btntimkiem
[Link](e -> {
String mau = [Link]();
ArrayList<ThuCungDTO> ketQua = [Link](mau);
// Xóa bảng cũ, thêm kết quả mới vào table
[Link](0);
for (ThuCungDTO tc : ketQua) {
[Link](new Object[]{
[Link](),
[Link](),
[Link](),
[Link](),
[Link]()
});
});
TimBUS
public ArrayList<ThuCungDTO> timTheoMauLong(String mauLong) { /// truy van truc tiep toi CSDL
return [Link](mauLong);
TimDAO
import [Link].*;
import [Link];
public class ThuCungDAO {
public ArrayList<ThuCungDTO> timTheoMauLong(String mauLong) {
ArrayList<ThuCungDTO> ketQua = new ArrayList<>();
try {
Connection conn = [Link]();
String sql = "SELECT * FROM ThuCung WHERE MauLong = ?";
PreparedStatement pst = [Link](sql);
[Link](1, mauLong);
ResultSet rs = [Link]();
while ([Link]()) {
ThuCungDTO tc = new ThuCungDTO();
[Link]([Link]("MaThuCung"));
[Link]([Link]("Ten"));
[Link]([Link]("MauLong"));
[Link]([Link]("DonGia"));
[Link]([Link]("SoLuong"));
[Link](tc);
} catch (Exception e) {
[Link]();
return ketQua;
}
setTitle("TÍNH LÃI SUẤT");setSize(400, 350);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
// Giao diện nhập
[Link] = new Insets(5, 5, 5, 5);
[Link] = 0; [Link] = 0;
add(new JLabel("Số tiền gửi:"), gbc);
[Link] = 1;
txtTienGoc = new JTextField(15);
add(txtTienGoc, gbc);
[Link] = 0; [Link] = 1;
add(new JLabel("Lãi suất năm (%):"), gbc);
[Link] = 1;
txtLaiSuat = new JTextField(15);
add(txtLaiSuat, gbc);
[Link] = 0; [Link] = 2;
add(new JLabel("Số năm:"), gbc);
[Link] = 1;
txtNam = new JTextField(15);
add(txtNam, gbc);
// Các nút chức năng
[Link] = 0; [Link] = 3;
btnTinh = new JButton("Tính");
add(btnTinh, gbc);
[Link] = 1;
btnXoa = new JButton("Xóa");
add(btnXoa, gbc);
[Link] = 2;
btnThoat = new JButton("Thoát");
add(btnThoat, gbc);
// RichTextBox hiển thị kết quả
[Link] = 0; [Link] = 4;
[Link] = 3;
rtbKetQua = new JTextArea(8, 30);
[Link](false);
add(new JScrollPane(rtbKetQua), gbc);
setVisible(true);
[Link](e -> {
try {
double tienGoc = [Link]([Link]());
double laiSuat = [Link]([Link]());
int soNam = [Link]([Link]());
[Link](""); // Xóa kết quả cũ
double tien = tienGoc;
for (int i = 1; i <= soNam; i++) {
tien = tien + tien * laiSuat / 100;
[Link]("Năm " + i + " --> " + [Link]("%.2f", tien) + "\n");
} catch (NumberFormatException ex) {
[Link](this, "Vui lòng nhập đúng số!");
});
[Link](e -> {
[Link]("");
[Link]("");
[Link]("");
[Link]("");
});
[Link](e -> {
[Link](0); // Đóng chương trình
});
scutomerDAO
package DAO;
import [Link].*;
import [Link];
import [Link].*;
import [Link];
import [Link];
public class StaffDAO {
public List<StaffDTO> getAllNhanVien() {
List<StaffDTO> list = new ArrayList<>();
String sql = "SELECT * FROM NHANVIEN";
try (Connection conn = [Link](); PreparedStatement ps = [Link](sql);
ResultSet rs = [Link]()) {
while ([Link]()) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String ngaySinh = "";
[Link] sqlDate = [Link]("NGAYSINH");
if (sqlDate != null) {
ngaySinh = [Link](sqlDate);
StaffDTO nv = new StaffDTO(
[Link]("MANV"),
[Link]("HOTENNV"),
[Link]("GIOITINH"),
[Link]("SDT"),
[Link]("DIACHI"),
ngaySinh
);
[Link](nv);
}
} catch (SQLException e) {
[Link]();
return list;
// Thêm nhân viên
public boolean insertNhanVien(StaffDTO nv) {
String sql = "INSERT INTO NHANVIEN (MANV, HOTENNV, GIOITINH, SDT, DIACHI, NGAYSINH) VALUES
(?, ?, ?, ?, ?, ?)";
try (Connection conn = [Link](); PreparedStatement ps = [Link](sql)) {
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
[Link](6, [Link]());
return [Link]() > 0;
} catch (SQLException e) {
[Link]();
return false;
// Cập nhật thông tin nhân viên
public boolean updateNhanVien(StaffDTO nv) {
String sql = "UPDATE NHANVIEN SET HOTENNV = ?, GIOITINH = ?, SDT = ?, DIACHI = ?, NGAYSINH = ? WHERE
MANV = ?";
try (Connection conn = [Link](); PreparedStatement ps = [Link](sql)) {
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
[Link](6, [Link]());
return [Link]() > 0;
} catch (SQLException e) {
[Link]();
return false;
// Xoá nhân viên theo mã
public boolean deleteNhanVien(String manv) {
String sql = "DELETE FROM NHANVIEN WHERE MANV = ?";
try (Connection conn = [Link](); PreparedStatement ps = [Link](sql)) {
[Link](1, manv);
return [Link]() > 0;
} catch (SQLException e) {
[Link]();
return false;
// Tìm nhân viên theo mã
public StaffDTO findNhanVienById(String manv) {
String sql = "SELECT * FROM NHANVIEN WHERE MANV = ?";
try (Connection conn = [Link](); PreparedStatement ps = [Link](sql)) {
[Link](1, manv);
ResultSet rs = [Link]();
if ([Link]()) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String ngaySinh = "";
[Link] sqlDate = [Link]("NGAYSINH");
if (sqlDate != null) {
ngaySinh = [Link](sqlDate);
return new StaffDTO(
[Link]("MANV"),
[Link]("HOTENNV"),
[Link]("GIOITINH"),
[Link]("SDT"),
[Link]("DIACHI"),
ngaySinh
);
} else {
[Link]("Không tìm thấy nhân viên có mã: " + manv); // <-- Thêm dòng này
} catch (SQLException e) {
[Link]();
return null;
// Tìm nhân viên theo tên gần đúng (LIKE %keyword%)
public List<StaffDTO> searchNhanVienByName(String keyword) {
List<StaffDTO> list = new ArrayList<>();
String sql = "SELECT * FROM NHANVIEN WHERE HOTENNV LIKE ?";
try (Connection conn = [Link](); PreparedStatement ps = [Link](sql)) {
[Link](1, "%" + keyword + "%");
ResultSet rs = [Link]();
while ([Link]()) {
StaffDTO nv = new StaffDTO(
[Link]("MANV"),
[Link]("HOTENNV"),
[Link]("GIOITINH"),
[Link]("SDT"),
[Link]("DIACHI"),
[Link]("NGAYSINH")
);
[Link](nv);
} catch (SQLException e) {
[Link]();
return list;
scutomerBUS
package BUS;
import [Link];
import [Link];
import [Link];
public class CustomerBUS {
private CustomerDAO khachhangDao;
public CustomerBUS(){
khachhangDao = new CustomerDAO();
}
public ArrayList<CustomerDTO> disPlayListCustomer(){
return (ArrayList<CustomerDTO>) [Link]();
public boolean addCustomer(CustomerDTO kh){
return [Link](kh);
public boolean updateCustomer(CustomerDTO kh){
return [Link](kh);
public boolean deleteCustomer(String makh){
return [Link](makh);
public CustomerDTO findKhachHangById(String makh){
return [Link](makh);
public ArrayList<CustomerDTO> searchKhachhangByName(String keyword){
return new ArrayList<> ([Link](keyword));
Trường hợp 1: Kiểm tra trùng mã trong ArrayList (danh sách đã load từ CSDL)
java
Sao chépChỉnh sửa
public class ThuCungBUS {
private ArrayList<ThuCungDTO> dsthucung = new ArrayList<>();
// Hàm kiểm tra mã duy nhất
public boolean laMaThuCungDuyNhat(String ma) {
for (ThuCungDTO tc : dsthucung) {
if ([Link]().equalsIgnoreCase(ma)) {
return false; // Trùng mã
return true; // Không trùng, là duy nhất
// Hàm thêm có kiểm tra trùng
public boolean themThuCung(ThuCungDTO tc) {
if (!laMaThuCungDuyNhat([Link]())) {
return false; // từ chối thêm nếu trùng mã
boolean ok = new ThuCungDAO().themThuCung(tc);
if (ok) [Link](tc);
return ok;
Trường hợp 2: Kiểm tra trực tiếp trong CSDL (dành cho quy mô lớn, đảm bảo đồng bộ)
java
Sao chépChỉnh sửa
public boolean laMaThuCungDuyNhatTrongDB(String ma) {
return !new ThuCungDAO().kiemTraTonTai(ma);
Và trong ThuCungDAO:
java
Sao chépChỉnh sửa
public boolean kiemTraTonTai(String ma) {
try {
Connection conn = [Link]();
String sql = "SELECT COUNT(*) FROM ThuCung WHERE MaThuCung = ?";
PreparedStatement pst = [Link](sql);
[Link](1, ma);
ResultSet rs = [Link]();
if ([Link]() && [Link](1) > 0) {
return true; // Có tồn tại
} catch (Exception e) {
[Link]();
return false;
}
🔹 1. Lớp và đối tượng
Lớp (Class): Là khuôn mẫu, bản thiết kế mô tả thuộc tính và hành vi của một nhóm đối tượng.
Đối tượng (Object): Là thể hiện (instance) cụ thể của một lớp, có dữ liệu riêng và hành vi riêng.
🔹 2. Hàm khởi tạo (Constructor)
Là phương thức đặc biệt được gọi khi tạo đối tượng (new).
Có cùng tên với lớp, không có kiểu trả về.
Có thể có nhiều constructor (nạp chồng).
🔹 3. Phương thức (Method)
Là hành vi của đối tượng, biểu diễn các chức năng xử lý.
Gọi thông qua đối tượng hoặc qua class nếu là static.
🔹 4. Thuộc tính (Field/Attribute)
Là dữ liệu của đối tượng (biến thành viên).
Có thể có các mức truy cập như private, public, protected.
🔹 5. Tính kế thừa (Inheritance)
Cho phép lớp con kế thừa thuộc tính và phương thức của lớp cha.
Dùng từ khóa extends trong Java.
🔹 6. Tính đa hình (Polymorphism)
Cho phép gọi phương thức giống nhau nhưng hành vi khác nhau tùy đối tượng.
Gồm đa hình tại thời điểm biên dịch (overloading) và đa hình tại runtime (overriding).
🔹 7. Tính đóng gói (Encapsulation)
Che giấu dữ liệu bên trong đối tượng, chỉ cho phép truy cập thông qua các phương thức công khai
(getter/setter).
Dùng private + public để kiểm soát quyền truy cập.
🔹 8. Lớp trừu tượng (Abstract Class)
Là lớp không thể tạo đối tượng trực tiếp.
Có thể chứa cả phương thức có thân và phương thức trừu tượng.
Dùng từ khóa abstract.
🔹 9. Hàm trừu tượng (Abstract Method)
Là phương thức không có thân, chỉ có khai báo.
Bắt buộc lớp con phải ghi đè (override).
🔹 10. Thuộc tính và phương thức static
static là thành viên dùng chung cho tất cả các đối tượng của lớp.
Gọi không cần tạo đối tượng: [Link]() hoặc [Link].
🔹 11. Giao diện (Interface)
Là một dạng lớp hoàn toàn trừu tượng.
Chỉ chứa các phương thức trừu tượng và hằng số.
Dùng implements để cho lớp kế thừa và triển khai.
Cau 1 getSelectedRow()
Cau 2 chi so cuoi = do dai mang -1
Cau 3 int[][] a = new int[m][n];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
a[i][j] = 1;
cau 4 remove()
cau 5 Flowlayout
cau 6 JFrame f = new JFrame("Ví dụ");
[Link](600, 400);
[Link](true);
cau 7 executeUpdate()
cau 8 CREATE TABLE Car (
manufacturer VARCHAR(100),
year_model INT,
ID CHAR(20));
Cau 1 dung
Cau 3 Là tham số dòng lệnh đầu tiên khi chạy chương trình.
Cau 4 Dùng để đọc một từ (token) từ bàn phím, dừng lại khi gặp khoảng trắng.
Csu 5
Dùng để hiển thị hộp thoại:
thông báo (showMessageDialog)
nhập dữ liệu (showInputDialog)
xác nhận (showConfirmDialog)
cau 6
Là BorderLayout
Gồm 5 vùng: NORTH, SOUTH, CENTER, EAST, WEST
Mặc định CENTER chiếm toàn bộ nếu không chỉ định
Cau 8 Phân biệt executeQuery() và executeUpdate() trong Statement?
Phương thức Dùng cho lệnh SQL Trả về gì?
executeQuery() SELECT ResultSet (dữ liệu)
executeUpdate() INSERT, UPDATE, DELETE int (số dòng bị ảnh hưởng)