Dữ liệu: - Dữ liệu được đưa lên các mảng data nằm trong constant – “nhanVienAray, phongAray, dichVuAray, khachAray” chúng là 1 mảng động dạng ArrayList.. Các biến liên kết bảng sẽ
Trang 1Báo cáo của pdkpro
Trang 2Lời Cảm On
Trang 3MỤC LỤC
I Giới Thiệu.
1 Tổng Quan Về Chương Trình.
2 Yêu Cầu Bài Toán.
3 Thuật Toán Quản Lý.
II Giải Quyết Bài Toán :
Trang 4Đề Bài -
o Hiển thị thông tin lên giao diện.
o Bổ sung thêm 1 đối tượng vào danh sách.
o Chỉnh sửa các đối tượng.
o Xóa 1 hay nhiều đối tượng.
o Sắp xếp các đối tượng.
o Tìm kiếm theo nhiều hướng.
o In ra hóa đơn, tính tiền của từng khách.
o Tính tiền dựa trên số ngày và dịch vụ mà khách hang yêu cầu.
o Các phòng được phân thành các loại với giá và sức chứa khác
nhau, yêu cầu tính tiền dựa trên giá của từng phòng.
o Có user đăng nhập.
o Tạo tài khoản quản lý.
o Thay đổi mật khẩu tài khoản quản lý.
Trang 5I Giới Thiệu:
1 Tổng Quan Về Chương Trình.
2 Yêu Cầu Bài Toán.
3 Thuật Toán Quản Lý.
Dữ liệu:
- Dữ liệu được đưa lên các mảng data nằm trong constant –
“nhanVienAray, phongAray, dichVuAray, khachAray” chúng là 1 mảng động dạng ArrayList.
- Các thao tác được tiến hành trên “các mảng data” khi nào kết
thúc hoặc người dùng muốn lưu kết quả thì “các mảng data” sẽ được update vào lại DB.
Trang 6 Trong DB các bảng được đặt tên có kèm _tbl phía sau Vd user_tbl.
Biến dữ liệu trong mỗi bảng được bắt đầu bởi ký tự đầu của tên bảng vd u_id, u_ten (trong bảng user_tbl).
Các biến liên kết bảng sẽ bắt đầu bằng ký tự của bảng cộng với tên biến của bảng cần liên kết vd kh_p_id (liên kết giữa bảng khachhang_tbl và bảng phong_tbl).
Các biến trong Project được đặt tên với chữ cái đầu viết thường, viết hoa các chữ cái đầu của các từ tiếp theo Vd : findsPhong.
Các hàm sẽ viết hoa tất cả chữ cái đầu vd: AddDuLieuDau()
Các biến là Label,Button,… Được đặt tên với tên componant trước tiên, tên sẽ được cách ra bởi dấu gạch dưới Vd Jbutton -
Trang 7d khách hang:
e dịch vụ:
Trang 84 Phân Tích Xử Lý Yêu Cầu.
Hiển thị lên giao diện:
- Dùng panel hiển thị với kiểu layout cardLayout chứ 4 panel
PnQLNV, PnQLP3, PNQLKH, PnQLDV để hiển thị mỗi khi ta
chọn các button QLNhanVien, QLPhong, QLKhach Hang, QLDdich Vu.
- Hiển thị được chia làm 2 loại: bảng (ql Nhan Vien, ql Khach Hang, ql Dich VU) và liệt kê đối tượng tương tác (Phong).
- Ở phần bảng các dữ liệu sau khi load sẽ được đưa vào vector
“hang” nằm trong lớp QuanLyKhachSan để hiển thị lên thông qua các hàm ShowPnQLKH(), ShowPnQLDV(), ShowPnQLNV() -
- Ở phần phòng thì các phòng sẽ được đưa load thành mảng rồi đưa vào hàm ShowPnQLP() phân chia ra thành từng loại và show ra,
Trang 9mỗi phòng là 1 đối tượng có thể tương tác trực tiếp không cần thông qua các bảng
- Các hoạt động: thêm, sửa, xóa.
- Dữ liệu được chỉnh sửa ngay trên các mảng chứ trong Constants, sau khi hoàn thành các chỉnh sửa chương trình cho phép lưu lại vào DB bằng cách vào File -> save, hoặc lúc tắt chương trình, thống sẽ hỏi “bạn có muốn lưu chỉnh sửa k? ” lúc đó chúng ta có thể tương tác với nó.
Trang 10- Tìm kiếm: chương trình cung cấp nhiều loại tìm kiếm trên khung tìm kiếm cho người dùng có thể lựa chọn:
Trang 11Và mặc định sẽ là tìm với tất cả Chương trình sẽ bắt đầu tìm kiếm khi có thay đổi ký tự trên textFeild Tìm kiếm, và nó sẽ trả về 1 mảng các giá trị tìm được dưới dang ArrayList<Object> và được giao diện hiển thị lên(đã nói
ở trên).
Sắp Xếp:
- ở các bảng việc sắp xếp được modify từ cách sắp xếp mặc định của Table Muốn Sắp xếp trường vào thì kích vào Colum của trường đó, dữ liệu sau khi sắp xếp được trả về và modify lại vector hàng Sau đó gọi các hàm Show…() tương ứng để hiển thị lên lại trên bảng.
- Sắp xếp ở Phòng được chia làm 3 loại “có khách, còn trống và bảo trì” -> được hiển thị ngay trên giao diện phòng.
Trang 12 Hóa đơn tính tiền:
- Nếu trường “ngày đi “ còn trống thì hóa đơn sẽ tính là chính thời điểm ta nhấn vào nút hóa đơn.
- Tiền sẽ tính bằng tổng tiền phòng + với tổng tiền dịch vụ
mà khách hàng sử dụng mà chưa thanh toán.
Trang 13- Chọn “xong” để thanh toán thành công “hoặc đóng cửa sổ” để thoát.
Trang 14III Các Lớp Xử Lý:
1 Sắp Xếp ( SapXep_Cls ):
a AddSuKienChoTB:
public static void addSuKienChoTb(JTable fTable, int id) {
RowSorter<TableModel> fSorter = new
TableRowSorter<>(fTable.getModel());;
fTable.setRowSorter(fSorter);
fTable.getTableHeader().addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int column = fTable.getColumnModel().getColumnIndexAtX(e.getX()); Vector<Vector> hangNew = new Vector<Vector>();
//lay cac phan tu cua cot ra de sap xep
Vector v = new Vector();
Vector<Vector> vNull = new Vector<Vector>();//vector chứa phần tử null
if ((id == 1 && column == 4)||(id == 3 && column == 6)||id == 2 && (column == 8||column==9)) {
LocCacPhanTuNgay(v, vNull, column);
if (v.size() < 1)//neu null het thi khỏi sắp xếp
{
return;
}
} else {
LocCacPhanTuKhacNgay(v, vNull, column);
if (v.size() < 1)//neu null het thi khỏi sắp xếp
{
Trang 16for (int j = 0; j < v.size(); j++) {
for (int i = 0; i < qlks.getHang().size(); i++) {
public static void KiemTraCachSapXep(Vector<Vector> hangNew) {
if (cfQLNV) {//kiem tra neu bam lan 1 thi cho no sx tang, bam lan 2 thi cho no sap xep giam
cfQLNV = false;
} else {
//sx lai
Vector<Vector> temp = (Vector<Vector>) hangNew.clone();
hangNew.removeAllElements();//xoa tat ca phan tu va them theo chiều nguocj lại int j = temp.size() - 1;
for (int i = 0; i < temp.size(); i++) {
Trang 17* To change this template file, choose Tools | Templates
* and open the template in the editor
public static ArrayList<Integer> phanTu;
public String find;
public static ArrayList<DichVu_cls> fileTimKiem;
//public static int phanTu;
//public static boolean xoa = false;
String nhanVien_id = hh.getId() + "";
if ((nhanVien_id.length() >= find.length()) && (nhanVien_id.indexOf(find) >= 0)) {
Trang 18String nhanVien_id = hh.getKh_id() + "";
if ((nhanVien_id.length() >= find.length()) && (nhanVien_id.indexOf(find) >= 0)) {
String nhanVien_id = hh.getP_id() + "";
if ((nhanVien_id.length() >= find.length()) && (nhanVien_id.indexOf(find) >= 0)) {
Trang 19int i = 0;
while (i < constant_Cls.dichVuAray.size()) {
try {
DichVu_cls hh = constant_Cls.dichVuAray.get(i);
String ten = hh.getTen();
if ((ten.length() >= find.length()) && (ten.indexOf(find) >= 0)) {
String ten = hh.getTinhTrang();
if ((ten.length() >= find.length()) && (ten.indexOf(find) >= 0)) {
String ten = hh.getTenKhach();
if ((ten.length() >= find.length()) && (ten.indexOf(find) >= 0)) {
Trang 20Date date = hh.getThoiGian();
String dateString = constant_Cls.formatTime.format(date);
if ((dateString.length() >= find.length()) && (dateString.indexOf(find) >= 0)) {
String gia = hh.getGia() + "";
if ((gia.length() >= find.length()) && (gia.indexOf(find) >= 0)) {
Trang 21if ((diaChi.length() >= find.length()) && (diaChi.indexOf(find) >= 0)) {
String congViec = hh.getTenPhongNhan();
if ((congViec.length() >= find.length()) && (congViec.indexOf(find) >= 0)) {
Trang 22* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor
public class TimKhachHang_Cls {
public static ArrayList<Integer> phanTu;
public String find;
public static ArrayList<KhachHang_cls> fileTimKiem;
//public static int phanTu;
//public static boolean xoa = false;
Trang 23if ((Kh_id.length() >= find.length()) && (Kh_id.indexOf(find)>=0)) {
String gioiTinh = hh.getGioiTinh();
if ((gioiTinh.length() >= find.length()) && (gioiTinh.indexOf(find)>=0)) {
Trang 24Date date = hh.getNgayDen();
String dateString = constant_Cls.formatTime.format(date);
if ((dateString.length() >= find.length()) && (dateString.indexOf(find)>=0)) {
Trang 25Date date = hh.getNgayDi();
String dateString = constant_Cls.formatTime.format(date);
if ((dateString.length() >= find.length()) && (dateString.indexOf(find)>=0)) {
String tinhTrang = hh.getTinhTrang();
if ((tinhTrang.length() >= find.length()) && (tinhTrang.indexOf(find)>=0)) {
Trang 26while (i < constant_Cls.khachAray.size()) {
try {
KhachHang_cls hh = constant_Cls.khachAray.get(i);
String soNguoi = hh.getSoNguoi()+"";
if ((soNguoi.length() >= find.length()) && (soNguoi.indexOf(find)>=0)) {
String phongThue = hh.getPhongThue();
if ((phongThue.length() >= find.length()) && (phongThue.indexOf(find)>=0)) {
//kiem tra xem hanghoa da dc add vo chua, neu add vao roi thi tra ve true
public static boolean checkIn(int i) {
for (int j = 0; j < phanTu.size(); j++) {
Trang 27c Tim Phong:
/*
* To change this license header, choose License Headers in Project Properties
* To change this template file, choose Tools | Templates
* and open the template in the editor
public static ArrayList<Integer> phanTu;
public String find;
public static ArrayList<Phong_Cls> fileTimKiem;
//public static int phanTu;
//public static boolean xoa = false;
Trang 28Phong_Cls hh = constant_Cls.phongAray.get(i);
String nhanVien_id = hh.getId() + "";
if ((nhanVien_id.length() >= find.length()) && (nhanVien_id.indexOf(find) >= 0)) {
String nhanVien_id = hh.getSucchua()+ "";
if ((nhanVien_id.length() >= find.length()) && (nhanVien_id.indexOf(find) >= 0)) {
String nhanVien_id = hh.getLoai()+ "";
if ((nhanVien_id.length() >= find.length()) && (nhanVien_id.indexOf(find) >= 0)) {
Trang 29String ten = hh.getTenPhong();
if ((ten.length() >= find.length()) && (ten.indexOf(find) >= 0)) {
String ten = hh.getSo()+"";
if ((ten.length() >= find.length()) && (ten.indexOf(find) >= 0)) {
String ten = hh.getTenKhach();
if ((ten.length() >= find.length()) && (ten.indexOf(find) >= 0)) {
if (!checkIn(i)) {
fileTimKiem.add(hh);
phanTu.add(i);
Trang 30String dateString = hh.getSoNguoiO()+"";
if ((dateString.length() >= find.length()) && (dateString.indexOf(find) >= 0)) {
String gia = hh.getGia() + "";
if ((gia.length() >= find.length()) && (gia.indexOf(find) >= 0)) {
Trang 31//kiem tra xem hanghoa da dc add vo chua, neu add vao roi thi tra ve true public static boolean checkIn(int i) {
for (int j = 0; j < phanTu.size(); j++) {
* To change this license header, choose License Headers in Project Properties
* To change this template file, choose Tools | Templates
* and open the template in the editor
public class TimNhanVien_Cls {
public static ArrayList<Integer> phanTu;
public String find;
Trang 32public static ArrayList<NhanVien_Cls> fileTimKiem;
//public static int phanTu;
//public static boolean xoa = false;
String nhanVien_id = hh.getId()+"";
if ((nhanVien_id.length() >= find.length()) && (nhanVien_id.indexOf(find)>=0)) {
Trang 34if ((gioiTinh.length() >= find.length()) && (gioiTinh.indexOf(find)>=0)) {
Date date = hh.getNamSinh();
String dateString = constant_Cls.formatTime.format(date);
if ((dateString.length() >= find.length()) && (dateString.indexOf(find)>=0)) {
Trang 35public static void find_SDT(String find) {
String diaChi = hh.getDiaChi();
if ((diaChi.length() >= find.length()) && (diaChi.indexOf(find)>=0)) {
Trang 36String congViec = hh.getCongViec();
if ((congViec.length() >= find.length()) && (congViec.indexOf(find)>=0)) {
Trang 37if (i == phanTu.get(j)) { return true;