Do đó, để giải quyết vấn đề này, chúngtôi đề xuất xây dựng một chương trình mô phỏng quảnlý danh bạ điện tử, đơn giản với các sơ đồ riêng chosinh viên.Chương trình mô phỏng quản lý danh
PHÂN TÍCH TỔNG QUAN
Giới thiệu tổng quan hệ thống
Trong thời đại kinh tế xã hội hiện nay, thông tin liên lạc đã trở thành nhu cầu không thể thiếu đối với các loại hoạt động của con người như giao tiếp kinh doanh, bạn bè, quan hệ xã hội,…Và một loại thông tin liên lạc mà chúng ta không thể không nhắc đến đó là điện thoại Nó đã trở thành phương tiện liên lạc phổ biến và là một phần không thể thiếu đối với cuộc sống của con người hiện nay Đối với mọi chiếc điện thoại di động danh bạ là ứng dụng không thể thiếu, dùng để quản lý danh bạ điện thoại, thông tin của những cá nhân cần liên lạc trong danh bạ
Trước đây thì danh bạ chỉ được quản lý và thể hiện trên giấy tờ, sổ sách và nhược điểm lớn nhất của việc đó là: tìm kiếm chậm, khó chỉnh sửa, khó bảo quản và khó chia sẻ,… Khi công nghệ ngày càng phát triển, nhịp sống con người cũng tăng theo thì các nhược điểm trên lại càng gây khó khăn trong việc quản lý thông tin liên lạc.
Hiện nay, với sự phát triển mạnh mẽ của công nghệ, nhiều ứng dụng công nghệ đã và đang được sử dụng rộng rãi Trước những điều kiện và tình hình thực tế đó, việc tin học hóa tổ chức và quản lý thông tin liên lạc là điều hữu hiệu nhất.
- Nhằm khắc phục những nhược điểm của việc quản lý danh bạ qua giấy tờ, chúng tôi đã làm nên chương trình chức năng quản lý danh bạ trên điện thoại nhằm tối ưu hóa được thời gian bảo quản và thông tin liên lạc Chương trình quản lý có nhiều ưu điểm phù hợp với cuộc sống ngày nay như:
- Mô phỏng quản lý số điện thoại: Chương trình mô phỏng quản lý danh bạ sẽ lưu lại các số điện thoại đã từng gọi, bên cạnh đó chức năng này còn giúp tìm được tên của người cần liên lạc thông qua số điện thoại
- Mô phỏng quản lý thời lượng cu⌀c gọi: Chương trình mô phỏng quản lý danh bạ sẽ lưu lại thời gian cuộc gọi từ khi bắt đầu đến khi kết thúc là bao nhiêu thời gian
- Mô phỏng quản lý tần suất gọi: : Chương trình mô phỏng quản lý danh bạ sẽ lưu lại số lần thực hiện cuộc gọi với số điện thoại mà bạn thường xuyên gọi f-xchang f-xchang
- Mô phỏng quản lý mốc thời gian thực hiện cu⌀c gọi: :
Chương trình mô phỏng quản lý danh bạ sẽ lưu lại thời gian bắt đầu cuộc gọi và thời gian kết thúc cuộc gọi
- Mô phỏng quản lý tên người gọi: : Chương trình mô phỏng quản lý danh bạ sẽ lưu lại tên của tất cả những người mà chúng ta liên lạc, ngoài ra chúng ta có thể tìm kiếm chỉnh sửa thông tin của họ khi cần thiết hoặc xóa bỏ khi người kia không còn sử dụng nó nữa.
3.Yêu cầu của hệ thống:
- Hệ thống đáp ứng được yêu cầu của nhà quản lý: quản lý truy xuất thông tin danh bạ nhanh chóng, hỗ trợ tổng hợp, báo cáo, cập nhật khi có thay đổi.
- Hiển thị thông tin liên lạc từng người
- Các chức năng cơ bản: thêm, sửa, xóa, tìm kiếm
- Quản lý thông tin liên lạc
- Giao diện trực quan, được bố trí hợp lý, dễ nhìn, dễ tương tác, tạo sự tiện lợi cho người quản lý danh sách danh bạ
- Tính bảo mật và độ an toàn cao.
- Dễ dàng nâng cấp, bảo trì về sau.
- Phần mềm cho phép lưu trữ một lượng lớn thông tin.
Giúp người dùng có thể quản lý danh bạ của họ một cách dễ dàng hơn Bên cạnh đó, chương trình giúp cho người dùng bảo quản được danh bạ của họ trở nên lâu dài hơn, có thể chia sẻ cho những người khác thông qua tìm kiếm thông tin liên lạc mà không cần phải tìm kiếm giấy tờ chậm. f-xchang f-xchang
Yêu cầu của hệ thống
- Hệ thống đáp ứng được yêu cầu của nhà quản lý: quản lý truy xuất thông tin danh bạ nhanh chóng, hỗ trợ tổng hợp, báo cáo, cập nhật khi có thay đổi.
- Hiển thị thông tin liên lạc từng người
- Các chức năng cơ bản: thêm, sửa, xóa, tìm kiếm
- Quản lý thông tin liên lạc
- Giao diện trực quan, được bố trí hợp lý, dễ nhìn, dễ tương tác, tạo sự tiện lợi cho người quản lý danh sách danh bạ
- Tính bảo mật và độ an toàn cao.
- Dễ dàng nâng cấp, bảo trì về sau.
- Phần mềm cho phép lưu trữ một lượng lớn thông tin.
Người dùng
Giúp người dùng có thể quản lý danh bạ của họ một cách dễ dàng hơn Bên cạnh đó, chương trình giúp cho người dùng bảo quản được danh bạ của họ trở nên lâu dài hơn, có thể chia sẻ cho những người khác thông qua tìm kiếm thông tin liên lạc mà không cần phải tìm kiếm giấy tờ chậm. f-xchang f-xchang
QUẢN LÍ THƯ MỤC
- Có 2 package: icon và DoAn_ChuDe1
- DoAn_ChuDe1 có 2 昀椀le: MainForm và NguoiDung
- Icon bao gồm các icon cần thiết cho chương trình
GIAO DIỆN VÀ CODE CHƯƠNG TRÌNH
Giao diện của chương trình
Code chương trình
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license- default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/ package doan_chude1; import java.io.Serializable;
*/ public class NguoiDung implements Serializable{ private String name; private String phoneNumber; private String gender; private String idUser; private String address; public String getName() { return name;
} public void setName(String name) { this.name = name;
} f-xchang f-xchang public String getPhoneNumber() { return phoneNumber;
} public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber;
} public String getGender() { return gender;
} public void setGender(String gender) { this.gender = gender;
} public String getIdUser() { return idUser;
} public void setIdUser(String idUser) { this.idUser = idUser;
} public String getAddress() { return address;
} public void setAddress(String address) { this.address = address;
} public NguoiDung(String name, String phoneNumber, String gender, String idUser, String address) { this.name = name; this.phoneNumber = phoneNumber; this.gender = gender; this.idUser = idUser; this.address = address;
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.java to edit this template
*/ package doan_chude1; import java.awt.Color; import java.awt.Component; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOExcep琀椀on; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.u琀椀l.ArrayList; import java.u琀椀l.logging.Level; import java.u琀椀l.logging.Logger; f-xchang f-xchang import javax.swing.JOp琀椀onPane; import javax.swing.table.DefaultTableModel;
*/ public class MainForm extends javax.swing.JFrame {
String[] columnNames = {"Họ và tên", "Số điện thoại", "Giới 琀nh", "CCCD", "Địa chỉ"};
ArrayList lstNguoiDung = new ArrayList();
ArrayList resultSearch = new ArrayList();
DefaultTableModel model; private Component MainForm;
* This method is called from within the constructor to ini琀椀alize the form.
* WARNING: Do NOT modify this code The content of this method is always
* regenerated by the Form Editor.
// private void initComponents() { jPanel3 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); txtSearch = new javax.swing.JTextField(); cbSearch = new javax.swing.JComboBox(); f-xchang f-xchang jScrollPane1 = new javax.swing.JScrollPane(); tbDanhBa = new javax.swing.JTable(); jPanel2 = new javax.swing.JPanel(); btnSua = new javax.swing.JBu琀琀on(); btnXoa = new javax.swing.JBu琀琀on(); btnLuu = new javax.swing.JBu琀琀on(); btnThem = new javax.swing.JBu琀琀on(); btnThoat = new javax.swing.JBu琀琀on(); jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); txtName = new javax.swing.JTextField(); txtSDT_Them = new javax.swing.JTextField(); txtCCCD_Them = new javax.swing.JTextField(); txtAddress_Them = new javax.swing.JTextField(); rdNam = new javax.swing.JRadioBu琀琀on(); rdNu = new javax.swing.JRadioBu琀琀on(); jMenuBar1 = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); jMenu2 = new javax.swing.JMenu(); setDefaultCloseOpera琀椀on(javax.swing.WindowConstants.EXIT_ON_CLOSE); jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jLabel1.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8-search-26.png"))); //
NOI18N jLabel1.setText("Tìm kiếm: "); txtSearch.addAc琀椀onListener(new java.awt.event.Ac琀椀onListener() { public void ac琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) { txtSearchAc琀椀onPerformed(evt); f-xchang f-xchang
}); cbSearch.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N cbSearch.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Họ và tên", "Số điện thoại", "CCCD", "Địa chỉ" })); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(jPanel3Layout.createSequen琀椀alGroup()
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
addComponent(txtSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 617, javax.swing.GroupLayout.PREFERRED_SIZE)
addComponent(cbSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 270, javax.swing.GroupLayout.PREFERRED_SIZE)
); jPanel3Layout.setVer琀椀calGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(jPanel3Layout.createSequen琀椀alGroup()
addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
addComponent(txtSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
addComponent(cbSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))
addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
); tbDanhBa.setModel(new javax.swing.table.DefaultTableModel( new Object [][] {
{null, null, null, null, null},
{null, null, null, null, null}, f-xchang f-xchang
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null}
"Họ và tên", "Số điện thoại", "Giới 琀nh", "CCCD", "Địa chỉ"
)); tbDanhBa.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tbDanhBaMouseClicked(evt);
}); jScrollPane1.setViewportView(tbDanhBa); jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder()); btnSua.setFont(new java.awt.Font("Arial", 1, 15)); // NOI18N btnSua.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8-edit-user-48.png"))); //
NOI18N btnSua.setText("Sửa"); btnSua.addAc琀椀onListener(new java.awt.event.Ac琀椀onListener() { public void ac琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) { btnSuaAc琀椀onPerformed(evt);
}); btnXoa.setFont(new java.awt.Font("Arial", 1, 15)); // NOI18N btnXoa.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8-remove-user-
48.png"))); // NOI18N btnXoa.setText("Xóa"); btnXoa.addAc琀椀onListener(new java.awt.event.Ac琀椀onListener() { public void ac琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) { btnXoaAc琀椀onPerformed(evt);
}); f-xchang f-xchang btnLuu.setFont(new java.awt.Font("Arial", 1, 15)); // NOI18N btnLuu.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8-save-30.png"))); //
NOI18N btnLuu.setText("Lưu"); btnLuu.addAc琀椀onListener(new java.awt.event.Ac琀椀onListener() { public void ac琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) { btnLuuAc琀椀onPerformed(evt);
}); btnThem.setFont(new java.awt.Font("Arial", 1, 15)); // NOI18N btnThem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8-add-user-48.png"))); //
NOI18N btnThem.setText("Thêm"); btnThem.addAc琀椀onListener(new java.awt.event.Ac琀椀onListener() { public void ac琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) { btnThemAc琀椀onPerformed(evt);
}); btnThoat.setFont(new java.awt.Font("Arial", 1, 15)); // NOI18N btnThoat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8-exit-30.png"))); //
NOI18N btnThoat.setText("Thoát"); btnThoat.addAc琀椀onListener(new java.awt.event.Ac琀椀onListener() { public void ac琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) { btnThoatAc琀椀onPerformed(evt);
}); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequen琀椀alGroup()
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequen琀椀alGroup()
); jPanel2Layout.setVer琀椀calGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(jPanel2Layout.createSequen琀椀alGroup()
addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
addComponent(btnSua, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)
addComponent(btnXoa, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)
addComponent(btnLuu, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)
addComponent(btnThoat, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE))
addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(jPanel2Layout.createSequen琀椀alGroup()
addComponent(btnThem, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)
); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Thông 琀椀n", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 24))); // NOI18N jLabel2.setFont(new java.awt.Font("Arial", 0, 20)); // NOI18N f-xchang f-xchang jLabel2.setText("Họ và tên:"); jLabel3.setFont(new java.awt.Font("Arial", 0, 20)); // NOI18N jLabel3.setText("Số điện thoại:"); jLabel4.setFont(new java.awt.Font("Arial", 0, 20)); // NOI18N jLabel4.setText("CCCD:"); jLabel5.setFont(new java.awt.Font("Arial", 0, 20)); // NOI18N jLabel5.setText("Giới 琀nh:"); jLabel7.setFont(new java.awt.Font("Arial", 0, 20)); // NOI18N jLabel7.setText("Địa chỉ:"); txtName.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N txtSDT_Them.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N txtCCCD_Them.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N txtAddress_Them.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N rdNam.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N rdNam.setText("Nam"); rdNu.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N rdNu.setText("Nữ"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(jPanel1Layout.createSequen琀椀alGroup()
addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
addGroup(jPanel1Layout.createSequen琀椀alGroup()
addComponent(rdNam, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE)
addComponent(rdNu, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE)
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 292,
addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequen琀椀alGroup()
addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
addComponent(txtAddress_Them, javax.swing.GroupLayout.DEFAULT_SIZE, 383,
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
addComponent(txtSDT_Them, javax.swing.GroupLayout.DEFAULT_SIZE, 383, Short.MAX_VALUE)
addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
); jPanel1Layout.setVer琀椀calGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(jPanel1Layout.createSequen琀椀alGroup()
addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
addComponent(txtName, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
addComponent(txtSDT_Them, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)) f-xchang f-xchang
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
addComponent(txtCCCD_Them, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
addComponent(txtAddress_Them, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
); jMenu1.setText("Danh bạ"); jMenuBar1.add(jMenu1); jMenu2.setText("Thông 琀椀n"); jMenuBar1.add(jMenu2); setJMenuBar(jMenuBar1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
addGroup(layout.createSequen琀椀alGroup()
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) f-xchang f-xchang
); layout.setVer琀椀calGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(layout.createSequen琀椀alGroup()
addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 325, javax.swing.GroupLayout.PREFERRED_SIZE)
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
}// private void btnSuaAc琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) {
// TODO add your handling code here: if(i != -1){
NguoiDung s = new NguoiDung(); s.setName(txtName.getText()); s.setPhoneNumber(txtSDT_Them.getText()); s.setIdUser(txtCCCD_Them.getText()); s.setAddress(txtAddress_Them.getText()); if(rdNam.isSelected()){ s.setGender("Nam");
} f-xchang f-xchang lstNguoiDung.set(i, s); hienThi(lstNguoiDung);
JOp琀椀onPane.showMessageDialog(MainForm, "Sửa Thành Công!");
JOp琀椀onPane.showMessageDialog(MainForm, "Vui lòng chọn một liên hệ để sửa!");
} private void btnLuuAc琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) {
// TODO add your handling code here: int i = ghiFile(); if(i == 1){
JOp琀椀onPane.showMessageDialog(MainForm, "Lưu Thành Công!");
JOp琀椀onPane.showMessageDialog(MainForm, "Lưu Không Thành Công!", "Warning",
JOp琀椀onPane.WARNING_MESSAGE);
} private void btnThemAc琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) {
// TODO add your handling code here:
NguoiDung s = new NguoiDung(); s.setName(txtName.getText()); s.setPhoneNumber(txtSDT_Them.getText()); s.setIdUser(txtCCCD_Them.getText()); s.setAddress(txtAddress_Them.getText()); if(rdNam.isSelected()){ s.setGender("Nam");
JOp琀椀onPane.showMessageDialog(MainForm, "Thêm thành công!"); hienThi(lstNguoiDung); clearInput();
} private void btnThoatAc琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) {
// TODO add your handling code here:
} int i = -1; private void tbDanhBaMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here: i = tbDanhBa.getSelectedRow(); if(i != -1){
NguoiDung s = lstNguoiDung.get(i); txtName.setText(s.getName()); txtSDT_Them.setText(s.getPhoneNumber()); txtAddress_Them.setText(s.getAddress()); txtCCCD_Them.setText(s.getIdUser()); if(s.getGender().equals("Nam")){ rdNam.setSelected(true); rdNu.setSelected(false);
} else{ rdNam.setSelected(false); rdNu.setSelected(true);
} private void btnXoaAc琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) {
// TODO add your handling code here: if(i != -1){
Object[] op琀椀ons = {
}; int n = JOp琀椀onPane.showOp琀椀onDialog(MainForm,
"Bạn có chắc chăn muốn xóa liên hệ " + s.getPhoneNumber() + "!",
JOp琀椀onPane.YES_NO_OPTION,
JOp琀椀onPane.QUESTION_MESSAGE, null, op琀椀ons, op琀椀ons[1]); if(n==0){ lstNguoiDung.remove(i);
JOp琀椀onPane.showMessageDialog(MainForm, "Vui lòng chọn một liên hệ để xóa!");
} private void txtSearchAc琀椀onPerformed(java.awt.event.Ac琀椀onEvent evt) {
// TODO add your handling code here:
String search = txtSearch.getText(); resultSearch.clear(); switch (cbSearch.getSelectedIndex()) { case 0: for(NguoiDung s : lstNguoiDung){ if(s.getName().contains(search)){ resultSearch.add(s);
} break; case 1: for(NguoiDung s : lstNguoiDung){ if(s.getPhoneNumber().contains(search)){ resultSearch.add(s);
} break; case 2: for(NguoiDung s : lstNguoiDung){ f-xchang f-xchang if(s.getIdUser().contains(search)){ resultSearch.add(s);
} break; default: for(NguoiDung s : lstNguoiDung){ if(s.getAddress().contains(search)){ resultSearch.add(s);
} if(resultSearch.isEmpty()){ txtSearch.setBackground(Color.red);
} else{ txtSearch.setBackground(Color.white); hienThi(resultSearch);
* @param args the command line arguments
*/ public sta琀椀c void main(String args[]) {
/* Set the Nimbus look and feel */
//
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see h琀琀p://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break;
} catch (ClassNotFoundExcep琀椀on ex) { java.u琀椀l.logging.Logger.getLogger(MainForm.class.getName()).log(java.u琀椀l.logging.Level.SEVERE, null, ex);
} catch (Instan琀椀a琀椀onExcep琀椀on ex) { java.u琀椀l.logging.Logger.getLogger(MainForm.class.getName()).log(java.u琀椀l.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessExcep琀椀on ex) { java.u琀椀l.logging.Logger.getLogger(MainForm.class.getName()).log(java.u琀椀l.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelExcep琀椀on ex) { java.u琀椀l.logging.Logger.getLogger(MainForm.class.getName()).log(java.u琀椀l.logging.Level.SEVERE, null, ex);
/* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MainForm().setVisible(true);
// Variables declara琀椀on - do not modify private javax.swing.JBu琀琀on btnLuu; private javax.swing.JBu琀琀on btnSua; private javax.swing.JBu琀琀on btnThem; private javax.swing.JBu琀琀on btnThoat; private javax.swing.JBu琀琀on btnXoa; private javax.swing.JComboBox cbSearch; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel7; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; f-xchang f-xchang private javax.swing.JMenuBar jMenuBar1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JRadioBu琀琀on rdNam; private javax.swing.JRadioBu琀琀on rdNu; private javax.swing.JTable tbDanhBa; private javax.swing.JTextField txtAddress_Them; private javax.swing.JTextField txtCCCD_Them; private javax.swing.JTextField txtName; private javax.swing.JTextField txtSDT_Them; private javax.swing.JTextField txtSearch;
// End of variables declara琀椀on private int ghiFile() { try {
FileOutputStream fos = new FileOutputStream("data");
ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(lstNguoiDung); fos.close(); oos.close();
} catch (IOExcep琀椀on ex) { return 0;
File 昀椀le = new File("data"); try { if(!昀椀le.exists()){
FileInputStream 昀椀s = new FileInputStream(昀椀le); f-xchang f-xchang
ObjectInputStream ois = new ObjectInputStream(昀椀s); lstNguoiDung = (ArrayList) ois.readObject(); hienThi(lstNguoiDung); ois.close();
} catch (ClassNotFoundExcep琀椀on | IOExcep琀椀on ex) {
Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex);
} private void hienThi(ArrayList lst) {
Object[][] obj = new Object[lst.size()][]; int i = 0; for(NguoiDung s : lst){ obj[i] = new Object[5]; obj[i][0] = s.getName(); obj[i][1] = s.getPhoneNumber(); obj[i][2] = s.getGender(); obj[i][3] = s.getIdUser(); obj[i][4] = s.getAddress(); i++;
} model = new DefaultTableModel(obj, columnNames); tbDanhBa.setModel(model); tbDanhBa.setVisible(true);
} public void clearInput(){ txtAddress_Them.setText(""); txtCCCD_Them.setText(""); txtName.setText(""); txtSDT_Them.setText(""); if(rdNam.isSelected()){ rdNam.setSelected(false);
} else{ f-xchang f-xchang rdNu.setSelected(false);