You are on page 1of 24

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC QUY NHƠN


KHOA CÔNG NGHỆ THÔNG TIN
  

BÁO CÁO LẬP TRÌNH ỨNG DỤNG TRÊN DESKTOP

Họ Và Tên: Lê Xuân Ngọc


Lớp: Công nghệ thông tin k44A
Mã Số Sinh Viên: 4451050516
Giảng Viên: Nguyễn Thị Loan

Bình Định 06/2023

MỤC LỤC

I.GIỚ I THIỆ U PHẦ N MỀ M QUẢ N LÝ KHÁ CH SẠ N


II.NỘ I DUNG THỰ C HIỆ N
1.Cơ sở dữ liệu
2.Tá c nhâ n sử dụ ng
3.Mà n hình đă ng nhậ p
3.1.Cá c thà nh phầ n tạ o nên
4.Mà n hình chính
4.1.Cá c thà nh phầ n tạ o nên
5.Danh mụ c củ a ứ ng dụ ng
5.1.Danh mụ c khá ch hà ng
5.2.Danh mụ c nhâ n viên
5.3.Danh mụ c phò ng
5.4.Danh mụ c đặ t phò ng
III.ĐÁ NH GIÁ VÀ KẾ T LUẬ N
1.Kết quả đạ t đượ c
2.Hạ n chế và hướ ng phá t triển

[1]
GIỚI THIỆU PHẦN MỀM QUẢN LÝ KHÁCH SẠN
NỘI DUNG THỰC HIỆN

Cơ sở dữ liệu

Cơ sở dữ liệu ở đâ y đượ c thiết kế bao gồ m 5 bả ng:


Bả ng TAIKHOAN lưu trữ tà i khoả n củ a ngườ i quả n lý bao gồ m: Tà i khoả n(Username),
mậ t khẩ u(Pass).
Bả ng NHANVIEN lưu trữ thô ng tin gồ m: ID nhâ n viên(IDNV), Tên nhâ n viên(TenNV), số
điện thoạ i nhâ n viên(SdtNV), giớ i tính(GioiTinh)
[2]

Bả ng KHACHHANG lưu trữ thô ng tin gồ m: ID khá ch hà ng(IDKH), tên khá ch


hà ng(TenKH), số điện thoạ i khá ch hà ng(StdKH), địa chỉ(DiaChi)
Bả ng PHONG lưu trữ thô ng tin gồ m: ID phò ng(IDPhong), số điện thoạ i
phò ng(SdtPhong), phò ng miễn phí(PhongMP)
Bả ng DATPHONG lưu trữ thô ng tin gồ m: ID đặ t phò ng(IDDP), ID khá ch hà ng(IDKH), ID
phò ng(IDPhong), ngà y đặ t(NgayDat), ngà y trả (NgayTra)

Tác nhân sử dụng

Cá c tá c nhâ n sử dụ ng phầ n mềm gồ m ngườ i quả n lý

Màn hình đăng nhập

Tên Kiểu Mô tả
label1 Label Hiển thị “Hotel”
label2 Label Hiển thị “Tên đă ng nhậ p”
label3 Label Hiển thị “Mậ t khẩ u”
txtuser TextBox Nơi nhậ p tên đă ng nhậ p
txtpass TextBox Nơi nhậ p mậ t khẩ u
button1 Button Đă ng nhậ p khi đã nhậ p đủ và
đú ng thô ng tin

Nú t đă ng nhậ p

Quản lý khi muốn đăng nhập vào hệ thống cần có tài khoản để sử dụng, nhập đầy đủ tên
đăng nhập và mật khẩu vào 2 ô textbox, sau đó nhấn nút đăng nhập. Mật khẩu được mã hóa hiển
thị các ký tự * để bảo mật.

[3]
Nếu sai tên đăng nhập hoặc mật khẩu sẽ có thông báo để nhập lại như sau:

Nếu ngườ i quả n lý nhậ p đú ng tên đă ng nhậ p và mậ t khẩ u sẽ hiện mà n hình chính:
Code củ a Mà n hình đă ng nhậ p:
+Nú t”Đă ng nhậ p”:
private void Button1_Click(object sender, EventArgs e)
{
Con.Open();
SqlDataAdapter sda = new SqlDataAdapter("SELECT COUNT(*) FROM TAIKHOAN
WHERE Username = @Username AND Pass = @Pass", Con);
sda.SelectCommand.Parameters.AddWithValue("@Username", txtuser.Text);
sda.SelectCommand.Parameters.AddWithValue("@Pass", txtpass.Text);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows[0][0].ToString() == "1")
{
MainForm mf = new MainForm();
mf.Show();
this.Hide();
}
else
{
MessageBox.Show("Nhập sai tên đăng nhập hoặc mật khẩu");
}
Con.Close();

// Xóa nội dung mật khẩu sau khi xử lý


txtpass.Text = "";
}
MÀN HÌNH CHÍNH

Tên Kiểu Mô tả
menuStrip1 MenuStrip Thanh menu chứ a cá c chứ c nă ng
label1 Label Hiển thị”Quả n lý khá ch sạ n”
danhMụ cToolStripMenuItem MenuItem Chứ a cá c danh mụ c
khá chHà ngToolStripMenuItem MenuItem Hiển thị thô ng tin khá ch hang
nhâ nViênToolStripMenuItem MenuItem Hiển thị thô ng tin nhâ n viên
phò ngToolStripMenuItem MenuItem Hiển thị thô ng tin phò ng
đặ tPhò ngToolStripMenuItem MenuItem Hiển thị thô ng tin đặ t phò ng
thoá tToolStripMenuItem MenuItem Thoá t, quay lạ i mà n hình đă ng
nhậ p
pictureBox1 PictureBox Nú t”refresh” dữ liệu có trong
bả ng

Code mà n hình chính:


+Danh mụ c:
private void nhânViênToolStripMenuItem_Click(object sender, EventArgs e)
{
NhanVien nv = new NhanVien();
nv.Show();
this.Hide();
}

private void kháchHàngToolStripMenuItem_Click(object sender, EventArgs e)


{
NguoiDung nd = new NguoiDung();
nd.Show();
this.Hide();
}

private void phòngToolStripMenuItem_Click(object sender, EventArgs e)


{
Phong p = new Phong();
p.Show();
this.Hide();
}

private void đặtPhòngToolStripMenuItem_Click(object sender, EventArgs e)


{
DatPhong dp = new DatPhong();
dp.Show();
this.Hide();
}
Khi click vào các danh mục sẽ lập tức vào được từng danh mục của ứng dụng

+Thoát:
private void thoátToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
f.Show();
this.Hide();
}
Thoát ra màn hình đăng nhập

CÁ C DANH MỤ C CỦ A Ứ NG DỤ NG

Danh mụ c khá ch hà ng:

Tên Kiểu Mô tả
panel1 Pannel
label1 Label Hiển thị”Thô ng tin khá ch hà ng”
label2 Label Hiển thị”ID khá ch hà ng”
label3 Label Hiển thị”Tên khá ch hà ng”
label4 Label Hiển thị”Số điện thoạ i”
label5 Label Hiển thị”Địa chỉ”
label6 Label Hiển thị”Nhậ p ID khá ch hà ng”
txtid TextBox Nơi nhậ p ID khá ch hà ng
txttenkh TextBox Nơi nhậ p tên khá ch hà ng
txtsdt TextBox Nơi nhậ p số điện thoạ i khá ch
hà ng
txtdiachi TextBox Nơi nhậ p địa chỉ củ a khá ch hà ng
txttk TextBox Nơi tìm kiếm khá ch hang theo
ID khá ch hà ng
button2 Button Nú t “Thoá t” thoá t khỏ i danh
mụ c về mà n hình chính
btnthem Button Nú t”Thêm” để thêm mớ i 1
khá ch hà ng bao gồ m đầ y đủ cá c
thô ng tin trong danh mụ c
btnsua Button Nú t”Sử a” để sử a thô ng tin khá ch
hang theo ID khá ch hà ng
btnxoa Button Nú t”Xó a” để xó a thô ng tin khá ch
hang theo ID khá ch hang
button1 Button Nú t”Tìm kiếm khá ch hà ng” để
tìm kiếm thô ng tin khá ch hang
theo ID khá ch hang
dataGridView1 DataGridView1 Hiện thị dữ liệu

Code củ a danh mụ c khá ch hà ng:


+Nú t”Thoá t”:
private void Button2_Click(object sender, EventArgs e)
{
MainForm mf = new MainForm();
mf.Show();
this.Hide();
}
Khi thực hiện sẽ quay lại màn hình chính

+Phương thức hiện thị để hiển thị dữ liệu của Database:


public void hienthi()
{
Con.Open();
string query = "SELECT * FROM KHACHHANG";
SqlDataAdapter da = new SqlDataAdapter(query, Con);
SqlCommandBuilder sbd = new SqlCommandBuilder(da);
var ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
Con.Close();
}
+Nút”Thêm”:
private void Btnthem_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtid.Text) ||
string.IsNullOrEmpty(txttenkh.Text) || string.IsNullOrEmpty(txtsdt.Text) ||
string.IsNullOrEmpty(txtdiachi.Text))
{
MessageBox.Show("Vui lòng nhập đầy đủ thông tin khách hàng");
return;
}
Con.Open();
SqlCommand checkCmd = new SqlCommand("SELECT COUNT(*) FROM KHACHHANG WHERE
IDKH = @IDKH", Con);
checkCmd.Parameters.AddWithValue("@IDKH", txtid.Text);
int count = (int)checkCmd.ExecuteScalar();
if (count > 0)
{
MessageBox.Show("ID đã tồn tại");
Con.Close();
return;
}
SqlCommand cmd = new SqlCommand("INSERT INTO KHACHHANG VALUES (@IDKH,
@TenKH, @SDTKH, @DC)", Con);
cmd.Parameters.AddWithValue("@IDKH", txtid.Text);
cmd.Parameters.AddWithValue("@TenKH", txttenkh.Text);
cmd.Parameters.AddWithValue("@SDTKH", txtsdt.Text);
cmd.Parameters.AddWithValue("@DC", txtdiachi.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Thêm khách hàng thành công");
Con.Close();
hienthi();
}
Khi thực hiện sẽ thêm mới 1 khách hàng, nếu không nhập đầy đủ thông tin sẽ hiện thông
báo ”Vui long nhập đầy đủ thông tin khách hàng”

Nếu ID đã tồn tại thì sẽ hiện thông báo “ID đã tồn tại”:

Nếu nhập đầy đủ thông tin và không bị trùng ID khách hang thì sẽ thực hiện thêm khách
hàng thành công:
Và khách hàng được thêm sẽ được hiển thị ở bảng dataGridview1:

+dataGridview:
private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs
e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
txtid.Text = row.Cells[0].Value.ToString();
txttenkh.Text = row.Cells[1].Value.ToString();
txtsdt.Text = row.Cells[2].Value.ToString();
txtdiachi.Text = row.Cells[3].Value.ToString();
}
}
Khi click vào các cột trong bảng dataGridview sẽ hiển thị lên các ô textbox tương ứng
trên danh mục:
+Nút”Sửa”:
private void Btnsua_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtid.Text) ||
string.IsNullOrEmpty(txttenkh.Text) || string.IsNullOrEmpty(txtsdt.Text) ||
string.IsNullOrEmpty(txtdiachi.Text))
{
MessageBox.Show("Vui lòng nhập đầy đủ thông tin khách hàng");
return;
}
Con.Open();
SqlCommand checkCmd = new SqlCommand("SELECT COUNT(*) FROM KHACHHANG WHERE
IDKH = @IDKH", Con);
checkCmd.Parameters.AddWithValue("@IDKH", txtid.Text);
int count = (int)checkCmd.ExecuteScalar();
if (count == 0)
{
MessageBox.Show("Không tìm thấy ID khách hàng");
Con.Close();
return;
}
SqlCommand cmd = new SqlCommand("UPDATE KHACHHANG SET TenKH = @TenKH,
SdtKH = @SDTKH, DiaChi = @DC WHERE IDKH = @IDKH", Con);
cmd.Parameters.AddWithValue("@TenKH", txttenkh.Text);
cmd.Parameters.AddWithValue("@SDTKH", txtsdt.Text);
cmd.Parameters.AddWithValue("@DC", txtdiachi.Text);
cmd.Parameters.AddWithValue("@IDKH", txtid.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Sửa thông tin khách hàng thành công");
Con.Close();
hienthi();
}
Khi thực hiện nút”Sửa” thì bắt buộc nhập đúng ID khách hàng để sửa các thông tin còn
lại.

Nếu không nhập đủ thông tin thì sẽ thông báo”Vui long nhập đầy đủ thông tin khách
hàng”:
Nếu nhập không đúng ID khách hàng sẽ hiện thông báo”Không tìm thấy ID khách hàng”:

Nếu nhập đúng ID khách hàng và nhập đầy đủ thông tin sẽ sửa được thông tin:

Và thông tin vừa sửa sẽ được hiển thị:


+Nút “Xóa”:
private void Btnxoa_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtid.Text))
{
MessageBox.Show("Vui lòng nhập ID khách hàng cần xóa");
return;
}
Con.Open();
SqlCommand checkCmd = new SqlCommand("SELECT COUNT(*) FROM KHACHHANG WHERE
IDKH = @IDKH", Con);
checkCmd.Parameters.AddWithValue("@IDKH", txtid.Text);
int count = (int)checkCmd.ExecuteScalar();
if (count == 0)
{
MessageBox.Show("Không tìm thấy ID khách hàng");
Con.Close();
return;
}
string tieude = "Bạn có chắc chắn muốn xóa khách hàng có ID '" +
txtid.Text + "' không?";
string xacnhan = "Xác nhận xóa khách hàng";
DialogResult confirmResult = MessageBox.Show(tieude, xacnhan,
MessageBoxButtons.YesNo);
if (confirmResult == DialogResult.Yes)
{
SqlCommand cmd = new SqlCommand("DELETE FROM KHACHHANG WHERE IDKH =
@IDKH", Con);
cmd.Parameters.AddWithValue("@IDKH", txtid.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Xóa khách hàng thành công");
}
Con.Close();
hienthi();
}
Khi thự c hiện nú t”Xó a” bắ t buộ c ngườ i dù ng nhậ p đú ng ID khá ch hà ng nếu khô ng sẽ hiện thô ng
bá o”Khô ng tìm thấ y ID khá ch hà ng” :
Nếu Khô ng nhậ p ID khá ch hà ng sẽ hiện thô ng bá o”Vui long nhậ p ID khá ch hà ng cầ n xó a”:

Nếu nhậ p đú ng ID khá ch hà ng thì sẽ hiện thô ng bá o xá c nhậ n:

Nếu click “Yes” thì sẽ hiện thô ng bá o”Xó a khá ch hà ng thà nh cô ng”:
+Nú t “Tìm kiếm khá ch hà ng”:
private void Button1_Click(object sender, EventArgs e)
{
Con.Open();
string query = "SELECT * FROM KHACHHANG WHERE IDKH = '" + txttk.Text +
"'";
SqlDataAdapter da = new SqlDataAdapter(query, Con);
SqlCommandBuilder sbd = new SqlCommandBuilder(da);
var ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count == 0)
{
MessageBox.Show("Không tìm thấy thông tin khách hàng");
}
else
{
dataGridView1.DataSource = ds.Tables[0];
}
Con.Close();
}
Khi thực hiện nút tìm kiếm sẽ bắt buộc người dùng nhập ID khách hàng.
Nếu không nhập đúng ID khách hàng sẽ thông báo”Không tìm thấy thông tin khách hàng”:
Nếu nhậ p đú ng ID sẽ tìm kiếm đượ c và hiện ra bả ng:

+ Nú t”Refresh”:

private void PictureBox1_Click(object sender, EventArgs e)


{
hienthi();
}
Hiển thị tất cả dữ liệu có trong database lên dataGridview.
Danh mục nhân viên:

Tên Kiểu Mô tả

Code củ a danh mụ c nhâ n viên:


+Nú t”Thoá t”:
private void Button2_Click(object sender, EventArgs e)
{
MainForm mf = new MainForm();
mf.Show();
this.Hide();
}
Khi thực hiện sẽ quay lại màn hình chính

+Phương thức hiện thị để hiển thị dữ liệu của Database:


public void hienthi()
{
Con.Open();
string query = "SELECT * FROM KHACHHANG";
SqlDataAdapter da = new SqlDataAdapter(query, Con);
SqlCommandBuilder sbd = new SqlCommandBuilder(da);
var ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
Con.Close();
}

+Nú t “Thêm”:
private void Btnthem_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtidnv.Text) ||
string.IsNullOrEmpty(txttennv.Text) || string.IsNullOrEmpty(txtsdtnv.Text))
{
MessageBox.Show("Vui lòng nhập đầy đủ thông tin nhân viên");
return;
}
string gt;
if (radioButton1.Checked == true)
gt = "Nam";
else
gt = "Nữ";
Con.Open();
SqlCommand checkCmd = new SqlCommand("SELECT COUNT(*) FROM NHANVIEN WHERE
IDNV = @IDNV", Con);
checkCmd.Parameters.AddWithValue("@IDNV", txtidnv.Text);
int count = (int)checkCmd.ExecuteScalar();
if (count > 0)
{
MessageBox.Show("ID đã tồn tại");
Con.Close();
return;
}
SqlCommand cmd = new SqlCommand("INSERT INTO NHANVIEN VALUES (@IDNV,
@TenNV, @SDTNV, @GT)", Con);
cmd.Parameters.AddWithValue("@IDNV", txtidnv.Text);
cmd.Parameters.AddWithValue("@TenNV", txttennv.Text);
cmd.Parameters.AddWithValue("@SDTNV", txtsdtnv.Text);
cmd.Parameters.AddWithValue("@GT", gt);
cmd.ExecuteNonQuery();
MessageBox.Show("Thêm nhân viên thành công");
Con.Close();
hienthi();
}
Khi thực hiện sẽ thêm mới 1 nhân viên, nếu không nhập đầy đủ thông tin sẽ hiện thông
báo ”Vui long nhập đầy đủ thông tin nhân viên”:

Nếu ID đã tồn tại thì sẽ hiện thông báo “ID đã tồn tại”:
Nếu nhập đầy đủ thông tin và không bị trùng ID nhân viên thì sẽ thực hiện thêm nhân
viên thành công và thêm vào bảng dataGridview:
+Nút “Sửa”:
private void Btnsua_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtidnv.Text) ||
string.IsNullOrEmpty(txttennv.Text) || string.IsNullOrEmpty(txtsdtnv.Text))
{
MessageBox.Show("Vui lòng nhập đầy đủ thông tin nhân viên");
return;
}
string gt;
if (radioButton1.Checked == true)
gt = "Nam";
else
gt = "Nữ";
Con.Open();
SqlCommand checkCmd = new SqlCommand("SELECT COUNT(*) FROM NHANVIEN WHERE
IDNV = @IDNV", Con);
checkCmd.Parameters.AddWithValue("@IDNV", txtidnv.Text);
int count = (int)checkCmd.ExecuteScalar();
if (count == 0)
{
MessageBox.Show("Không tìm thấy ID nhân viên");
Con.Close();
return;
}
SqlCommand cmd = new SqlCommand("UPDATE NHANVIEN SET TenNV = @TenNV, SdtNV
= @SDTNV, GioiTinh = @GT WHERE IDNV = @IDNV", Con);
cmd.Parameters.AddWithValue("@TenNV", txttennv.Text);
cmd.Parameters.AddWithValue("@SDTNV", txtsdtnv.Text);
cmd.Parameters.AddWithValue("@GT", gt);
cmd.Parameters.AddWithValue("@IDNV", txtidnv.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Sửa thông tin nhân viên thành công");
Con.Close();
hienthi();
}
Khi thực hiện nút”Sửa” thì bắt buộc nhập đúng ID nhân viên để sửa các thông tin còn
lại.

Nếu không nhập đủ thông tin thì sẽ thông báo”Vui lòng nhập đầy đủ thông tin nhân
viên”:

Nếu nhập không đúng ID nhân viên sẽ hiện thông báo”Không tìm thấy ID nhân viên”:
Nếu nhập đúng ID khách hàng và nhập đầy đủ thông tin sẽ sửa được thông tin:

Và dữ liệu sẽ được cập nhật:


+Nút “Xóa”:
private void Btnxoa_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtidnv.Text))
{
MessageBox.Show("Vui lòng nhập ID nhân viên cần xóa");
return;
}
Con.Open();
SqlCommand checkCmd = new SqlCommand("SELECT COUNT(*) FROM NHANVIEN WHERE
IDNV = @IDNV", Con);
checkCmd.Parameters.AddWithValue("@IDNV", txtidnv.Text);
int count = (int)checkCmd.ExecuteScalar();
if (count == 0)
{
MessageBox.Show("Không tìm thấy ID nhân viên");
Con.Close();
return;
}
string confirmMessage = "Bạn có chắc chắn muốn xóa nhân viên có ID '" +
txtidnv.Text + "' không?";
string confirmTitle = "Xác nhận xóa nhân viên";
DialogResult confirmResult = MessageBox.Show(confirmMessage, confirmTitle,
MessageBoxButtons.YesNo);
if (confirmResult == DialogResult.Yes)
{
SqlCommand cmd = new SqlCommand("DELETE FROM NHANVIEN WHERE IDNV =
@IDNV", Con);
cmd.Parameters.AddWithValue("@IDNV", txtidnv.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Xóa nhân viên thành công");
}
Con.Close();
hienthi();
}

Khi thự c hiện nú t”Xó a” bắ t buộ c ngườ i dù ng nhậ p đú ng ID nhâ n viên nếu khô ng sẽ hiện thô ng bá o”Khô ng
tìm thấ y ID nhâ n viên” :

+Nút”Tìm kiếm nhân viên”:


private void Btntknv_Click(object sender, EventArgs e)
{
Con.Open();
string query = "SELECT * FROM NHANVIEN WHERE IDNV = '" + txttknv.Text +
"'";
SqlDataAdapter da = new SqlDataAdapter(query, Con);
SqlCommandBuilder sbd = new SqlCommandBuilder(da);
var ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count == 0)
{
MessageBox.Show("Không tìm thấy thông tin nhân viên");
}
else
{
datagnv.DataSource = ds.Tables[0];
}
Con.Close();
}
+dataGridview:
private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs
e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow row = this.datagnv.Rows[e.RowIndex];
txtidnv.Text = row.Cells[0].Value.ToString();
txttennv.Text = row.Cells[1].Value.ToString();
txtsdtnv.Text = row.Cells[2].Value.ToString();
}

}
Khi click vào các cột trong bảng dataGridview sẽ hiển thị lên các ô textbox tương ứng
trên danh mục:
+ Nú t”Refresh”:

private void PictureBox1_Click(object sender, EventArgs e)


{
hienthi();
}
Hiển thị tất cả dữ liệu có trong database lên dataGridview.

You might also like