ChanhTQ@
0901452không62
- Tham gia
- 5/9/08
- Bài viết
- 4,256
- Được thích
- 4,863
PHP:
Option Explicit
Const tr As Long = 10 ^ 6
Function thuong83(ByVal sChucvu As String, ByVal iNgaycong As Integer, ByVal bGioitinh As String)
1 If (sChucvu = "gd") And (iNgaycong < 5) And (bGioitinh = "nu") Or (bGioitinh = "nam") Then
thuong83 = 0
ElseIf (sChucvu = "gd") And (iNgaycong > 30) And (bGioitinh = "nu") Then
11 thuong83 = 10 * tr * 2
ElseIf (sChucvu = "gd") And (iNgaycong > 20) And (iNgaycong <= 30) And (bGioitinh = "nu") Then
thuong83 = 8 * tr * 2
ElseIf (sChucvu = "gd") And (iNgaycong >= 15) And (iNgaycong <= 20) And (bGioitinh = "nu") Then
thuong83 = 5 * tr * 2
ElseIf (sChucvu = "gd") And (iNgaycong >= 10) And (iNgaycong < 15) And (bGioitinh = "nu") Then
thuong83 = 3 * tr * 2
End If
2 If (sChucvu = "tp") And (iNgaycong < 5) And (bGioitinh = "nu") Or (bGioitinh = "nam") Then
thuong83 = 0
ElseIf (sChucvu = "tp") And (iNgaycong > 30) And (bGioitinh = "nu") Then
21 thuong83 = 10 * tr * 1.5
ElseIf (sChucvu = "tp") And (iNgaycong > 20) And (iNgaycong <= 30) And (bGioitinh = "nu") Then
thuong83 = 8 * tr * 1.5
ElseIf (sChucvu = "tp") And (iNgaycong >= 15) And (iNgaycong <= 20) And (bGioitinh = "nu") Then
thuong83 = 5 * tr * 1.5
ElseIf (sChucvu = "tp") And (iNgaycong >= 10) And (iNgaycong < 15) And (bGioitinh = "nu") Then
thuong83 = 3 * tr * 1.5
End If
3 If (sChucvu = "nv") And (iNgaycong < 5) And (bGioitinh = "nu") Or (bGioitinh = "nam") Then
thuong83 = 0
ElseIf (sChucvu = "nv") And (iNgaycong > 30) And (bGioitinh = "nu") Then
31 thuong83 = 10 * tr
ElseIf (sChucvu = "nv") And (iNgaycong > 20) And (iNgaycong <= 30) And (bGioitinh = "nu") Then
thuong83 = 8 * tr
ElseIf (sChucvu = "nv") And (iNgaycong >= 15) And (iNgaycong <= 20) And (bGioitinh = "nu") Then
thuong83 = 5 * tr
ElseIf (sChucvu = "nv") And (iNgaycong >= 10) And (iNgaycong < 15) And (bGioitinh = "nu") Then
thuong83 = 3 * tr
End If
End Function
(*) Tên hàm nên có chữ in & chữ thường, ví dụ Thuong83; (Để tránh lỗi chính tả không đáng có khi gõ nhập tên hàm trong chương trình & đây là thói quen không tồi chút nào)
Khi viết xong hàm, ta thở fào vài fút, sau 1 thời gian nào đó bạn nhìn lại & nghiền ngẫm 1 số vấn đề như sau
(*) Với số ngày công <5 thì dù có là bà trời đi nữa cũng có TT (tiền thưởng) = 0;
Như vậy ta có thể dùng 1 dòng lệnh thay cho ba dòng lệnh về ngày công < 5 trong hàm trên; ( tự thử đi nghe)
(*) Kế đến là TT chỉ fát cho đàn bà con gái, nên sGioiTinh="Nam", thì TT=0 (Ta dùng ngay 1 câu lệnh để hất đấn mày râu ra rìa;
(**) Thành tố trong khi tính hàm còn lại là thưởng theo chức vụ & theo ngày công;
Để tiếp, ta nên khai báo thêm biến để giữ HST (hệ số thưởng) theo chức vụ & HST theo ngày công;
Ví dụ
Dim HSChVu As Double, HSNgCg As Double
Sau đó ta tách ra cho từng trường hợp
If sChucVu ="GD" Then HSCVu =10
If sChucVu ="TF" Then HSCVu =8
. . . . .
Tương tự như vậy với ngày công;
. . . . . .
Sau cùng là dòng lệnh
Thuong83 = HSChVu * HSNgCg * Tr
Các bạn thử bớt chút thời gian thực thi theo gợi í của mình xem; Sẽ thấy thoáng mát trong chương trình ngay đó mà!
Chúc lớp nhiều thành công!
Lần chỉnh sửa cuối: