Phần mềm quản lí cửa hàng xây dựng và có các công dụng như sau: 1.2.1 Với nhân viên - Quản lí được sản phẩm trên cửa hàng - Quản lí được số lượng, tìm kiếm sản phẩm 1.2.4 Với kho hàng
Khảo sát hệ thống
Đề tài : “Quản lý tiệm bánh sinh nhật Thu Hường”
Thu Hường Bakery là một trong những thương hiệu bánh sinh nhật Á Âu lâu đời tại Hà Nội, nổi tiếng với những sản phẩm bánh ngọt chất lượng Những người yêu thích bánh ngọt, đặc biệt là bánh được làm theo phong cách Á Âu, chắc chắn sẽ tìm thấy sự hài lòng khi đến với cửa hàng này.
Tiệm Bánh Ngọt Thu Hường Bakery nổi bật với 9 cách làm bánh Á Âu độc đáo, luôn đáp ứng yêu cầu và sở thích riêng của khách hàng Chúng tôi không ngừng sáng tạo, cho ra đời những mẫu bánh mới, kết hợp hài hòa giữa nét đẹp hiện đại và truyền thống, mang đến nhiều kiểu bánh với vẻ đẹp khác nhau.
Ngoài bánh sinh nhật, quán còn cung cấp nhiều loại bánh đa dạng với chất lượng được khẳng định, bao gồm bánh kem, bánh nướng và socola tươi ngon mắt Bánh kem sinh nhật cốt gato hiện nay có nhiều phong cách trang trí phong phú, từ kiểu cổ điển Pháp đến những chiếc bánh vẽ chibi dễ thương và bánh hình 3D độc đáo.
Tiệm bánh 30m2 nằm ở trung tâm thành phố, phục vụ đông đảo khách hàng hàng ngày với đội ngũ 5 nhân viên, bao gồm 1 thu ngân, 2 nhân viên bán hàng và 2 nhân viên kho Cửa hàng hoạt động từ 7h30 đến 21h mỗi ngày, đảm bảo bán hàng liên tục Để nâng cao hiệu quả kinh doanh, tiệm đã đầu tư vào các trang thiết bị cần thiết như máy POS mã vạch, máy in hóa đơn, camera an ninh và máy làm bánh.
Cửa hàng hiện đang sử dụng phần mềm quản lý để thay thế phương pháp quản lý thủ công cũ kỹ, giúp tiết kiệm thời gian trong việc quản lý nhân viên, sản phẩm và khách hàng Việc này nhằm tối ưu hóa hiệu quả hoạt động và đáp ứng các yêu cầu cơ bản của hệ thống quản lý.
Tên tiệm bánh : Tiệm Bánh Ngọt Thu Hường Bakery
• Địa chỉ: 11A, phố Dịch Vọng, Cầu Giấy, Hà Nội
Hình 1 1 Ảnh giới thiệu tiệm bánh
Xác định bài toán cần giải quyết
Với nhân viên
- Thuận tiện , dễ sử dụng phần mềm
- Nhân viên có thể đăng nhập kiểm tra được thông tin của mình như lương , ca làm, phụ cấp hoặc thực hiện nhiều nhiệm vụ khác
Với khách hàng
- Kiểm tra, tìm kiếm được thông tin của cá nhân hoặc sản phẩm , hóa đơn dễ dàng
Với sản phẩm
- Quản lí được sản phẩm trên cửa hàng
- Quản lí được số lượng, tìm kiếm sản phẩm
Với kho hàng
- Thống kê doanh thu, tìm kiếm dễ dàng được hóa đơn đơn hàng của cửa hàng
- Thống kê được phiếu nhập xuất cho cửa hàng
Phân tích và đặc tả các nghiệp vụ của hệ thống
Sản phẩm
Lưu trữ thông tin sản phẩm như mẫu mã, số lượng và giá cả ưu đãi trên menu cửa hàng là rất quan trọng Mỗi sản phẩm cần có mã sản phẩm riêng để dễ dàng quản lý Khách hàng sẽ sử dụng menu để đặt hàng, nhưng việc nhân viên kiểm tra số lượng sản phẩm theo tuần và thống kê lại khiến việc kiểm soát sản phẩm trở nên khó khăn.
Nhân viên
Lưu trữ thông tin nhân viên cửa hàng bao gồm mã nhân viên, tên, lương, địa chỉ và số điện thoại Nhân viên thu ngân chịu trách nhiệm quản lý thanh toán và xử lý đơn hàng cho khách Nhân viên bán hàng có nhiệm vụ giới thiệu và hướng dẫn khách hàng mua sản phẩm, đồng thời trưng bày hàng hóa một cách hợp lý để thu hút khách Nhân viên thủ kho quản lý việc nhập xuất hàng hóa và số lượng sản phẩm trong cửa hàng Các nhân viên làm việc theo ca khác nhau và thường được phân công theo tuần để quản lý công việc hiệu quả.
Khách hàng
Cửa hàng sẽ lưu trữ thông tin khách hàng để tích điểm thành viên, giúp khách hàng nâng cấp lên VIP và nhận những phần thưởng giá trị cho các lần mua sau Ngày sinh của khách hàng cũng sẽ được ghi lại, và vào dịp sinh nhật hoặc ngày lễ, cửa hàng sẽ gửi tin nhắn SMS với ưu đãi cá nhân và lời chúc ý nghĩa để thu hút khách hàng Khi đặt hàng, khách hàng sẽ nhận được hóa đơn kèm theo sản phẩm để nắm rõ thông tin về sản phẩm đã mua.
Kho hàng
Các nguyên liệu chế tác bánh được cung cấp bởi các nhà cung cấp và nhập vào kho, nơi nhân viên kiểm tra số lượng và chất lượng trước khi lưu trữ Mỗi nguyên liệu có mã sản phẩm riêng để dễ dàng quản lý Kho cũng lưu trữ thông tin hóa đơn của khách hàng để thống kê doanh số theo tuần, tháng và năm Thống kê doanh thu của cửa hàng được thực hiện dựa trên hóa đơn bán hàng theo ngày, tuần và tháng.
Xác định các yêu cầu của hệ thống
Yêu cầu chức năng
-Chức năng này cho phép người dùng có thể đăng nhập, đăng xuất vào để sử dụng phần mềm
-Lưu trữ các thông tin sản phẩm cùng những chức năng thêm ,sửa ,xóa , tìm kiếm thông tin sản phẩm
-Hiển thị được toàn bộ sản phẩm cửa hàng trên phầm mềm
-Lưu trữ các thông tin nhân viên cùng những chức năng thêm ,sửa ,xóa thông tin nhân viên
Lưu trữ các thông tin khách hàng cùng những chức năng thêm ,sửa ,xóa thông tin khách hàng
-Thống kê được số hóa đơn của cửa hảng
-Thống kê được phiếu nhập xuất sản phẩm của cửa hàng
Yêu cầu phi chức năng
• Yêu cầu bảo mật: Toàn vẹn, bảo mật, xác thực
• Yêu cầu sao lưu : Tự động sao lưu lên máy chủ
• Yêu cầu về tính năng sử dụng: Tối ưu, hiệu quả và dễ sử dụng
• Yêu cầu về phần cứng:Win 7/8/10
• Yêu cầu khi sử dụng phần mềm:
QUẢN LÝ DỰ ÁN
Ước lượng dự án
Giai đoạn Công việc chính Mô tả công việc Chi phí
Khảo sát yêu cầu dự án Thu thập cá dự liệu cần thiết về dự án 0VNĐ
Bắt đầu dự án triển khai và thiết lập cho dự án 100.000 VNĐ, cần lập kế hoạch phạm vi dự án và chi tiết cho phạm vi làm việc với ngân sách 100.000 VNĐ.
Viết báo cáo tổng kết dự án Tổng kết lại toàn bộ quá trình quản lý dự án 0VNĐ
Phân tích và thiết kế hệ thống Đặc tả chi tiết yêu cầu của khách hàng
Mô tả chi tiết những yêu cầu, chức năng cần có của phần mềm 100.000VNĐ
Mô tả hệ thống thông qua sơ đồ usecase và trình tự
Xây dựng sơ đồ usecase và trình tự bằng phần mềm draw.io 100.000VNĐ
Thiết kế cơ cở dự liệu Xây dựng các trường dữ liệu cần thiết cho phần mềm 300.000VNĐ
Thiết kế giao diện cho phần mềm
Xây dựng các chức năng chính cho phần mềm bán hàng 500.000VNĐ
Viết bài phân tích chi tiết về hệ thống
Viết báo cáo trình bày phân tích và thiết kế ra hệ thống phần mềm 100.000VNĐ
Module thống kê sản phẩm
Phân tích yêu cầu cụ thể cho từng module
Xây dựng chi tiết nhiệm vụ chính của hệ thống 100.000VNĐ
Thiết kế các module Xây dựng chức năng cùng các sự kiện 150.000VNĐ
Xây dựng code Xử lý các tính năng khi thao tác 600.000VNĐ
Cài đặt các module Demo module khi xây dựng xong 200.000VNĐ
Kiểm tra giao diện, độ chính xác và tìm các lỗi trong hệ thống 100.000VNĐ
Viết báo cáo hoàn thiện Trình bày báo cáo chi tiết khi thiết kế module 50.000VNĐ Tích hợp và hoàn thành sản phẩm
Tích hợp các module đã thiết kế và lắp ghép chúng lại với nhau hoàn chỉnh với giá 100.000 VNĐ Sau đó, tiến hành kiểm thử phần mềm để đảm bảo toàn bộ hệ thống đã xây dựng hoạt động hiệu quả với chi phí 150.000 VNĐ.
Fix code Tìm kiếm các lỗi phát sinh trong quá trình thực thi 200.000VNĐ Đóng gói phần mềm
Viết báo cáo hướng dẫn sử dụng Viết bản hướng dẫn sử dụng phần mềm 0VNĐ
Lên kế hoạch bảo trì phần mềm Đề ra kế hoạch bảo trì 0VNĐ Kết thúc dự án Tổng kết lại quá trình là ra dự án 0VNĐ
Bảng 2 1 Bảng ước lượng về chi phí
Giai đoạn Công việc chính Mô tả công việc Thời gian
Khảo sát yêu cầu dự án Thu thập cá dự liệu cần thiết về dự án 1 ngày
Bắt đầu dự án triển khai và thiết lập cho dự án trong 1 ngày, cần lập kế hoạch phạm vi dự án và chi tiết cho công việc trong thời gian này.
Viết báo cáo tổng kết dự án Tổng kết lại toàn bộ quá trình quản lý dự án 1 ngày
Phân tích và thiết kế hệ thống Đặc tả chi tiết yêu cầu của khách hàng
Mô tả chi tiết những yêu cầu, chức năng cần có của phần mềm
Mô tả hệ thống thông qua sơ đồ usecase và trình tự
Xây dựng sơ đồ usecase và trình tự bằng phần mềm draw.io
Thiết kế cơ cở dự Xây dựng các trường dữ 1 ngày
15 liệu liệu cần thiết cho phần mềm
Thiết kế giao diện cho phần mềm
Xây dựng các chức năng chính cho phần mềm bán hàng
Viết bài phân tích chi tiết về hệ thống
Viết báo cáo trình bày phân tích và thiết kế ra hệ thống phần mềm
Module thống kê sản phẩm
Phân tích yêu cầu cụ thể cho từng module
Xây dựng chi tiết nhiệm vụ chính của hệ thống
Thiết kế các module Xây dựng chức năng cùng các sự kiện 3 ngày
Xây dựng code Xử lý các tính năng khi thao tác 5 ngày
Cài đặt các module Demo module khi xây dựng xong 1 ngày
Kiểm tra giao diện, độ chính xác và tìm các lỗi trong hệ thống
Viết báo cáo hoàn thiện Trình bày báo cáo chi tiết khi thiết kế module 1 ngày
Tích hợp và hoàn thành sản phẩm
Tích hợp các module đã thiết kế và lắp ghép chúng lại với nhau để hoàn thiện hệ thống trong 1 ngày Sau đó, tiến hành kiểm thử phần mềm để đảm bảo toàn bộ hệ thống hoạt động chính xác trong 1 ngày.
Fix code Tìm kiếm các lỗi phát sinh trong quá trình thực thi 2 ngày Đóng gói phần mềm
Viết báo cáo hướng dẫn sử dụng Viết bản hướng dẫn sử dụng phần mềm 1 ngày
Lên kế hoạch bảo trì phần mềm Đề ra kế hoạch bảo trì 1 ngày Kết thúc dự án Tổng kết lại quá trình là ra dự án 1 ngày
Bảng 2 2 2Bảng ước lượng về thời gian
2.1.2 Ước lượng về số lượng người tham gia
Số lượng người tham gia vào dự án này là 1 người
Lập lịch và theo dõi dự án
đoạn Giai Hoạt động Tên hoạt động
Hoạtđộng thừa kế gian bắtThời đầu gian kếtThời thúc thành Hoàn
1.1 Khảo sát thực tế, phân tích các yêu cầu 15/08/21 18/08/21 ✓
1.2 Báo cáo triển khai dự án 1.1 ✓
1.3 Lập kế hoạch cho dự án 1.2 19/08/21
2.1 Phân tích quy trình nghiệp vụ 1.2 20/08/21 21/08/21 ✓
2.2 Xây dựng use case cho hệ thống 2.1 21/08/21 23/08/21 ✓ phầnkế mềm 2.3 Xậy dựng sơ đồ trình tự cho hệ thống 2.2 24/08/21 26/08/21 ✓ 2.4 Thống nhất các sơ đồ 2.3 27/08/21 28/08/21 ✓ dựng Xây cơ sở liệu dự
3.1 Phân tích các đối tượng
2.3, 2.3, 2.4 29/08/21 30/08/21 ✓ 3.2 Xây dựng các thuộc tính cho từng đối tượng 3.1 1 ngày ✓
3.3 Thiết kế cơ sở dự liệu và nhập dữ liệu
4.1 Xây dựng các form đã được phân tích 3.3 3 ngày ✓
4.2 Xử lý sự kiện 4.1 4 ngày ✓
17 chứcnăng chính 4.3 Demo các module đã hoàn thành 4.1 1 ngày ✓
5.1 Kiểm tra các giao diện 4.3 1 ngày ✓
5.2 Kiểm tra lại dự liệu 5.1 1 ngày ✓
5.3 Fix code nếu gặp lỗi 5.2 1 ngày ✓
6.1 Viết báo cáo về module 5.1 1 ngày ✓
6.2 Viết báo cáo hướng dẫn sử dụng phần mềm 6.1 1 ngày ✓
7.1 Lên kế hoạch bảo trì phần mềm 5.3,
Bảng 2 3 Bảng lập lịch và theo dõi
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Xác định các Actor và Use Case tổng quát hệ thống
1 Bộ phận quản lí -Đăng nhập
-Quản lí nhân viên -Quản lí khách hàng -Quản lí kho hàng
- Quản lí khách hàng -Tìm kiếm sản phẩm
3 Nhân viên -Quản lí sản phẩm
3.1.2 Các Use Case tổng quát hệ thống
Hình 3 1 Use Case tổng quát
Phân tích chức năng của hệ thống
3.2.1 Chức năng đăng nhập, đăng xuất
Hình 3 2 Biểu đồ chức năng quản lý đăng nhập, đăng xuất
➢ Đặc tả use case đăng nhập, đăng xuất
• Tác nhân :Bộ phận quản lí, Nhân viên , khách hàng
Khi người dùng muốn truy cập vào hệ thống, họ cần thực hiện chức năng đăng nhập Sau khi hoàn tất công việc, việc đăng xuất là cần thiết để thoát khỏi hệ thống.
- Tác nhân yêu cầu giao diện đăng nhập vào hệ thống
- Hệ thống hiện thị giao diện đăng nhập cho tác nhân - Tác nhân sẽ: cập nhật tên đăng nhập (usename) và mật khẩu (password)
- Hệ thống kiểm tra dữ liệu và xác nhận thông tin từ tác nhân gửi vào hệ thống
- Thông tin đúng thì hệ thống gửi thông báo và đưa tác nhân vào hệ thống chính
- Kết thúc use case đăng nhập
-Sự kiện 1: Nếu tác nhân đăng nhập sai hệ thống thông báo đăng nhập lại hoặc thoát Sau khi tác nhân chọn thoát kết thúc use case
• Các yêu cầu đặc biệt: không có
• Trạng thái hệ thống trước khi sử dụng use case: không có • Trạng thái hệ thống sau khi sử dụng use case:
-Nếu đăng nhập thành công:Hệ thống sẽ đưa bạn vào hệ thống để sử dụng
-Nếu đăng nhập sai: Hệ thống sẽ thông báo “Đăng nhập thất bại !” và quay lại chức năng đăng nhập cho bạn
Hình 3 3 Biểu đồ hoạt động chức năng đăng nhập
-Bộ phận quản lí, nhân viên, khách hàng
-Bộ phân quản lý ,nhân viên đặng nhập vào chức năng quản lý sự kiện của hệ thống
C:Sơ đồ luồng nghiệp vụ cơ bản
D : Mô tả các bước trong luồng nghiệp vụ cơ bản
➢ Bước1 :Bộ phận quản lí, nhân viên , khách hàng yêu cầu chức năng đăng nhập
➢ Bước 2: Người thực hiện nhập dữ liệu:
➢ Bước 3: Kiểm tra dữ liệu nhập:
✓ Tài khoản, Mật khẩu chỉ được chứa các ký tự chữ cái ,số và một vài ký tự đặc biệt khác được cho phép
✓ Hợp lệ : chuyển sang bước 4
✓ Không hợp lệ : chuyển sang bước 2
➢ Bước 4: Kiểm tra đăng nhập
✓ Hợp lệ : chuyển sang bước 5
✓ Không hợp lệ: chuyển sang bước 2
➢ Bước 5: Đăng nhập tương ứng
Hình 3 4 Biểu đồ hoạt động chức năng đăng xuất
- Bộ phận quản lí, nhân viên , khách hàng
- Người thực hiện yêu cầu chức năng đăng xuất hệ thống C: Sơ đồ luồng nghiệp vụ:
D Mô tả các bước trong luồn nghiệp vụ cơ bản
- Bước 1: Bộ phân quản lý ,nhân viên hoặc các đơn vị thành viên yêu cầu chức năng đăng xuất
- Bước 2: Hệ thống kiểm tra đăng nhập :
✓ Đã đăng nhập : chuyển sang bước 3 ✓ Chưa đăng nhập : chuyển sang bước 5 - Bước 3: Xác nhận yêu cầu:
✓ Xác nhận : chuyển về bước 4
✓ Không xác nhận : Tiếp tục sử dụng hệ thông và chuyển sang bước 5
✓ Ngắt kết nối với hệ thống
Hình 3 5 Biểu đồ trình tự chức năng đăng nhập
Hình 3 6 Biểu đồ trình tự chức năng đăng xuất
3.2.2.Chức năng quản lý sản phẩm
Hình 3 7 Biểu đồ use case chức năng quản lý sản phẩm
➢ Đặc tả use case chức năng quản lí sản phẩm
• Tác nhân: Bộ phận quản lí,nhân viên , khách hàng
Mỗi khi tác nhân quản lý sản phẩm chọn mục Sản phẩm trên hệ thống, bộ phận quản lý và nhân viên có thể dễ dàng tìm kiếm và thêm sản phẩm mới.
24 sửa , xóa sản phẩm trên hệ thống.Còn khách hàng có thể vào phần mềm để tìm kiếm sản phẩm mà muốn tìm
-Tác nhân nhấn vào danh mục “sản phẩm” để quản lí
-Hệ thống hiển thị giao diện sản phẩm cho tác nhân
- Tác nhân thực hiện yêu cầu quản lí
- Hệ thống kiểm tra và cập nhật thông tin lên giao diện
-Kết thúc use case sản phẩm
➢ Sự kiện 1: Nếu tác nhân nhập thiếu dữ liệu hệ thống sẽ gửi thông báo chưa nhập và yêu cầu nhập đầy đủ
• Các yêu cầu đặc biệt :Không có
• Trạng thái hệ thống trước khi sử dụng hệ thống: không có
• Trạng thái hệ thống sau khi sử dụng hệ thống:
Chức năng Thành công Thất bại
Thêm sản phẩm Hệ thống sẽ thông báo “thêm, sửa, xóa” sản phẩm thành công và cập nhật sản phẩm lênform hiển thị
Hệ thống thông báo thất bại và yêu cầu nhập lại lại thông tin sản phẩm
Tìm kiếm sản phẩm Hiện thị sản phẩm muốn tìn lên form
Hình 3 8 Biểu đồ hoạt động chức năng quản lí sản phẩm
- Bộ phận quản lí, nhân viên ,khách hàng B:Điều kiện kích hoạt
- Người thực hiện yêu cầu chức năng quản lí sản phẩm
C:Sơ đồ luồng nghiệp vụ cơ bản
D:Mô tả các bước trong luồng nghiệp vụ
- Bước 1:Người dùng nhấn vào chức năng sản phẩm
- Bước 2:Người dùng thực hiện các chức năng (thêm , sửa , xóa, tìm kiếm) sản phẩm
- Bước 3 :Thêm dữ liệu , sửa dữ liệu, xóa dữ liệu, tìm kiếm dữ liệu theo nhu cầu
- Bước 4:Kiểm tra dư liêu người dùng ✓ Dữ liệu đúng : Thực hiện bước 5
✓ Dữ liệu sai : Quay lại bước 3
- Bước 5: Hiển thị dữ liệu lên hệ thống
Hình 3 9 Biểu đồ trình tự chức năng thêm sản phẩm
Hình 3 10 Biểu đồ trình tự chức năng sửa sản phẩm
Hình 3 11 Biểu đồ trình tự chức năng xóa sản phẩm
Hình 3 12 Biểu đồ trình tự chức năng tìm kiếm sản phẩm
3.3.3.Chức năng quản lí nhân viên
Hình 3 13 Use case chức năng quản lí nhân viên
➢ Đặc tả use case chức năng quản lí nhân viên
• Mô tả: Tác nhân chọn mục nhân viên trên hệ thống Ở đây tác nhân có thể tìm kiếm , thêm , sửa , xóa sản phẩm trên hệ thống
-Tác nhân vào giao diện nhân viên
- Hệ thống hiển thị giao diện nhân viên cho tác nhân
- Tác nhân thực hiện yêu cầu quản lí
- Hệ thống kiểm tra và cập nhật thông tin lên giao diện
- Kết thúc use case nhân viên
- Sự kiện 1: Nếu tác nhân nhập thiếu dữ liệu hệ thống sẽ gửi thông báo chưa nhập và yêu cầu nhập đầy đủ
• Các yêu cầu đặc biệt :Không có
• Trạng thái hệ thống trước khi sử dụng hệ thống: không có
• Trạng thái hệ thống sau khi sử dụng hệ thống:
Chức năng Thành công Thất bại
Thêm nhân viên Hệ thống sẽ thông báo “thêm, sửa, xóa” sản phẩm thành công và cập nhật sản phẩm lên form hiển thị
Hệ thống thông báo thất bại và yêu cầu nhập lại lại thông tin sản phẩm
Sửa nhân viên Xóa nhân viên
Hình 3 14 biểu đồ hoạt động chức năng quản lý nhân viên
- Người thực hiện yêu cầu chức năng quản lí nhân viên C:Sơ đồ luồng nghiệp vụ cơ bản
D:Mô tả các bước trong luồng nghiệp vụ
- Bước 1:Người dùng nhấn vào chức năng nhân viên
- Bước 2:Người dùng thực hiện các chức năng (thêm , sửa , xóa) nhân viên
- Bước 3 :Thêm dữ liệu , sửa dữ liệu, xóa dữ liệu theo nhu cầu
- Bước 4:Kiểm tra dư liêu người dùng ✓ Dữ liệu đúng : Thực hiện bước 5
✓ Dữ liệu sai : Quay lại bước 3
- Bước 5: Hiển thị dữ liệu lên hệ thống
Hình 3 15 Biểu đồ trình tự chức năng thêm nhân viên
Hình 3 16 Biểu đồ trình tự chức năng sửa nhân viên
Hình 3 17 Biểu đồ trình tự chức năng xóa nhân viên
3.3.4.Chức năng quản lý khách hàng
Hình 3 18 Biểu đồ Use case quản lý khách hàng
➢ Đặc tả use case chức năng quản lí khách hàng
• Tác nhân :bộ phận quản lí, nhân viên , khách hàng
Tác nhân quản lý khách hàng sẽ truy cập vào mục khách hàng trên hệ thống, nơi họ có thể thực hiện các thao tác như tìm kiếm, thêm, sửa đổi và xóa sản phẩm.
-Tác nhân vào giao diện khách hàng
- Hệ thống hiển thị giao diện khách hàng cho tác nhân - Tác nhân thực hiện yêu cầu quản lí
- Hệ thống kiểm tra và cập nhật thông tin lên giao diện
- Kết thúc use case khách hàng
- Sự kiện 1: Nếu tác nhân nhập thiếu dữ liệu hệ thống sẽ gửi thông báo chưa nhập và yêu cầu nhập đầy đủ
• Các yêu cầu đặc biệt :Không có
• Trạng thái hệ thống trước khi sử dụng hệ thống: không có
• Trạng thái hệ thống sau khi sử dụng hệ thống:
Chức năng Thành công Thất bại
Thêm khách hàng Hệ thống sẽ thông báo “thêm, sửa, xóa” sản phẩm thành công và cập nhật sản phẩm lên form hiển thị
Hệ thống thông báo thất bại và yêu cầu nhập lại lại thông tin sản phẩm
Sửa khách hàng Xóa khách hàng
Hình 3 19 biểu đồ hoạt động chức năng quản lý khách hàng
- Bộ phận quản lí, nhân viên , khách hàng
- Người thực hiện yêu cầu chức năng khách hàng C: Sơ đồ luồng nghiệp vụ:
D:Mô tả các bước trong luồng nghiệp vụ
- Bước 1:Người dùng nhấn vào chức năng khách hàng
- Bước 2:Người dùng thực hiện các chức năng (thêm , sửa , xóa) khách hàng
- Bước 3 :Thêm dữ liệu , sửa dữ liệu, xóa dữ liệu theo nhu cầu
- Bước 4:Kiểm tra dư liêu người dùng ✓ Dữ liệu đúng : Thực hiện bước 5
✓ Dữ liệu sai : Quay lại bước 3
- Bước 5: Hiển thị dữ liệu lên hệ thống
Hình 3 20 Biểu đồ trình tự chức năng thêm khách hàng
Hình 3 21 Biểu đồ trình tự chức năng sửa khách hàng
Hình 3 22 Biểu đồ trình tự chức năng xóa khách hàng
3.3.5 Chức năng quản lý kho
Hình 3 23 Biểu đồ use case chức năng quản lý kho
➢ Đặc tả use case chức năng quản lí kho
• Tác nhân: Bộ phận quản lí
Khi kho nhập nguyên liệu từ nhà cung cấp, thông tin sẽ được lưu trữ trên hệ thống để giúp tác nhân dễ dàng kiểm soát Tác nhân có khả năng kiểm tra số lượng nguyên liệu cũng như hóa đơn bán hàng của tiệm một cách thuận tiện.
-Tác nhân vào giao diện kho hàng
- Hệ thống hiển thị giao diện kho hàng cho tác nhân
- Tác nhân thực hiện yêu cầu quản lí
- Hệ thống kiểm tra và cập nhật thông tin lên giao diện
- Kết thúc use case kho
- Sự kiện 1: Nếu tác nhân nhập thiếu dữ liệu hệ thống sẽ gửi thông báo chưa nhập và yêu cầu nhập đầy đủ
• Các yêu cầu đặc biệt :Không có
• Trạng thái hệ thống trước khi sử dụng hệ thống: không có
• Trạng thái hệ thống sau khi sử dụng hệ thống:
Chức năng thống kê nhập hóa đơn cho phép hiển thị thông tin trên hệ thống, tuy nhiên, có vấn đề khi không cập nhật được dữ liệu Bên cạnh đó, chức năng thống kê số lượng nhập xuất nguyên liệu cũng cần được cải thiện để đảm bảo hiệu quả trong quản lý.
- Người thực hiện yêu cầu chức năng quản lí kho C: Sơ đồ luồng nghiệp vụ:
Hình 3 24 biểu đồ hoạt động chức năng quản lý thống kê kho
D: Mô tả các bước trong luồng nghiệp vụ
- Bước 1:Người dùng nhấn vào chức năng quản lí kho
- Bước 2:Người dùng chọn chức năng cần thống kê
- Bước 3:Kiểm tra dư liêu thống kê hệ thống
✓ Có dữ liệu: Thực hiện bước 4
✓ Không dữ liệu: Quay lại bước 2
- Bước 4: Show dữ liệu lên hệ thống
Hình 3 25 Biểu đồ trình tự chức năng thống kê hóa đơn
Hình 3 26 Biểu đồ trình tự chức năng tổng doanh thu hóa đơn
Hình 3 27 Biểu đồ trình tự thống kê phiếu nhập sản phẩm
THIẾT KẾ
Thiết kế giao diện
4.1.1 Giao diện đăng nhập, đăng xuất
Hình 4 1 Giao diện đăng nhập,đăng xuất
4.1.2 Giao diện quản lý sản phẩm
Hình 4 2 Giao diện quản lý sản phẩm
4.1.3 Giao diện quản lý nhân viên
Hình 4 3 Giao diện quản lý nhân viên
4.1.4 Giao diện quản lý khách hàng
Hình 4 4 Giao diện quản lý khách hàng
4.1.5 Giao diện thống kê hóa đơn bán hàng
Hình 4 5 Giao diện thống kê hóa đơn bán hàng
4.1.6 Giao diện thống kê phiếu nhập sản phẩm
Hình 4 6 Giao diện thống kê phiếu nhập
Thiết kế lưu trữ
4.2.5 Bảng thống kê hóa đơn
Bảng 4 6 Bảng thống kê hóa đơn bán hàng
4.2.6 Bảng thống kê phiếu nhập
Bảng 4 7 Bảng thống kê phiếu nhập sản phẩm
LẬP TRÌNH
Code chức năng đăng nhập
System.ComponentModel; using System.Data; using
System.Data.SqlClient; namespace btaplonCNPM
{ public partial class frmlogin : Form
} string chuoiketnoi = @"Data Source=NHATLONG;Initial
ID=sa;Password3456"; string sql;
SqlDataReader docdulieu; private void frmlogin_Load(object sender, EventArgs e)
{ if (String.IsNullOrEmpty(txtuser.Text))
MessageBox.Show(" Bạn chưa nhập username ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txtuser.Focus(); return false;
} if (String.IsNullOrEmpty(txtpass.Text))
MessageBox.Show(" Bạn chưa nhập password ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txtpass.Focus(); return false;
} private void btnlogin_Click(object sender, EventArgs e)
{ sql = @" SELECT * FROM [TIEMBANH].[dbo].[USER]
WHERE USERNAME = '" + txtuser.Text + "' and PASSWORD ='" + txtpass.Text+ "'"; ketnoi.Open(); thuchien = new SqlCommand(sql, ketnoi); docdulieu thuchien.ExecuteReader(); if
{ frmMain main = new frmMain(); main.Show(); this.Hide();
MessageBox.Show(" Tài khoản hoặc mật khẩu ko chính xác !!"); } ketnoi.Close();
} private void btnexit_Click(object sender, EventArgs e) }
("Bạn có chắc muốn thoát không?", "Thông báo ", MessageBoxButtons.OKCancel); if (h
Code Chức năng đăng xuất
private void đăngXuấtToolStripMenuItem_Click(object sender, EventArgs { e) frmlogin login = new frmlogin(); login.ShowDialog();
Code chức năng quản lý sản phẩm
System.ComponentModel; using System.Data; using
System.Data.SqlClient; namespace btaplonCNPM
{ public partial class frmsanpham : Form
} string chuoiketnoi = @"Data Source=NHATLONG;Initial
Security Info=True;User ID=sa;Password3456"; string sql;
SqlDataReader docdulieu; int i = 0; private void frmsanpham_Load(object sender, EventArgs e)
{ ketnoi = new SqlConnection(chuoiketnoi); hienthi();
{ listViewsp.Items.Clear(); ketnoi.Open(); sql = @"Select IDSANPHAM, TENSANPHAM, GIABAN,
KHUYENMAI FROM SANPHAM"; thuchien = new
SqlCommand(sql, ketnoi); docdulieu thuchien.ExecuteReader(); i = 0; while (docdulieu.Read())
{ listViewsp.Items.Add(docdulieu[0].ToString()); listViewsp.Items[i].SubItems.Add(docdulieu[1].ToString()); listViewsp.Items[i].SubItems.Add(docdulieu[2].ToString()); listViewsp.Items[i].SubItems.Add(docdulieu[3].ToString()); i++; }
} private void listViewsp_Click(object sender, EventArgs e)
{ txtID.Text = listViewsp.SelectedItems[0].SubItems[0].Text; txttensp.Text = listViewsp.SelectedItems[0].SubItems[1].Text; txtGia.Text = listViewsp.SelectedItems[0].SubItems[2].Text; cbKM.Text = listViewsp.SelectedItems[0].SubItems[3].Text;
{ if (String.IsNullOrEmpty(txtID.Text))
MessageBox.Show(" Bạn chưa nhập ID sản phẩm ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txtID.Focus(); return false;
} if (String.IsNullOrEmpty(txttensp.Text))
MessageBox.Show(" Bạn chưa nhập tên sản phẩm", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txttensp.Focus(); return false;
} if (String.IsNullOrEmpty(txtGia.Text))
MessageBox.Show(" Bạn chưa nhập giá sản phẩm", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txtGia.Focus(); return false;
{ if (String.IsNullOrEmpty(txtID.Text))
MessageBox.Show(" Bạn chưa chọn ID sản phẩm", "Thông báo",
MessageBoxIcon.Information); txtID.Focus(); return false;
} private void btnthem_Click(object sender, EventArgs e)
{ listViewsp.Items.Clear(); ketnoi.Open(); sql = @"INSERT INTO SANPHAM(IDSANPHAM,
TENSANPHAM, GIABAN, KHUYENMAI) VALUES (N'" + txtID.Text + @"' ,N'" + txttensp.Text + @"' , N'" + (txtGia.Text) + @"'
,N'" + cbKM.Text + @"')"; thuchien = new SqlCommand(sql, ketnoi); thuchien.ExecuteNonQuery(); ketnoi.Close(); hienthi();
MessageBox.Show("Thêm sản phẩm thành công !", "Thông báo"); } else
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
} private void btnsua_Click(object sender, EventArgs e)
{ listViewsp.Items.Clear(); ketnoi.Open(); sql = @"UPDATE SANPHAM SET IDSANPHAM = N'" + txtID.Text + @"' ,TENSANPHAM = N'" + txttensp.Text + @"', GIABAN = N'" + txtGia.Text + @"' , KHUYENMAI = N'" + cbKM.Text + @"'
52 ketnoi); thuchien.ExecuteNonQuery(); ketnoi.Close(); hienthi();
MessageBox.Show("Sản phẩm đã được cập nhật thành công !", "Thông báo");
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
} private void btnXoa_Click(object sender, EventArgs e) }
The code snippet demonstrates how to delete a product from the database using a SQL command It begins by clearing the item list and opening a connection to the database A SQL DELETE statement is constructed to remove the product identified by the ID entered in the text box After executing the command, the connection is closed, and the display is updated A message box confirms the successful deletion of the product.
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
} private void btnnhap_Click(object sender, EventArgs e)
{ txtID.Clear(); txttensp.Clear(); txtGia.Clear(); cbKM.Text = string.Empty; hienthi();
} private void btnTim_Click_1(object sender, EventArgs e)
53 listViewsp.Items.Clear(); sql = @"Select IDSANPHAM, TENSANPHAM, GIABAN,
KHUYENMAI FROM SANPHAM where IDSANPHAM = '" + txtID.Text + "'"; ketnoi.Open(); thuchien = new SqlCommand(sql, ketnoi); docdulieu thuchien.ExecuteReader(); i = 0; if(docdulieu.Read())
{ listViewsp.Items.Add(docdulieu[0].ToString()); listViewsp.Items[i].SubItems.Add(docdulieu[1].ToString()); listViewsp.Items[i].SubItems.Add(docdulieu[2].ToString()); listViewsp.Items[i].SubItems.Add(docdulieu[3].ToString()); i++; } else
MessageBox.Show("Không có sản phẩm trong cửa hàng", "Thông báo",
} private void btnThoat_Click(object sender, EventArgs e)
Code Chức năng quản lý khách hàng
System.ComponentModel; using System.Data; using
System.Data.SqlClient; namespace btaplonCNPM
{ public partial class frmkhachhang : Form
} string chuoiketnoi = @"Data Source=NHATLONG;Initial
ID=sa;Password3456"; string sql;
SqlDataReader docdulieu; int i = 0; private void frmkhachhang_Load(object sender, EventArgs e)
{ ketnoi = new SqlConnection(chuoiketnoi); hienthi();
{ listViewKH.Items.Clear(); ketnoi.Open(); sql = @"Select TENKHACHHANG, MAKHACHHANG, NGAYSINH, DIACHI, VIP, EMAIL FROM KHACHHANG"; thuchien = new SqlCommand(sql, ketnoi); docdulieu thuchien.ExecuteReader(); i = 0; while (docdulieu.Read())
{ listViewKH.Items.Add(docdulieu[0].ToString()); listViewKH.Items[i].SubItems.Add(docdulieu[1].ToString()); listViewKH.Items[i].SubItems.Add(Convert.ToDateTime(docdulieu[2]).ToSho rtDateString()); listViewKH.Items[i].SubItems.Add(docdulieu[3].ToString());
55 listViewKH.Items[i].SubItems.Add(docdulieu[4].ToString()); listViewKH.Items[i].SubItems.Add(docdulieu[5].ToString()); i++; } ketnoi.Close();
} private void button4_Click(object sender, EventArgs e)
} private void listViewKH_Click(object sender, EventArgs e)
The selected customer's details are retrieved from the list view, including their name, ID, date of birth, address, VIP status, and email The name is assigned to the text box `txttenkh`, the ID to `txtmakh`, and the date of birth is converted to a DateTime format and set in `dateTimePicker1` The address is stored in `txtdc`, the VIP status is set in `cbVIP`, and the email is entered into `txtEmail`.
{ if (String.IsNullOrEmpty(txttenkh.Text))
MessageBox.Show(" Bạn chưa nhập tên khách hàng ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txttenkh.Focus(); return false;
} if (String.IsNullOrEmpty(txtmakh.Text))
MessageBox.Show(" Bạn chưa nhập mã khách hàng ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txtmakh.Focus(); return false;
} if (String.IsNullOrEmpty(txtdc.Text))
MessageBox.Show(" Bạn chưa nhập địa chỉ khách hàng ", "Thông báo",
MessageBoxIcon.Information); txtdc.Focus(); return false;
} if (String.IsNullOrEmpty(txtEmail.Text))
MessageBox.Show(" Bạn chưa nhập email khách hàng ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txtEmail.Focus(); return false;
} if (String.IsNullOrEmpty(dateTimePicker1.Text))
MessageBox.Show(" Bạn chưa nhập ngày sinh khách hàng ", "Thông báo",
MessageBoxIcon.Information); dateTimePicker1.Focus(); return false;
} if (String.IsNullOrEmpty(cbVIP.Text))
MessageBox.Show(" Bạn chưa chọn VIP cho khách hàng ", "Thông báo",
MessageBoxIcon.Information); cbVIP.Focus(); return false;
} private void btnthemkh_Click(object sender, EventArgs e)
{ listViewKH.Items.Clear(); ketnoi.Open(); sql = "INSERT INTO KHACHHANG(TENKHACHHANG,
VIP, EMAIL) VALUES (N'"+txttenkh.Text+@"' ,N'"+txtmakh.Text+@"',N'" +dateTimePicker1.Value.ToString("yyyy - MM - dd")+"',N'" + txtdc.Text
57 thuchien = new SqlCommand(sql, ketnoi); thuchien.ExecuteNonQuery(); ketnoi.Close(); hienthi();
MessageBox.Show("Thêm khách hàng thành công !", "Thông báo"); } else
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
{ if(String.IsNullOrEmpty(txttenkh.Text))
MessageBox.Show(" Bạn chưa nhập tên khách hàng ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txttenkh.Focus(); return false;
} private void btnSuaKH_Click(object sender, EventArgs e)
{ listViewKH.Items.Clear(); ketnoi.Open(); sql = @"UPDATE KHACHHANG SET TENKHACHHANG = N'" + txttenkh.Text + @"'
,MAKHACHHANG = N'" + txtmakh.Text + @"', NGAYSINH = N'" + dateTimePicker1.Value.ToString("yyyy - MM - dd") + "', DIACHI = N'"
VIP= N'" + cbVIP.Text + @"', EMAIL= N'" + txtEmail.Text + @"'
"; thuchien = new SqlCommand(sql, ketnoi); thuchien.ExecuteNonQuery(); ketnoi.Close(); hienthi();
MessageBox.Show("Khách hàng đã được cập nhật thành công !", "Thông báo"); } else
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
} private void btnXoa_Click(object sender, EventArgs e)
{ listViewKH.Items.Clear(); ketnoi.Open(); sql = @"DELETE FROM KHACHHANG WHERE
@"')"; thuchien = new SqlCommand(sql, ketnoi); thuchien.ExecuteNonQuery(); ketnoi.Close(); hienthi();
MessageBox.Show("Xóa khách hàng thành công ",
"Thông báo", MessageBoxButtons.OK); } else
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
} private void button1_Click(object sender, EventArgs e)
{ txttenkh.Clear(); txtmakh.Clear(); txtdc.Clear(); cbVIP.Text = string.Empty; txtEmail.Clear(); hienthi();
Code Chức năng quản lý nhân viên
System.ComponentModel; using System.Data; using
System.Data.SqlClient; namespace btaplonCNPM
{ public partial class frmnhanvien : Form
} string chuoiketnoi = @"Data Source=NHATLONG;Initial
Security Info=True;User ID=sa;Password3456"; string sql;
SqlDataReader docdulieu; int i = 0; private void button4_Click(object sender, EventArgs e)
} private void frmnhanvien_Load(object sender, EventArgs e)
{ ketnoi = new SqlConnection(chuoiketnoi); hienthi();
60 listViewNV.Items.Clear(); ketnoi.Open(); sql = @"Select IDNHANVIEN, TENNHANVIEN, DIACHI,
GIOITINH, CALAM, HSLUONG FROM NHANVIEN"; thuchien = new SqlCommand(sql, ketnoi); docdulieu thuchien.ExecuteReader(); i = 0; while (docdulieu.Read())
The code snippet adds items to a ListView control by iterating through a data source Each item is created from the first element of the data, while additional sub-items are populated with subsequent elements The process continues until all relevant data is added, after which the connection is closed.
} private void listViewNV_Click(object sender, EventArgs e)
The selected employee's ID is retrieved and displayed in the text box, followed by their name, address, gender, position, and salary, all extracted from the selected item's sub-items in the list view.
{ if (String.IsNullOrEmpty(txtidnv.Text))
MessageBox.Show(" Bạn chưa nhập ID nhân viên ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txtidnv.Focus(); return false;
} if (String.IsNullOrEmpty(txttennv.Text))
MessageBox.Show(" Bạn chưa nhập tên nhân viên", "Thông báo",
MessageBoxIcon.Information); txttennv.Focus(); return false;
} if (String.IsNullOrEmpty(txtdc.Text))
MessageBox.Show(" Bạn chưa nhập địa chỉ nhân viên ! ", "Thông báo",
MessageBoxIcon.Information); txtdc.Focus(); return false;
} if (String.IsNullOrEmpty(cbGT.Text))
{ MessageBox.Show(" Bạn chưa nhập giới tính nhân viên ! ", "Thông báo",
MessageBoxIcon.Information); cbGT.Focus(); return false;
} if (String.IsNullOrEmpty(txtcalam.Text))
MessageBox.Show(" Bạn chưa nhập ca làm của nhân viên ! ", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Information); txtcalam.Focus(); return false;
} if (String.IsNullOrEmpty(txthsluong.Text))
MessageBox.Show(" Bạn chưa nhập hệ số lương của nhân viên !
", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); txthsluong.Focus(); return false;
{ if (String.IsNullOrEmpty(txtidnv.Text))
MessageBox.Show(" Bạn chưa chọn ID sản phẩm", "Thông báo",
MessageBoxIcon.Information); txtidnv.Focus(); return false;
} private void button1_Click(object sender, EventArgs e)
{ listViewNV.Items.Clear(); ketnoi.Open(); sql = @"INSERT INTO NHANVIEN(IDNHANVIEN,
CALAM, HSLUONG ) VALUES (N'" + txtidnv.Text + @"' ,N'" + txttennv.Text + @"' , N'" +
(txtdc.Text) + @"' ,N'" + cbGT.Text + @"' , N'" + txtcalam.Text + @"' , N'" + (txthsluong.Text) + @"')"; thuchien = new SqlCommand(sql, ketnoi); thuchien.ExecuteNonQuery(); ketnoi.Close(); hienthi();
MessageBox.Show("Thêm nhân viên thành công !", "Thông báo"); } else
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
} private void btnSua_Click(object sender, EventArgs e)
{ listViewNV.Items.Clear(); ketnoi.Open(); sql = @"UPDATE NHANVIEN SET IDNHANVIEN = N'" + txtidnv.Text + @"' , TENNHANVIEN = N'" + txttennv.Text + @"', DIACHI N'" + txtdc.Text + @"' ,GIOITINH = N'"
+ cbGT.Text + @"' , CALAM = N'" + txtcalam.Text + @"', HSLUONG = N'" + txthsluong.Text +
WHERE (IDNHANVIEN = N'" + txtidnv.Text + @"') "; thuchien = new
SqlCommand(sql, ketnoi); thuchien.ExecuteNonQuery(); ketnoi.Close(); hienthi();
MessageBox.Show("Nhân viên đã được cập nhật thành công !", "Thông báo");
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
} private void btnxoa_Click(object sender, EventArgs e)
{ listViewNV.Items.Clear(); ketnoi.Open(); sql = @"DELETE FROM NHANVIEN WHERE (IDNHANVIEN N'" + txtidnv.Text +
@"')"; thuchien = new SqlCommand(sql, ketnoi); thuchien.ExecuteNonQuery(); ketnoi.Close(); hienthi();
MessageBox.Show("Xóa nhân viên thành công ", "Thông báo",
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
} private void btnnhapmoi_Click(object sender, EventArgs e)
64 txtdc.Clear(); cbGT.Text = string.Empty; txtcalam.Clear(); txthsluong.Clear(); hienthi();
Code chức năng thống kê hóa đơn
System.ComponentModel; using System.Data; using
System.Linq; using System.Text; using
System.Data.SqlClient; namespace btaplonCNPM
{ public partial class frmhoadon : Form
} private void button4_Click(object sender, EventArgs e)
} string chuoiketnoi = @"Data Source=NHATLONG;Initial
Security Info=True;User ID=sa;Password3456";
SqlDataReader docdulieu; int i = 0; private void frmhoadon_Load(object sender, EventArgs e)
// TODO: This line of code loads data into the
'tIEMBANHDataSet4.SANPHAM' table You can move, or remove it, as needed this.sANPHAMTableAdapter.Fill(this.tIEMBANHDataSet4.SANPHAM); // TODO: This line of code loads data into the
'tIEMBANHDataSet3.KHACHHANG' table You can move, or remove it, as needed this.kHACHHANGTableAdapter.Fill(this.tIEMBANHDataSet3.KHACHHA NG); // TODO: This line of code loads data into the
'tIEMBANHDataSet2.NHANVIEN' table You can move, or remove it, as needed this.nHANVIENTableAdapter.Fill(this.tIEMBANHDataSet2.NHANVIEN); // TODO: This line of code loads data into the
'tIEMBANHDataSet1.HOADON' table You can move, or remove it, as needed this.hOADONTableAdapter1.Fill(this.tIEMBANHDataSet1.HOADON);
// TODO: This line of code loads data into the
'tIEMBANHDataSet.HOADON' table You can move, or remove it, as needed this.hOADONTableAdapter.Fill(this.tIEMBANHDataSet.HO
ADON); ketnoi = new SqlConnection(chuoiketnoi); hienthi(); public void hienthi() }
{ listViewhd.Items.Clear(); ketnoi.Open(); sql = @"Select * from HOADON"; thuchien = new SqlCommand(sql, ketnoi); docdulieu = thuchien.ExecuteReader(); i = 0; while (docdulieu.Read())
The code snippet demonstrates how to add items to a ListView control in a Windows Forms application It retrieves data from an array called `docdulieu`, converting specific elements to strings and formatting dates appropriately Each item in the ListView is populated with multiple sub-items, including a formatted date, before incrementing the index and closing the database connection.
} private void listViewhd_Click(object sender, EventArgs e)
The selected item's text from the list view is assigned to various controls: the main text is set to `txtid`, the second sub-item to `cbsp`, the third to `cbidnv`, and the fourth to `cbkh` Additionally, the date picker value is updated by converting the text of the fifth sub-item into a DateTime format.
; txttien.Text listViewhd.SelectedItems[0].SubItems[5].Text;
{ if (String.IsNullOrEmpty(txtid.Text))
MessageBox.Show(" Bạn chưa chọn ID hóa đơn ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txtid.Focus(); return false;
} if (String.IsNullOrEmpty(txttien.Text))
MessageBox.Show(" Bạn chưa nhập giá hóa đơn ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); txttien.Focus(); return false;
} if (String.IsNullOrEmpty(cbsp.Text))
MessageBox.Show(" Bạn chưa chọn ID sản phẩm ", "Thông báo",
MessageBoxIcon.Information); cbsp.Focus(); return false;
} if (String.IsNullOrEmpty(cbidnv.Text))
MessageBox.Show(" Bạn chưa chọn ID nhân viên ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); cbidnv.Focus(); return false;
} if (String.IsNullOrEmpty(cbkh.Text))
MessageBox.Show(" Bạn chưa chọn tên khách hàng ", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Information); cbkh.Focus(); return false;
} if (String.IsNullOrEmpty(dateTimePicker1.Text))
MessageBox.Show(" Bạn chưa chọn ngày ", "Thông báo",
MessageBoxIcon.Information); dateTimePicker1.Focus(); return false;
} private void btntk_Click(object sender, EventArgs e)
{ listViewhd.Items.Clear(); sql = @"Select * from HOADON where IDHOADON = '" + txtid.Text + "'"; ketnoi.Open(); thuchien = new SqlCommand(sql, ketnoi); docdulieu thuchien.ExecuteReader(); i = 0; if (docdulieu.Read())
The code snippet demonstrates how to add items to a ListView control in a user interface It initializes a new item with the first element of the data array and subsequently adds sub-items for additional data points The date is formatted to a short date string for better readability The process continues in a loop, incrementing the index for each new item added.
MessageBox.Show("Không có hóa đơn trong cửa hàng", "Thông báo",
} private void button1_Click(object sender, EventArgs e)
} private void btntinh_Click(object sender, EventArgs e)
{ ketnoi.Open(); sql = @"SELECT SUM(SOTIEN) AS tong
SqlCommand(sql, ketnoi); docdulieu thuchien.ExecuteReader(); while
{ txtBox.Text = docdulieu["tong"].ToString();
} private void btnthem_Click(object sender, EventArgs e)
{ listViewhd.Items.Clear(); ketnoi.Open();
69 sql = "INSERT INTO HOADON(IDHOADON,IDSANPHAM, IDNHANVIEN, TENKHACHHANG, NGAY, SOTIEN) VALUES (N'" + txtid.Text + @"' ,N'" + cbsp.Text + @"',N'" + cbidnv.Text +
@"',N'" + cbkh.Text + @"',N'" + dateTimePicker1.Value.ToString("yyyy - MM
+ txttien.Text + @"' ) "; thuchien = new SqlCommand(sql, ketnoi); thuchien.ExecuteNonQuery(); ketnoi.Close(); hienthi();
MessageBox.Show("Thêm hóa đơn thành công !", "Thông báo"); } else
MessageBox.Show("Đã có lỗi xin thử lại !", "Thông báo lỗi",
Code chức năng thống kê phiếu nhập
System.ComponentModel; using System.Data; using
System.Data.SqlClient; namespace btaplonCNPM
} string chuoiketnoi = @"Data Source=NHATLONG;Initial
ID=sa;Password3456"; string sql;
SqlDataReader docdulieu; int i = 0; private void button2_Click(object sender, EventArgs e)
} private void frmphieu_Load(object sender, EventArgs e)
{ ketnoi = new SqlConnection(chuoiketnoi); hienthi();
{ listViewPN.Items.Clear(); ketnoi.Open(); sql = @"Select * from
= thuchien.ExecuteReader(); i = 0; while (docdulieu.Read())
{ listViewPN.Items.Add(docdulieu[0].ToString()); listViewPN.Items[i].SubItems.Add(docdulieu[1].ToString()); listViewPN.Items[i].SubItems.Add(docdulieu[2].ToString()); listViewPN.Items[i].SubItems.Add(Convert.ToDateTime(docdulieu[3]).ToSh ortDateString()); i++; } ketnoi.Close();
} private void listViewPN_Click(object sender, EventArgs e)
71 textBox1.Text = listViewPN.SelectedItems[0].SubItems[0].Text;
{ if (String.IsNullOrEmpty(textBox1.Text))
MessageBox.Show(" Bạn chưa nhập ID phiếu ", "Thông báo",
MessageBoxIcon.Information); textBox1.Focus(); return false;
} private void button1_Click(object sender, EventArgs e)
{ listViewPN.Items.Clear(); sql = @"Select * from PHIEUNHAP where IDPHIEUNHAP = '" +textBox1.Text+
"'"; ketnoi.Open(); thuchien = new SqlCommand(sql, ketnoi); docdulieu thuchien.ExecuteReader(); i = 0; if (docdulieu.Read())
{ listViewPN.Items.Add(docdulieu[0].ToString()); listViewPN.Items[i].SubItems.Add(docdulieu[1].ToString()); listViewPN.Items[i].SubItems.Add(docdulieu[2].ToString()); listViewPN.Items[i].SubItems.Add(Convert.ToDateTime(docdulieu[3]).ToSh ortDateString()); i++; } else
MessageBox.Show("Không có phiếu trong cửa hàng", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
} private void button3_Click(object sender, EventArgs e)
KIỂM THỬ PHẦN MỀM
Kiểm thử chức năng: đăng nhập
D Small function Pre_conditio n Test operation Expected result Actual
CSM Hiển thị giao diện đăng nhập Thành công
Login_2 Kiểm tra giao diện đăng nhập Ấn nút Tab Thứ tự tab từ trên xuống dưới từ trái qua phải
Login_3 Vị trí của biểu mẫu Biểu mẫu được hiển thị giữa màn hình
Login_4 Thay đổi kích thước biểu mẫu Không thể thay đổi kích thước biểu mẫu
Login_5 Di chuyển biểu mẫu Biểu mẫu có thể được di chuyển Thành công
Login_6 Xem trạng thái của nút đăng nhập và nút đóng
Trạng thái của các nút đang hoạt động Thành công
Login_7 Xem tất cả fields trong biểu mẫu đăng nhập
Labels và Button : -Tên đăng nhập -Mật khẩu -2 nút: Đăng nhập,Thoát
Login_8 Kiểm tra dữ liệu hiển thị trong field mật khẩu
Phải hiển thị ‘*’ thay vì dữ liệu được đưa vào
Login_9 Xem textbox mặc định
Textbox Tên đăng nhập:sẵn sàng và trống Textbox Mật khẩu: sẵn sàng và trống
Login_10 Kiểm tra field Tên đăng nhập
1.Nhập dữ liệu chính xác 2.Nhập dữ liệu chính xác cho tất cả field
3.Nhấp đăng nhập hoặc ấn enter thành công”
Login_11 1.Không nhập dữ liệu
2 Nhấp đăng nhập hoặc ấn enter
“Hãy nhập tài khoản và mật khẩu”
Login_12 1.Nhập dữ liệu sai
2 Nhấp đăng nhập hoặc ấn enter
“Tài khoản hoặc mật khẩu sai” Thành công
Login_13 Kiểm tra field Mật khẩu
1.Nhập dữ liệu chính xác 2.Nhấp đăng nhập hoặc ấn enter
Login_14 1.Không nhập dữ liệu
2 Nhấp đăng nhập hoặc ấn enter
Login_15 1.Nhập dữ liệu sai
2 Nhấp đăng nhập hoặc ấn enter
“Tài khoản hoặc mật khẩu sai”
Login_16 Kiểm tra button Nhấn nút Đăng xuất Hiển thị form login Thành công
Login_18 Mất kết nối Ngắt kết nối với máy chủ
“Không kết nối được với máy chủ”
ĐÓNG GÓI VÀ BẢO TRÌ PHẦN MỀM
Các bước đóng gói phần mềm
+Bước 1: Tải và download gói Setup Projects về
+ Bước 2: Mở Project của mình lên nhấn phải chuột chọn vào Solution => Add => New Project
+ Bước 3: Nhấn chọn vào Visual Studio Installer => Setup Project Sau đó đặt tên rồi chọn vị trí lưu cho File Exe sau này
+ Bước 4: Nhấn phải chuột vào Application Folder => Add => Project Outout + Bước 5: Chọn tên Project của sau đó nhấn chọn Primary ouput và nhấn OK
+ Bước 6: Tiếp tục nhấn phải chuột vào Primary output mới tạo và chọn Create Shortcut to Primary output
+ Bước 7: Tiếp theo hãy di chuyển Shortcut vừa tạo ở thư mục Application Folder vào thư mục User’s Desktop
+ Bước 8: Bước này là bước thiết lập icon cho File Exe Nhấn phải chuột vào Shortcut chọn Properties Window
+ Bước 9: Nhấp chọn vào thư mục User’s Programs Menu Nhấn phải chuột vào khoảng trắng bên phải chọn Create New Shortcut
+ Bước 10: Tương tự hãy thiết lập icon cho Shortcut như ở trên
+ Bước 11: Vào mục Properties => Author để chỉnh tên tác giả và mục Manufacturer để chỉnh tên nhà sản xuất
+ Bước 12: Tiến hành Rebuild lại File Setup.
Khái niệm về bảo trì phần mềm
Bảo trì phần mềm là quá trình điều chỉnh các lỗi chưa được phát hiện trong giai đoạn xây dựng và nâng cấp tính năng để đảm bảo an toàn vận hành Việc bảo trì định kỳ chiếm từ 65-75% công sức trong chu kỳ sống của phần mềm Quá trình phát triển phần mềm bao gồm nhiều giai đoạn như thu thập yêu cầu, phân tích, thiết kế, xây dựng, kiểm tra, triển khai và bảo trì Giai đoạn bảo trì có nhiệm vụ giữ cho phần mềm luôn cập nhật theo sự thay đổi của môi trường và yêu cầu người sử dụng.
Thích ứng là quá trình điều chỉnh phần mềm để phù hợp với môi trường sản phẩm đã thay đổi Môi trường này bao gồm tất cả các yếu tố bên ngoài như quy tắc kinh doanh, luật pháp và phương thức làm việc.
Hoàn thiện phần mềm là quá trình chỉnh sửa để đáp ứng các yêu cầu mới hoặc thay đổi từ người sử dụng, tập trung vào việc nâng cao chức năng, cải thiện hiệu năng và giao diện Khi phần mềm đã thành công, người dùng thường khám phá thêm những yêu cầu mới ngoài những gì đã đề ra ban đầu, do đó, việc cải tiến các chức năng là cần thiết.
Bảo vệ (preventive): mục đích là làm hệ thống dễ dàng bảo trì hơn trong những lần tiếp theo.