Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

BỘ THÔNG TIN VÀ TRUYỀN THÔNG

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIÊN THÔNG


-----------------------------------------

BÀI TẬP LỚN


MÔN : NHẬP MÔN CÔNG NGHỆ PHẦN MỀM
NHÓM BÀI TẬP : 14

ĐỀ TÀI : HỆ THỐNG QUẢN LÍ PHÂN CÔNG VÀ


CHẤM CÔNG NHÂN VIÊN PARTTIME

Sinh viên thực hiện:

1. NGUYỄN VĂN DŨNG B19DCCN129


2. TRẦN ĐỨC MINH B18DCCN412
3. NGUYỄN CHÍNH NGHĨA B19DCCN465
4. NGUYỄN MẠNH TUÂN B18DCCN555

Modul 4 : Tính công tuần này


Yêu cầu buổi học : Pha thiết kế

Hệ đào tạo: Chính quy


HÀ NỘI – 2021
Glossary list
STT Tên Tên Tiếng Anh Mô tả
Từ liên quan đến sự vật của hệ thống
1 Quản lí Manager Người quản lí thông tin , có quyền thực hiện các chức
năng như quản lí thông tin nhân viên , đăng kí ca làm
việc cho nhân viên , lên lịch làm việc tuần tới , tính
công , ….
2 Nhân viên Employee Nhân viên chung
3 Số giờ làm Number of Số giờ làm việc của một nhân viên , trong 1 tuần hoặc
việc hours trong 1 tháng
4 Số buổi Number of Số buổi làm việc của nhân viên trong 1 tuần hoặc
sessions trong 1 tháng
5 Tiền lương Salary Tiền lương nhận được của nhân viên tính theo giờ đã
làm và tính thêm tiền thưởng phạt , Mức tiền công
theo giờ là giống nhau cho tất cả nhân viên làm theo
giờ
6 Ca làm việc Shift Một ngày sẽ chia thành nhiều ca làm việc tương ứng
thường từ 6 ->8 tiếng tùy vào nhà hàng
7 Tiền thưởng Bonus Tiền thường của nhân viên khi làm tốt nhiệm vụ hoặc
là làm thêm giờ
8 Lịch làm việc Calendar Thời khóa biểu làm việc của tát cả nhân viên trong 1
tuần hoặc 1 tháng
9 Giờ checkin Checkin hour Giờ bắt đầu làm việc theo ca
10 Giờ checkout Checkout hour Giờ kết thúc làm việc theo ca
11 Số giờ trong Số giờ trong 1 ca
ca
12 Số giờ thừa ca overtime Giờ làm thêm ngoài 1 ca
13 Số giờ đi Số giờ mà nhân viên đến muộn hoặc về sớm trong 1
chậm về sớm tuần hoặc 1 tháng
14 Tổng thời gian Total time Tổng thời gian thực làm = số giờ trong ca*số ca làm
thực làm việc + số giờ thừa ca – sô giờ đi chậm về sớm
15 Nhân viên Parttime staff Nhân viên làm việc theo ca và tính tiền theo giờ
parttime
16 Vị trí làm việc Một nhân viên có 1 vị trị làm việc : thu ngân , chạy bàn
, phụ bếp , …
Từ liên quan đến hoạt động của hệ thống
17 Tính công Bằng cách lấy tổng thời gian thực làm *sô tiền nhận
được của 1 giờ + tiền thường
18 Đăng kí ca Sing for work Đăng kí ca làm việc để nhân viên biết làm những ca
làm việc nào trong tuần
19 Lên lịch làm Planning Lên lịch làm việc để nhân viên biết làm những ca nào
việc trong tuần
20 Thống kê Xem danh sách các nhân viên trong 1 giờ xem có đủ
nhân viên lượng nhân viên cần thiết k và thông tin các nhân viên
theo giờ làm trong 1 giờ
21 Check in Quẹt thể hoặc login in vào checkin để vào làm
22 Check out Check out để về
23 Thêm nhân Add staff
viên
24 Sửa nhân viên Exit staff
25 Xóa nhân viên Delete staff
26 Xem lịch làm
việc

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

- Nhân viên quản lý:


+Quản lí thông tin nhân viên: thêm , sửa , xóa ,xem
+Đăng ký ca làm cho nhân viên tuần tới
+Lên lịch làm việc cho nhân viên tuần tới
+Thống kê nhân viên theo giờ làm
+Tính công của nhân viên
- Nhân viên quản trị hệ thống
+Quản lí thông tin người dùng

3. Mỗi chức năng thực hiện như thế nào?


+ Quản lý thông tin nhân viên:

− 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.

4 . Hệ thống cần xử lí thông tin về các đối tượng gì ?

• 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

• Một ca có nhiều nhân viên


• Một nhân viên có thể làm nhiều ca
• Một buổi có thể có nhiều ca
• Một người có thể làm nhiều buổi
• Mỗi nhân viên parttime nhận một mức lương vào mỗi tuần
• Một nhân viên chỉ làm ở 1 ví trí
• Một ca làm có nhiều vị trí làm việc
• Một ca làm chỉ có 1 nhân viên quản lí
• Một nhân viên quản lí có thể quản lí nhiều ca làm
Mô tả hệ thống bằng UML

- 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 .

- Chức năng tương ứng với từng actor :


o Nhân viên : Đăng nhập , đổi mật khẩu
o Nhân Viên quản lí : Quản lí thông tin nhân viên , Đăng kí lịch làm việc cho nhân
viên , Lên lịch thời khóa biểu cho nhân viên , thống kê nhân viên theo giờ làm ,
tính công
o Nhân viên quản trị : quản lí tài khoản người dùng
• Biểu đồ Use case tổng quan :

Mô tả các Use case như sau :

• 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 -> đề xuất UC đăng nhập


• Xem chi tiết công của một nhân viên -> đề xuất UC Xem chi tiết công của một nhân viên
• Đăng nhập là bắt buộc để hoàn thành tính công tuần này .Do đó UC tinh công tuần này
include UC này
Các Use Case được mô tả như sau :

• Đă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)

Mã Tên SDT Tổng Tổng Tổng số Tổng Tổng Tổng Tổng


số giờ tiền giờ tiền số giờ số số
làm trong thừa thừa đi tiền tiền
trong ca trong trong muộn phạt thực
ca ca ca về nhận
sớm
N01 B 123 56 1.4tr 12 300k 2 100k 1.6tr
N02 C 456 48 1.2tr 6 150k 3 150k 1.2tr
N03 D 789 56 1.4tr 20 500k 0 0 1.9tr
7.NV quản lí A click chọn NV parttime B để xem chi tiết giờ làm của nhân viên B
8.GD hiện ra bảng thống kê chi tiết giờ làm của NV B trong tuần này như trong
bảng sau(nút thanh toán ở cuối):

Thứ Ngày Ca Giờ Giờ Số Số Số Số Số Sô Tổng


check check giờ tiền giờ tiền giờ tiền tiền
in out trong trong thừa thừa đi bị thực
ca ca ca ca chậm phạt nhận
về
sớm
Hai 21/3 S 8am 20pm 8 200k 4 100 0 0 300k
Ba 22/3 T 16pm 23pm 8 200k 0 0 1 25k 175k
Tư 23/3 S 8am 18pm 8 200k 2 50k 0 0 250k
Năm 24/3 T 16pm 24pm 8 200k 0 0 0 0 200k
Sáu 25/3 S 8am 19pm 8 200k 3 75k 0 0 275k
Bảy 26/3 T 16pm 23pm 8 200k 0 0 1 25k 175k
CN 27/3 S 8am 19pm 8 200k 3 75k 0 0 275k
Trạng thái thanh toán : Chưa thanh toán

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

Trích lớp thực thể


+ Đánh giá các danh từ làm lớp thực thể

• Nhân viên : đề xuất 1 lớp NhanVien


• Nhân viên quản lí : đề xuất lớp NVQuanLi kế thừa từ lớp NhanVien
• Nhân viên parttime: đề xuất lớp NVParttime kế thừa từ lớp NhanVien
• Ngày : là đối tượng xử lí của hệ thống . đề xuất lớp thực thể Ngay
• Phiếu lương: là đối tượng xử lí của hệ thống . đề xuất lớp thực thể PhieuLuong
• Bảng lương : là đối tượng xử lí của hệ thống . đề xuất lớp thực thể BangLuong
• Ca: là đối tượng xử lí của hệ thống . đề xuất lớp thực thể Ca
+ Xác định quan hệ số lượng giữa các thực thể

• Ngày có nhiều Ca -> quan hệ giữa Ngày vs Ca là 1-n


• Nhân viên parttime có thể làm nhiều ca , một ca có nhiều nhân viên parttime -> quan hệ
giữa NVParttime vs Ca là n-n đề xuất lớp CaDaLam kết nối giữa NVParttime vs Ca
• Một nhân viên parttime chỉ có nhiều phiếu lương , một phiếu lương chỉ có một nhân
viên parttime ->quan hệ giữa NVParttime vs PhieuLuong là 1-n
• Bảng lương bao gồm nhiều Phiếu lương -> quan hệ giữa BangLuong vs PhieuLuong là 1-n
+ Biểu đồ lớp thực thể

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

• Mỗi Lớp thự thể đề xuất thành 1 bảng


o Lớp NVQuanLi → tblNVQuanLi : id
o Lớp NhanVien → tblNhanVien : id , tên ,sdt , tuôi , giới tính , email ,
username , password , vitri
o Lớp NVParttime → tblNVParttime : id ,Luong , VitriCongviecParttime
o Lớp PhieuLuong → tblPhieuLuong : id ,TenNVParttime ,
SoGioLamTrongCa , SoGioThua ,SoGioDiMuon , SoTienPhat
,TongTienThucNhan , NgayBD ,NgayKT
o Lớp CaDaLam → tblCaDaLam : id , GioCheckin , GioCheckout ,
TenNVPartTime
o Lớp Ca → tblCa : id , GioBatDau , GioKetThuc , SoNVTrongCa
• Thiết lập các thuộc tính id là khóa chính cho các bảng
• Khóa ngoại được thiết lập trong cho các bảng :
o 1 tblNVParttime – n tblPhieuLuong → tblPhieuLuong có thêm khoa ngoại
tblNVParttimeID
o 1 tblCaDaLam – n tblPhieuLuong → tblCaDaLam có thêm khóa ngoại
tblPhieuLuongID
o n tblNVParttime – 1 tblCaDaLam → tblCaDaLam có thêm khoa ngoại
tblNVParttimeID
o n tblCaDaLam – n tblCa → tblCaDaLam có thêm khóa ngoại tblCaDaLamID

3 . Thiết kế giao diện


4. Thiết kế biểu đồ lớp chi tiết

• Xử lý kiểm tra đăng nhập : => checkDangNhap


- Tham số vào : username, password(NhanVien)
- Tham số ra : + đăng nhập có đúng hay không (boolean)
+ nhân viên đăng nhập có vị trí công việc nào để gọi trang chủ
tương ứng của nhân viên
- Tham số vào : checkDangNhap(NhanVien nhanvien): Manager
- Tham số ra : checkNhanVien(NhanVien nhanvien): Boolean
➔ Đề xuất lớp NhanVienDAO gán phương thức checkDangNhap vào
• Lấy ra danh sách các Phiếu lương → getPhieuLuong
- Tham số vào : date bd (ngày bắt đầu tuần) , date kt (ngày kết thúc tuần)
- Tham số ra : danh sách phiếu lương → ArrayList<PhieuLuong>
➔ Đề xuất lớp PhieuLuongDAO gán phương thức getPhieuLuong cho lớp
PhieuLuongDAO
• Lấy ra danh sách các ca đã làm → dsCaDaLam
- Tham số vào : NVParttime
- Tham số ra : danh sách ca đã làm → ArrayList<CaDaLam>
• Đánh dấu phiếu lương là đã thanh toán hay chưa →DanhDauThanhToan
- Tham số vào : PhieuLuong
- Tham số ra : boolean
→gán cho Lớp PhieuLuongDAO
5. Biểu đò tuần tự chi tiết
Kịch bản v3 :
1.NVPartime B yêu cầu NV quản lí A tính tiền công trong tuần cho mình
2.NV A nhập username và password nhấn đăng nhập
3.GDDangNhap thực hiện hàm bắt sự kiện actionperformer()
4.GDDangNhap gọi đến Lớp NhanVien
5.Lớp NhanVien thực hiện hàm NhanVien()
6.Hàm NhanVien đóng gói thực thể trả về cho GDDangNhap
7.GDDangNhap gọi lớp NhanVienDAO
8.Lớp NhanVienDAO thực hiện hàm checkDangNhap()
9.Hàm checkDangNhap() gọi đến Lớp NhanVien yêu cầu tìm đối ượng NhanVien có username
và password trên
10.Lớp NhanVien thực hiện hàm setter()
11.Hàm setter() trả kết quuar về cho lớp NhanVienDAO
12.Lớp NhanVienDAO trả về cho GDDangNhap
13.hàm actionperformer() gọi GDQuanLi
14.lớp GDQuanLi thực hiện hàm GDQuanLi() để tạo đối tượng GDQuanLi
15. hàm GDQuanLi() hiển thị cho nhân viên A
16.NV A click nút Tính công tuần
17.GDQuanLi thực hiện hàm bắt sự kiện actionperformer()
18.hàm actionperformer() gọi đến GDTinhCongTuan
19.lớp GDTinhCongTuan thực hiện hàm GDTinhCongTuan()
20.hàm GDTinhCongTuan() hiển thị lên cho nv A
21.NV A nhập ngày bắt đầu và kết thúc và click enter
22. GDTinhCongTuan thực hiện hàm bắt sự kiện actionperformer()
23. hàm actionperformer() gọi đến lớp PhieuLuongDAO
24.Lớp PhieuLuongDAO thực hiện hàm getPhieuLuong() để lấy danh sách các phiếu lương
25.hàm getPhieuLuong() gọi đến lớp PhieuLuong
26.Lớp PhieuLuong thực hiền hàm PhieuLuong()
27.hàm PhieuLuong trả kết quả về lớp PhieuLuongDAO
28.PhieuLuongDAO trả kết quả về cho GDTinhCongTuan
29. GDTinhCongTuan hiển thị cho nhân viên A
30. Nhân viên A chọn nhân viên B
31. GDTinhCongTuan thực hiện hàm bắt sự kiện actionperformer()
32. hàm actionperformer() gọi lớp GDXemChiTietCong
33. GDXemChiTietCong thực hiện hàm GDXemChiTietCong()
34. GDXemChiTietCong() gọi đến lớp CaDalamDAO
35. lớp CaDalamDAO thực hiện hàm dsCaDaLam()
36. hàm dsCaDaLam() gọi đến lớp CaDaLam
37. Lớp CaDaLam thực hiện hàm CadaLam() đóng gói thực thể
38. Lớp CaDaLam trả về cho lớp CaDaLamDAO
39. lớp CaDaLamDAO trả về cho GDXemChiTietCong
40. GDXemChiTietCong hiển thị cho NV A
41. NV A cho NV B xem
42. NV B xác nhận đúng ca đã làm
43. NV A thanh toán tiền công cho NV B
44. NV B xác nhận đủ tiền
45. NV A click thanh toán
46. GDXemChiTietCong thực hiện hàm bắt sự kiện actionperformer()
47. GDXemChiTietCong gọi đến lớp PhieuLuongDAO
48. lớp PhieuLuongDAO thực hiện hàm DanhDauThanhToan()
49. hàm DanhDauThanhToan() gọi đến lớp PhieuLuong
50. lớp PhieuLuong thực hiện hàm PhieuLuong()
51. Hàm PhieuLuong() trả về cho lớp PhieuLuongDAO
52. lớp PhieuLuongDAO trả về cho GDXemChiTietCong
53. GDXemChiTietCong hiển thị cho NV A

You might also like