Professional Documents
Culture Documents
N14 - Qli phan cong và cham cong nhan vien parttime -Trần Đức Minh- Modul tinh cong tuan nay - Pha thiết kế
N14 - Qli phan cong và cham cong nhan vien parttime -Trần Đức Minh- Modul tinh cong tuan nay - Pha thiết kế
Bussiness model
1 . Mục đích + phạm vi
- Hệ thống là một ứng dụng chạy cho một chuỗi nhà hàng, cho phép quản lí quản lí thông
tin nhân viên như thêm xóa sửa, đăng ký ca làm tuần tới cho nhân viên, lên lịch làm việc
tuần tới cho nhân viên, tính lương nhân viên theo số giờ làm, và thống kê nhân viên
theo giờ làm, cho phép nhân viên quét thẻ checkin checkout
- Là ứng dụng máy để bàn, đăng nhập phân quyền cho quản lí và nhân viên, có thể chạy
trên nhiều máy khác nhau nhưng chung dữ liệu của nhà hàng
- Các nhân viên của nhà hàng được dùng trực tiếp:
+ Nhân viên quản lí
+ Nhân viên kế toán
- Hệ thống không bao gồm:
+ quản lí cơ sở vật chất trong nhà hàng,
+ quản lí nhập nguyên liệu
+ quản lí đặt bàn
2. Ai được làm chức năng gì trong hệ thống
− QL đăng nhập vào hệ thống -> Giao diện quản lý hệ thống xuất hiện với các lựa chọn:
quản lý nhân viên, đăng ký ca làm tuần tới, lên lịch làm việc tuần tới, tính công tuần này,
thống kê NV theo giờ làm.
− QL chọn chức năng quản lý nhân viên -> Giao diện quản lý nhân viên hiện ra với các lựa
chọn: thêm NV, sửa NV, xóa NV.
− QL chọn chức năng sửa thông tin NV -> Giao diện tìm NV theo tên hiện lên.
− QL nhập tên hoặc một phần tên NV và tìm kiếm.
− Kết quả phải hiện tất cả các NV có tên chứa chuỗi từ khóa vừa nhập, mỗi NV trên 1 dòng
-> Nếu không có NV nào chứa thông tin phù hợp, chọn quay lại để thêm NV vào hệ
thống.
− QL chọn đúng dòng chứa tên NV cần sửa -> Giao diện sửa thông tin NV hiện lên với đầu
đủ các ô đã có sẵn thông tin hiện thời: tên, địa chỉ, số điện thoại, email.
− QL chọn sửa lại một số thông tin và lưu -> Hệ thống lưu lại và báo sửa thành công và trở
lại giao diện quản lý.
+ Đăng ký ca làm tuần tới:
− QL đăng nhập vào hệ thống -> Giao diện quản lý hệ thống xuất hiện với các lựa chọn:
quản lý nhân viên, đăng ký ca làm tuần tới, lên lịch làm việc tuần tới, tính công tuần này,
thống kê NV theo giờ làm.
− QL chọn chức năng đăng ký ca làm tuần tới cho NV -> Giao diện tìm NV hiện lên -> QL
nhập tên NV hoặc một phần tên NV và chọn tìm kiếm. -> Giao diện hiện lên danh sách
các NV có tên chứa từ khóa vừa nhập.
− Giao diện đăng kí ca làm tuần tới cho NV hiện lên, chứa thông tin NV và 1 bảng có 7
dòng tương ứng 7 ngày của tuần tới, mỗi dòng có 2 ô chọn tương ứng với 2 ca (8-16h và
16-24h).
− QL chọn vào các ô tương ứng với các ca mà NV đăng kí làm và chọn lưu -> Số ca đăng ký
phải đảm bảo ngưỡng tối thiểu theo quy định -> Nếu không thì hệ thống báo lưu không
thành công -> QL chọn quay lại giao diện đăng ký -> QL yêu cầu NV đăng ký thêm.
− Sau khi đăng ký ca làm thành công -> Hệ thống báo đăng ký thành công và trở lại giao
diện quản lý.
+ Lên lịch làm việc tuần tới:
− QL đăng nhập vào hệ thống -> Giao diện quản lý hệ thống xuất hiện với các lựa chọn:
quản lý nhân viên, đăng ký ca làm tuần tới, lên lịch làm việc tuần tới, tính công tuần này,
thống kê NV theo giờ làm.
− QL chọn chức năng lên lịch làm việc tuần tới cho NV nhà hàng -> Giao diện lên lịch hiện
lên gồm một bảng có 7 dòng tương ứng 7 ngày của tuần tới, mỗi dòng có 2 cột tương
ứng 2 ca của ngày. Mỗi cột chứa tên các NV đã chọn cho ca đó -> QL click chọn vào 1 ca.
− Giao diện hiện lên danh sách các NV đã đăng kí làm việc cho ca đó và chưa được xếp làm
cho ca đó, mỗi NV trên 1 dòng: tên, số điện thoại, tổng giờ đã lên lịch cho tuần tới, sắp
xếp theo chiều tăng dần của tổng giờ đã lên lịch cho tuần tới -> QL chọn một số NV ->
Mỗi ca phải đảm bảo có đủ N nhân viên làm việc -> Nếu không đủ, hệ thống báo lưu
không thành công -> Nếu có ca nào đó mà số nhân viên đăng kí lớn hơn N, thì ưu tiên
những nhân viên đang có số giờ làm ít hơn xếp trước -> QL chọn lưu -> Hệ thống thông
báo lưu thành công lịch làm việc của ca.
− Giao diện quay về trang lên lịch với thông tin các NV được chọn được thêm vào cột của
ca tương ứng -> QL lặp lại các bước chọn trên cho đến hết số ca của tuần tới và lưu.
− Hệ thống lưu lại và thông báo thành công, đồng thời in lịch ra để QL phát cho từng NV.
+ Tính công tuần này:
− QL đăng nhập vào hệ thống -> Giao diện quản lý hệ thống xuất hiện với các lựa chọn:
quản lý nhân viên, đăng ký ca làm tuần tới, lên lịch làm việc tuần tới, tính công tuần này,
thống kê NV theo giờ làm.
− QL chọn chức năng tính tiền công cho NV trong tuần này -> Giao diện tính công hiện lên
với ô nhập khoảng thời gian tính công.
− QL nhập ngày bắt đầu, ngày kết thúc của tuần vừa rồi.
− Giao diện hiện lên danh sách bảng tiền công cho tất cả các NV trong tuần đó, mỗi NV
trên 1 dòng, xếp theo thứ tự tên: mã, tên, số đt, tổng số giờ làm trong ca, tổng tiền
trong ca, tổng số giờ thừa ca, tổng tiền thừa ca, tổng số giờ đi chậm về sớm, tổng số tiền
bị phạt, tổng tiền thực nhận cuối cùng.
− QL chọn vào 1 dòng để xem chi tiết -> Giao diện hiện lên bảng thống kê chi tiết giờ làm
của NV được chọn trong tuần đó, mỗi dòng tương ứng 1 ca làm việc, xếp theo thứ tự
thời gian: thứ, ngày, ca, giờ checkin, giờ checkout, số giờ trong ca, số tiền trong ca, số
giờ thừa ca, số tiền thừa ca (tăng thêm 20% cho mỗi giờ thừa), số giờ đi chậm về sớm,
số tiền bị phạt (trừ 50% cho mỗi giờ phạt), tổng tiền thực nhận của ca.
+ Thống kê NV theo giờ làm:
− QL đăng nhập vào hệ thống -> Giao diện quản lý hệ thống xuất hiện với các lựa chọn:
quản lý nhân viên, đăng ký ca làm tuần tới, lên lịch làm việc tuần tới, tính công tuần này,
thống kê NV theo giờ làm.
− QL chọn chức năng thống kê NV theo giờ làm -> Giao diện thống kê hiện lên với ô nhập
khoảng thời gian thống kê.
− QL nhập ngày bắt đầu, ngày kết thúc của thời gian thống kê -> Giao diện hiện lên danh
sách bảng thống kê cho tất cả các NV trong khoảng thời gian đó, mỗi NV trên 1 dòng,
xếp theo thứ tự tổng số giờ làm giảm dần: mã, tên, số đt, tổng số giờ làm trong ca, tổng
số giờ thừa ca, tổng số giờ đi chậm về sớm, tổng số giờ thực làm cuối cùng, tổng số tiền
thực nhận cuối cùng.
− QL chọn vào 1 dòng để xem chi tiết -> Giao diện hiện lên bảng thống kê chi tiết giờ làm
của NV được chọn trong khoảng thời gian đó, mỗi dòng tương ứng 1 ca làm việc, xếp
theo thứ tự thời gian: thứ, ngày, ca, giờ checkin, giờ checkout, số giờ trong ca, số giờ
thừa ca, số giờ đi chậm về sớm, tổng thời gian thực làm, tổng tiền thực nhận của ca.
• Nhân viên : tên , tên đăng nhập , mật khẩu , vị trí công việc(thu ngân , đầu bếp , chạy
bàn , phụ bếp) , số điện thoại
• Nhân viên Quản lí : tên , tên đăng nhập , mật khẩu , số diện thoại
• Nhân viên kế toán: giống nhân viên
• Nhân viên parttime : giống nhân viên , số ca làm việc
• Ca làm việc : tên , giờ bắt đầu , giờ kết thúc , số người làm trong 1 ca , số người tối đa ,
số người tối thiểu
• Tiền lương : tên nhân viên , số giờ làm , số tiền nhận được trong 1 giờ , tiền thường , mô
tả
• Lịch làm việc : ngày bắt đầu , ngày kết thúc , số buổi , số người làm trong 1 tuần , mô tả
• Số giờ trong 1 ca : mô tả
• Tiền thưởng : mô tả
• Vị trí làm việc : mô tả
5 . Quan hệ giữa các đối tượng
- Ta có thể đề xuất các actor của hệ thống : Nhân viên quản lí , Nhân viên quản trị , Nhân
viên parttime . Tất cả đều kế thừa từ Nhân viên .
• Quản lí thông tin nhân viên : UC này cho phép quản lí thêm , xóa , sửa nhân viên
parttime
• Đăng kí ca làm tuần tới : UC này cho phép quản lí đăng kí ca làm tuần tói cho nhân viên
parttime , cho nhân viên đăng kí nguyện vọng ca làm tuần tới
• Tính công tuần này : UC này cho phép quản lí tính công cho tất cả nhân viên trong một
khoảng thời gian xác định
• Lên Lịch làm việc tuần tới : UC này cho phép quản lí lên lịch , thời gian làm việc cho nhân
viên parttime
• Thống kê nhân viên theo giờ : UC này cho phép quản lí xem số nhân viên đang làm trong
một khoảng thời gian xác định
• Quản lí tài khoản người dùng : UC này cho phép nhân viên quản trị quản lí tài khoản
người dùng trong hệ thống
• Checkin , Checkout : UC cho phép nhân viên parttime có thể checkin khi bắt đầu làm
việc và checkout khi ra về
Use case chi tiết cho modul tính công tuần này
Trong chức năng tính công tuần này nhân viên quản lí phải tương tác với giao diện :
• Đăng nhâp : UC này cho phép quản lí đăng nhập vào hệ thống
• Xem chi tiết công của một nhân viên : UC này cho phép xem chi tiết giờ làm của một
nhân viên bao gồm : thứ, ngày, ca, giờ checkin, giờ checkout,số giờ trong ca, số tiền
trong ca, số giờ thừa ca, số tiền thừa ca, số giờ đi chậm về sớm,số tiền bị phạt, tổng tiền
thực nhận của ca.
• Tính công tuần này : UC này cho phép quản lí tính công của tất cả nhân viên trong 1
khoảng thời gian xác định
KỊCH BẢN
Scenario Tinh công tuần này
Actor NV quản lí , NV parttime
Pre- NV quản lí đăng nhập thành công
condition
Main 1.NV quản lí A chọn chức năng tính công tuần này từ menu chính của NV quản lí
events và xem công chi tiết thanh toán lương cho nhân viên parttime B theo yêu cầu của
nhân viên parttime B
2.GD tính công tuần này hiện lên có ô nhập ngày bắt đầu tuần , ô kêt thúc tuần ,
nút xác nhận , và nút quay lại
3.NV quản lí A nhập ngày đầu tuần= 21/3/2022 và ngày cuối tuần = 27/3/2022 rồi
ấn xác nhận
4.GD danh sách bảng tiền công cho các nhân viên đi làm trong tuần này hiện ra
như trong bảng sau(cuối cùng là nút quay lại)
9.NV A xem đã thanh toán hay chưa và cho nhân viên parttime B xem chi tiết
bảng thống kê giờ làm của mình
10.NV B xác nhận đúng các giờ làm của mình và đồng ý thanh toán
11.NV A thanh toán tiền cho NV B
12.NV B xác nhận nhận đủ tiền
13.NV A click thanh toán
14.Hệ thống thông báo thành công
15. NV A thông báo thanh toán thành công và đưa phiếu lương cho NV B
Exception 9.NV A xem bảng giờ làm chi tiết và thấy đã thanh toán , NV A thông báo đã
thanh toán cho NV B
9.1 NV B xác nhận đã thanh toán
9.2 NV A click nút quay lại giao diện NV quản lí
10.NV B xác nhận không đúng với giờ làm của mình , nhân viên B đi làm từ 8am
nhưng quên k checkin đến 11am mới checkin
10.1 NV A đi xác nhận thông tin từ camera và các nhân viên khác, NV A sửa lại
thông tin checkin cho NV B và cập nhập lại bảng chi tiết giờ làm của NV B
Biểu đồ Lớp
• GDQuanLi : giao diện chính của nhân viên quản lí
o Chọn Tính công tuần : kiểu submit
• GDTinhCong: thực hiện xem bảng lương của tuần này
o Input : ngày bắt đầu
o Input : ngày kết thúc
o Output : bảng công tuần -> đề xuất phương thức getBangCong gán cho Lớp
BangCong
• GDXemChiTietCong : thục hiện xem phiếu lương của một nhân viên
o Chọn thanh toán : kiểu submit
o Chọn hủy : kiểu submit
o Output : Phiếu lương của một nhân viên -> đề xuất phương thức
getPhieuLuong() gán cho lớp PhieuLuong
Kịch bản v2
1.Nhân viên parttime yêu cầu nhân viên quản lí tính công cho mình
2.NV quản lí chọn chức năng Tính công tuần này trên GDQuanLi
3.Lớp GDQuanLi gọi Lớp GDTinhCong để hiển thị
4.Lớp GDTinhCong hiển thị cho NV quản lí
5. NV quản lí nhập ngày bắt đầu và ngày kết thúc tuần đó
6.Lớp GDTinhCong gọi Lớp PhieuLuong
7.Lớp PhieuLuong thực hiện hàm getPhieuLuong()
8.Lop PhieuLuong trả về kết quả cho Lớp GDTinhcong
9.Lớp GDTinhCong hiển thị cho NV quản lí
10. NV quản lí click chọn một nhân viên để xem chi tiết
11.Lớp GDTinhCong gọi lớp GDXemChiTietCong
12.Lớp GDXemChiTietCong gọi lớp CaDaLam
13.Lớp CaDaLam thực hiện hàm dsCaDaLam()
14.Lớp CaDaLam trả về kết quả cho lớp GDXemChiTietCong
15.Lớp GDXemChiTietCong hiển thị cho NV quản lí
16. NV quản lí cho NV Parttime xem ca đã làm của mình
17. NV Parttime xác nhận chính xác với NV quản lí
18. NV quản lí thanh toán tiền cho NV Parttime
19.NV Parttime xác nhận nhận được đủ tiền
20. NV quản lí click thanh toán trên GDXemChiTietCong
21.Lớp GDXemChiTietCong gọi lớp PhieuLuong
22.Lớp PhieuLuong thực hiện hàm DanhDauThanhToan() để đánh dấu nhân viên B sang trạng
thái đã thanh toán
23.Lớp PhieuLuong trả về kết quả cho Lớp GDXemChiTietCong
24.Lớp GDXemChiTietCong hiển thị lên cho NV quản lí
Biểu Đồ Tuần Tự
Pha Thiết Kế
1 . Thiết kế lớp thực thể
• Bổ sung thuộc tính id cho các lớp không kế thừa từ lớp khác : NhanVien ,
PhieuLuong , CaDaLam , Ca
• Chuyển đổi các quan hệ association sang các dạng aggregation/composition :
- Quan hệ NVParttime vs CaDaLam chuyển sang quan hệ CaDaLam
chứa NVParttime
- Quan hệ CaDaLam vs Ca chuyển sang quan hệ Ca chứa CaDaLam
• Bổ sung các thuộc tính thành phần :
o NVParttime vs PhieuLuong có quan hệ n-1 nên bổ sung thuộc tính nv có
kiểu là 1 mảng NVParttime vào PhieuLuong
o NVParttime vs CaDaLam có quan hệ n-1 nên bổ sung thuộc tính nv có
kiểu là 1 mảng NVParttime vào CaDaLam
o PhieuLuong vs CaDaLam có quan hệ n-1 nên bổ sung thuộc tính
phieuluong có kiểu là 1 mảng PhieuLuong vào CaDaLam
o CaDaLam vs Ca có quan hệ n-1 nên bổ sung thuộc tính c có kiểu là 1 mảng
CaDaLam vào Ca
2. Thiết kế cơ sở dữ liệu