Tuy nhiên, nhiều cơ sở vẫn quản lý doanh thu bằng sổ sách hoặc file Excel rời rạc, gây khó khăn trong việc tra cứu, thống kê và lập báo cáo.. Chính vì vậy, nhóm lựa chọn đề tài “Xây dựng
Công cụ và phương thức sử dụng
Ngôn ngữ lập trình
C#: Viết backend xử lý logic nghiệp vụ.
HTML, CSS, JavaScript: Xây dựng giao diện web.
Framework và thư viện
ASP.NET Core MVC: Tổ chức mô hình MVC giúp tách biệt dữ liệu, xử lý và giao diện.
Entity Framework Core: Kết nối và truy vấn dữ liệu với SQL Server.
Bootstrap 5: Tạo giao diện hiện đại, responsive.
Chart.js: Vẽ biểu đồ doanh thu trực quan.
jQuery: Hỗ trợ thao tác nhanh trên client-side.
Công cụ phát triển
Visual Studio 2022: IDE chính để phát triển ứng dụng.
SQL Server Management Studio (SSMS): Quản lý cơ sở dữ liệu.
Git/GitHub: Quản lý mã nguồn và làm việc nhóm.
Phương thức kết nối cơ sở dữ liệu
Sử dụng ASP.NET Core MVC với SQL Server.
Tùy chọn Database First hoặc Code First để tạo/tích hợp CSDL.
Cấu hình chuỗi kết nối trong appsettings.json.
Phân công công việc nhóm
Để đảm bảo tiến độ và chất lượng dự án, nhóm phân công công việc như sau:
Thành viên 1 – Trần Văn Định o Thiết kế và xây dựng cơ sở dữ liệu trên SQL Server. o Viết Models (Transaction, Customer, Employee, Product…). o Tạo script SQL khởi tạo dữ liệu mẫu.
Thành viên 2 – Thiều Lê Dũng o Xây dựng Controllers (TransactionsController, ReportsController, HomeController). o Xử lý nghiệp vụ CRUD và thống kê báo cáo. o Tạo ViewModel để truyền dữ liệu sang View.
Thành viên 3 – Nhữ Đình Thắng o Thiết kế Views (Index, Create, Edit, Delete, Report). o Tích hợp Bootstrap để tạo giao diện. o Hiển thị báo cáo doanh thu bằng Chart.js.
Thành viên 4 – Hà Nhật Anh o Quản lý dự án, tích hợp các phần đã lập trình. o Cấu hình kết nối (Program.cs, AppDbContext.cs, appsettings.json). o Thực hiện kiểm thử ứng dụng và viết báo cáo tổng hợp.
Cấu trúc hệ thống dự án
Controllers
HomeController.cs o Điều khiển các trang cơ bản như Trang chủ (Index), Privacy, Error.
TransactionsController.cs o Xử lý các chức năng CRUD (Create, Read, Update, Delete) cho bảng Transaction. o Điều khiển luồng dữ liệu giữa View và Model khi thao tác giao dịch.
14 o Chịu trách nhiệm thống kê và xuất báo cáo theo nhiều tiêu chí (khách hàng, nhân viên, tháng, quý, năm, sản phẩm). o Chuẩn bị dữ liệu dạng ViewModel để hiển thị bằng biểu đồ Chart.js.
Data
AppDbContext.cs o Lớp trung gian giúp Entity Framework Core kết nối với cơ sở dữ liệu SQL Server. o Chứa các DbSet để ánh xạ bảng (Customer, Employee, Product, Transaction).
QuanLyDoanhThu.sql o File script SQL dùng để khởi tạo cấu trúc bảng và dữ liệu mẫu.
Models
Customer.cs: Đại diện thông tin khách hàng.
Employee.cs: Đại diện thông tin nhân viên.
Product.cs: Đại diện thông tin sản phẩm.
Transaction.cs: Đại diện dữ liệu giao dịch (ngày bán, khách hàng, nhân viên, sản phẩm, số lượng, doanh thu)
ReportViewModel.cs: ViewModel hỗ trợ hiển thị dữ liệu báo cáo.
TransactionViewModel.cs: ViewModel hỗ trợ nhập và xuất dữ liệu giao dịch.
PagedResult.cs: Hỗ trợ phân trang khi hiển thị danh sách dữ liệu.
ApplicationDbContext.cs: Lớp khởi tạo DBContext mặc định (trường hợp tích hợp Identity hoặc mở rộng).
ErrorViewModel.cs: Quản lý thông báo lỗi khi xảy ra exception.
Views
Home o Index.cshtml: Trang chủ. o Privacy.cshtml: Trang thông tin.
Reports o ReportByCustomer.cshtml: Báo cáo doanh thu theo khách hàng. o ReportByEmployee.cshtml: Báo cáo doanh thu theo nhân viên. o ReportByMonth.cshtml: Báo cáo doanh thu theo tháng. o ReportByQuarter.cshtml: Báo cáo doanh thu theo quý. o ReportByYear.cshtml: Báo cáo doanh thu theo năm. o TopProducts.cshtml: Báo cáo sản phẩm bán chạy.
Transactions o Index.cshtml: Danh sách giao dịch. o Create.cshtml: Thêm giao dịch mới. o Edit.cshtml: Chỉnh sửa giao dịch. o Delete.cshtml: Xóa giao dịch. o Details.cshtml: Xem chi tiết giao dịch.
Shared o _Layout.cshtml: Layout chung cho toàn bộ dự án (menu, header, footer). o _ValidationScriptsPartial.cshtml: Chứa script kiểm tra dữ liệu. o Error.cshtml: Trang báo lỗi.
Cấu hình
Program.cs: Khởi động ứng dụng, cấu hình dịch vụ và middleware.
appsettings.json: Cấu hình chuỗi kết nối SQL Server, logging, các thông số hệ thống.
Phân tích mục đích và chức năng
Mục đích tổng thể
Dự án giúp doanh nghiệp/cửa hàng quản lý doanh thu một cách tập trung, trực quan, tiết kiệm thời gian và giảm sai sót Người dùng có thể dễ dàng tra cứu giao dịch, xem báo cáo tổng hợp và đưa ra quyết định kinh doanh dựa trên dữ liệu.
Chức năng chi tiết
Quản lý giao dịch (Transactions) o Thêm mới giao dịch (Create). o Xem danh sách giao dịch (Index). o Chỉnh sửa giao dịch (Edit). o Xóa giao dịch (Delete). o Xem chi tiết giao dịch (Details).
Quản lý khách hàng, nhân viên, sản phẩm o Lưu trữ thông tin cơ bản để phục vụ báo cáo và phân tích.
Báo cáo doanh thu (Reports) o Theo khách hàng: Thống kê doanh thu từng khách hàng. o Theo nhân viên: Thống kê doanh thu bán hàng của từng nhân viên.
27 o Theo tháng, quý, năm: Tổng hợp doanh thu theo thời gian.
28 o Theo sản phẩm: Xác định sản phẩm bán chạy, hỗ trợ chiến lược kinh doanh.
29 o Biểu đồ trực quan (Chart.js): Hiển thị báo cáo bằng biểu đồ cột, đường, tròn.
Giao diện người dùng o Thân thiện, dễ sử dụng. o Responsive, tương thích trên nhiều thiết bị.
Kết quả đạt được
Sau khi hoàn thành dự án, nhóm đã đạt được các kết quả chính sau:
Xây dựng thành công hệ thống quản lý doanh thu bằng công nghệ
Kết nối cơ sở dữ liệu SQL Server, đảm bảo khả năng lưu trữ và truy vấn dữ liệu ổn định.
Thực hiện đầy đủ các chức năng CRUD cho giao dịch, giúp quản lý dễ dàng và chính xác.
Hoàn thiện các báo cáo doanh thu (theo khách hàng, nhân viên, tháng, quý, năm, sản phẩm).
Tích hợp biểu đồ trực quan (Chart.js) giúp việc phân tích dữ liệu trở nên sinh động và dễ hiểu.
Giao diện thân thiện, dễ sử dụng, đáp ứng yêu cầu cơ bản của người dùng cuối.
Khó khăn và giải pháp
Khó khăn gặp phải
Kỹ thuật: o Lỗi khi mapping dữ liệu giữa Model và DbContext. o Một số LINQ query phức tạp không được Entity Framework Core dịch sang SQL. o Gặp vấn đề khi sử dụng ViewBag truyền dữ liệu từ Controller sang View.
Phân chia công việc: o Thời gian đầu chưa rõ vai trò từng người, dẫn đến chồng chéo công việc.
Biểu đồ và báo cáo: o Khó khăn khi render dữ liệu từ server sang biểu đồ Chart.js.
Giải pháp
Tra cứu tài liệu chính thức của Microsoft Entity Framework Core để khắc phục lỗi truy vấn.
Áp dụng kỹ thuật ViewModel thay vì dùng trực tiếp Entity Model trong View.
Tổ chức lại quy trình làm việc: phân chia nhiệm vụ rõ ràng theo từng nhóm Controller, Model, View.
Sử dụng Chart.js kết hợp với dữ liệu JSON để khắc phục lỗi render biểu đồ.