1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe

70 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Hệ Thống Quản Lý Cửa Hàng Cafe
Tác giả Hoàng Thị Phương Anh, Nguyễn Thị Hồng, Nguyễn Văn Quyền, Nguyễn Đức Thế
Người hướng dẫn Ths. Lê Cẩm Tú
Trường học Học Viện Ngân Hàng
Chuyên ngành Lập Trình .NET
Thể loại Báo Cáo Bài Tập Lớn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 70
Dung lượng 6,76 MB

Cấu trúc

  • CHƯƠNG 0: ĐẶT VẤN ĐỀ (14)
    • 1. Phát biểu bài toán (14)
    • 2. Lý do chọn đề tài (14)
    • 3. Tính cấp thiết của đề tài (15)
  • CHƯƠNG 1: MÔ TẢ NGHIỆP VỤ HỆ THỐNG (16)
    • 1.1. Mô tả bài toán (16)
    • 1.2. Mô tả nghiệp vụ hệ thống (17)
      • 1.2.1. Input của bài toán (17)
      • 1.2.2. Output của bài toán (17)
    • 1.3. Các chức năng của hệ thống (18)
    • 1.4. Thiết kế chức năng hệ thống (18)
      • 1.4.1. Chức năng Thêm dữ liệu (18)
      • 1.4.2. Chức năng Sửa dữ liệu (20)
      • 1.4.3. Chức năng Xóa dữ liệu (21)
      • 1.4.4. Chức năng Tìm kiếm dữ liệu (22)
      • 1.4.5. Chức năng Bỏ qua (22)
      • 1.4.6. Chức năng Đóng (23)
      • 1.4.7. Chức năng In dữ liệu (23)
  • CHƯƠNG 2: THIẾT KẾ CƠ SỞ DỮ LIỆU MỨC KHÁI NIỆM (0)
    • 2.1. Thiết kế cơ sở dữ liệu (0)
      • 2.1.1. Thực thể (0)
      • 2.1.2. Mối quan hệ (0)
    • 2.2. Sơ đồ liên kết (0)
  • CHƯƠNG 3. GIẢI QUYẾT VẤN ĐỀ (28)
    • 3.1. Xây dựng Form chính cho chương trình (28)
      • 3.1.1. Tạo giao diện Form chính (28)
      • 3.1.2. Viết mã lệnh cho Form chính (29)
      • 3.1.3. Tạo lớp – Class functions (31)
    • 3.2. Giao diện các Form con (31)
      • 3.2.1. Giao diện các form Danh mục (31)
      • 3.2.2. Giao diện các form Hóa đơn (34)
      • 3.2.3. Giao diện các form Tìm kiếm (35)
      • 3.2.4. Giao diện form Báo cáo (36)
    • 3.3. Form xử lý yêu cầu bài toán (38)
      • 3.3.1. Số lượng trong bảng Sản phẩm tự động cập nhật khi nhập hàng (38)
      • 3.3.2. Số lượng trong bảng Sản phẩm tự động cập nhật khi bán hàng (43)
      • 3.3.3. Giá nhập trong bảng Sản phẩm được tự động cập nhật khi nhập hàng, giá bán bằng 110% giá nhập (47)
      • 3.3.4. Các sản phẩm có thể tìm kiếm theo thông tin cần thiết (49)
      • 3.3.5. Lập các báo cáo cần thiết để chủ cửa hàng có thể theo dõi được tình hình (51)
  • KẾT LUẬN (69)
  • TÀI LIỆU THAM KHẢO (70)

Nội dung

Chúng em sẽ mô tả cách mà hệ thống giúpquản lý thông tin về nhân viên, khách hàng, sản phẩm, nhà cung cấp, hóa đơn và báo cáomột cách hiệu quả và nhất quán.. Thông qua việc theo dõi doan

MÔ TẢ NGHIỆP VỤ HỆ THỐNG

Mô tả bài toán

Bài toán cần giải quyết trong hệ thống quản lý quán cafe này là quản lý và điều phối các hoạt động kinh doanh hàng ngày của quán cafe, từ việc nhập hàng, bán hàng cho khách hàng, đến quản lý nhân viên và các thông tin liên quan.

Trước hết, cần quản lý các hoá đơn nhập và hoá đơn bán hàng Đối với hoá đơn nhập, hệ thống cần ghi nhận thông tin về nhà cung cấp, ngày nhập hàng, các mặt hàng được nhập và số lượng tương ứng Trong khi đó, hoá đơn bán cần ghi nhận thông tin về khách hàng, ngày bán hàng, các mặt hàng được bán và số lượng tương ứng, cùng với các chương trình khuyến mãi nếu có. Để quản lý hàng tồn kho, hệ thống cần theo dõi số lượng hàng tồn kho của mỗi sản phẩm sau mỗi giao dịch nhập hoặc bán hàng Điều này giúp quản lý hiệu quả lượng hàng tồn kho, đảm bảo không gặp tình trạng thiếu hàng hoặc tồn kho quá mức.

Quản lý thông tin về sản phẩm cũng là một phần quan trọng trong hệ thống Hệ thống cần lưu trữ các thông tin chi tiết về sản phẩm như tên, loại sản phẩm, giá nhập, giá bán, công dụng và hình ảnh minh họa Điều này giúp quản lý và truy xuất thông tin sản phẩm một cách nhanh chóng và chính xác.

Quản lý thông tin khách hàng và nhân viên là nền tảng cho việc quản lý đối tác kinh doanh và nhân sự Thông tin này bao gồm họ tên, địa chỉ liên hệ, số điện thoại và các dữ liệu liên quan Đáng chú ý, quản lý nhân viên cần tập trung vào thông tin quê quán nhằm hỗ trợ hoạt động thống kê và quản lý nhân sự hiệu quả.

Hệ thống cần hỗ trợ các chức năng báo cáo để phân tích và đánh giá hiệu suất kinh doanh, bao gồm doanh thu, lợi nhuận, hàng tồn kho và các chỉ số khác để đưa ra các quyết định kinh doanh hiệu quả.

Database mà bài toán quản lý bao gồm các bảng sau: tbl_chitiethdn: Lưu trữ chi tiết các mặt hàng trong hóa đơn nhập, bao gồm mã hóa đơn nhập, mã sản phẩm, số lượng, đơn giá, thành tiền và chiết khấu (nếu có). tbl_chitiethoadonban: Đây là bảng chi tiết các mặt hàng trong hóa đơn bán, bao gồm mã hóa đơn bán, mã sản phẩm, số lượng, thành tiền và khuyến mãi (nếu có). tbl_congdung: Lưu trữ thông tin về công dụng của sản phẩm, bao gồm mã công dụng và tên công dụng. tbl_hoadonban và tbl_hoadonnhap: Đây là hai bảng lưu trữ thông tin về hóa đơn bán và hóa đơn nhập tương ứng, bao gồm mã hóa đơn, ngày nhập/bán, mã nhân viên, mã khách hàng hoặc nhà cung cấp và tổng tiền. tbl_khachhang và tbl_ncc: Lưu trữ thông tin về khách hàng và nhà cung cấp, bao gồm mã, tên, địa chỉ và số điện thoại.

3 tbl_loaisp và tbl_sanpham: Các bảng này lưu trữ thông tin về loại sản phẩm và sản phẩm tương ứng, bao gồm mã, tên, giá nhập, giá bán, số lượng, mã công dụng, mã loại và đường dẫn hình ảnh. tbl_nhanvien và tbl_que: Lưu trữ thông tin về nhân viên và quê quán tương ứng,bao gồm mã, tên, địa chỉ, giới tính, ngày sinh, mã quê và số điện thoại.

Mô tả nghiệp vụ hệ thống

Thông tin sản phẩm: Lưu trữ các thông tin về sản phẩm cà phê và các loại đồ uống khác như tên sản phẩm, loại sản phẩm, giá nhập, giá bán, số lượng tồn kho và các thông tin liên quan khác.

Thông tin nhà cung cấp: Bảng này chứa thông tin về các nhà cung cấp cà phê, bao gồm tên nhà cung cấp, địa chỉ, số điện thoại và các chi tiết liên quan khác.

Thông tin khách hàng: Lưu trữ các thông tin cá nhân của khách hàng như tên, địa chỉ, số điện thoại và các thông tin liên quan khác.

Bảng thông tin nhân viên lưu trữ thông tin chi tiết về các nhân viên của cửa hàng cà phê như tên, chức vụ, ngày sinh, địa chỉ, số điện thoại và thông tin liên quan.

Thông tin hóa đơn nhập: Ghi lại thông tin chi tiết về các hóa đơn nhập hàng từ nhà cung cấp, bao gồm mã hóa đơn, ngày nhập, mã nhân viên, mã nhà cung cấp và tổng tiền. Thông tin hóa đơn bán: Lưu trữ các thông tin chi tiết về các hóa đơn bán hàng cho khách hàng, bao gồm mã hóa đơn, ngày bán, mã nhân viên, mã khách hàng và tổng tiền.

Thông tin công dụng của sản phẩm

Thông tin loại sản phẩm

Thông tin nhà cung cấp

Thông tin hoá đơn nhập

Thông tin hoá đơn bán

Quản lý thông tin sản phẩm cà phê và các đồ uống khác.

Theo dõi thông tin về nhà cung cấp cà phê và các vật liệu liên quan.

Ghi lại thông tin cá nhân của khách hàng và nhân viên cửa hàng.

Thực hiện ghi chú và quản lý hóa đơn nhập và hóa đơn bán hàng.

Tạo ra báo cáo doanh số bán hàng, lợi nhuận và tồn kho.

Theo dõi hoạt động kinh doanh của cửa hàng và phân tích xu hướng tiêu thụ.

Các chức năng của hệ thống

Nhập dữ liệu từ bàn phím

Thêm và lưu thông tin vào cơ sở dữ liệu

Sửa thông tin trong cơ sở dữ liệu

Xóa thông tin trong cơ sở dữ liệu

Huỷ các thao tác đang diễn ra

Thiết kế chức năng hệ thống

1.4.1 Chức năng Thêm dữ liệu

Chức năng thêm lưu dữ liệu cho phép người dùng thao tác dữ liệu thêm mới ở hệ thống và lưu dữ liệu thêm mới đó vào cơ sở dữ liệu.

Bước 1: Nhập dữ liệu từ bàn phím

Bước 2: Kiểm tra sự chính xác của dữ liệu đã nhập nhập (kiểm tra xem có nhập thiếu và có đúng định dạng nhập hay không)

- Nếu sai hiển thị thông báo lỗi và quay lại bước 1

- Nếu đúng chuyển sang bước 3

Bước 3: Kiểm tra dữ liệu nhập với dữ liệu đã có trong cơ sở dữ liệu

- Nếu trùng dữ liệu đã có trong cơ sở dữ liệu thì thông báo lỗi và quay lại bước 1

- Nếu đúng chuyển sang bước 4

Bước 4: Cập nhật vào cơ sở dữ liệu

Bước 5: Hiển thị dữ liệu đã nhập, kết thúc quy trình

- Button Thêm: private void btnthem_Click(object sender, EventArgs e)

{ btnsua.Enabled = false; btnxoa.Enabled = false; btnboqua.Enabled = true; btnluu.Enabled = true; btnthem.Enabled = false; reset(); txtmasanpham.Enabled = true; txtmasanpham.Focus();

- Button Lưu: private void btnluu_Click(object sender, EventArgs e)

5 if (txtmasanpham.Text.Trim().Length == 0)

MessageBox.Show("Bạn phải nhập mã sản phẩm", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Warning); txtmasanpham.Focus(); return;

} if (txttensanpham.Text.Trim().Length == 0)

MessageBox.Show("Bạn phải nhập tên sản phẩm", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Warning); txttensanpham.Focus(); return;

} if (cbomaloai.Text.Trim().Length == 0)

MessageBox.Show("Bạn phải nhập loại sản phẩm", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Warning); cbomaloai.Focus(); return;

} if (cbomacongdung.Text.Trim().Length == 0)

MessageBox.Show("Bạn phải nhập công dụng của sản phẩm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning); cbomacongdung.Focus(); return;

} if (txthinhanh.Text.Trim().Length == 0)

MessageBox.Show("Bạn phải chọn ảnh minh họa cho sản phẩm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning); txthinhanh.Focus(); return;

} sql = "SELECT masanpham FROM tbl_sanpham WHERE masanpham=N'" + txtmasanpham.Text.Trim() + "'"; if (funtion.CheckKey(sql))

MessageBox.Show("Mã sản phẩm này đã có, bạn phải nhập mã khác", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtmasanpham.Focus(); txtmasanpham.Text = ""; return;

The SQL statement is used to insert new product information into the tbl_sanpham table The statement includes the product ID, name, category, quantity, purchase price, selling price, application ID, and image The RunSql function then executes the SQL statement, resulting in the successful insertion of the new product data.

Load_DataGridView(); reset(); btnxoa.Enabled = true; btnthem.Enabled = true; btnsua.Enabled = true;

6 btnboqua.Enabled = false; btnluu.Enabled = false; txtmasanpham.Enabled = false;

1.4.2 Chức năng Sửa dữ liệu

Khi muốn thay đổi thông tin có thể sửa thông tin

Bước 1: Chọn dữ liệu cần sửa

Bước 2: Nhập lại dữ liệu cần sửa

Bước 3: Kiểm tra dữ liệu

- Nếu sai thông báo lỗi và quay lại bước 2

- Nếu đúng tiếp tục bước 4

Bước 4: Lưu dữ liệu đã sửa vào cơ sở dữ liệu

Bước 5: Hiển thị lại dữ liệu đã sửa

Code xử lý: private void btnsua_Click(object sender, EventArgs e)

{ string sql; if (tbl_sanpham.Rows.Count == 0)

MessageBox.Show("Không còn dữ liệu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); return;

MessageBox.Show("Bạn chưa chọn bản ghi nào", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Information); return;

} if (txttensanpham.Text.Trim().Length == 0)

MessageBox.Show("Bạn phải nhập tên sản phẩm", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Warning); txttensanpham.Focus(); return;

} if (cbomaloai.Text.Trim().Length == 0)

MessageBox.Show("Bạn phải nhập loại sản phẩm", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Warning); cbomaloai.Focus(); return;

}if (cbomacongdung.Text.Trim().Length == 0)

MessageBox.Show("Bạn phải nhập công dụng của sản phẩm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);

} if (txthinhanh.Text.Trim().Length == 0)

MessageBox.Show("Bạn phải chọn ảnh minh họa cho hàng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning); txthinhanh.Focus(); return;

} sql = "UPDATE tbl_sanpham SET tensanpham=N'" + txttensanpham.Text.Trim().ToString() + "',maloai=N'" + cbomaloai.SelectedValue.ToString() + "',macongdung=N'" + cbomacongdung.SelectedValue.ToString() + "',hinhanh='" + txthinhanh.Text + "'WHERE masanpham=N'" + txtmasanpham.Text + "'"; funtion.RunSql(sql);

Load_DataGridView(); reset(); btnboqua.Enabled = false;

1.4.3 Chức năng Xóa dữ liệu

Có thể xoá dữ liệu không dùng hoặc dữ liệu sai

Bước 1: Chọn dữ liệu cần xóa

- Nếu trong bảng không có dữ liệu sang bước 3

- Nếu có dữ liệu thì xoá dữ liệu đó

Code xử lý: private void btnxoa_Click(object sender, EventArgs e)

{ string sql; if (tbl_sanpham.Rows.Count == 0)

MessageBox.Show("Không còn dữ liệu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); return;

MessageBox.Show("Bạn chưa chọn bản ghi nào", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Information); return;

} if (MessageBox.Show("Bạn có muốn xóa không?", "Thông báo",

MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)

{ sql = "DELETE tbl_sanpham WHERE masanpham=N'" + txtmasanpham.Text + "'"; funtion.RunSql(sql);

1.4.4 Chức năng Tìm kiếm dữ liệu

Chức năng tìm kiếm được sử dụng khi người dùng tra cứu thông tin nào đó

Bước 1: Nhập thông tin tìm kiếm

Bước 2: Kiểm tra thông tin có tồn tại hay không

- Nếu có thì hiển thị Thông tin cần tim

- Nếu không có thì thông báo nhập lại thông tin hoặc thoát khỏi chức năng tìm kiếm

Code xử lý: private void btntimkiem_Click(object sender, EventArgs e)

{ string sql; if ((txtmasanpham.Text == "") && (txttensanpham.Text == "") && (cbomaloai.Text == "") & (cbomacongdung.Text == ""))

MessageBox.Show("Hãy nhập một điều kiện tìm kiếm!!!", "Yêu cầu ",

MessageBoxButtons.OK, MessageBoxIcon.Warning); return;

} sql = "SELECT * FROM tbl_sanpham WHERE 1=1"; if (txtmasanpham.Text != "") sql = sql + " AND masanpham Like N'%" + txtmasanpham.Text + "%'"; if (txttensanpham.Text != "") sql = sql + " AND tensanpham Like N'%" + txttensanpham.Text + "%'"; if (cbomaloai.Text != "") sql = sql + " AND maloai Like N'%" + cbomaloai.SelectedValue + "%'"; if (cbomacongdung.Text != "") sql = sql + " AND macongdung Like N'%" + cbomacongdung.SelectedValue + "%'" tbl_sanpham = funtion.GetDataToTable(sql); if (tbl_sanpham.Rows.Count == 0)

MessageBox.Show("Không có bản ghi thỏa mãn điều kiện!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning); else

MessageBox.Show("Có " + tbl_sanpham.Rows.Count + " bản ghi thỏa mãn điều kiện

"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);

DataGridView.DataSource = tbl_sanpham; reset();

Bước 1: chọn 1 chức năng bất kì nào đó bước 2: Khi không muốn thực hiện chức năng đó chọn bỏ qua

Bước 3: Tất cả dữ liệu hiển thị trên form đc reset lại như ban đầu

9 private void btnboqua_Click(object sender, EventArgs e)

{ reset(); btnboqua.Enabled = false; btnthem.Enabled = true; btnxoa.Enabled = true; btnsua.Enabled = true; btnluu.Enabled = false; txtmasanpham.Enabled = false;

Bước 1: Kích chuột vào nút đóng form

Bước 2: Hiển thị thông báo:

- Đồng ý đóng form chọn Yes

- Không đồng ý đóng form chọn No

Code xử lý: private void btndong_Click(object sender, EventArgs e)

DialogResult a = MessageBox.Show("Bạn muốn đóng ứng dụng", "Thông báo",

MessageBoxButtons.YesNo, MessageBoxIcon.Question); if(a== DialogResult.Yes)

1.4.7 Chức năng In dữ liệu

Bước 1: Kết nối CSDL với excel

Bước 2: Lấy dữ liệu báo cáo từ CSDL

Bước 3: Hiển thị báo cáo lên excel

Code xử lý: private void btin_Click(object sender, EventArgs e)

MessageBox.Show("hãy chọn hoá đơn để in", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); return;

COMExcel.Application exApp = new COMExcel.Application();

COMExcel.Range exRange; string sql; int hang = 0, cot = 0;

DataTable tblThongtinhoadon, tblThongtinsanpham; exBook = exApp.Workbooks.Add(COMExcel.XlWBATemplate.xlWBATWorksheet); exSheet = exBook.Worksheets[1]; exRange = exSheet.Cells[1, 1]; exRange.Range["A1:B3"].Font.Size = 10; exRange.Range["A1:B3"].Font.Name = "Times new roman"; exRange.Range["A1:B3"].Font.Bold = true; exRange.Range["A1:B3"].Font.ColorIndex = 5; //Màu xanh da trời exRange.Range["A1:A1"].ColumnWidth = 7; exRange.Range["B1:B1"].ColumnWidth = 15; exRange.Range["A1:B1"].MergeCells = true; exRange.Range["A1:B1"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter; exRange.Range["A1:B1"].Value = "Quán cafe"; exRange.Range["A2:B2"].MergeCells = true; exRange.Range["A2:B2"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter; exRange.Range["A2:B2"].Value = "12 Chùa Bộc - Hà Nội"; exRange.Range["A3:B3"].MergeCells = true; exRange.Range["A3:B3"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter; exRange.Range["A3:B3"].Value = "Điện thoại: "; exRange.Range["C2:E2"].Font.Size = 16; exRange.Range["C2:E2"].Font.Name = "Times new roman"; exRange.Range["C2:E2"].Font.Bold = true; exRange.Range["C2:E2"].Font.ColorIndex = 3; //Màu đỏ exRange.Range["C2:E2"].MergeCells = true; exRange.Range["C2:E2"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignCenter; exRange.Range["C2:E2"].Value = "HÓA ĐƠN NHẬP "; sql = "SELECT a.mahdn, a.ngaynhap, a.tongtien, b.tennv, c.tenncc " + "FROM tbl_hoadonnhap AS a " + "INNER JOIN tbl_nhanvien AS b ON a.manv = b.manv " +"INNER JOIN tbl_ncc AS c ON a.mancc = c.mancc " +"WHERE a.mahdn = N'" + txtmahdn.Text + "'"; tblThongtinhoadon = funtion.GetDataToTable(sql); exRange.Range["A7:F10"].Font.Size = 12; exRange.Range["A7:A7"].Value = "Mã hoá đơn:"; exRange.Range["B7:F7"].MergeCells = true; exRange.Range["B7:F7"].Value = tblThongtinhoadon.Rows[0]["mahdn"].ToString(); exRange.Range["A8:A8"].Value = "Ngày nhập:"; exRange.Range["B8:F8"].MergeCells = true; exRange.Range["B8:F8"].Value = Convert.ToDateTime(tblThongtinhoadon.Rows[0]

["ngaynhap"]).ToShortDateString(); exRange.Range["A9:A9"].Value = "Nhân viên nhập:"; exRange.Range["B9:F9"].MergeCells = true; exRange.Range["B9:F9"].Value = tblThongtinhoadon.Rows[0]["tennv"].ToString(); exRange.Range["A10:A10"].Value = "Nhà cung cấp:"; exRange.Range["B10:F10"].MergeCells = true; exRange.Range["B10:F10"].Value = tblThongtinhoadon.Rows[0]["tenncc"].ToString(); exRange.Range["A11:A11"].Value = "Tổng tiền:"; exRange.Range["B11:F11"].MergeCells = true; exRange.Range["B11:F11"].Value = tblThongtinhoadon.Rows[0]["tongtien"].ToString(); sql = "SELECT b.tensanpham, a.soluong, a.dongia,a.thanhtien ,a.chietkhau " +

"FROM tbl_chitiethdn AS a , tbl_sanpham AS b " +

The SQL query retrieves data from tables a and b based on a specified condition The resulting dataset, tblThongtinsanpham, is formatted and displayed in an Excel range The range is formatted with bold font, centered alignment, and custom column labels The loop iterates through the rows of tblThongtinsanpham to populate the range with data.

{ exSheet.Cells[1][hang + 13] = hang + 1; for (cot = 0; cot < tblThongtinsanpham.Columns.Count; cot++)

{ exSheet.Cells[cot + 2][hang + 13] = tblThongtinsanpham.Rows[hang][cot].ToString }

} exRange = exSheet.Cells[cot][hang + 15]; exRange.Font.Bold = true; exRange.Value2 = "Tổng tiền:"; exRange = exSheet.Cells[cot + 1][hang + 15]; exRange.Font.Bold = true; exRange.Value2 = tblThongtinhoadon.Rows[0][2].ToString(); exRange = exSheet.Cells[1][hang + 16]; exRange.Range["A1:F1"].MergeCells = true; exRange.Range["A1:F1"].Font.Bold = true; exRange.Range["A1:F1"].Font.Italic = true; exRange.Range["A1:F1"].HorizontalAlignment = COMExcel.XlHAlign.xlHAlignRight; exApp.Visible = true;

STT Tên trường Kiểu dữ liệu Kích thước Khóa Giải thích

1 mahdn nvarchar 50 Khóa chính Mã hóa đơn nhập

3 manv nvarchar 10 Khóa ngoại Mã nhân viên

4 mancc nvarchar 10 Khóa ngoại Mã nhà cung cấp

Bảng 7: Bảng hóa đơn nhập

STT Tên trường Kiểu dữ liệu Kích thước Khóa Giải thích

1 mahdb nvarchar 50 Khóa chính Mã hóa đơn bán

3 manv nvarchar 10 Khóa ngoại Mã nhân viên

4 makh nvarchar 10 Khóa ngoại Mã khách hàng

Bảng 8: Bảng hóa đơn bán

Bảng Công dụng sản phẩm:

STT Tên trường Kiểu dữ liệu Kích thước Khóa Giải thích

1 macongdung nvarchar 10 Khóa chính Mã công dụng

2 tencongdung nvarchar 50 Tên công dụng

Bảng 9: Bảng công dụng sản phẩm

Bảng Chi tiết hóa đơn bán:

STT Tên trường Kiểu dữ liệu Kích thước Khóa Giải thích

1 mahdb nvarchar 50 Khóa chính Mã hóa đơn bán

2 masanpham nvarchar 10 Khóa chính Mã sản phẩm

Bảng 10: Bảng chi tiết hóa đơn bán

Bảng Chi tiết hóa đơn nhập:

STT Tên trường Kiểu dữ liệu Kích thước Khóa Giải thích

1 mahdn nvarchar 50 Khóa chính Mã hóa đơn bán

2 masanpham nvarchar 10 Khóa chính Mã sản phẩm

Bảng 11: Bảng chi tiết hóa đơn nhập

CHƯƠNG 3 GIẢI QUYẾT VẤN ĐỀ

3.1 Xây dựng Form chính cho chương trình

3.1.1 Tạo giao diện Form chính

Form được thiết kế với giao diện thân thiện, dễ sử dụng, và phản ánh đầy đủ các chức năng quan trọng như danh mục, hóa đơn và báo cáo (Khoa CNTT&KTS-Học viện Ngân hàng)

Khi mở form, người dùng sẽ được chào đón bởi một menu chính với các tùy chọn phân loại rõ ràng Trong phần "Danh mục", người dùng có thể truy cập các danh sách liệt kê như nhân viên, sản phẩm, khách hàng và nhà cung cấp Điều này giúp họ dễ dàng quản lý thông tin liên quan đến các bộ phận và đối tác quan trọng của quán (Tú, 2024)

Phần "Hóa đơn" của phần mềm quản lý quán cà phê cung cấp hai tùy chọn chính: hóa đơn bán hàng và hóa đơn nhập hàng Người dùng có thể tạo, chỉnh sửa và xem lại các hóa đơn liên quan đến doanh thu và chi phí của quán Điều này giúp họ theo dõi các giao dịch mua và bán một cách hiệu quả và chính xác.

Cuối cùng, phần "Báo cáo" cung cấp các công cụ để tạo ra các báo cáo tổng hợp và phân tích về hoạt động kinh doanh của quán Những báo cáo này có thể cung cấp thông tin chi tiết về doanh số bán hàng, lợi nhuận, cũng như các xu hướng và mô hình tiêu thụ của khách hàng.

Sửa lại một số thuộc tính của Form1 như sau:

Text Quản lý cửa hàng cafe

Icon C:\Users\Vietnam\Desktop\anhspcafe\epresso

BackgroundImage C:\Users\Vietnam\Desktop\anhspcafe\bg

Hình 2: Giao diện form chính

3.1.2 Viết mã lệnh cho Form chính

Form chính có nhiệm vụ kết nối tới cơ sở dữ liệu khi bắt đầu thực hiện dự án, đóng kết nối tới cơ sở dữ liệu khi đóng dự án và mở các form tương ứng với các mục menu. namespace quanlycafen1

{ public partial class Form1 : Form

} private void Form1_Load(object sender, EventArgs e)

} private void nhânviênToolStripMenuItem_Click(object sender, EventArgs e)

Nhanvien a = new Nhanvien(); this.Hide(); a.ShowDialog(); this.Show();

} private void hoáĐơnNhậpToolStripMenuItem_Click(object sender, EventArgs e)

{ hdn a = new hdn(); this.Hide(); a.ShowDialog();

} private void côngDụngToolStripMenuItem_Click(object sender, EventArgs e)

{ congdung a = new congdung(); this.Hide(); a.ShowDialog(); this.Show();

} private void loạiSảnPhẩmToolStripMenuItem_Click(object sender, EventArgs e)

{ loaisp a = new loaisp(); this.Hide(); a.ShowDialog(); this.Show();

} private void sảnPhẩmToolStripMenuItem_Click(object sender, EventArgs e)

{ sanpham a = new sanpham(); this.Hide(); a.ShowDialog(); this.Show();

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

{ khachhang a = new khachhang(); this.Hide(); a.ShowDialog(); this.Show();

} private void hoáĐơnToolStripMenuItem1_Click(object sender, EventArgs e)

{ frmhoadonbanhang a = new frmhoadonbanhang(); this.Hide(); a.ShowDialog(); this.Show();

} private void thoátToolStripMenuItem_Click(object sender, EventArgs e)

DialogResult a = MessageBox.Show("Bạn thức sự muốn đóng ứng dụng", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (a == DialogResult.Yes)

} private void nhàCungCấpToolStripMenuItem_Click(object sender, EventArgs e)

{ nhacungcap a = new nhacungcap(); this.Hide(); a.ShowDialog(); this.Show();

Trong cửa sổ Solution Explorer tạo một thư mục mới đặt tên là Class, kích chuột phải tại Class chọn Add/ New Item… chọn Class trong hộp thoại Add New Item và đặt tên cho class là functions.cs tại ô Name.

The code for the functions class is written as follows:To use the SQL Server object library and use the Dataset object, you must declare the 2 Data and Data.SqlClient Namespace. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Windows.Forms; using System.Data; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Math; namespace quanlycafen1

{ public static SqlConnection conn; public static string stringconn; public static void ketnoi()

{ stringconn = "Data Source=SKY-20240401VYJ\\MSSQLSERVER2;Initial Catalog=Quanlyquancafe;Integrated Security=True;Encryptse"; conn = new SqlConnection(); conn.ConnectionString = stringconn; conn.Open();

3.2 Giao diện các Form con

3.2.1 Giao diện các form Danh mục

Form nhân viên trong hệ thống quản lý quán cafe là một công cụ quan trọng giúp quản lý và theo dõi thông tin về nhân sự Giao diện của form này thường bao gồm các trường thông tin như mã nhân viên, tên nhân viên, số điện thoại, địa chỉ và các thông tin liên quan khác Người quản lý có thể thêm, sửa đổi hoặc xóa thông tin nhân viên từ form này, cũng như tạo ra các báo cáo về nhân sự để theo dõi hiệu suất làm việc và chi phí nhân viên.

Hình 3: Giao diện form nhân viên

THIẾT KẾ CƠ SỞ DỮ LIỆU MỨC KHÁI NIỆM

Sơ đồ liên kết

3.1 Xây dựng Form chính cho chương trình

3.1.1 Tạo giao diện Form chính

Giao diện biểu mẫu được tối ưu hóa với tính thân thiện và dễ thao tác, bao gồm đầy đủ các tính năng thiết yếu như danh mục, hóa đơn và báo cáo.

Khi mở form, người dùng sẽ được chào đón bởi một menu chính với các tùy chọn phân loại rõ ràng Trong phần "Danh mục", người dùng có thể truy cập các danh sách liệt kê như nhân viên, sản phẩm, khách hàng và nhà cung cấp Điều này giúp họ dễ dàng quản lý thông tin liên quan đến các bộ phận và đối tác quan trọng của quán (Tú, 2024)

Phần "Hóa đơn" cung cấp hai tùy chọn chính là hóa đơn bán và hóa đơn nhập. Người dùng có thể tạo, sửa đổi và xem lại các hóa đơn liên quan đến doanh thu và chi phí của quán Điều này giúp họ theo dõi các giao dịch mua bán một cách hiệu quả và chính xác.

Cuối cùng, phần "Báo cáo" cung cấp các công cụ để tạo ra các báo cáo tổng hợp và phân tích về hoạt động kinh doanh của quán Những báo cáo này có thể cung cấp thông tin chi tiết về doanh số bán hàng, lợi nhuận, cũng như các xu hướng và mô hình tiêu thụ của khách hàng.

Sửa lại một số thuộc tính của Form1 như sau:

Text Quản lý cửa hàng cafe

Icon C:\Users\Vietnam\Desktop\anhspcafe\epresso

BackgroundImage C:\Users\Vietnam\Desktop\anhspcafe\bg

GIẢI QUYẾT VẤN ĐỀ

Xây dựng Form chính cho chương trình

3.1.1 Tạo giao diện Form chính

Form được thiết kế với giao diện thân thiện, dễ sử dụng, và phản ánh đầy đủ các chức năng quan trọng như danh mục, hóa đơn và báo cáo (Khoa CNTT&KTS-Học viện Ngân hàng)

Khi mở form, người dùng sẽ được chào đón bởi một menu chính với các tùy chọn phân loại rõ ràng Trong phần "Danh mục", người dùng có thể truy cập các danh sách liệt kê như nhân viên, sản phẩm, khách hàng và nhà cung cấp Điều này giúp họ dễ dàng quản lý thông tin liên quan đến các bộ phận và đối tác quan trọng của quán (Tú, 2024)

Phần "Hóa đơn" bao gồm hai lựa chọn chính là hóa đơn bán hàng và hóa đơn nhập hàng Người dùng có khả năng tạo lập, chỉnh sửa và tra cứu các hóa đơn liên quan đến doanh thu và chi phí của cửa hàng Qua đó, việc theo dõi các giao dịch mua bán được thực hiện hiệu quả và chính xác hơn.

Cuối cùng, phần "Báo cáo" cung cấp các công cụ để tạo ra các báo cáo tổng hợp và phân tích về hoạt động kinh doanh của quán Những báo cáo này có thể cung cấp thông tin chi tiết về doanh số bán hàng, lợi nhuận, cũng như các xu hướng và mô hình tiêu thụ của khách hàng.

Sửa lại một số thuộc tính của Form1 như sau:

Text Quản lý cửa hàng cafe

Icon C:\Users\Vietnam\Desktop\anhspcafe\epresso

BackgroundImage C:\Users\Vietnam\Desktop\anhspcafe\bg

Hình 2: Giao diện form chính

3.1.2 Viết mã lệnh cho Form chính

Form chính có nhiệm vụ kết nối tới cơ sở dữ liệu khi bắt đầu thực hiện dự án, đóng kết nối tới cơ sở dữ liệu khi đóng dự án và mở các form tương ứng với các mục menu. namespace quanlycafen1

{ public partial class Form1 : Form

} private void Form1_Load(object sender, EventArgs e)

} private void nhânviênToolStripMenuItem_Click(object sender, EventArgs e)

Nhanvien a = new Nhanvien(); this.Hide(); a.ShowDialog(); this.Show();

} private void hoáĐơnNhậpToolStripMenuItem_Click(object sender, EventArgs e)

{ hdn a = new hdn(); this.Hide(); a.ShowDialog();

} private void côngDụngToolStripMenuItem_Click(object sender, EventArgs e)

{ congdung a = new congdung(); this.Hide(); a.ShowDialog(); this.Show();

} private void loạiSảnPhẩmToolStripMenuItem_Click(object sender, EventArgs e)

{ loaisp a = new loaisp(); this.Hide(); a.ShowDialog(); this.Show();

} private void sảnPhẩmToolStripMenuItem_Click(object sender, EventArgs e)

{ sanpham a = new sanpham(); this.Hide(); a.ShowDialog(); this.Show();

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

{ khachhang a = new khachhang(); this.Hide(); a.ShowDialog(); this.Show();

} private void hoáĐơnToolStripMenuItem1_Click(object sender, EventArgs e)

{ frmhoadonbanhang a = new frmhoadonbanhang(); this.Hide(); a.ShowDialog(); this.Show();

} private void thoátToolStripMenuItem_Click(object sender, EventArgs e)

DialogResult a = MessageBox.Show("Bạn thức sự muốn đóng ứng dụng", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (a == DialogResult.Yes)

} private void nhàCungCấpToolStripMenuItem_Click(object sender, EventArgs e)

{ nhacungcap a = new nhacungcap(); this.Hide(); a.ShowDialog(); this.Show();

Trong cửa sổ Solution Explorer tạo một thư mục mới đặt tên là Class, kích chuột phải tại Class chọn Add/ New Item… chọn Class trong hộp thoại Add New Item và đặt tên cho class là functions.cs tại ô Name.

Mã lệnh của lớp functions được viết như sau: Để sử dụng thư viện các đối tượng của SQL Server và sử dụng đối tượng Dataset ta phải khai báo 2 Namespace Data và Data.SqlClient. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Windows.Forms; using System.Data; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Math; namespace quanlycafen1

{ public static SqlConnection conn; public static string stringconn; public static void ketnoi()

{ stringconn = "Data Source=SKY-20240401VYJ\\MSSQLSERVER2;Initial Catalog=Quanlyquancafe;Integrated Security=True;Encryptse"; conn = new SqlConnection(); conn.ConnectionString = stringconn; conn.Open();

Giao diện các Form con

3.2.1 Giao diện các form Danh mục

Form nhân viên trong hệ thống quản lý quán cafe là một công cụ quan trọng giúp quản lý và theo dõi thông tin về nhân sự Giao diện của form này thường bao gồm các trường thông tin như mã nhân viên, tên nhân viên, số điện thoại, địa chỉ và các thông tin liên quan khác Người quản lý có thể thêm, sửa đổi hoặc xóa thông tin nhân viên từ form này, cũng như tạo ra các báo cáo về nhân sự để theo dõi hiệu suất làm việc và chi phí nhân viên.

Hình 3: Giao diện form nhân viên

Form khách hàng trong hệ thống quản lý quán cafe là một công cụ quan trọng để theo dõi và quản lý thông tin về khách hàng Giao diện của form này thường bao gồm các trường thông tin như tên, số điện thoại, địa chỉ, email, và các thông tin liên quan khác. Người quản lý có thể thêm mới, chỉnh sửa hoặc xóa thông tin khách hàng từ form này. Ngoài ra, form khách hàng cũng có thể được sử dụng để tạo ra các báo cáo về hành vi mua hàng của khách hàng và phân tích thị trường.

Hình 4: Giao diện form khách hàng

Form sản phẩm trong hệ thống quản lý của quán cafe là một công cụ quan trọng, giúp quản lý thông tin về các mặt hàng được bày bán Giao diện của form này thường bao gồm các trường thông tin như tên sản phẩm, giá cả, số lượng và thông tin về nhà cung cấp. Người quản lý có thể dễ dàng thêm, chỉnh sửa hoặc xoá thông tin sản phẩm từ form này. Ngoài ra, form sản phẩm cũng cung cấp các công cụ để tạo ra báo cáo về tình trạng tồn kho và doanh số bán hàng, giúp quản lý hiểu rõ hơn về hoạt động kinh doanh của quán.

Hình 5: Giao diện form sản phẩm

Form nhà cung cấp trong hệ thống quản lý của quán cafe là một phần quan trọng, giúp quản lý thông tin về các đối tác cung cấp nguyên liệu và dịch vụ Giao diện của form này cung cấp các trường thông tin như tên nhà cung cấp, địa chỉ, thông tin liên hệ và các thông tin khác cần thiết Quản lý có thể dễ dàng quản lý và cập nhật thông tin từ form này

Hình 6: Giao diện form nhà cung cấp

3.2.2 Giao diện các form Hóa đơn

Hóa đơn nhập là văn bản quan trọng ghi lại thông tin chi tiết về giao dịch mua hàng hóa, dịch vụ từ nhà cung cấp Nó đóng vai trò thiết yếu trong việc quản lý hàng tồn kho, kiểm soát chi phí và đảm bảo tính minh bạch cho hoạt động kinh doanh.

Hình 7: Giao diện hóa đơn nhập

Hóa đơn bán hàng đóng vai trò quan trọng trong việc ghi chép giao dịch bán hàng hóa, dịch vụ cho khách hàng Nó cung cấp thông tin chi tiết về giao dịch, giúp doanh nghiệp quản lý doanh thu, thanh toán, thuế một cách hiệu quả và minh bạch.

Hình 8: Giao diện hóa đơn bán

3.2.3 Giao diện các form Tìm kiếm

Việc thêm một chức năng tìm kiếm cho hóa đơn nhập sẽ giúp người dùng dễ dàng tìm nhanh thông tin cần thiết về giá trị tổng tiền của mỗi hóa đơn nhập Đồng thời, thông qua tính năng này, họ cũng có thể xác định được nhà cung cấp và nhân viên liên quan đến từng hóa đơn Điều này giúp tối ưu hóa quy trình quản lý và tra cứu thông tin trong hệ thống, giảm thiểu thời gian tìm kiếm và nâng cao hiệu suất làm việc.

Hình 9: Giao diện form tìm kiếm hóa đơn nhập

Tương tự cho hóa đơn bán:

Hình 10: Giao diện form tìm kiếm hóa đơn bán

3.2.4 Giao diện form Báo cáo

Báo cáo nhập hàng là yếu tố thiết yếu trong quản lý doanh nghiệp, cung cấp cái nhìn toàn diện về quá trình nhập hàng vào kho Theo dõi hóa đơn nhập cho phép doanh nghiệp kiểm soát tồn kho, đánh giá nhà cung cấp và kiểm soát chi phí Báo cáo còn giúp phát hiện sớm vấn đề trong quy trình nhập hàng, tối ưu hóa chuỗi cung ứng và cải thiện hiệu suất kinh doanh Ngoài ra, nó hỗ trợ tuân thủ các quy định pháp lý liên quan đến quản lý hàng hóa.

Hình 11: Giao diện báo cáo nhập hàng

Tạo báo cáo xuất hàng là một phần không thể thiếu trong quản lý hoạt động kinh doanh, bởi nó cung cấp cái nhìn tổng quan về việc xuất hàng ra khỏi kho Theo dõi các hoá đơn xuất giúp doanh nghiệp hiểu rõ lượng hàng tiêu thụ, đánh giá hiệu suất của sản phẩm, và phản ứng nhanh chóng đối với nhu cầu thị trường Báo cáo này không chỉ giúp quản lý tồn kho mà còn hỗ trợ trong việc định hình chiến lược bán hàng, tối ưu hóa quá trình cung ứng, và tăng cường sự hài lòng của khách hàng Đồng thời, việc thực hiện báo cáo xuất hàng cũng đóng vai trò quan trọng trong việc tuân thủ các quy định pháp lý liên quan đến vận chuyển và giao nhận hàng hóa.

Hình 12: Giao diện báo cáo bán hàng

Tạo báo cáo doanh thu là một phần không thể thiếu trong quá trình quản lý kinh doanh, bởi nó cung cấp cái nhìn tổng quan về lượng thu nhập mà doanh nghiệp thu được từ việc bán hàng hoặc cung cấp dịch vụ Báo cáo này giúp đánh giá hiệu suất kinh doanh, xác định nguồn thu chính và nhìn nhận được xu hướng tăng trưởng trong thời gian Nó cũng hỗ trợ quản lý trong việc đưa ra các quyết định chiến lược, điều chỉnh chiến lược tiếp thị và quảng cáo, cũng như định hình chiến lược giá cả sản phẩm và dịch vụ Bằng cách này, báo cáo doanh thu không chỉ là công cụ quan trọng để đo lường hiệu suất kinh doanh mà còn là hướng dẫn trong việc phát triển và tối ưu hóa hoạt động kinh doanh.

Hình 13: Giao diện báo cáo doanh thu

Form xử lý yêu cầu bài toán

3.3.1 Số lượng trong bảng Sản phẩm tự động cập nhật khi nhập hàng

Yêu cầu: Số lượng trong bảng Sản phẩm được tự động cập nhật khi nhập hàng Giải quyết: Khi thêm 1 sản phẩm mới vào trong bảng sản phẩm thì ban đầu mặc định số lượng của sản phẩm được thêm đó bằng 0 và không được chỉnh sửa chỉ khi nhập hàng và nhập vào dữ liệu vào hoá đơn nhập thì số lượng của sản phẩm sẽ tự động được cập nhật từ hoá đơn nhập cụ thể.

Tăng số lượng sản phẩm khi thêm dữ liệu vào hoá đơn nhập

Ban đầu khi thêm sản phẩm thì số lượng tất cả sản phẩm bằng 0 vì chưa có hoá đơn nhập nào.

Hình 14: Giao diện form sản phẩm khi mới thêm

Sau khi nhập, nhân viên sẽ tiến hành nhập vào các thông tin theo form hóa đơn nhập:

Hình 15: Giao diện hóa đơn nhập sau khi thêm mới

Sau khi thêm dữ liệu vào hoá đơn nhập thì số lượng sản phẩm của bảng sản phẩm sẽ tự động cập nhật dưới đây là kết quả:

Hình 16: Kết quả số lượng trong bảng sản phẩm được cập nhập

Code xử lý: if(funtion.CheckKey("select mahdn,masanpham from tbl_chitiethdn where mahdn=N'" + txtmahdn.Text + "' and masanpham='" + cbbmasanpham.Text + "'"))

MessageBox.Show("đã có mã hoá đơn và mã sản phẩm này hãy thay đơn hoặc mã sản phẩm ","Thông báo ",MessageBoxButtons.OK, MessageBoxIcon.Error); cbbmasanpham.SelectedIndex = -1; return;

} else { decimal tt = Convert.ToInt32(txtsoluong.Text) * Convert.ToInt32(txtdongianhap.Text); sql = "insert into tbl_chitiethdn values(N'" + txtmahdn.Text + "',N'" + cbbmasanpham.Text + "','" + txtsoluong.Text + "','" + txtdongianhap.Text + "','" + tt + "','" + txtck.Text + "')"; funtion.RunSql(sql); sql = "update tbl_sanpham set gianhap =" + txtdongianhap.Text + ",giab

="+txtdongianhap.Text+"*1.1 ,soluong= soluong+"+ txtsoluong.Text+" where masanpham

='"+cbbmasanpham.Text+"'"; funtion.RunSql(sql);

Giảm số lượng khi xóa một dòng dữ liệu trong hóa đơn nhập

Nếu mã sản phẩm trên hóa đơn nhập không chính xác, chẳng hạn như nhập sai mã hoặc mã không tồn tại, cần phải xóa mã sản phẩm đó để ngăn ngừa việc sai sót dữ liệu.

Hình 17: Giao diện khi xóa 1 hóa đơn

Sau khi xoá 1 dữ liệu trong hóa đơn nhập thì số lượng của mã sản phẩm có trong dữ liệu đó cũng sẽ tự động bị giảm ở trong bảng sản phẩm:

Hình 18: Số lượng của mã sản phẩm SP08 tự động bị giảm

Code xử lý trong event double click datagridview:

DialogResult a = MessageBox.Show("Bạn chắc chắn muốn xoá dữ liệu này","Thông báo",MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (a == DialogResult.Yes)

{ string sql; sql = "update tbl_sanpham set soluong= soluong -" + txtsoluong.Text + " where masanpham=N'" + cbbmasanpham.Text + "'"; funtion.RunSql(sql);

Giảm dữ liệu khi xóa một hóa đơn nhập

Trong quá nhập hóa đơn nhập có thông tin sai sót như tên nhà cung cấp, tên hàng hóa/dịch vụ, số lượng, đơn giá, thành tiền, v.v., cần lập hóa đơn nhập mới để sửa chữa thông tin chính xác và xóa hóa đơn sai.

Hình 19: Giao diện khi xóa 1 hóa đơn nhập

Kết quả nhận đươc sau khi xóa một hóa đơn nhập là tất cả số lượng tương ứng với các mã sản phẩm ở trong hóa đơn đã chọn tự động giảm tương ứng.

Hình 20: Số lượng sản phẩm tự động giảm khi xoá cả hoá đơn

Code xử lý trong event click xoá hoá đơn trong form hoá đơn nhập: string sql;

DataTable trusoluong = funtion.GetDataToTable("SELECT masanpham, soluong FROM tbl_chitiethdn WHERE mahdn=N'" + cbbmahdn.Text + "'"); foreach (DataRow row in trusoluong.Rows)

{ string masanpham = row["masanpham"].ToString(); float soluong = Convert.ToSingle(row["soluong"]); sql = "UPDATE tbl_sanpham SET soluong = soluong - " + soluong + " WHERE masanpha

3.3.2 Số lượng trong bảng Sản phẩm tự động cập nhật khi bán hàng

Giảm số lượng sản phẩm khi thêm dữ liệu vào hoá đơn bán

Sản phẩm trong kho khi chưa có hóa đơn bán:

Hình 21: Số lượng ban đầu khi chưa có hóa đơn bán

Thêm dữ liệu vào hóa đơn bán:

Hình 22: Giao diện khi thêm hóa đơn bán

Hình 23: Kết quả số lượng sản phẩm tự động giảm

Code xử lý trong enven clicl button lưu form hoá đơn bán: double SLcon

SLcon = sl - Convert.ToDouble(txtsoluong.Text); sql = "UPDATE tbl_sanpham SET soluong =" + SLcon + " WHERE masanpham= N'" + cbbmasanpham.SelectedValue + "'"; funtion.RunSql(sql);

Tăng số lượng sản phẩm khi xoá một dữ liệu từ hoá đơn bán

Xóa một dữ liệu trong hóa đơn bán:

Hình 24: Giao diện khi xóa một dữ liệu trong hóa đơn bán

Kết quả thu được là số lượng của mã sản phẩm bị xóa trong bảng sản phẩm tăng lên.

Hình 25: Kết quả sau khi xóa một dữ liệu trong hóa đơn bán

Code xử lý event Celldoubleclick datagridview trong form hoá đơn bán: private void DelHang(string mahdb, string masanpham)

Double s, sl, SLcon; string sql; sql = "SELECT soluong FROM tbl_chitiethoadonban WHERE mahdb = N'" + mahdb + "' A masanpham = N'" + masanpham + "'"; s = Convert.ToDouble(funtion.GetFieldValues(sql)); sql = "DELETE From tbl_chitiethoadonban WHERE mahdb=N'" + mahdb + "' AND masanpham = N'" + masanpham + "'"; funtion.RunSql(sql); sql = "SELECT soluong FROM tbl_sanpham WHERE masanpham = N'" + masanpham + "'"; sl = Convert.ToDouble(funtion.GetFieldValues(sql));

SLcon = sl + s; sql = "UPDATE tbl_sanpham SET soluong =" + SLcon + " WHERE masanpham= N'" + masanpham + "'"; funtion.RunSql(sql);

} private void dtgrvchitiet_CellDoubleClick(object sender, DataGridViewCellEventArgs e)

Double Thanhtien; if (tblHDB.Rows.Count == 0)

MessageBox.Show("Không có dữ liệu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); return;

36 if ((MessageBox.Show("Bạn có chắc chắn muốn xóa không?", "Thông báo",MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes))

//Xóa hàng và cập nhật lại số lượng hàng masanpham = dtgrvchitiet.CurrentRow.Cells["masanpham"].Value.ToString(); DelHang(txtmahoadon.Text, masanpham)

Tăng số lượng sản phẩm khi một hoá đơn bán

Chọn một hóa đơn bán cần xóa:

Hình 26: Giao diện khi xóa một hóa đơn bán

Hình 27: Kết quả số lượng sản phẩm tăng lên khi xóa một hóa đơn bán

Code xử lý event click huỷ hoá đơn trong form hoá đơn bán: if (MessageBox.Show("Bạn có chắc chắn muốn xóa không?", "Thông báo",MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

{ string[] masanpham = new string[20]; string sql; int n = 0; int i; sql = "SELECT masanpham FROM tbl_chitiethoadonban WHERE mahdb = N'" + txtmahoadon.Text + "'";

SqlCommand cmd = new SqlCommand(sql, funtion.conn);

SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read())

} reader.Close(); for (i = 0; i DateTime.ParseExact(mskdenngay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture))

MessageBox.Show("Ngày bắt đầu phải nhỏ hơn ngày kết thúc", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); mskdenngay.Text = ""; msktungay.Text = ""; return;

} sql = sql + "and (ngaynhap between'" + funtion.ConvertDateTime(msktungay.Text) + "' and '"+funtion.ConvertDateTime(mskdenngay.Text)+"')";

44 sql = sql + " and tenncc =N'" + cbbncc.Text + "'";

{ sql = sql + "and tennv=N'" + cbbnhanviennhap.Text + "'";

} load_datagrvid(sql); sql1 = " where 1=1"; if (cbbmahdn.SelectedValue != null)

{ sql1 = sql1 + " and mahdn=N'" + cbbmahdn.Text + "' ";

{ sql1 = sql1 + " and tensanpham =N'" + cbbtensp.Text + "'";

{ sql1 = sql1 + " and dongia =" + txtdongianhap.Text + "";

{ if (!funtion.IsDate(mskngaynhap.Text))

MessageBox.Show("Hãy nhập lại ngày nhập", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); mskngaynhap.Focus(); mskngaynhap.Text = ""; return;

} sql1 = sql1 + "and ngaynhap='" + funtion.ConvertDateTime(mskngaynhap.Text) + "'"; } if (msktungay.Text != " / /" && mskdenngay.Text != " / /")

{ if (!funtion.IsDate(mskdenngay.Text))

MessageBox.Show("Hãy nhập lại đến ngày", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); mskdenngay.Focus(); mskdenngay.Text = ""; return;

} if (!funtion.IsDate(msktungay.Text))

MessageBox.Show("Hãy nhập lại tu ngày ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); msktungay.Focus(); msktungay.Text = ""; return;

} if (DateTime.ParseExact(msktungay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) > DateTime.ParseExact(mskdenngay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture))

MessageBox.Show("Ngày bắt đầu phải nhỏ hơn ngày kết thúc", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); mskdenngay.Text = ""; msktungay.Text = ""; return;

} sql1 = sql1 + "and (ngaynhap between'" + funtion.ConvertDateTime(msktungay.Text) + "' and '" + funtion.ConvertDateTime(mskdenngay.Text) + "')";

{ sql1 = sql1 + " and tenncc =N'" + cbbncc.Text + "'";

{ sql1 = sql1 + "and tennv=N'" + cbbnhanviennhap.Text + "'";

} load_datagrvidsp("select tensanpham, sum(soluong) from dsnhap " + sql1 + " group by tensanpham"); if (tbhdn.Rows.Count == 0)

MessageBox.Show("Không có dữ liệu cần tìm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); load_datagrvid("select*from dsnhap"); reset(); return;

Ngoài việc tìm kiếm linh hoạt, việc in báo cáo và hiển thị thông tin cũng là hai yếu tố không thể thiếu trong quản lý nhập hàng Các chức năng này cung cấp cách thức hiệu quả để trực quan hóa và chia sẻ thông tin, giúp cải thiện quá trình ra quyết định và tối ưu hóa hoạt động kinh doanh In báo cáo cho phép người dùng tạo ra các tài liệu trực quan và dễ hiểu từ dữ liệu về hàng nhập, từ đó giúp họ thấy rõ hình ảnh về tình hình cung ứng và lưu trữ thông tin một cách dễ dàng Các báo cáo này có thể bao gồm thông tin chi tiết về đơn hàng, nhà cung cấp, sản phẩm, số lượng, giá cả, và các thông tin khác để phục vụ nhu cầu quản lý. Để in ra được kết quả là bảng excel này thì người dùng sẽ kích chọn button in báo cáo. Tại báo cáo này, ngoài việc xem được các thông tin cơ bản của hóa đơn nhập thì còn xem được số lượng của sản phẩm nhập nào là nhiều nhât.

Hình 34: Kêt quả in báo cáo nhập hàng

COMExcel.Application exApp = new COMExcel.Application();

COMExcel.Range exRange; string sql; int hang = 0, cot = 0;

Ngày đăng: 20/06/2024, 18:06

HÌNH ẢNH LIÊN QUAN

BẢNG PHÂN CÔNG CÔNG VIỆC ST - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
BẢNG PHÂN CÔNG CÔNG VIỆC ST (Trang 3)
Bảng 11: Bảng chi tiết hóa đơn nhập - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Bảng 11 Bảng chi tiết hóa đơn nhập (Trang 27)
Hình 2: Giao diện form chính - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 2 Giao diện form chính (Trang 29)
Hình 3: Giao diện form nhân viên - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 3 Giao diện form nhân viên (Trang 32)
Hình 4: Giao diện form khách hàng - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 4 Giao diện form khách hàng (Trang 32)
Hình 5: Giao diện form sản phẩm - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 5 Giao diện form sản phẩm (Trang 33)
Hình 6: Giao diện form nhà cung cấp - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 6 Giao diện form nhà cung cấp (Trang 33)
Hình 7: Giao diện hóa đơn nhập - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 7 Giao diện hóa đơn nhập (Trang 34)
Hình 8: Giao diện hóa đơn bán - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 8 Giao diện hóa đơn bán (Trang 34)
Hình 9: Giao diện form tìm kiếm hóa đơn nhập - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 9 Giao diện form tìm kiếm hóa đơn nhập (Trang 35)
Hình 11: Giao diện báo cáo nhập hàng - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 11 Giao diện báo cáo nhập hàng (Trang 36)
Hình 12: Giao diện báo cáo bán hàng - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 12 Giao diện báo cáo bán hàng (Trang 37)
Hình 13: Giao diện báo cáo doanh thu - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 13 Giao diện báo cáo doanh thu (Trang 37)
Hình 14: Giao diện form sản phẩm khi mới thêm - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 14 Giao diện form sản phẩm khi mới thêm (Trang 38)
Hình 15: Giao diện hóa đơn nhập sau khi thêm mới - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 15 Giao diện hóa đơn nhập sau khi thêm mới (Trang 39)
Hình 16: Kết quả số lượng trong bảng sản phẩm được cập nhập - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 16 Kết quả số lượng trong bảng sản phẩm được cập nhập (Trang 39)
Hình 17: Giao diện khi xóa 1 hóa đơn - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 17 Giao diện khi xóa 1 hóa đơn (Trang 40)
Hình 18: Số lượng của mã sản phẩm SP08 tự động bị giảm - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 18 Số lượng của mã sản phẩm SP08 tự động bị giảm (Trang 41)
Hình 30: Giá nhập, giá bán tự động cập nhật khi nhập - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 30 Giá nhập, giá bán tự động cập nhật khi nhập (Trang 49)
Hình 33: Tìm kiếm hóa đơn nhập theo ngày cụ thể - báo cáo bài tập lớn môn lập trình net đề tài xây dựng hệ thống quản lý cửa hàng cafe
Hình 33 Tìm kiếm hóa đơn nhập theo ngày cụ thể (Trang 52)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w