Đồ án ứng dụng di động đặt lịch Spa làm đẹp - Source code C# .NET + SQL Server - Đồ án full báo cáo

[Mã code 54687]
  1 Đánh giá    Viết đánh giá
 0      12      0
Phí tải: 300 Xu (1Xu = 1.000đ)
Danh mục
Thể loại
Nhóm code
Ngày đăng
28-8-2026
Loại file
Full code
Dung lượng
#
Code đã kiểm thử
Cam kết hỗ trợ
Không chứa mã độc
Có demo thực tế
Có hướng dẫn cài đặt

Ứng dụng đặt lịch spa & làm đẹp viết bằng C#: app di động .NET MAUI Blazor Hybrid + API ASP.NET Core 8, 22 màn hình, 59 API, 4 vai trò, chạy được ngay không cần cài database, kèm báo cáo 68 trang.


MÔ TẢ CHI TIẾT

Ứng dụng di động đặt lịch Spa & Làm đẹp — Full source code C#

Hệ thống hoàn chỉnh gồm ứng dụng di động đa nền tảng (.NET MAUI Blazor Hybrid) và máy chủ RESTful API (ASP.NET Core 8), viết hoàn toàn bằng C# theo kiến trúc Clean Architecture 5 tầng. Không phải bản demo cắt xén — đây là dự án chạy thật, có kiểm thử tự động và tài liệu đầy đủ.

Dự án .NET 5 dự án (Domain, Application, Infrastructure, Api, App) + 1 dự án test
Endpoint API 59 endpoint trong 12 controller
Màn hình giao diện 22 trang Razor, phục vụ 4 vai trò người dùng
Bảng cơ sở dữ liệu 14 bảng, có script T-SQL đầy đủ
Kiểm thử 155 unit test + 67 assertion Postman, tất cả đều đạt
Tài liệu Báo cáo 68 trang (usecase, ERD, biểu đồ lớp, tuần tự, hoạt động)

Chạy thử trong 2 phút — KHÔNG cần cài cơ sở dữ liệu

Đây là điểm khác biệt lớn nhất so với các source code khác. Hệ thống hỗ trợ 3 chế độ lưu trữ dữ liệu, đổi bằng đúng một dòng trong appsettings.json:

  • Mock — dữ liệu trong bộ nhớ, tự nạp dữ liệu mẫu khi khởi động. Tải về là chạy được ngay, không cần cài gì thêm.
  • SQLite — tự tạo tệp cơ sở dữ liệu và dữ liệu mẫu, cũng không cần cài đặt gì.
  • SQL Server — dùng LocalDB hoặc SQL Server thật, tự tạo lược đồ, không phải chạy script SQL thủ công.

Cả ba chế độ dùng chung một bộ mã nghiệp vụ và cho kết quả giống hệt nhau — đã kiểm chứng bằng 17 parity test và bộ Postman 67 assertion chạy trên cả ba.

Chức năng theo từng vai trò

👤 Khách hàng

  • Tìm kiếm spa và dịch vụ theo từ khoá, danh mục, thành phố
  • Xem chi tiết spa, bảng giá, thời lượng, đánh giá của khách trước
  • Đặt lịch theo khung giờ và chọn kỹ thuật viên (hoặc để hệ thống tự phân công)
  • Thanh toán: tại spa / VNPay / MoMo / ZaloPay
  • Quản lý lịch hẹn: huỷ lịch, đổi giờ, đặt lại, xem lịch sử
  • Đánh giá dịch vụ sau khi hoàn thành (mỗi lịch chỉ đánh giá một lần)
  • Danh sách spa yêu thích, thông báo trong ứng dụng, hạng thành viên theo số lượt đặt

🏪 Chủ spa

  • Bảng điều khiển 4 chỉ số: doanh thu đã thu, khoản chưa thu, tổng lượt đặt, tỷ lệ huỷ
  • Duyệt / từ chối / hoàn thành lịch đặt của khách
  • Quản lý dịch vụ: thêm, sửa, xoá, bật/tắt hiển thị với khách
  • Quản lý chi nhánh và kỹ thuật viên
  • Phân ca hàng loạt theo khoảng ngày, tự chừa giờ nghỉ trưa, cho nghỉ nguyên ngày
  • Quản lý mã khuyến mãi (giảm theo % hoặc số tiền cố định)
  • Báo cáo doanh thu có biểu đồ, so sánh kỳ trước, xuất file Excel và PDF

💇 Kỹ thuật viên

  • Xem lịch làm việc của riêng mình theo từng ngày trong tuần
  • Danh sách khách trong ngày, cập nhật trạng thái hoàn thành dịch vụ

⚙️ Quản trị viên hệ thống

  • Thống kê toàn nền tảng: người dùng theo vai trò, số spa, tổng doanh thu
  • Duyệt hồ sơ spa đăng ký mới, tạm ngưng spa vi phạm
  • Quản lý tài khoản: tìm kiếm, lọc theo vai trò, khoá / mở khoá

Điểm kỹ thuật đáng giá

1. Chống tranh chấp khung giờ (race condition) — vấn đề khó nhất của bài toán đặt lịch. Việc giữ chỗ dùng câu lệnh UPDATE ... WHERE Status = 'available' rồi so số dòng bị ảnh hưởng, chạy trong transaction. Test 20 yêu cầu đặt cùng lúc vào cùng một khung giờ cho kết quả đúng 1 × HTTP 201 và 19 × HTTP 409, số ô bị khoá đúng bằng 2 — không thừa không thiếu. Cách này không phụ thuộc mã lỗi riêng của từng hệ quản trị CSDL nên chạy đúng trên cả SQL Server lẫn SQLite.

2. Mô hình khung giờ 30 phút + quy tắc liền mạch — dịch vụ 60 phút chiếm 2 ô liên tiếp, 90 phút chiếm 3 ô. Khung giờ không đủ chỗ liền mạch (ví dụ 11:00 khi spa nghỉ trưa lúc 11:30) sẽ bị gạch bỏ ngay trên giao diện, thay vì để khách chọn rồi mới báo lỗi ở bước cuối.

3. Bảo mật — xác thực JWT phân quyền theo 4 vai trò; mật khẩu băm SHA-256 kèm muối ngẫu nhiên riêng từng tài khoản; sai mật khẩu 5 lần liên tiếp thì khoá tạm 15 phút và quản trị viên có thể mở khoá sớm.

4. Tác vụ nền — dịch vụ chạy nền tự nhắc chủ spa sau 30 phút và tự huỷ lịch chờ xác nhận quá 2 giờ, trả khung giờ về trạng thái trống cho khách khác.

5. Xuất báo cáo thật — file Excel 4 trang tính bằng ClosedXML và file PDF bằng QuestPDF, tiếng Việt hiển thị đúng dấu.

Công nghệ sử dụng

  • Frontend: C# + .NET MAUI Blazor Hybrid (Razor Component) — chạy Android, iOS, Windows từ một bộ mã nguồn
  • Backend: C# + ASP.NET Core 8 Web API, xác thực JWT Bearer, Swagger
  • ORM: Entity Framework Core 8
  • CSDL: Microsoft SQL Server / SQLite / bộ nhớ trong
  • Kiểm thử: xUnit, Postman + Newman
  • Báo cáo: ClosedXML (.xlsx), QuestPDF (.pdf)

Bạn nhận được gì

  • ✅ Toàn bộ mã nguồn 6 dự án .NET, không giấu, không obfuscate, code có comment tiếng Việt giải thích các quyết định thiết kế
  • ✅ Báo cáo PDF 68 trang: khảo sát nghiệp vụ, 8 usecase kèm biểu đồ usecase / hoạt động / tuần tự, biểu đồ lớp, sơ đồ ERD, script T-SQL đầy đủ 14 bảng, thiết kế kiến trúc, và Chương 4 kết quả thực nghiệm kèm ảnh chụp màn hình thật
  • ✅ Bộ sưu tập Postman 34 request / 67 assertion để kiểm thử API
  • ✅ 155 unit test làm ví dụ tham khảo cách viết test
  • ✅ File README hướng dẫn cài đặt chi tiết bằng tiếng Việt

Phù hợp với ai

  • Sinh viên làm đồ án môn học / đồ án tốt nghiệp ngành CNTT — có sẵn báo cáo đúng chuẩn để tham khảo
  • Người muốn học .NET MAUI Blazor Hybrid và Clean Architecture qua một dự án thật đủ lớn
  • Lập trình viên cần bộ khung để phát triển ứng dụng đặt lịch (spa, salon, phòng khám, sân bóng, gia sư…)

Tài khoản dùng thử có sẵn cho cả 4 vai trò, mật khẩu 123456. Màn hình đăng nhập có 3 nút điền nhanh, mở app là dùng được ngay.


XEM THÊM ==> Hướng dẫn cài đặt chi tiết

 

HÌNH ẢNH DEMO

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

app đặt lịch spa,app đặt lịch làm đẹp,web bán hàng,full báo cáo,SQL Server,C#

Nguồn: Sharecode.vn



HƯỚNG DẪN CÀI ĐẶT

Yêu cầu môi trường

  • .NET 8 SDK — tải tại dotnet.microsoft.com/download/dotnet/8.0
  • Visual Studio 2022 (bản Community miễn phí là đủ), khi cài nhớ tích workload ".NET Multi-platform App UI development"
  • Android SDK API 34 trở lên — Visual Studio tự cài kèm workload ở trên
  • SQL Server LocalDB — chỉ cần khi muốn chạy chế độ SqlServer. Chạy Mock hoặc SQLite thì không cần.

Bước 1 — Giải nén và mở dự án

Giải nén file zip, mở SpaBookingSystem.sln bằng Visual Studio 2022. Chờ Visual Studio restore NuGet package xong (lần đầu khoảng 1–3 phút).

Bước 2 — Chạy máy chủ API

Chuột phải dự án SpaBooking.Api → Set as Startup Project → bấm Run (F5).

Trình duyệt sẽ mở trang Swagger tại http://localhost:5199/swagger. Nếu thấy danh sách 59 API là đã chạy đúng.

Hoặc chạy bằng dòng lệnh:

dotnet run --project SpaBooking.Api

Mặc định dùng chế độ Mock nên KHÔNG cần cài cơ sở dữ liệu. Dữ liệu mẫu (9 người dùng, 2 spa, 3 chi nhánh, 6 dịch vụ, 3 kỹ thuật viên, 5 lịch đặt) tự nạp khi khởi động.

Bước 3 — Chạy ứng dụng di động

Quan trọng: phải chạy API ở Bước 2 trước, giữ nguyên cửa sổ đó, rồi mới chạy app.

Chuột phải dự án SpaBooking.App → Set as Startup Project. Trên thanh công cụ chọn thiết bị:

  • Android Emulator — chọn máy ảo có sẵn rồi bấm Run. Lần đầu build khoảng 3–5 phút.
  • Windows Machine — chạy bản desktop, nhanh hơn, tiện khi chỉ muốn xem giao diện.

Muốn chạy đồng thời cả hai: chuột phải Solution → Configure Startup Projects → chọn Multiple startup projects → đặt cả SpaBooking.Api và SpaBooking.App thành Start, kéo Api lên trên.

Bước 4 — Đăng nhập

Mật khẩu của tất cả tài khoản mẫu là 123456:

Quản trị viên [email protected]
Chủ spa [email protected]
Kỹ thuật viên [email protected]
Khách hàng [email protected]

Màn hình đăng nhập có sẵn 3 nút điền nhanh cho khách hàng / chủ spa / kỹ thuật viên, bấm là tự điền.

Bước 5 (tuỳ chọn) — Chuyển sang cơ sở dữ liệu thật

Mở SpaBooking.Api/appsettings.json, sửa đúng một dòng:

"DataStore": "Mock"        // đổi thành "Sqlite" hoặc "SqlServer"

Chế độ Sqlite — không cần cài gì. Chạy API là tự tạo file spabooking.db kèm dữ liệu mẫu.

Chế độ SqlServer — cần có SQL Server LocalDB. Kiểm tra chuỗi kết nối trong cùng file:

"SqlServer": "Server=(localdb)\\MSSQLLocalDB;Database=SpaBookingDB;Trusted_Connection=True;TrustServerCertificate=True;MultipleActiveResultSets=true"

Chạy API là hệ thống tự tạo database, tự tạo 14 bảng và tự đổ dữ liệu mẫu — không phải mở SSMS chạy script thủ công. (Script T-SQL đầy đủ vẫn có trong báo cáo mục 3.8.5 nếu bạn muốn tạo tay.)

Muốn nạp lại dữ liệu mẫu từ đầu: xoá file spabooking.db, hoặc xoá database SpaBookingDB, rồi chạy lại API.

Cấu hình địa chỉ máy chủ cho app di động

Xem file SpaBooking.App/Services/ApiSettings.cs:

  • Máy ảo Android: giữ nguyên 10.0.2.2. Đây là bí danh máy ảo dùng để gọi về localhost của máy thật. Đừng đổi thành IP LAN — máy ảo nằm sau NAT riêng nên không thấy dải mạng LAN, đổi sẽ mất kết nối.
  • Điện thoại thật cùng Wi-Fi: đổi AndroidHost thành IP LAN của máy tính (xem bằng lệnh ipconfig), chạy API bằng ASPNETCORE_URLS=http://0.0.0.0:5199 và mở cổng 5199 trên Windows Firewall.
  • Windows / iOS Simulator: dùng localhost, không cần sửa gì.

Chạy kiểm thử

dotnet test
npx newman run SpaBooking.postman_collection.json --env-var baseUrl=http://localhost:5199

Kết quả mong đợi: 155/155 unit test đạt, 34 request / 67 assertion đạt.

Xử lý lỗi thường gặp

Lỗi Cách xử lý
App báo "Không kết nối được tới máy chủ" Chưa chạy SpaBooking.Api, hoặc chạy sai thứ tự. Chạy API trước, giữ cửa sổ đó rồi mới chạy App.
Cổng 5199 đã bị chiếm Đổi cổng trong SpaBooking.Api/Properties/launchSettings.json và đổi ApiPort trong ApiSettings.cs cho khớp.
Build MAUI lỗi thiếu workload Chạy dotnet workload install maui rồi build lại.
Máy ảo Android khởi động rất chậm lần đầu Bình thường, lần đầu build và deploy mất 3–5 phút. Các lần sau nhanh hơn nhiều.
Chế độ SqlServer báo không kết nối được Kiểm tra LocalDB đã cài chưa bằng lệnh sqllocaldb info. Hoặc cứ dùng chế độ Sqlite, không cần cài gì.

 

 
 
LINK DOWNLOAD

# [#]

File đã được kiểm thử
     Báo vi phạm bản quyền
Pass giải nén (Nếu có):
sharecode.vn
DOWNLOAD
(300 Xu)
Bạn có code hay
ĐĂNG BÁN NGAY

BÌNH LUẬN



ĐÁNH GIÁ


ĐIỂM TRUNG BÌNH

5
1 Đánh giá
Code rất tốt (1)
Code tốt (0)
Code rất hay (0)
Code hay (0)
Bình thường (0)
Thành viên
Nội dung đánh giá
17:13 - 28/8/2026
Code rất tốt
Code rất tốt và phù hợp để phát triển

 HỖ TRỢ TRỰC TUYẾN