Phần mềm quản lý sân bóng mini Phần mềm quản lý sân bóng mini Phần mềm quản lý sân bóng mini Phần mềm quản lý sân bóng mini Phần mềm quản lý sân bóng mini Phần mềm quản lý sân bóng mini Phần mềm quản lý sân bóng mini
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
ĐỒ ÁN LẬP TRÌNH TRỰC QUAN
PHẦN MỀM QUẢN LÝ SÂN BÓNG MINI
(Football Field Managemet)
Giảng viên hướng dẫn:
Thầy Nguyễn Tấn Toàn
Nhóm sinh viên thực hiện:
Đỗ Văn Bảo – 19521238Huỳnh Quang Trung – 19520317Phan Ngọc Quang - 19522100
Trang 2LỜI CẢM ƠN
Nhóm chúng em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắcđến thầy Nguyễn Tấn Toàn đã hướng dẫn, tạo điều kiện cho nhóm chúng
em hoàn thành đồ án môn Lập trình trực quan
Trong vòng 14 tuần, qua các buổi học, các bài thực hành hay các buổi báocáo tiến độ, nhờ sự chỉ dẫn nhiệt tình của thầy, chúng em đã tiếp thu được nhữngkiến thức quan trọng, bổ ích cùng những góp ý chân thành để có thể làm được một
đồ án hoàn chỉnh Trong khoảng thời gian thực hiện đồ án, chúng em đã học hỏithêm được nhiều kiến thức, kinh nghiệm, hình dung được quy trình để tạo ra mộtsản phẩm phần mềm
Bên cạnh đó, chúng em xin cảm ơn các bạn bè trong lớp đã động viên, thảoluận và góp ý cho nhóm đồng thời đã khơi thêm nguồn động lực cho nhóm trongsuốt quá trình đầy khó khăn
Mặc dù đã cố gắng hoàn thành báo cáo với tất cả nỗ lực song báo cáo củanhóm chúng em chắc chắn không tránh khỏi những thiếu sót, chúng em rất mongnhận được sự thông cảm và góp ý chân thành từ các thầy cô Nhóm em xin chânthành cảm ơn ạ
Thành phố Hồ Chí Minh, tháng 12 năm 2020
Đỗ Văn BảoHuỳnh Quang TrungPhan Ngọc Quang
Trang 31.2.2.1 Yêu cầầu ch c năngứ 1
1.2.2.2 Yêu cầầu phi ch c năngứ 2
1.2.3 Đốối tượng s d ngử ụ 3
1.4 Kêốt qu đ t đả ạ ược 4
2.1 Use case “Đăng nh p”ậ 4
2.2 Use case “Đăng xuầốt” 5
2.3 Use case “Qu n lý sần bóng”ả 6
2.4 Use case “Qu n lý kinh doanh”ả 9
2.5 Use case “Qu n ả lý nhần viên” 12
2.6 Use case “Qu n ả lý hàng hóa” 14
2.7 Use case “Qu n ả lý đi m ể danh, chầốm cống” 17
2.8 Use case “Qu n ả lý Báo cáo” 18
2.9 Use case “Qu n ả lý Báo cáo” 20
2.10 Use case “Đăng ký” 20
Trang 56.2 Mố t chi tiêốt các Windowả 38
6.2.1 Login Window (C a s đăng nh p)ử ổ ậ 38
6.2.2 SignUp Window (C a s đăng ký)ử ổ 40
6.2.3.9 CheckAttendance Window (C a s đi m danh/chầốm cống)ử ổ ể 87
6.2.4 ForgotPassword Window (C a s quên m t kh u)ử ổ ậ ẩ 89Chương 7 Nhận xét và kết luận 90
Trang 67.1.1 Ưu đi mể 90
7.2 Hướng phát tri nể 91
Trang 7DANH MỤC HÌNH
Hình 3.1 Sơ đồ kiến trúc MVVM 22 Hình 4.1 Danh sách class Model 24 Hình 4.2 Danh sách class ViewModel 25 Hình 4.3 Danh sách Window trong View 25 Hình 4.4 Danh sách class trong DAL 26 Hình 5.1 Sơ đồ quan hệ cơ sở dữ liệu 27 Hình 6.1 Login Window (Cửa sổ đăng nhập) 39 Hình 6.2 SignUp Window (Cửa sổ đăng ký) 40 Hình 6.3 Home Window (Cửa sổ làm việc chính) 42
Hình 6.5 Tab Kinh doanh 46 Hình 6.6 Booking Window (Cửa sổ đặt sân) 48 Hình 6.7 CheckIn Window (Cửa sổ Check in) 50 Hình 6.8 Pay Window (Cửa sổ thanh toán) 52
Hình 6.11 SetTimeFrame Window 57 Hình 6.12 AddFootballField Window (Cửa sổ Thêm sân bóng) 59
Hình 6.14 ImportStock Window (Cửa sổ Nhập hàng) 62 Hình 6.15 AddGoods Window (Cửa sổ Thêm mặt hàng) 65 Hình 6.16 ImportGoods Window (Cửa sổ Nhập hàng) 66 Hình 6.17 Tab Nhân viên 68 Hình 6.18 SetSalary Window (Cửa sổ Thiết lập lương) 70 Hình 6.19 AddEmployee Window (Cửa sổ Thêm nhân viên) 71 Hình 6.20 PaySalary Window (Cửa sổ Thanh toán lương) 73
Hình 6.22 Tab Lịch sử kinh doanh 76
Trang 8Hình 6.23 Hóa đơn kinh doanh 78 Hình 6.24 Tab Lịch sử nhập hàng 80 Hình 6.25 Phiếu nhập kho 81 Hình 6.26 Tab Lịch sử trả lương 83 Hình 6.27 Phiếu trả lương 84
Hình 6.29 CheckAttendance Window (Cửa sổ điểm danh, chấm công) 87 Hình 6.30 ForgotPassword Window (Cửa sổ quên mật khẩu) 89
Trang 9DANH MỤC BẢNG
Bảng 3.1 Mô tả các thành phần của hệ thống 23 Bảng 5.1 Danh sách quan hệ trong cơ sở dữ liệu 28 Bảng 5.2 Mô tả quan hệ Goods 29 Bảng 5.3 Mô tả quan hệ Employee 30 Bảng 5.4 Mô tả quan hệ Account 30 Bảng 5.5 Mô tả quan hệ FootballField 31 Bảng 5.6 Mô tả quan hệ Bill 32 Bảng 5.7 Mô tả quan hệ BillInfo 32 Bảng 5.8 Mô tả quan hệ StockReceipt 32 Bảng 5.9 Mô tả quan hệ StockReceiptInfo 33 Bảng 5.10 Mô tả quan hệ SalarySetting 33 Bảng 5.11 Mô tả quan hệ Salary 34 Bảng 5.12 Mô tả quan hệ SalaryRecord 34 Bảng 5.13 Mô tả quan hệ FieldInfo 35 Bảng 5.14 Mô tả quan hệ Authorizations 35 Bảng 5.15 Mô tả quan hệ Information 35 Bảng 5.16 Mô tả quan hệ TimeFrame 36 Bảng 5.17 Mô tả quan hệ Attendance 36 Bảng 6.1 Danh sách các Window 38 Bảng 6.2 Mô tả đối lượng trên Login Window 39 Bảng 6.3 Biến cố và xử lý trên Login Window 40 Bảng 6.4 Mô tả đối tượng trên SignUp Window 41 Bảng 6.5 Biến cố và xử lý trên SignUp Window 41 Bảng 6.6 Mô tả đối tượng trên Home Window 43 Bảng 6.7 Biến cố và xử lý trên HomeWindow 44 Bảng 6.8 Mô tả đối tượng trên Tab Trang chủ 45 Bảng 6.9 Biến cố và xử lý trên Tab Trang chủ 45 Bảng 6.10 Mô tả đối tượng trên Tab Kinh doanh 47
Trang 10Bảng 6.11 Biến cố và xử lý trên Tab Kinh doanh 47 Bảng 6.12 Mô tả đối tượng trên Booking Window 49 Bảng 6.13 Biến cố và xử lý trên Booking Window 49 Bảng 6.14 Mô tả đối tượn trên CheckIn Window 51 Bảng 6.15 Biến cố và xử lý trên CheckIn Window 51 Bảng 6.16 Mô tả đối tượng trên Pay Window 53 Bảng 6.17 Biến cố và xử lý trên Pay Window 54 Bảng 6.18 Mô tả đối tượng trên Tab Sân bóng 56 Bảng 6.19 Biến cố và xử lý trên Tab Sân bóng 56 Bảng 6.20 Mô tả đối tượng SetTimeFrameWindow (Cửa sổ Thiết lập khung giờ) 58 Bảng 6.21 Biến cố và xử lý SetTimeFrame Window (Cửa sổ Thiết lập khung giờ) 59 Bảng 6.22 Mô tả đối tượng trên AddFootballField Window (Cửa sổ Thêm sân
Bảng 6.23 Biến cố và xử lý trên AddFootballField Window 60 Bảng 6.24 Mô tả đối tượng trên Tab Hàng hóa 61 Bảng 6.25 Biến cố và xử lý trên Tab Hàng hóa 61 Bảng 6.26 Mô tả đối tượng trên ImportStock Window (Cửa sổ Nhập hàng) 63 Bảng 6.27 Biến cố và xử lý trên ImportStock Window (Cửa sổ Nhập hàng) 64 Bảng 6.28 Mô tả đối tượng trên AddGoods Window (Cửa sổ Thêm mặt hàng) 65 Bảng 6.29 Biến cố và xử lý trên AddGoods Window (Cửa sổ Thêm mặt hàng) 66 Bảng 6.30 Mô tả đối tượng trên ImportGoods Window (Cửa sổ Nhập hàng) 67 Bảng 6.31 Biến cố và xử lý trên ImportGoods Window (Cửa sổ Nhập hàng) 67 Bảng 6.32 Mô tả đối tượng trên Tab Nhân viên 69 Bảng 6.33 Biến cố và xử lý trên Tab Nhân viên 69 Bảng 6.34 Mô tả đối tượng trên SetSalary Window (Cửa sổ Thiết lập lương) 71 Bảng 6.35 Biến cố và xử lý trên SetSalary Window (Cửa sổ Thiết lập lương) 71 Bảng 6.36 Mô tả đối tượng trên AddEmployee Window (Cửa sổ Thêm nhân viên) 72 Bảng 6.37 Biến cố và xử lý trên AddEmployee Window (Cửa sổ Thêm nhân viên) 73 Bảng 6.38 Mô tả đối tượng trên PaySalary Window (Cửa sổ Trả lương) 74
Trang 11Bảng 6.39 Biến cố và xử lý trên PaySalary Window (Cửa sổ Trả lương) 74 Bảng 6.40 Mô tả đối tượng trên Tab Thống kê 75 Bảng 6.41 Biến cố và xử lý trên Tab Thống kê 76 Bảng 6.42 Mô tả đối tượng trên Tab Lịch sử kinh doanh 77 Bảng 6.43 Biến cố và xử lý trên Tab Lịch sử kinh doanh 77 Bảng 6.44 Mô tả đối tượng trên Hóa đơn kinh doanh 79 Bảng 6.45 Biến cố và xử lý trên Hóa đơn kinh doanh 79 Bảng 6.46 Mô tả đối tượng trên Tab Lịch sử nhập hàng 80 Bảng 6.47 Biến cố và xử lý trên Tab Lịch sử nhập hàng 81 Bảng 6.48 Mô tả đối tượng trên Tab Lịch sử trả lương 83 Bảng 6.49 Biến cố và xử lý trên Tab Lịch sử trả lương 84 Bảng 6.50 Mô tả đối tượng trên Tab Cài đặt 86 Bảng 6.51 Biến cố và xử lý trên Tab Cài đặt 87 Bảng 6.52 Mô tả đối tượng trên CheckAttendance Window(Cửa sổ Điểm danh) 88 Bảng 6.53 Biến cố và xử lý trên CheckAttendance Window (Cửa sổ Điểm danh) 88 Bảng 6.54 Mô tả đối tượng trên ForgotPassword Window( Cửa sổ Quên mật khẩu)
90 Bảng 6.55 Biến cố và xử lý trên ForgotPassword Window (Cửa sổ Quên mật khẩu)
90
Trang 12DANH MỤC TỪ VIẾT TẮT
1 WPF Windows Presentation Foundation
7 IDE Intergrated Development Environment
8 GUI Graphic User Interface
Trang 13Chương 1 Tổng quan
1.1 Hiện trạng
Hiện nay, ở các nơi cho thuê sân bóng đá, việc đặt sân, quản lý giờ trống còngặp nhiều khó khăn, bất tiện và tốn chi phí liên lạc Bên cạnh đó việc quản lý việckinh doanh, quản lý nhân viên cũng chưa được bài bản, còn sử dụng các thao tác thủcông dễ dây sai sót Những điều đó có thể được khắc phục bằng cách áp dụng cácứng dụng công nghệ thông tin một cách hiệu quả
1.2 M c đích và yêu cầầu ụ
1.2.1 Mục đích
◾ Giảm thiểu số lượng công việc thủ công, tiết kiệm thời gian công sức
◾ Nâng cao tính chính xác và bảo mật trong kinh doanh, quản lý thông tin nhânviên
1.2.2 Yêu cầầu
1.2.2.1 Yêu cầu chức năng
◾ Quản lý Kinh doanh
◾ Cho phép người dùng xem trạng thái các sân (sân trống, sân đã đặt,sân đang đá, sân đã thanh toán, sân không thể đặt)
◾ Cho phép người dùng đặt sân mới, check in, thanh toán sân
◾ Cho phép bán các mặt hàng phụ trợ
◾ Cho phép người dùng in hóa đơn thanh toán
◾ Quản lý Hàng hóa
◾ Cho phép người dùng thêm, xóa, sửa thông tin các mặt hàng
◾ Cho phép người dùng nhập hàng về kho (từng sản phẩm, hàng loạt)
◾ Cho phép người dùng quản lý tồn kho
◾ Quản lý Nhân viên
◾ Cho phép người dùng thêm, xóa, sửa thông tin các nhân viên
◾ Cho phép người dùng thiết lập lương theo từng loại nhân viên
Trang 14◾ Cho phép người dùng tính lương và trả lương cho tất cả nhân viên
◾ Cho phép người dùng điểm danh theo ngày làm
◾ Quản lý Sân bóng
◾ Cho phép người dùng thêm, xóa, sửa thông tin các sân bóng
◾ Cho phép người dùng thiết lập giá, khung giờ hoạt động
◾ Cho phép người dùng quản lý tình trạng hư hỏng sân bóng
◾ Quản lý Tài khoản
◾ Cho phép người dùng tạo mới tài khoản
◾ Cho phép người dùng đổi mật khẩu tài khoản
◾ Quản lý Báo cáo
◾ Cho phép người dùng xem danh sách, chi tiết hóa đơn (hóa đơn kinhdoanh, phiếu nhập kho, phiếu trả lương)
◾ Cho phép người dùng xem biểu đồ thống kê doanh thu, chi phí
◾ Quản lý Thông tin khác
◾ Cho phép người dùng quản lý địa chỉ, số điện thoại, tên sân bóng
1.2.2.2 Yêu cầu phi chức năng
◾ Yêu cầu về giao diện
◾ Giao diện thân thiện, bố cục hợp lý
◾ Giao diện thống nhất, đồng bộ, không gây sự bất ngờ cho người sửdụng
◾ Màu sắc, vị trí, hiển thị của các control có tính đồng bộ
◾ Yêu cầu về độ tin cậy, bảo mật
◾ Phân quyền người sử dụng một cách hợp lý
◾ Dữ liệu tài khoản người dùng được bảo mật
◾ Yêu cầu về độ tương thích
◾ Thích hợp sử dụng trên hệ điều hành Window (Window Vista SP1,Window 8.1, Window 10 version 1507 trở lên)
◾ Yêu cầu về khả năng mở rộng
Trang 15◾ Dễ dàng nâng cấp khi muốn nâng cao tính năng sẵn có nhờ vào sự hệthống hóa trong việc xử lý.
◾ Dễ dàng mở rộng khi có nhu cầu phát triển
◾ Yêu cầu về tính hiệu quả
◾ Hệ thống quản lý dữ liệu một cách logic
◾ Hiệu năng ổn định tránh gây khó chịu cho người dùng
1.2.3 Đối tượng sử dụng
◾ Chủ sân bóng
◾ Nhân viên quản lý
◾ Nhân viên thu ngân
Giai đoạn 3 (17/11 – 28/12) - Điều chỉnh chức năng, phát triển thêm chức
năng
- Hoàn thiện cơ sở dữ liệu
- Kiểm tra và sửa lỗi
Trang 16- Đóng gói sản phẩm và chuẩn bị báo cáo
1.4 Kết quả đạt được
Quá trình hơn 3 tháng thực hiện đồ án tuy không phải là quãng thời gian dàinhưng chúng em đã nhận được rất nhiều bài học:
◾ Các công nghệ mới như Winform, WPF, ngôn ngữ C# hay XAML
◾ Các tiếp cận, tự học hỏi các công nghệ mới
◾ Cách làm việc nhóm, cách xử lý xung đột, bất đồng quan điểm
◾ Cách tiếp cận, xử lý quá trình tạo ra một sản phẩm trong thực tế
◾ Cách lập kế hoạch để làm một sản phẩm trong quá trình dài, phân chia côngviệc một cách hợp lý, linh động
◾ Cách sử dụng các phần mềm bổ trợ cho quá trình thực hiện sản phẩm
◾ Cách để biến ý tưởng thành hiện thực qua đó tăng cường khả năng tư duy,lập trình
Dựa trên cơ sở này, nhóm chúng em có một nền tảng tốt hơn cho các mônhọc sau, xây dựng nền móng trong quá trình trở thành một kỹ sư
Chương 2 Sơ đồ Use case
2.1 Use case “Đăng nhập”
Use case: Đăng nhập
Tác nhân chính: Chủ sân, nhân viên quản lý, nhân viên thu ngân
Mô tả ngắn gọn:
- Khi muốn sử dụng được phần mềm thì cần phải đăng nhập
- Use case “Đăng nhập” dùng để bảo vệ hệ thống và phân quyền cho người sử dụng
Điều kiện tiên quyết:
- Hệ thống đang ở trạng thái hoạt động
- Người dùng chưa đăng nhập vào hệ thống
Trang 17Sự kiện kích hoạt: Người dùng kích hoạt phần mềm
Điều kiện thực hiện: Người dùng phải có tài khoản và mật khẩu hợp lệ Luồng sự kiện chính:
- Hiển thị Login Window
- Nhập tài khoản và mật khẩu
Luồng phụ A1: Tên tài khoản hoặc mật khẩu không hợp lệ.
- Thông báo ra màn hình Tài khoản hoặc mật khẩu không hợp lệ
- Kết thúc use case
2.2 Use case “Đăng xuất”
Use case: Đăng xuất
Tác nhân chính: Chủ sân, nhân viên quản lý, nhân viên thu ngân.
Mô tả ngắn gọn:
- Khi muốn thoát khỏi phần mềm cần đăng xuất
- Bảo vệ tài khoản và tránh bị đánh cắp thông tin
Điều kiện tiên quyết:
- Hệ thống đang ở trạng thái hoạt động
- Người dùng đã đăng nhập vào hệ thống
Sự kiện kích hoạt: Người dùng chọn button “Đăng xuất” trên màn hình
chính
Điều kiện thực hiện: Người dùng đã đăng nhập được vào hệ thống.
Luồng sự kiện chính:
Trang 18- Thoát khỏi hệ thống, trở lại Login Window
- Kết thúc use case
2.3 Use case “Quản lý sân bóng”
Use case: Quản lý sân bóng
Tác nhân chính: Chủ sân
Mô tả ngắn gọn:
- Dùng để thêm, xóa, sửa, thiết lập khung giờ sân bóng
Điều kiện tiên quyết:
- Hệ thống đang ở trạng thái hoạt động
- Có quyền sử dụng Use case
Sự kiện kích hoạt: Người dùng chọn “Tab Sân bóng” trong menu trên màn
hình chính
Điều kiện thực hiện: Người dùng đã đăng nhập vào hệ thống
Luồng sự kiện chính:
- Hệ thống hiển thị màn hình quản lý sân
- Hiển thị danh sách sân bóng và trạng thái của từng sân
Thao tác:
- Nếu người dùng chọn combobox thì chuyển sang luồng A1
- Nếu người dùng chọn “Thêm sân bóng” thì chuyển sang luồng A2
- Nếu người dùng chọn icon “Cập nhật” của từng sân thì chuyển sang luồng A3
- Nếu người dùng chọn icon “Xóa” của từng sân thì chuyển sang luồng A4
- Nếu người dùng chọn “Thiết lập khung giờ” thì chuyển sang luồng A5
- Kết thúc use case
Luồng thay thế
Trang 19- Hệ thống lưu thông tin sân bóng
- Cập nhật lại danh sách sân bóng
- Hệ thống thông báo “Thêm thành công”
- Kết thúc use case
3 Luồng phụ A3:
- Mở AddFootballField Window (Cửa sổ Thêm Sân bóng)
- Hệ thống hiển thị thông tin sân đã được chọn
- Người dùng sửa thông tin của sân(Tên sân, Loại sân, Trạng thái)
- Người dùng chọn “Lưu” Nếu chọn “Bỏ qua” chuyển sang luồng B1
- Hệ thống cập nhật thông tin sân bóng
- Hệ thống thông báo thành công
- Cập nhật lại danh sách sân bóng
- Kết thúc use case
4 Luồng phụ A4:
Trang 20- Người dùng chọn icon “Xóa” ở sân bóng muốn xóa
- Hệ thống hiển thị thông báo ”Xác nhận xóa sân bóng?”
- Người dùng chọn “Yes” Nếu chọn “No” thì chuyển sang luồng B1
- Hệ thống cập nhật lại danh sách sân bóng
- Kết thúc use case
5 Luồng phụ A5:
- Mở SetTimeFrame Window (Cửa sổ Thiết lập khung giờ)
- Hiển thị lên thông tin khung giờ của từng loại sân( nếu có)
- Người dùng chọn “Giờ mở cửa” và “Giờ đóng cửa”
- Người dùng chọn “Số giờ / một trận”
- Người dùng nhấn “Thiết lập”, hệ thống xóa các khung giờ cũ và đưa ra các khung giờ mới theo thông tin người dùng thiết lập
- Người dùng chọn “Loại sân”
- Người dùng nhập giá cho các khung giờ
- Người dùng chọn icon “Xóa”, hệ thống xóa khung giờ
- Người dùng chọn “Thêm khung giờ” chuyển sang luồng B2
- Người dùng chọn “Lưu”, hệ thống kiểm tra tính hợp lệ, đẩy đủ của các khung giờ rồi thông báo “Đã lưu thành công”
- Người dùng chọn “Bỏ qua” chuyển sang luồng B1
- Hệ thống mở AddTimeFrame Window(Cửa sổ Thêm khung giờ)
- Người dùng nhập “Giờ bắt đầu”, “Giờ kết thúc”, “Giá sân”
Trang 21- Người dùng Chọn “Lưu”, hệ thống kiểm tra hợp hệ và thêm vào danh sách các khung giờ
- Người dùng Tắt Window, chuyển sang luồng B1
- Kết thúc use case
2.4 Use case “Quản lý kinh doanh”
Use case: Quản lý đặt sân
Tác nhân chính: Chủ sân, nhân viên quản lý, nhân viên thu ngân
Mô tả ngắn gọn:
- Khi người dùng muốn đặt sân, hủy sân, thanh toán sân,
Điều kiện tiên quyết:
- Hệ thống đang ở trạng thái hoạt động
- Người dùng được cấp quyền sử dụng Use case này
Sự kiện kích hoạt: Người dùng nhấn vào “Kinh doanh” trên thanh menu của
- Người dùng chọn “Đặt sân” chuyển sang luồng A1
- Người dùng chọn “Hôm nay” hoặc chọn ngày chuyển sang luồng A4
- Người dùng nhấn chuyển trang chuyển sang luồng A5
- Kết thúc use case
Luồng thay thế
Trang 221 Luồng phụ A1
- Hệ thống hiển thị Booking Window (Cửa sổ Đặt sân)
- Hệ thống hiển thị ngày, khung giờ, loại sân, tên sân, giá sân tương ứng
- Hệ thống hiển thị CheckIn Window (Cửa sổ Check in)
- Hệ thống hiển thị ngày, khung giờ, loại sân, tên sân, giá sân, tên khác hàng, số điện thoại, giảm giá đã đặt trước đó
- Người dùng nhập thông tin “Tên khách hàng”, “Số điện thoại khách hàng”, “Thông tin thêm”, “Giảm giá sân”
- Người dùng bấm nút “Check In” hệ thống kiểm tra và thông báo
“Check In thành công”, quay lại màn hình trước
- Người dùng bấm nút “Hủy sân” hệ thống hủy sân và thông báo “Hủy sân thành công”, quay lại màn hình trước
- Người dùng bấm nút “Đổi sân”, hệ thống cho phép nhập các thông tin tương tự như luồng A1
- Kết thúc use case
3 Luồng phụ A3
- Hệ thống hiển thị PayWindow (Cửa sổ Thanh toán hóa đơn)
- Người dùng chọn những mặt hàng muốn mua, tăng số lượng, xóa mặt hàng
- Người dùng bấm nút “Thanh toán”, hệ thống Thanh toán thông báo
Trang 23“Thanh toán thành công” và chuyển sân sang trạng thái Đã thanh toán, quay lại màn hình trước
- Người dùng bấm nút “In hóa đơn” chuyển sang luồng B1
- Người dùng bấm nút “Quay lại” hoặc tắt màn hình thì quay lại màn hình trước
- Người dùng bấm “In hóa đơn” mở Cửa sổ In
- Người dùng nhấn nút thoát quay lại màn hình trước đó
- Kết thúc Use case
2.5 Use case “Quản lý nhân viên”
Use case: Quản lý nhân viên
Tác nhân chính: Quản lý nhân viên
Mô tả ngắn gọn:
- Quản lý nhân viên
Điều kiện tiên quyết:
- Hệ thống đang ở trạng thái hoạt động
Trang 24- Người dùng được cấp quyền sử dụng Use case này
Sự kiện kích hoạt: Người dùng nhấn vào button “Nhân viên” trong menu trên
màn hình chính
Điều kiện thực hiện: Người dùng đã đăng nhập vào hệ thống
Luồng sự kiện chính:
- Hệ thống sẽ hiện lên màn hình quản lý
- Hiện lên danh sách nhân viên (bao gồm thông tin cơ bản)
- Thao tác
- Nếu người dùng chọn “Thêm nhân viên” thì chuyển sang luồng A1
- Người dùng chọn vào icon “Cập nhật”, chuyển sang luồng A2
- Nếu chọn icon “Xóa”, chuyển sang luồng A3
- Nếu chọn ”Thiết lập lương” thì chuyển sang luồng A4
- Nếu chọn “Tính lương” chuyển sang luồng A5
- Người dùng chọn “Trả lương” chuyển sang luồng A6
- Kết thúc use case
Luồng phụ:
1 Luồng phụ A1:
- Hệ thống tự động tạo Mã Nhân viên
- Người dùng nhập thông tin vào các control tương ứng(tên, hình ảnh, giới tính, địa chỉ, số điện thoại, ngày sinh, chức vụ, ngày vào làm)
- Người dùng chọn nút “Thêm” Nếu chọn “Bỏ qua” thì chuyển sang luồng B1
- Hệ thống lưu thông tin nhân viên
- Hiển thị thông báo “Đã thêm thành công”
- Cập nhật lại danh sách nhân viên
- Kết thúc use case
2 Luồng phụ A2:
Trang 25- Hệ thống hiển thị thông tin nhân viên đã chọn lên control tương ứng
- Người dùng cập nhật lại thông tin
- Người dùng nhấn “Lưu”, hệ thông cập nhật thông tin nhân viên
- Hệ thống báo”Cập nhật thành công!”, quay lại màn hình trước đó
- Cập nhật lại danh sách nhân viên
- Kết thúc use case
3 Luồng phụ A3:
- Hệ thống xác nhận “Xác nhận xóa nhân viên?”
- Người dùng chọn “Yes”, hệ thống xóa nhân viên
- Người dùng chọn “No” quay lại màn hình trước đó
- Cập nhật lại danh sách nhân viên
- Kết thúc use case
4 Luồng phụ A4:
- Hệ thống hiển thị SetSalary Window (Cửa sổ Thiết lập lương)
- Người dùng nhập các thông tin vào các control ( Loại nhân viên, Lương cơ bản theo tháng, Số ngày công cơ bản, Số tiền/ Tăng ca, Số tiền / Lỗi)
- Người dùng chọn “Lưu” Nếu chọn “Bỏ qua” thì chuyển sang luồng B1
- Cập nhật thiết lập lương cho loại nhân viên
Trang 262.6 Use case “Quản lý hàng hóa”
Use case: Quản lý hàng hóa
Tác nhân chính: Chủ sân, nhân viên quản lý
Mô tả ngắn gọn:
- Người dùng muốn quản lý hàng hóa
Điều kiện tiên quyết:
- Hệ thống đang ở trạng thái hoạt động
- Có quyền sử dụng Use case
Sự kiện kích hoạt: Người dùng chọn tab “Hàng hóa” trong menu trên màn
hình chính
Điều kiện thực hiện: Người dùng đã đăng nhập vào hệ thống
Luồng sự kiện chính:
- Hệ thống hiển thị màn hình quản lý hàng hóa
- Hiển thị danh sách hàng hóa
- Thao tác
- Nếu người dùng chọn “Thêm mặt hàng” thì chuyển sang luồng A1
- Nếu người dùng chọn “Nhập kho” chuyển sang luồng A2
- Nếu người dùng chọn icon “Cập nhật” trên một hàng hóa, chuyển sang luồng A3
Trang 27- Nếu người dùng chọn icon “Nhập kho” thì chuyển sang luồng A4
- Nếu người dùng chọn icon “Xóa” thì chuyển sang luồng A5
- Kết thúc use case
Luồng thay thế:
1 Luồng phụ A1:
- Hệ thống mở AddGoods Window (Cửa sổ Thêm mặt hàng)
- Hệ thống tự tạo Mã hàng hóa, người dùng sẽ nhập thông tin cơ bản của loại hàng hóa vào các control (tên hàng hóa, đơn vị tính, đơn giá bán, hình ảnh hàng hóa)
- Người dùng chọn “Lưu” Hệ thống lưu thông tin
- Cập nhật lại danh sách hàng hóa
- Hệ thống thông báo “Đã thêm thành công”
- Nếu chọn “Bỏ qua” thì chuyển sang B1
- Kết thúc use case
2 Luồng phụ A2:
- Hệ thống mở ImportStock Window (Cửa sổ Nhập hàng)
- Người dùng chọn các loại hàng hóa và nhập số lương, giá nhập kho tương ứng
- Người dùng nhấn “Nhập kho” hệ thống lưu lại thông tin nhập kho
- Hệ thống thông báo “Nhập kho thành công”
- Hệ thống cập nhật lại danh sách hàng hóa
Trang 28- Hệ thống mở ImportGoods Window (Cửa sổ Nhập hàng)
- Hệ thống hiển thị ngày nhập, mã hóa đơn
- Người dùng nhập số lượng sản phẩm và giá tiền
- Hiển thị tổng số tiền ở dưới
- Người dùng chọn “Lưu”, hệ thống kiểm tra và cập nhật số lượng hàng, tạo hóa đơn nhập kho
- Hiện thông báo “Nhập hàng thành công”
- Nếu chọn “Bỏ qua” thì chuyển sang luồng B1
- Kết thúc use case
5 Luồng phụ A5:
- Người dùng nhập chọn icon “Xóa” trên loại mặt hàng muốn xóa
- Hệ thống xác nhận “Xác nhận xóa hàng hóa”
- Người dùng chọn “Yes” xóa mặt hàng và cập nhật lại danh sách
- Nếu chọn “No” thì chuyển sang luồng B1
- Kết thúc use case
6 Luồng phụ B1:
- Trở lại màn hình đang làm việc trước đó
- Kết thúc use case
Trang 292.7 Use case “Quản lý điểm danh, chấm công”
Use case: Quản lý kinh doanh
Tác nhân chính: Chủ sân, Nhân viên quản lý
Mô tả: Việc điểm danh ngày làm của nhân viên trong tháng
Điều kiện tiên quyết:
- Hệ thống đang ở trạng thái hoạt động
- Có quyền sử dụng Use case
Sự kiện kích hoạt: Người dùng chọn “Check In” trên màn hình chính Luồng sự kiện chính
Hệ thống hiển thị CheckAttendance Window
Hiển thị ngày trong tháng
Thao tác:
- Người dùng chọn nhân viên
- Người dùng nhấn “Điểm danh” để diểm danh cho nhanh viên cho ngày hôm nay
- Người dùng nhấn “Bù” trên ngày tương ứng để điểm danh bù cho nhanh viên trong ngày đó
- Kết thúc use case
2.8 Use case “Quản lý Báo cáo”
Use case: Quản lý hóa đơn
Tác nhân chính: Chủ sân
Mô tả: Xem thông tin hóa đơn
Điều kiện tiên quyết:
- Hệ thống đang ở trạng thái hoạt động
- Có quyền sử dụng Use case
Sự kiện kích hoạt: Người dùng chọn tab “Báo cáo” trong menu trên màn
Trang 30hình chính.
Luồng sự kiện chính:
Hiển thị: Hệ thống hiển thị tab Báo báo
Thao tác
- Người dùng chọn tab “Thống kê” chuyển sang luồng A1
- Người dùng chọn tab “Lịch sử kinh doanh” chuyển sang luồng A2
- Người dùng chọn tab “Lịch sử nhập hàng” chuyển sang luồng A3
- Người dùng chọn tab “Lịch sử trả lương” chuyển sang luồng A4
- Người dùng chọn “Chu kỳ” và chọn “Thời gian”, hệ thống hiển thị da
nh sách hóa đơn thanh toán trong thời gian đã chọn
- Người dùng nhấn vào icon “Xem chi tiết” chuyển sang luồng B1
- Kết thúc use case
3 Luồng phụ A3:
- Người dùng chọn “Chu kỳ” và chọn “Thời gian”, hệ thống hiển thị da
nh sách hóa đơn nhập kho trong thời gian đã chọn
- Người dùng nhấn vào icon “Xem chi tiết” chuyển sang luồng B1
- Kết thúc use case
4 Luồng phụ A4:
Trang 31- Người dùng chọn “Chu kỳ” và chọn “Thời gian”, hệ thống hiển thị da
nh sách hóa đơn trả lương trong thời gian đã chọn
- Người dùng nhấn vào icon “Xem chi tiết” chuyển sang luồng B1
- Kết thúc use case
5 Luồng phụ B1:
- Hệ thống hiển thị chi tiết hóa đơn trên BillTemplate hoặc StockReceip
t Template
- Người dùng nhấn “In hóa đơn” mở cửa sổ In
- Người dùng tắt Window quay lại màn hình trước đó
- Kết thúc use case
2.9 Use case “Quản lý Báo cáo”
Use case: Quản lý tài khoản
Tác nhân chính: Chủ sân, Nhân viên quản lý, Nhân viên thu ngân
Mô tả: Đổi thông tin sân, đổi mật khẩu, xem thông tin nhân viên đang đăng
nhập
Điều kiện tiên quyết
- Người dùng đang đặp nhập trong hệ thống
Sự kiện kích hoạt: Người dùng chọn “Cài đặt” trong thanh menu màn hình
chính
Luồng sự kiện chính:
Hiển thị: Hiển thị lên thông tin của nhân viên đang đăng nhập
Thao tác
- Người dùng nhập mật khẩu hiện tại, mật khẩu mới và xác nhận
- Người dùng chọn Lưu, cập nhật lại mật khẩu cho tài khoản đang đăng nhập hệ thống
- Nếu người dùng là “Chủ sân”, có thể nhập vào thông tin sân Người
Trang 32dùng bấm “Lưu” để cập nhật lại thông tin cho sân bóng
- Kết thúc use case
2.10 Use case “Đăng ký”
Use case: Đăng ký
Tác nhân chính: Chủ sân
Mô tả: Đăng ký tài khoản cho nhân viên
Điều kiện tiên quyết
Người dùng chưa đăng nhập hệ thống
Sự kiện kích hoạt: Người dùng chọn “Đăng ký ” trong màn hình Login
- Người dùng nhập key bản quyền
- Người dùng chọn nhân viên, nhập tên tài khoản, nhập mật khẩu và mật khẩu xác nhận
- Người dùng bấm “Lưu” để đăng ký tài khoản cho nhân viên
UI Framework: Windows Presentation Foundation (WPF)
UI design tool: Figma
Trang 33Database: Microsoft SQL Server 2019
IDE: Microsoft Visual Studio 2019
Thư viện hỗ trợ khác: MaterialDesignXAML [1], ToastNotifications [2], LiveCharts[3], System.Windows.Interactivity.WPF [4]
MVVM bao gồm 3 phần:
◾ View: phần giao diện của ứng dụng dùng hiển thị dữ liệu và nhận tương tácngười dùng
◾ Model: là đối tượng giúp truy xuất và thao tác trên database
◾ View Model: là lớp trung gian giữa View và ViewModel
Mục đích lựa chọn:
◾ Tận dụng cơ chế data binding: trong nền tảng WPF (Windows PresentationFoundation), từ đó tối ưu việc phân tách lớp view khỏi phần còn lại của hệ
Trang 34thống, bằng việc loại bỏ hầu như toàn bộ các đoạn code-behind ở lớp view.Điều này giúp cho các lập trình viên UI, UX tập trung vào việc thiết kế giaodiện mà không phải bận tâm đến việc xử lý logic Các lớp của phần mềm sẽđược phát triển nhanh hơn vì sự phân tách luồng công việc rõ ràng, tăng hiệusuất Ngay cả khi một lập trình viên phải làm việc với toàn bộ code thì họvẫn sẽ dễ đọc và chỉnh sửa code, hơn nữa UI thường sẽ thay đổi xuyên suốtquá trình phát triển dựa vào feedback từ khách hàng nên đây sẽ là một lựachọn ổn định Ngoài ra kiểm tra, bảo trì và mở rộng khá dễ dàng.
◾ Tối ưu hóa mô hình MVC truyền thống: Mô hình MVVM hướng tới việc vừađạt được những lợi ích của việc phân tách chức năng trong MVC, vừa tạođiểm tựa cho các framework dùng để binding và kiểm tra tính đúng đắn của
dữ liệu đầu vào (thông qua interface như InotifyDataErrorInfo hayIDataErrorInfo trong WPF) Nó giảm thiểu việc cách xử lý logic trực tiếpphải tác động vào View (code-behind)
3.3 Mô tả thành phần hệ thống
1 DAL Chứa các class thao tác với cơ sở dữ liệu
2 Models Chứa các class tạo đối tượng từ database
3 Image Chứa hình ảnh, icon
4 Template Chứa các template cho các hóa đơn
5 UserControls Chứa các user control được custom
6 Resources Các style của control được custom
Khai báo ViewModel để sử dụng
7 ViewModels Chứa các Command, Binding
8 View Chứa các Window giao diện của ứng dụng
Trang 359 Validation Chứa các thông báo khi dữ liệu bị lỗi
Bảng 3.1 Mô tả các thành phần của hệ thống
3.4 Design pattern
Singleton Pattern là một design pattern mà:
1 Đảm bảo rằng một class chỉ có duy nhất một instance
2 Và cung cấp một cách toàn cầu để truy cấp tới instance đó
Với DAL, sử dụng Singleton Pattern để triển khai class
Chương 4 Thiết kế sơ đồ lớp
4.1 Sơ đồ lớp hoàn chỉnh
4.1.1 Models
Hình 4.1 Danh sách class Model
Các class để lưu trữ các đối tượng truy xuất từ cơ sở dữ liệu
Trang 364.1.2 ViewModels
Hình 4.2 Danh sách class ViewModel
Các class trong folder ViewModels để lưu trữ Binding và các Command
4.1.3 Views
Hình 4.3 Danh sách Window trong View
Các file XAML trong folder Views chứa phần UI của hệ thống
Trang 374.1.4 Data Access Layer
Hình 4.4 Danh sách class trong DAL
Nằm trong folder DAL bao gồm các class thao tác với cơ sở dữ liệu kết hợp với Models
Trang 38Chương 5 Thiết kế cơ sở dữ liệu
5.1 Sơ đồ cơ sở dữ liệu quan hệ
Hình 5.1 Sơ đồ quan hệ cơ sở dữ liệu
5.2 Danh sách chi tiết các quan hệ trong dữ liệu
1 Goods Lưu trữ thông tin hàng hóa
2 Employee Lưu trữ thông tin nhân viên
3 Account Lưu trữ thông tin các tài khoản hệ thống
4 FootballField Lưu trữ thông tin các sân bóng
5 Bill Lưu trữ thông tin các hóa đơn mua hàng
Trang 396 BillInfo Lưu trữ thông tin hàng hóa được mua và thanh
toán
7 StockReceipt Lưu trữ thông tin nhập hàng vào kho
8 StockReceiptInfo Lưu trữ chi tiết thông tin hàng hóa được nhập
9 SalarySetting Lưu trữ thông tin thiết lập lương
10 Salary Lưu trữ thông tin lương từng nhân viên hàng
tháng
11 SalaryRecord Lưu trữ thông tin trả lương cho nhân viên
11 FieldInfo Lưu trữ thông tin đặt sân
12 Authorizations Lưu trữ key bản quyền
13 Information Lưu trữ thông tin chung của sân bóng mini
14 TimeFrame Lưu trữ thông tin các khung giờ
15 Attendance Lưu trữ thông tin điểm danh của nhân viên
Bảng 5.1 Danh sách quan hệ trong cơ sở dữ liệu
5.3 Mô tả các quan hệ
5.3.1 Goods
ST
2 name nvarchar(50) Tên hàng hóa
3 unit nvarchar(20) Đơn vị tính
4 unitPrice bigint Giá bán hàng hóa
5 imageFile text Hình ảnh hàng hóa
Trang 406 quantity int Số lượng hàng hóa
7 isDeleted int 0 – Tồn tại
1 – Đã xóa Trạng thái tồn tại
Bảng 5.2 Mô tả quan hệ Goods
5.3.2 Employee
ST
1 idEmployee int PK Mã nhân viên
2 name nvarchar(50) Tên nhân viên
3 gender nvarchar(5) Giới tính
4 phonenumber varchar(11) Số điện thoại
5 address nvarchar(50) Địa chỉ
7 position nvarchar(20) Chức vụ
8 startingdate date Ngày vào làm
9 idAccount int FK Mã tài khoản
10 imageFile text Hình ảnh nhân viên
11 isDeleted int 0 – Tồn tại
1 – Đã xóa Trạng thái tồn tại
Bảng 5.3 Mô tả quan hệ Employee
5.3.3 Account
ST