Thao tác và quản lý ứng dụng

Một phần của tài liệu Phần mềm quản lý đặt phòng khách sạn novotel (Trang 34 - 52)

3.4.1 Thao tác Thêm:

Để thêm dữ liệu vào bảng, người dùng nhập thông tin trực tiếp vào mỗi trường rồi nhấn vào button “Thêm” ở phía trên ứng dụng. Ví dụ, người dùng muốn thêm thông tin Phòng sẽ nhập lần lượt vào các trường Mã phòng (“MP034”), Mã Loại phòng chọn C1002, Tên Phòng (“Phong 609”), Trạng Thái chọn “Còn phòng”, Mô tả (“Phòng Superior có không gian khiêm tốn”) sau đó bấm vào button “Thêm” thì dữ liệu sẽ hiện lên listview (Hình ). Tại đây, ta xử lý dữ liệu bằng cách chuyển câu lệnh

private void bttThemPhong_Click(object sender, EventArgs e) {

if (checkFormPhong() == false) {

insertPhong();

/**

* Đô= dữ liệu vào list */

FillToTable();

} }

public bool checkFormPhong() {

if (tbMaPhong.Text.Equals("")) {

MessageBox.Show("Mã phòng không được để= trôZng!", "Thông báo");

return true;

}

else if (cbbMaLoaiPhong.SelectedIndex < 0) {

MessageBox.Show("Vui lòng chọn mã loại phòng!", "Thông báo");

}

if (tbTenPhong.Text.Equals("")) {

MessageBox.Show("Tển phòng không được để= trôZng!", "Thông báo");

return true;

}

if (tbMoTa.Text.Equals("")) {

MessageBox.Show("Mô ta= không được để= trôZng!", "Thông báo");

return true;

}

return false; }

public void insertPhong() {

string strMaLoaiPhong = cbbMaLoaiPhong.SelectedItem.ToString();

string strMaPhong = tbMaPhong.Text;

if (checkMaPhong(strMaPhong) == false) {

MessageBox.Show("Mã phòng đã tô?n tại!", "Thông báo");

return;

}

if (checkData(strMaLoaiPhong) == false) {

MessageBox.Show("Mã loại phòng không tô?n tại!", "Thông báo");

return;

}

if (strMaPhong.Length > 5) {

MessageBox.Show("Mã phòng pha=i bé hơn 6!", "Thông báo");

return;

} else {

int trangthai = 0;

if (rdoFalse.Checked) {

trangthai = 0;

{

trangthai = 1;

}

string sql = "INSERT INTO PHONG (MaPhong,

MaLoaiPhong,TenPhong, MoTaPhong, TrangThai) VALUES ('" + tbMaPhong.Text +

"','" + strMaLoaiPhong + "','" + tbTenPhong.Text +

"',N'" + tbMoTa.Text + "'," + trangthai + ")";

DataTable dt = new DataTable();

SqlDataAdapter da = new SqlDataAdapter(sql, conn);

conn.Open();

da.Fill(dt);

da.Dispose();

conn.Close();

MessageBox.Show("Thểm phòng thành công!", "Thông báo");

clearphongtxt();

} }

Hình 12 Dữ liệu trước khi dùng thao tác Thêm.

3.4.2 Thao tác Sửa:

Khi muốn sửa dữ liệu, người dùng click chuột vào dòng thông tin muốn sửa và các thông tin sẽ xuất hiện tương ứng các trường phía dưới. Tại đây, ta chỉnh lại các thông tin cần sửa và nhấn vào button “Sửa”. Thông tin sẽ được cập nhật và hiển thị lên bảng listview bên trên. Ví dụ, người dùng muốn chỉnh sửa Trạng thái có Mã phònglà MP034, ta click chuột vào thông tin Phòng đó và sửa vào click chuột vào Trạng thái “Hết phòng” (Hình. Thuật toán “Sửa” như sau:

private void btnSuaLoaiPhong_Click(object sender, EventArgs e) {

if (checkEmpty() == false) {

update(txtMaLoaiPhong.Text);

FillToTableLoaiPhong();

}

public bool checkEmpty() {

if (txtLoaiPhong.Text.Equals("")) {

MessageBox.Show("Loại phòng không được để= trôZng", "Thông báo");

return true;

}

if (txtSoGiuong.Text.Equals("")) {

MessageBox.Show("SôZ Giường không được để= trôZng", "Thông báo");

return true;

}

if (txtGiaPhong.Text.Equals("")) {

MessageBox.Show("Giá phòng không được để= trôZng", "Thông báo");

return true;

}

if (txtMaLoaiPhong.Text.Equals("")) {

MessageBox.Show("Mã Loại phòng không được để= trôZng", "Thông báo");

return true;

}

return false;

}

public void update(String MaLoaiPhong) {

int n;

bool isNumeric = int.TryParse(txtSoGiuong.Text, out n);

bool isNumeric1 = int.TryParse(txtGiaPhong.Text, out n);

string strMaLoaiPhong = txtMaLoaiPhong.Text;

if (checkData(strMaLoaiPhong) == false) {

MessageBox.Show("Mã phòng không tô?n tại", "Thông báo");

return;

}

if (!isNumeric) {

MessageBox.Show("Vui lòng nhập sôZ ơ= sôZ giường", "Thông báo");

return;

}

if (!isNumeric1) {

MessageBox.Show("Vui lòng nhập sôZ ơ= giá phòng ", "Thông báo");

return;

} else {

String sql = "UPDATE LOAIPHONG SET LoaiPhong = '" +

txtLoaiPhong.Text + "', SoGiuong = " + txtSoGiuong.Text + ", GiaPhong = '"

+ txtGiaPhong.Text + "' WHERE MaLoaiPhong = '" + txtMaLoaiPhong.Text + "'";

DataTable dt = new DataTable();

SqlDataAdapter da = new SqlDataAdapter(sql, conn);

conn.Open();

da.Fill(dt);

da.Dispose();

conn.Close();

MessageBox.Show("Cập nhật loại phòng thành công", "Thông báo");

cleartxt();

} }

Hình 13 Dữ liệu sau khi dùng thao tác Sửa.

3.4.3 Thao tác Xóa:

Tương tự hai thao tác trên.Thay vì dùng lệnh Insert và Update, ta dùng lệnh Delete để xóa dữ liệu của Phòng có Mã phòng “MP034” như sau:

private void btnXoa_Click(object sender, EventArgs e) {

DialogResult dialogResult = MessageBox.Show("Bạn có muôZn xóa phòng này không", "Thông báo", MessageBoxButtons.YesNo);

if (dialogResult == DialogResult.Yes) {

deletePhong(tbMaPhong.Text);

FillToTable();

clearphongtxt();

} }

public void deletePhong(String MaPhong) {

string strMaPhong = tbMaPhong.Text;

if (checkMaPhong(strMaPhong) == true) {

MessageBox.Show("Mã phòng không tô?n tại", "Thông báo");

return;

} else {

String sql = "DELETE PHONG WHERE MaPhong = '" + tbMaPhong.Text +

"'";

DataTable dt = new DataTable();

SqlDataAdapter da = new SqlDataAdapter(sql, conn);

conn.Open();

da.Fill(dt);

da.Dispose();

conn.Close();

MessageBox.Show("Xóa phòng thành công", "Thông báo");

} }

Hình 14 Dữ liệu sau khi dùng thao tác Xóa.

3.4.4 Thao tác Tìm kiếm:

Chức năng tìm kiếm này cho phép người dùng tìm kiếm được toàn bộ thông tin nhanh chóng và hiệu quả.

Ví dụ tìm Đơn đặt phòng như sau:

Người dùng nhập Mã đơn phòng, nhấn vào button Tìm để tìm kiếm. Lúc này, việc tìm kiếm sẽ được hệ thống chạy chương trình và hiển thị tất cả thông tin liên quan đến ‘Mã đơn phòng’ trên bảng listview.

private void btTimFgiaodienchinh_Click(object sender, EventArgs e)

{

string maDonDatPhong = tbTimdondatphong.Text;

findByDonDatPhong(maDonDatPhong);

}

public void findByDonDatPhong(String donDatPhong) {

String sql = "SELECT * FROM DONDATPHONG WHERE MaDonDatPhong LIKE '%"

+ donDatPhong + "%'";

DataTable dt = new DataTable();

SqlDataAdapter da = new SqlDataAdapter(sql, conn);

conn.Open();

da.Fill(dt);

da.Dispose();

conn.Close();

listDatPhong.Items.Clear();

for (int i = 0; i < dt.Rows.Count; i++) {

ListViewItem lvi = new ListViewItem(dt.Rows[i]

DateTime oDate2 = Convert.ToDateTime(dt.Rows[i]["NgayDen"]);

DateTime oDate3 = Convert.ToDateTime(dt.Rows[i]["NgayDi"]);

lvi.SubItems.Add(dt.Rows[i]["MaPhong"].ToString());

lvi.SubItems.Add(dt.Rows[i]["MaKhach"].ToString());

lvi.SubItems.Add(oDate1.ToString("dd/MM/yyyy"));

lvi.SubItems.Add(oDate2.ToString("dd/MM/yyyy"));

lvi.SubItems.Add(oDate3.ToString("dd/MM/yyyy"));

lvi.SubItems.Add(dt.Rows[i]["ThoiGianThue"].ToString());

lvi.SubItems.Add(dt.Rows[i]["TienPhong"].ToString());

lvi.SubItems.Add(dt.Rows[i]["DatCoc"].ToString());

lvi.SubItems.Add(dt.Rows[i]["ConLai"].ToString());

if (dt.Rows[i]["HuyDon"].ToString().Equals("False")) {

lvi.SubItems.Add("Không");

} else {

lvi.SubItems.Add("Đã hu=y");

}

listDatPhong.Items.Add(lvi);

} }

Hình 15 Dữ liệu sau khi dùng thao tác Tìm kiếm .

3.4.5 Thống kê:

Ứng dụng cung cấp mục thống kê thông tin Đơn đặt phòng theo Ngày của khách hàng để người sử dụng dễ dàng nắm bắt được thông tin của khách hàng và tổng tiền thanh toán, tổng số thời gian theo ngày đi của khách hàng.. Hình bên dưới là mục thống kê Tổng số phòng, tổng thời gian và trạng thái của khách sạn vào ngày đến 15/6/2020 và ngày đi 15/6/2021 và kết quả cho thấy vào khoảng thời gian này đã có Tổng số tiền là 83400, Tổng thời gian thuê là 140. Để lập trình thao tác button

“Thống kê” ta thực hiện viết lệnh như sau:

private void btnSearchPrice_Click(object sender, EventArgs e) {

string strDate0 = "";

string strDate1 = "";

int intSelectTime = cbbTime1.SelectedIndex;

int intCancelRoom = 1;

int dayInMonth = GetDayOfMonth(dtpTime3);

if (intSelectTime == 2) {

strDate0 = dtpTime2.Value.ToString("yyyy-01-01");

strDate1 = dtpTime3.Value.ToString(("yyyy-12-" + dayInMonth));

}

else if (intSelectTime == 1) {

strDate0 = dtpTime2.Value.ToString("yyyy-MM-01");

strDate1 = dtpTime3.Value.ToString(("yyyy-MM-" + dayInMonth));

} else {

strDate0 = dtpTime2.Value.ToString("yyyy-MM-dd");

strDate1 = dtpTime3.Value.ToString("yyyy-MM-dd");

}

if (ckbHuyPhong0.Checked.ToString() == "False") {

intCancelRoom = 0;

} else {

intCancelRoom = 1;

}

getSumData(strDate0, strDate1, intCancelRoom);

}

private int GetDayOfMonth(DateTimePicker date) {

// LẩZy năm trong date (ngày tháng năm)

int intYear = int.Parse(date.Value.ToString("yyyy"));

// LẩZy tháng trong date (ngày tháng năm)

int intMonth = int.Parse(date.Value.ToString("MM"));

// LẩZy ngày trong tháng và năm và return lại return DateTime.DaysInMonth(intYear, intMonth);

}

public void getSumData(string date1, string date2, int cancelRoom) {

Connection();

String sql = "" +

"SELECT SUM(TienPhong) TongTienPhong, SUM(ThoiGianThue) TongThoiGian,HuyDon " +

" FROM DONDATPHONG

HuyDon = " + cancelRoom + " " +

" GROUP BY HuyDon

";

DataTable dt = new DataTable();

SqlDataAdapter da = new SqlDataAdapter(sql, conn);

conn.Open();

da.Fill(dt);

da.Dispose();

conn.Close();

// Set to details view.

listDonDatHang.View = View.Details;

listDonDatHang.Columns.Clear();

listDonDatHang.Columns.Add("Tô=ng tiể?n phòng", 150, HorizontalAlignment.Left);

listDonDatHang.Columns.Add("Tô=ng thời gian thuể", 200, HorizontalAlignment.Left);

listDonDatHang.Columns.Add("Hu=y phòng", 150, HorizontalAlignment.Left);

listDonDatHang.Columns.Add("Từ ngày", 150, HorizontalAlignment.Left);

listDonDatHang.Columns.Add("ĐểZn ngày", 150, HorizontalAlignment.Left);

listDonDatHang.Items.Clear();

listDonDatHang.FullRowSelect = true;

if (dt.Rows.Count == 0) {

ListViewItem lviNull = new ListViewItem("Không có dữ liệu.");

listDonDatHang.Items.Add(lviNull);

return;

}

// Đô= dữ liệu ơ= đẩy từng hàng

ListViewItem lvi = new ListViewItem(dt.Rows[0]

["TongTienPhong"].ToString());

lvi.SubItems.Add(dt.Rows[0]["TongThoiGian"].ToString());

if (dt.Rows[0]["HuyDon"].ToString().Equals("False")) {

lvi.SubItems.Add("Không");

} else {

lvi.SubItems.Add("Đã hu=y");

}

lvi.SubItems.Add(dtpTime2.Value.ToString("dd/MM/yyyy"));

lvi.SubItems.Add(dtpTime3.Value.ToString("dd/MM/yyyy"));

listDonDatHang.Items.Add(lvi);

}

Hình 16 Thống kê các khách hàng theo ngày đến và ngày đi.

3.4.6 Kết thúc chương trình:

Khi đã sử dụng xong ứng dụng, ta nhấn vào “ ” để thoát chương trình.

Một phần của tài liệu Phần mềm quản lý đặt phòng khách sạn novotel (Trang 34 - 52)

Tải bản đầy đủ (DOCX)

(53 trang)
w