Việc tạo ra một phần mềm quản lý cửa hàng kính mắt sử dụng công nghệ .NET sẽ giúpcác nhà quản lý cửa hàng có thể quản lý sản phẩm, khách hàng, nhân viên, hóa đơn và chitiết hóa đơn một c
TỔNG QUAN BÀI TOÁN
Lý do chọn đề tài
Quản lý cửa hàng kính mắt Anna là một chủ đề thực tế và cần thiết trong cuộc sống hiện đại Việc tạo ra một phần mềm quản lý cửa hàng kính mắt sử dụng công nghệ NET sẽ giúp các nhà quản lý cửa hàng có thể quản lý sản phẩm, khách hàng, nhân viên, hóa đơn và chi tiết hóa đơn một cách nhanh chóng, hiệu quả và tiết kiệm thời gian.
Một hệ thống quản lý cửa hàng kính mắt cần phải cung cấp đầy đủ các chức năng từ quản lý đơn đặt hàng, tình trạng hàng tồn kho đến quản lý doanh thu và khách hàng Các chức năng này yêu cầu sử dụng nhiều kỹ thuật phát triển phần mềm khác nhau và có thể tận dụng tối đa các tính năng của NET.
Hệ thống quản lý cửa hàng kính mắt có tính linh hoạt cao, có thể tùy chỉnh và phát triển thêm các tính năng mới theo yêu cầu của khách hàng, Nhằm giúp doanh nghiệp giảm thiểu chi phí và tối ưu hóa quy trình làm việc, đồng thời tăng cường khả năng đáp ứng nhu cầu của khách hàng
Xuất phát từ những nhu cầu thực tế, chọn quản lý cửa hàng kính mắt Anna làm đề tài bài tập lớn trong môn lập trình NET nâng cao là một lựa chọn hợp lý để áp dụng các kiến thức và kỹ năng phát triển phần mềm, tạo ra một sản phẩm có giá trị thực tiễn và đáp ứng nhu cầu của thị trường.
Mục tiêu của đề tài
Mục tiêu để xây dựng một hệ thống quản lý cửa hàng kính mắt Anna phát triển giao diện người dùng thân thiện và dễ sử dụng Giao diện phải đáp ứng tốt trên các thiết bị khác nhau như máy tính, máy tính bảng và điện thoại di động Mục tiêu của cửa hàng quản lý kính mắt Anna có thể được miêu tả chi tiết như sau:
- Quản lý sản phẩm: Hệ thống nên cho phép quản lý danh mục sản phẩm của cửa hàng kính mắt Điều này bao gồm tạo mới, cập nhật và xóa sản phẩm Mỗi sản phẩm nên có thông tin chi tiết như tên, giá cả, số lượng và hình ảnh.
- Quản lý hóa đơn: Tạo, cập nhật và xóa thông tin hóa đơn khi khách hàng mua sản phẩm kính mắt Ghi nhận chi tiết hóa đơn bao gồm danh sách sản phẩm mua, số lượng, giá cả, tổng cộng, ngày mua, thông tin khách hàng Tự động tính toán tổng giá trị hóa đơn.
Quản lý chi tiết hóa đơn cung cấp khả năng hiển thị đầy đủ từng sản phẩm trong hóa đơn, bao gồm cả tên sản phẩm và số lượng Tính năng này cho phép chỉnh sửa số lượng và xóa các sản phẩm không cần thiết trong hóa đơn, đảm bảo tính chính xác và linh hoạt trong quá trình quản lý bán hàng.
- Quản lý nhân viên: Lưu trữ thông tin nhân viên gồm tên, địa chỉ, số điện thoại Theo dõi hoạt động làm việc của nhân viên.
- Quản lý khách hàng: Lưu trữ thông tin khách hàng gồm tên, địa chỉ, số điện thoại.
Đối tượng sử dụng
Trong hệ thống quản lý cửa hàng kính mắt Anna, nhân viên được xem là đối tượng chính sử dụng hệ thống Quản lý có quyền truy cập và sử dụng các chức năng của hệ thống để thực hiện các nhiệm vụ quan trọng như:
- Thêm, sửa, xóa sản phẩm: Quản lý có quyền cập nhật thông tin về sản phẩm trong cửa hàng Họ có thể thêm mới sản phẩm mới vào hệ thống, cập nhật thông tin về giá cả, mô tả Đồng thời, quản lý cũng có quyền xóa sản phẩm nếu cần thiết.
- Nhập thông tin khách hàng: Nhân viên có thể nhập thông tin về khách hàng vào hệ thống Điều này bao gồm thông tin cá nhân như tên, địa chỉ, số điện thoại Thông tin này giúp cửa hàng tạo và duy trì một cơ sở dữ liệu khách hàng đáng tin cậy.
- Quản lý hóa đơn: Quản lý có quyền tạo và quản lý hóa đơn bán hàng Họ có thể tạo hóa đơn cho khách hàng, ghi lại thông tin về sản phẩm được mua, số lượng, giá cả và tổng cộng Quản lý cũng có quyền cập nhật hóa đơn nếu có sự thay đổi hoặc cần điều chỉnh.
Quản lý sử dụng hệ thống quản lý cửa hàng để thực hiện các nhiệm vụ quan trọng liên quan đến sản phẩm, khách hàng và hóa đơn Điều này giúp họ làm việc một cách hiệu quả,nhanh chóng và chính xác, đồng thời đảm bảo tính linh hoạt và quản lý chặt chẽ trong hoạt động kinh doanh của cửa hàng kính mắt Anna.
Công cụ hỗ trợ
Khi làm bài sẽ cần sử dụng một số công cụ hỗ trợ để tận dụng tối đa khả năng của lập trình NET Trong số đó có:
Visual Studio là môi trường phát triển tích hợp mạnh mẽ cung cấp cho các lập trình viên nhiều tính năng và công cụ Những tính năng và công cụ này hỗ trợ lập trình viên xây dựng, gỡ lỗi và triển khai ứng dụng NET một cách dễ dàng.
- Ngoài ra, việc làm việc với cơ sở dữ liệu SQL Server là không thể thiếu SQL Server Management Studio (SSMS) là công cụ quản lý cơ sở dữ liệu mạnh mẽ cho phép bạn tạo, truy vấn và quản lý cơ sở dữ liệu SQL Server một cách tiện lợi.
- Khi phát triển ứng dụng web trong NET nâng cao, trình duyệt web trở thành công cụ quan trọng để kiểm tra và thử nghiệm ứng dụng trên môi trường thực tế Sử dụng trình duyệt web như Google Chrome, Mozilla Firefox hoặc Microsoft Edge, bạn có thể xem giao diện người dùng, kiểm tra tính năng và tương tác với ứng dụng web của mình.
Ý nghĩa của đề tài
Quản lý cửa hàng kính mắt Anna có ý nghĩa quan trọng đối với hoạt động kinh doanh và cung cấp dịch vụ chất lượng cho khách hàng
Việc quản lý cửa hàng kính mắt Anna giúp cải thiện quản lý sản phẩm giúp cho cửa hàng biết chính xác về nguồn hàng và xu hướng bán hàng điều này đáp ứng nhu cầu của khách hàng, đảm bảo sự đa dạng và chất lượng sản phẩm giúp cho cửa hàng kính mắt giữ được tính cạnh tranh trong thị trường
Quản lý hóa đơn và chi tiết hóa đơn giúp cửa hàng nắm bắt được xu hướng mua hàng và đưa ra chiến lược bán hàng phù hợp Tất cả những điều này giúp tăng doanh số bán hàng và tăng trưởng kinh doanh Ngoài ra, còn nâng cao chất lượng dịch vụ thông qua việc ghi nhận thông tin cá nhân của khách hàng để cửa hàng có thể tạo ra trải nghiệm mua hàng tốt hơn, đáp ứng các nhu cầu riêng biệt và tạo sự hài lòng cho khách hàng.
Quản lý cửa hàng kính mắt Anna giúp theo dõi doanh thu, lợi nhuận và chi phí một cách chi tiết Thông qua việc phân tích dữ liệu, cửa hàng có thể xác định được các mẫu sản phẩm bán chạy, kênh bán hàng hiệu quả và áp dụng các chiến lược giá cả và khuyến mãi để tăng doanh thu và lợi nhuận.
Tổng thể, quản lý cửa hàng kính mắt Anna giúp tăng cường hiệu quả kinh doanh, cung cấp dịch vụ tốt hơn
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Mô tả bài toán
Cửa hàng Kính mắt Anna chuyên cung cấp các sản phẩm đẹp và uy tín từ các nhà cung cấp hàng đầu trong và ngoài nước, mang đến đa dạng mẫu mã và chất liệu phù hợp cho mọi lứa tuổi Nhân viên tại đây được quản lý với các thông tin như mã nhân viên, tên, giới tính và số điện thoại Sản phẩm đều có thông tin chi tiết về mã sản phẩm, tên sản phẩm, đơn giá và hình ảnh, giúp khách hàng dễ dàng tìm kiếm và lựa chọn sản phẩm ưng ý Sau khi được tư vấn, khách hàng có thể đến quầy thanh toán để nhân viên thu ngân tiếp nhận tiền hàng và xuất hóa đơn bán hàng Mỗi hóa đơn đều ghi rõ thông tin về id hóa đơn bán, id sản phẩm, đơn giá và số lượng sản phẩm.
Khách hàng sẽ vui lòng cho cửa hàng xin lại thông tin liên hệ như tên khách hàng, địa chỉ và số điện thoại, để cửa hàng có thể nhận được những phản hồi, góp ý thực tế của khách hàng sau một thời gian sử dụng sản phẩm, để cửa hàng ngày càng cải tiến tốt hơn về chất lượng sản phẩm và dịch vụ.
Danh sách các chức năng
Bài toán quản lý cửa hàng kính mắt Anna là một bài toán quản lý doanh nghiệp, trong đó cửa hàng kính mắt Anna cần quản lý các hoạt động kinh doanh của mình để đạt được lợi nhuận và tăng trưởng trong thời gian dài. Đối tượng sử dụng là quản lý Các chức năng cơ bản của hệ thống quản lý cửa hàng kính mắt Anna bao gồm:
- Quản lý thông tin sản phẩm, bao gồm danh sách sản phẩm, thông tin chi tiết sản phẩm, giá cả, thông tin loại sản phẩm.
- Quản lý thông tin khách hàng, bao gồm danh sách khách hàng, thông tin chi tiết khách hàng, lịch sử mua hàng.
- Quản lý thông tin nhân viên, bao gồm danh sách nhân viên, các thông tin liên quan đến nhân viên.
- Quản lý hóa đơn bán, bao gồm danh sách hóa đơn bán, thông tin chi tiết hóa đơn bán, danh sách sản phẩm bán ra và thông tin khách hàng.
Quản lý chi tiết bán hàng là chức năng quan trọng giúp doanh nghiệp theo dõi hoạt động bán hàng một cách chi tiết và hiệu quả Các thông tin cần quản lý trong chức năng này bao gồm: danh sách chi tiết bán hàng, bao gồm ngày bán, khách hàng, nhân viên bán hàng; thông tin chi tiết sản phẩm bán, bao gồm mã sản phẩm, tên sản phẩm, giá bán; số lượng sản phẩm bán; và giá bán.
- Thống kê báo cáo, bao gồm thống kê sản phẩm, thống kê khách hàng, thống kê các hoạt động bán hàng của nhân viên.
Phân tích yêu cầu
2.3.1 Xác định Actor và Usecase
1 Quản lý - Đăng nhập / Đăng xuất
- Quản lý sản phẩm: Thêm, sửa, xóa, xem chi tiết - Quản lý nhân viên: Thêm, sửa, xóa, xem chi tiết - Quản lý khách hàng: Thêm, sửa, xóa, xem chi tiết - Quản lý đơn hàng: Thêm, sửa, xóa, xem chi tiết
- Quản lý chi tiết hóa đơn: Thêm, sửa xóa, xem chi tiết
Bảng 1: Xác định Actor và Usecase 2.3.2 Biểu đồ Usecase a Use case Tổng quát
Hình 1: Use case Tổng quát b Use case Quản lý sản phẩm
Hình 2: Use case Quản lý sản phẩm c Use case Quản lý nhân viên
Hình 3: Use case Quản lý nhân viên d Use case Quản lý khách hàng
Hình 4: Use case Quản lý khách hàng e Use case Quản lý hóa đơn
Hình 5:Use case Quản lý hóa đơn f Use case Quản lý chi tiết hóa đơn
Hình 6: Use case Quản lý chi tiết hóa đơn 2.3.3 Đặc tả Usecase a Chức năng đăng ký
- Tên chức năng: đăng ký - Đường dẫn: Đăng ký - Mô tả chức năng: người dùng (quản lý) đăng ký tài khoản.
- Dòng sự kiện chính: Màn hình đăng nhập gồm:
₊ Thông tin đăng nhập: + Email
₊ Người dùng cần ký đầy đủ cả 2 thông tin: Email, Password sau đó kích nút “ Đăng ký” hoặc phím Enter để đăng ký tài khoản.
- Biểu đồ hoạt động use case đăng ký:
Hình 7: Biểu đồ hoạt động use case đăng ký b Chức năng đăng nhập
- Tên chức năng: đăng nhập - Đường dẫn: Đăng nhập - Mô tả chức năng: người dùng (quản lý) đăng nhập vào hệ thống.
- Dòng sự kiện chính: Màn hình đăng nhập gồm:
₊ Thông tin đăng nhập: + Email
₊ Người dùng cần nhập đầy đủ cả 2 thông tin: Email, Password sau đó kích nút “ Đăng nhập” hoặc phím Enter để đăng nhập vào hệ thống.
- Biểu đồ hoạt động use case đăng nhập:
Hình 8: Biểu đồ hoạt động use case đăng nhập c Chức năng thêm sản phẩm
- Tên chức năng: Thêm sản phẩm - Đường dẫn: Đăng nhập >> Giao diện quản lý sản phẩm >> Thêm sản phẩm - Mô tả chức năng: người dùng có thể Thêm được sản phẩm vào cơ sở dữ liệu của hệ thống
- Dòng sự kiện chính: Màn hình Thêm sản phẩm gồm có:
₊ Các thông tin của sản phẩm: Mã sản phẩm, tên sản phẩm, giá tiền, ảnh sản phẩm.
₊ Người dùng cần nhập đầy đủ các thông tin của sản phẩm theo yêu cầu và nhấn nút
₊ Nếu người dùng nhập đúng và đầy đủ các thông tin thì hệ thống sẽ thêm sản phẩm mới vào CSDL và hiển thị ra danh sách.
₊ Ngườidùng không nhập đầy đủ các thông tin cần thiết của sản phẩm
₊ Hệ thống thông báo lỗi.
- Biểu đồ hoạt động use case thêm sản phẩm:
Hình 9: Biểu đồ hoạt động use case thêm sản phẩm d Chức năng thêm nhân viên
- Tên chức năng: Thêm nhân viên - Đường dẫn: Đăng nhập ( với tài khoản quản lý) >> Nhân viên >> Giao diện quản lý nhân viên >> Thêm nhân viên mới
- Mô tả chức năng: người dùng (quản lý) có thể Thêm được nhân viên vào cơ sở dữ liệu của hệ thống.
- Dòng sự kiện chính: Màn hình Thêm nhân viên gồm có:
₊ Các thông tin của nhân viên: mã nhân viên, tên, giới tính, địa chỉ, số điện thoại.
₊ Người dùng cần nhập đầy đủ các thông tin của nhân viên theo yêu cầu và nhấn nút Thêm mới.
₊ Nếu người dùng nhập đúng và đầy đủ các thông tin thì hệ thống sẽ thêm nhân viên mới vào CSDL và hiển thị ra danh sách.
₊ Người dùng không nhập đầy đủ các thông tin cần thiết của nhân viên Hệ thống thông báo lỗi.
- Biểu đồ hoạt động use case thêm nhân viên:
Hình 10: Biểu đồ hoạt động use case thêm nhân viên e Chức năng thêm khách hàng
- Tên chức năng: Thêm khách hàng - Đường dẫn: Đăng nhập ( với tài khoản quản lý) >> Nhân viên >> Giao diện quản lý nhân viên >> Thêm nhân viên mới - Mô tả chức năng: người dùng (quản lý) có thể Thêm được nhân viên vào cơ sở dữ liệu của hệ thống.
- Dòng sự kiện chính: Màn hình Thêm nhân viên gồm có:
₊ Các thông tin của nhân viên: mã khách hàng, tên khách hàng, giới tính, địa chỉ, số điện thoại.
₊ Người dùng cần nhập đầy đủ các thông tin của nhân viên theo yêu cầu và nhấn nút Thêm mới.
₊ Nếu người dùng nhập đúng và đầy đủ các thông tin thì hệ thống sẽ thêm nhân viên mới vào CSDL và hiển thị ra danh sách.
₊ Người dùng không nhập đầy đủ các thông tin cần thiết của nhân viên Hệ thống thông báo lỗi.
- Biểu đồ hoạt động use case thêm khách hàng:
Hình 11: Biểu đồ hoạt động use case thêm hàng khách f Chức năng thêm hóa đơn
- Tên chức năng: Thêm hóa đơn - Đường dẫn: Đăng nhập >> Hóa đơn >> Giao diện quản lý hóa đơn >> Thêm mới - Mô tả chức năng: người dùng có thể Thêm được hóa đơn bán vào CSDL của hệ thống
- Dòng sự kiện chính: Màn hình Thêm hóa đơn nhập gồm có:
₊ Các thông tin của hóa đơn :ID, mã hóa đơn, nhân viên, khách hàng, ngày xuất, trạng thái.
₊ Người dùng cần nhập đầy đủ các thông tin của hóa đơn theo yêu cầu và nhấn nút
₊ Nếu người dùng nhập đúng và đầy đủ các thông tin thì hệ thống sẽ Thêm hóa đơn bán mới vào CSDL và hiển thị ra danh sách.
₊ Ngườidùng không nhập đầy đủ các thông tin cần thiết của hóa đơn bán
₊ Hệ thống thông báo lỗi.
- Biểu đồ hoạt động use case thêm hóa đơn:
Hình 12: Biểu đồ hoạt động use case thêm hóa đơn g Chức năng thêm chi tiết hóa đơn
Chức năng Thêm chi tiết hóa đơn cho phép người dùng tạo hóa đơn bán mới và thêm thông tin chi tiết vào cơ sở dữ liệu của hệ thống Người dùng có thể truy cập chức năng này bằng đường dẫn: Đăng nhập >> Hóa đơn >> Giao diện quản lý hóa đơn >> Danh sách chi tiết hóa đơn >> Thêm mới chi tiết hóa đơn.
- Dòng sự kiện chính: Màn hình Thêm hóa đơn nhập gồm có:
₊ Các thông tin của hóa đơn bán: ID, tên sản phẩm, số lượng
₊ Người dùng cần nhập đầy đủ các thông tin của hóa đơn bán theo yêu cầu và nhấn nút Create.
₊ Nếu người dùng nhập đúng và đầy đủ các thông tin thì hệ thống sẽ Thêm hóa đơn bán mới vào CSDL và hiển thị ra danh sách.
₊ Ngườidùng không nhập đầy đủ các thông tin cần thiết của hóa đơn bán
₊ Hệ thống thông báo lỗi.
- Biểu đồ hoạt động use case thêm chi tiết hóa đơn:
Hình 13: Biểu đồ hoạt động use case thêm chi tiết hóa đơn h Chức năng sửa (sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn)
- Đường dẫn: >> Đăng nhập >> Quản lý sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn >> Giao diện sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn >> Edit
- Mô tả chức năng: người dùng có thể Sửa được thông tin của sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn và cập nhập vào CSDL của hệ thống.
- Dòng sự kiện chính: Màn hình Sửa sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn gồm có:
₊ Chọn sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn cần sửa.
₊ Hiển thị thông tin của sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn
₊ Người dùng có thể sửa thông tin sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn theo yêu cầu và ấn nút Lưu lại.
₊ Hệ thống sẽ cập nhật vào CSDL và hiển thị danh sách sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn đã sửa.
- Biểu đồ hoạt động use case sửa sản phẩm:
Hình 14: Biểu đồ hoạt động use case sửa sản phẩm
- Biểu đồ hoạt động use case sửa nhân viên:
Hình 15: Biểu đồ hoạt động use case sửa nhân viên
- Biểu đồ hoạt động use case sửa khách hàng:
Hình 16: Biểu đồ hoạt động use case sửa khách hàng
- Biểu đồ hoạt động use case sửa hóa đơn:
Hình 17: Biểu đồ hoạt động use case sửa hóa đơn
- Biểu đồ hoạt động use case sửa chi tiết hóa đơn:
Hình 18: Biểu đồ hoạt động use case sửa chi tiết hóa đơn i Chức năng xóa (sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn)
- Tên chức năng: Delete - Đường dẫn: >> Đăng nhập >> Quản lý sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn >> Giao diện sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn >> Delete
- Mô tả chức năng: người dùng có thể Xóa được thông tin của sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn và cập nhập vào CSDL của hệ thống.
- Dòng sự kiện chính: Màn hình Xóa sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn gồm có:
₊ Chọn sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn cần Xóa.
₊ Hiển thị thông tin của sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn
₊ Người dùng có thể Xóa thông tin sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn theo yêu cầu và ấn nút Lưu lại.
₊ Hệ thống sẽ cập nhật vào CSDL và hiển thị danh sách sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn đã Xóa.
- Biểu đồ hoạt động use case xóa sản phẩm:
Hình 19: Biểu đồ hoạt động use case xóa sản phẩm
- Biểu đồ hoạt động use case xóa nhân viên:
Hình 20: Biểu đồ hoạt động use case xóa nhân viên
- Biểu đồ hoạt động use case xóa khách hàng:
Hình 21: Biểu đồ hoạt động use case xóa khách hàng
- Biểu đồ hoạt động use case xóa hóa đơn:
Hình 22: Biểu đồ hoạt động use case xóa hóa đơn
- Biểu đồ hoạt động use case xóa chi tiết hóa đơn:
Hình 23: Biểu đồ hoạt động use case xóa chi tiết hóa đơn j Chức năng tìm kiếm (sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn)
- Tên chức năng: Tìm kiếm
- Đường dẫn: từ trang chủ >> điều hướng >> Đăng nhập >> Giao diện quản lý (sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn)
- Mô tả chức năng: tìm kiếm được sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn theo tên và ID.
- Dòng sự kiện chính: Màn hình hiển thị chính gồm:
₊ Màn hình quản lý (sản phẩm, nhân viên, khách hàng, hóa đơn, chi tiết hóa đơn)
₊ Người dùng nhập tên hoặc ID vào ô tìm kiếm.
₊ Người dùng ấn nút tìm kiếm hoặc phím Enter để tìm kiếm
₊ Nếu người dùng nhập đúng tên hoặc ID:
Hệ thống sẽ trả về đúng thông tin đã yêu cầu tìm kiếm.
₊ Nếu người dùng nhập sai tên hoặc ID:
Hệ thống sẽ trả về đúng thông tin đã yêu cầu tìm kiếm.
Thiết kế hệ thống
2.4.1 Biểu đồ tuần tự a Biểu đồ tuần tự use case đăng nhập
Hình 24:Biểu đồ tuần tự use case đăng nhập b Biểu đồ tuần tự use case thêm sản phẩm
Hình 25: Biểu đồ tuần tự use case thêm sản phẩm c Biểu đồ tuần tự use case sửa sản phẩm
Hình 26: Biểu đồ tuần tự use case sửa sản phẩm d Biểu đồ tuần tự use case xóa sản phẩm
Hình 27:Biểu đồ tuần tự use case xóa sản phẩm e Biểu đồ tuần tự use case thêm hóa đơn
Hình 28: Biểu đồ tuần tự use case thêm hóa đơn f Biểu đồ tuần tự use case sửa hóa đơn
Hình 29: Biểu đồ tuần tự use case sửa hóa đơn g Biểu đồ tuần tự use case xóa hóa đơn
Hình 30: Biểu đồ tuần tự use case xóa hóa đơn
2.4.2 Biểu đồ lớp thực thể
Hình 31: Biểu đồ lớp thực thể
Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Mô tả
ID Int Primary Key ID tài khoản
Email Nvarchar 150 Not Null Tên tài khoản
Password Varchar MAX Not Null Mật khẩu
Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Mô tả
ID Int Primary Key ID sản phẩm
MaSP Int Not Null Mã sản phẩm
TenSP Nvarchar 50 Not Null Tên sản phẩm
DonGia Int Not Null Đơn giá
AnhSP Varchar MAX Not Null Ảnh sản phẩm
Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Mô tả
ID Int Primary Key ID nhân viên
MaNV Int Not Null Mã nhân viên
TenNV Nvarchar 50 Not Null Tên nhân viên
GioiTinh Bit Not Null Giới tính
SDT Varchar 20 Not Null Số điện thoại
Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Mô tả
ID Int Primary Key ID khách hàng
MaKH Int Not Null Mã khách hàng
TenKH Nvarchar 50 Not Null Tên khách hàng
DiaChi Nvarchar 200 Not Null Địa chỉ
SDT Varchar 20 Not Null Số điện thoại
Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Mô tả
ID Int Primary Key ID hóa đơn
MaHD Int Not Null Mã hóa đơn
NhanVienID Int Foreign Key ID nhân viên
Int Foreign Key ID khách hàng
NgayXuat Datetime Not Null Ngày xuất hóa đơn
TinhTrang Nvarchar 50 Not Null Tình trạng
Bảng Chi Tiết Hóa Đơn
Thuộc tính Kiểu dữ liệu Kích thước Ràng buộc Mô tả
ID Int Primary Key ID chi tiết hóa đơn
HoaDonID Int Foreign Key ID hóa đơn
SanPhamID Int Foreign Key ID sản phẩm
SoLuong Int Not Null Số lượng
ThanhTien Int Not Null Thành tiền
Bảng 7: Bảng chi tiết hóa đơn
KẾT QUẢ
Giao diện phần mềm
Hình 33: Giao diện chức năng đăng ký 3.1.2 Giao diện đăng nhập
Hình 34: Giao diện chức năng đăng nhập
3.1.3 Giao diện sản phẩm a Giao diện sản phẩm
Hình 35: Giao diện sản phẩm b Giao diện thêm mới sản phẩm
Hình 36: Giao diện thêm mới sản phẩm c Giao diện sửa thông tin sản phẩm
Hình 37: Giao diện sửa thông tin sản phẩm d Giao diện xóa sản phẩm
Hình 38: Giao diện xóa thông tin sản phẩm e Giao diện chi tiết sản phẩm
Hình 39: Giao diện chi tiết sản phẩm
3.1.4 Giao diện thông tin nhân viên a Giao diện danh sách thông tin nhân viên
Hình 40: Giao diện thông tin nhân viên b Giao diện thêm nhân viên
Hình 41: Giao diện thêm nhân viên c Giao diện sửa thông tin nhân viên
Hình 42: Giao diện sửa thông tin nhân viên d Giao diện xóa thông tin nhân viên
Hình 43: Giao diện xóa thông tin nhân viên
3.1.5 Giao diện thông tin khách hàng a Giao diện thông tin danh sách khách hàng
Hình 44: Giao diện danh sách khách hàng b Giao diện thêm khách hàng mới
Hình 45: Giao diện thêm khách hàng mới c Giao diện sửa thông tin khách hàng
Hình 46: Giao diện sửa thông tin khách hàng d Giao diện xóa thông tin khách hàng
Hình 47: Giao diện xóa thông tin khách hàng
3.1.6 Giao diện hóa đơn a Giao diện danh sách hóa đơn
Hình 48: Giao diện danh sách hóa đơn b Giao diện chi tiết hóa đơn
Hình 49: Giao diện xem chi tiết hóa đơn c Giao diện thêm hóa đơn mới
Hình 50: Giao diện thêm mới hóa đơn d Giao diện xóa hóa đơn
Hình 51: Giao diện xóa hóa đơn e Giao diện sửa hóa đơn
Hình 52: Giao diện sửa hóa đơn
3.1.7 Giao diện chi tiết hóa đơn a Giao diện danh sách chi tiết hóa đơn
Hình 53: Giao diện danh sách chi tiết hóa đơn b Giao diện sửa chi tiết hóa đơn
Hình 54: Giao diện sửa chi tiết hóa đơn c Giao diện xóa chi tiết hóa đơn
Hình 55: Giao diện xóa chi tiết hóa đơn d Giao diện chi tiết của chi tiết hóa đơn
Hình 56: Giao diện chi tiết của chi tiết hóa đơn
Hình 57: Giao diện thống kê
Một số code chức năng cơ bản
3.2.1 Code đăng ký public IActionResult Register() { return View();
[ValidateAntiForgeryToken] public async Task Register([Bind("ID,UserName,Password")]
Account account) { if (ModelState.IsValid) {
SHA256 hashMethod = SHA256.Create(); account.Password = Util.Cryptography.GetHash(hashMethod, account.Password); quanLy.Add(account); await quanLy.SaveChangesAsync(); return RedirectToAction(nameof(Login));
3.2.2 Code đăng nhập public async Task Login([Bind("ID,UserName,Password")] Account account)
{ if (ModelState.IsValid) { var LoginUser = await quanLy.Accounts.FirstOrDefaultAsync(m => m.UserName == account.UserName); if (LoginUser == null) {
ModelState.AddModelError("", "Đăng Nhập Thất Bại!!"); return View(account);
} else { SHA256 hashMethod = SHA256.Create(); if (Util.Cryptography.VerifyHash(hashMethod, account.Password, LoginUser.Password))
CurrentUser = LoginUser.UserName; return RedirectToAction("Index", "SanPhams");
} else { ModelState.AddModelError("", "Đăng Nhập Thất Bại!!"); return View(account);
3.2.3 Code mã hóa using System; using System.Security.Cryptography; using System.Text; namespace BAITAPKETTHUC.Util { public class Cryptography { public static string GetHash(HashAlgorithm hashAlgorithm, string input) { byte[] data = hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(input)); var sBuilder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2"));
} public static bool VerifyHash(HashAlgorithm hashAlgorithm, string input, string hash)
{ var hashOfInput = GetHash(hashAlgorithm, input);
StringComparer comparer = StringComparer.OrdinalIgnoreCase; return comparer.Compare(hashOfInput, hash) == 0;
3.2.4 Code thêm mới sản phẩm
// GET: SanPhams/Create public IActionResult Create() { return View();
// POST: SanPhams/Create // To protect from overposting attacks, enable the specific properties you want to bind to.
// For more details, see http://go.microsoft.com/fwlink/?LinkId17598.
[ValidateAntiForgeryToken] public async Task Create([Bind("ID,MaSP,TenSP,DonGia,AnhSP")]
SanPham sanPham) { if (ModelState.IsValid) {
_context.Add(sanPham); await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index));
// GET: SanPhams/Edit/5 public async Task Edit(int? id) { if (id == null || _context.sanPhams == null) { return NotFound();
} var sanPham = await _context.sanPhams.FindAsync(id); if (sanPham == null) { return NotFound();
// POST: SanPhams/Edit/5 // To protect from overposting attacks, enable the specific properties you want to bind to.
// For more details, see http://go.microsoft.com/fwlink/?LinkId17598.
[ValidateAntiForgeryToken] public async Task Edit(int id, [Bind("ID,MaSP,TenSP,DonGia,AnhSP,SoLuong")] SanPham sanPham) { if (id != sanPham.ID) { return NotFound();
} if (ModelState.IsValid) { try { _context.Update(sanPham); await _context.SaveChangesAsync();
} catch (DbUpdateConcurrencyException) { if (!SanPhamExists(sanPham.ID)) { return NotFound();
// GET: SanPhams/Delete/5 public async Task Delete(int? id) { if (id == null || _context.sanPhams == null) { return NotFound();
} var sanPham = await _context.sanPhams FirstOrDefaultAsync(m => m.ID == id); if (sanPham == null) { return NotFound();
// POST: SanPhams/Delete/5 [HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken] public async Task DeleteConfirmed(int id) { if (_context.sanPhams == null) { return Problem("Entity set 'QuanLy.sanPhams' is null.");
} var sanPham = await _context.sanPhams.FindAsync(id); if (sanPham != null) {
} await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index));
3.2.7 Code tìm kiếm sản phẩm public async Task Search(string txtseach) { var searchs = _context.sanPhams.Where(m => m.TenSP.Contains(txtseach) || m.MaSP.ToString().Contains(txtseach)).Select(m => new SanPham() {
ID = m.ID, TenSP = m.TenSP, DonGia = m.DonGia, MaSP = m.MaSP, AnhSP = m.AnhSP, }); return View(nameof(Index), await searchs.ToArrayAsync());
3.2.8 Code chi tiết sản phẩm
// GET: SanPhams/Details/5 public async Task Details(int? id) { if (id == null || _context.sanPhams == null) { return NotFound();
} var sanPham = await _context.sanPhams FirstOrDefaultAsync(m => m.ID == id); if (sanPham == null) { return NotFound();