Quản lý nhân sự Bộ phận quản lý nhân viên
2.4.2. Các thực thể.
- Bảng hồ sơ nhân viên.
Name Type Width Giải thích Ghi chú
Manv C 10 Mã nhân viên Khoá chính
Hodem C 30 Hộ đệm
Ten C 15 Tên
Bidanh C 30 Bí danh
Ngaysinh D 8 Ngày sinh
Gioitinh C 3 Giới tính
Madt C 4 Mã dân tộc Khoá ngoại lai
Maqg C 4 Mã quốc gia Khoá ngoại lai
Matg C 4 Mã tôn giáo Khoá ngoại lai
Scmt C 10 Số chứng minh th
Noicap C 30 Nơi cấp
Sodthoai C 10 Số điện thoại
Diachi C 50 Địa chỉ
Email C 20 Email
Hokhthchu C 50 Hộ khẩu thờng trú
Quequan C 50 Quê quán
Ngaybatdaulam D 8 Ngày bắt đầu làm
Mapb C 4 Mã phòng ban Khoá ngoại lai
Matdvh C 4 Mã trình độ văn hoá Khoá ngoại lai
Macmon C 4 Mã chuyên môn Khoá ngoại lai
Matdcmon C 4 Mã trình độ chuyên
môn
Khoá ngoại lai
Mahttuyen C 2 Mã hình thức tuyển Khoá ngoại lai
Macv C 4 Mã chức vụ Khoá ngoại lai
Macdanh C 4 Mã chức danh Khoá ngoại lai
Ngaylenbacluong D 8 Ngày lên bậc lơng
Bacluonghientai N 10 Bậc lơng hiện tại
Hesoluong N 10 Hệ số lơng
Nangkhieu C 30 Năng khiếu
Tinhtrsukhoe C 20 Tình trạng sức khoẻ
Hinhthuchopdong C 30 Hình thức hợp đồng
Ngaycohieuluc D 8 Ngày có hiệu lực
Ngayhethieuluc D 8 Ngày hết hiệu lực
Manngu C 4 Mã ngoại ngữ Khoá ngoại lai
Matdnngu C 4 Mã trình độ ngoại
ngữ
Matdth C 4 Mã trình độ tin học Khoá ngoại lai
Quatrinhdaotao M 4 Quá trình đào tạo
Quatrinhcongtac M 4 Quá trình công tác
Quanhegiadinh M 4 Quan hệ gia đình
Quatrinhluong M 4 Quá trình lơng
Kyluat M 4 Kỷ luật
Tinhtrangcv M 4 Tình trạng công việc
Anhnv G 4 ảnh nhân viên
Khenthuong M 4 Khen thởng
-Bảng chức danh.
Name Type Width Giải thích Ghi chú
Macdanh C 4 Mã chức danh Khoá chính
Tencdanh C 30 Tên chức danh
-Danh mục chuyên môn.
Name Type Width Giải thích Ghi chú
Macmon C 4 Mã chuyên môn Khoá chính
Tencmon C 30 Tên chuyên môn
-Danh mục chc vụ.
Name Type Width Giải thích Ghi chú
Macv C 4 Mã chức vụ Khoá chính
-Danh mục dân tộc.
Name Type Width Giải thích Ghi chú
Madt C 4 Mã dân tộc Khoá chính
Tendt C 30 Tên dân tộc
-Danh mục đơn vị.
Name Type Width Giải thích Ghi chú
Madv C 4 Mã đơn vị Khoá chính
-Danh mục hình thức tuyển.
Name Type Width Giải thích Ghi chú
Mahttuyen C 4 Mã hình thức tuyển Khoá chính
Tenhttuyen C 30 Tên hình thức tuyển
*Danh mục ngạch.
Name Type Width Giải thích Ghi chú
Mangach C 4 Mã ngạch Khoá chính
Tenngach C 30 Tên ngạch
Bac N 2 Bậc
-Danh mục ngoại ngữ.
Name Type Width Giải thích Ghi chú
Manngu C 4 Mã ngoại ngữ Khoá chính
Tenngu C 30 Tên ngoại ngữ
-Danh mục quốc gia.
Name Type Width Giải thích Ghi chú
Maqg C 4 Mã quốc gia Khoá chính
-danh mục trình độ chuyên môn
Name Type Width Giải thích Ghi chú
Matdcmon C 4 Mã trình độ chuyên
môn
Khoá chính
Tentdcmon Tên trình độ chuyên
môn -Danh mục trình độ ngoại ngữ.
Name Type Width Giải thích Ghi chú
Matdnngu C 4 Mã trình độ ngoại ngữ Khoá chính
Tentdnngu Tên trình độ ngoại ngữ
-danh mục trình độ tin học.
Name Type Width Giải thích Ghi chú
Matdth C 4 Mã trình độ tin học Khoá chính
Tentdth Tên trình độ tin học
-Danh mục trình độ văn hoá.
Name Type Width Giải thích Ghi chú
Matdvh C 4 Mã trình độ văn hoá Khoá chính
- Danh mục tôn giáo.
Name Type Width Giải thích Ghi chú
Matongiao C 4 Mã tôn giáo Khoá chính
Tentongiao C 30 Tên tôn giáo
-Danh mục tình trạng công việc.
Name Type Width Giải thích Ghi chú
Mattrcv C 4 Mã tình trạnh công
việc
Khoá chính
Tenttrcv C 30 Tên tình trạng công
việc
3.MỘT SỐ GIAO DIỆN CH NH TRONG CHÍ ƯƠNG TRèNH 3.1 Giao dien chớnh của chương trỡnh
3.3 Màn hỡnh cấp quyết định
3.5 Màn hỡnh danh mục chức vụ
3.7 Màn hinh danh mục hỡnh thức kỉ luật
3.9 Màn hỡnh danh mục bằng cấp
3.10 Màn hỡnh danh mục kết quả đào tạo
3.11 Màn hỡnh danh mục lớ do thay đổi cụng tỏc
3.13 Màn hỡnh danh mục nhúm chức danh
3.15 Màn hỡnh danh mục trỡnh độ chuyờn mụn
3.17 Màn hỡnh danh mục trỡnh độ tin học
3.19 Màn hỡnh danh mục trỡnh độ văn hoỏ
ầ 3.20 Màn hỡnh danh mục tỉnh
3.21 Màn hỡnh danh mục loại hợp đồng
3.23 Màn hỡnh danh mục phụ cấp
KẾT LUẬN
Trong thời đại cụng nghệ thụng tin đang phỏt triển như vũ bóo hiờn nay thỡ những sản phẩm cụng nghệ thụng tin đó tạo ra cho con người một năng suất lao động rất cao cho quỏ trỡnh phỏt triển của thế giới.Chớnh vỡ vậy mà nú vừa là cơ hội vừa là thỏch thức đối với cỏc doanh nghiệp khi đưa ra sự lựa chọn ứng dụng cụng nghệ thụng tin trong việc phỏt triển doanh nghiệp.Việc một doanh nghiệp ứng dụng và xõy dựng cỏc phần mềm quản ls là một lợi thế khụng thể chối cói, nú mang lại cho doanh nghiệp một bộ mặt khỏc hẳn với việc trước khi chưa sử dụng cụng nghệ thụng tin.Trong thời đại hiện nay một doanh nghiệp phải cú một bộ mỏy hoạt động gọn nhẹ và như vậy mới cú thẻ tiết kiệm tối đa cỏc khoản chi phớ và đưa ra cỏc phương hướng phỏt triển của bộ mỏy doanh nghiệp một cỏch hài hoà với tỡnh hỡnh thực tế của doanh nghiệp hiện nay. Nhận thức đựoc tầm quan trong đú nờn đó cú rất nhiốu lĩnh vực đó khụng ngừng phỏt triển phần mềm quản lý nhõn sự để cú thể đỏp ứng đươcj yờu cầu phỏt triển của cụng ty.
Tuy nhiờn do thời gian thực tập và trỡnh độ cú hạn nờn phạm vi đề tài cũn hạn chế,trong thời gian tới em sẽ khắc phục những hạn chế này.
Trong thời gian học tập tại trường với long biết ơn sõu sắc e xin chõn thành cỏm ơn cỏc thầy cụ giỏo trưũng Đại Hoạc Kinh tế Quốc Dõn núi chung và cỏc thày cụ giỏo khoa tin học kinh tế núi riờng đó tận tỡnh giảng dạy và tạo điều kiện cho chỳng em trong suốt thời gian học tập tại trường.
Em xin chõn thành cỏm ơn thầy giỏo PHÙNG TIẾN HẢI đó tận tỡnh hướng dẫn chỳng em hoàn thành tốt chuyờn đề thực tập tốt nghiệp này.
MỘT SỐ MÃ NGUỒN CHÍNH CỦA CHƯƠNG TRèNH
*************************Startup********************************* ENDPRO
* ... FUNCTION QuickGet... * Tim nhanh theo ten
FUNCTION QuickGet
PARAMETER _Nguon, _Ten, _Ma, _Dich, _Mess * _Nguon : File co chua truong ten can tim * _Ten : Truong de tim theo ten
* _Ma : Bien tra ve Ma cua Ten tim duoc
* _Dich : Ten file chua cac ban ghi thoa man dieu kien ve Ten tim duoc * _Mess : Message cua man hinh brow
PRIVATE M.Ma, M.Ten, _Inselect, _Order _InSelect = SELECT()
_Order = ORDER()
STORE "" TO M.Ma, M.Ten M.Opt = 1
M.Nhan_Huy1=1 SELE &_Nguon PUSH KEY CLEAR
DO FORM (K_Screen + "SMQuickget") IF M.Nhan_Huy1 # 1 SELECT (_InSelect) POP KEY RETURN ENDIF M.Ten = ALLTRIM(UPPER(M.Ten)) IF EMPTY(M.Ten) SELECT (_InSelect) POP KEY RETURN
ENDIF _Key_F5 = ".T." IF !EMPTY(M.Ten) IF M.Opt # 1 IF !("%" $ M.Ten) OR !("_" $ M.Ten) M.Ten = M.Ten + "%" ENDIF
_Key_F5 = _Key_F5 + ".AND." + "(UPPER(" + _Ten + ") LIKE M.Ten)"
ELSE
_Key_F5 = _Key_F5 + ".AND." + "(M.Ten $ UPPER(" + _Ten + "))"
ENDIF ENDIF
SELECT * FROM &_Nguon WHERE &_Key_F5 INTO TABLE (K_Tmp + _Dich)
ON KEY LABEL ENTER DO Quick_Get_Chon WITH _Nguon, _Ma SELE (_Dich)
BROWSE ;
FONT M_Font_Name, M_Font_Size;
NOAPPEND NOMODIFY NODELETE WINDOW M_WinBrw ; TITLE IIF(m_Lan = 'V', "Loc ", ECode2String('SMLIB0045')) + STUFF(_Mess, 1, 1, LOWER(LEFT(_Mess,1))) +IIF(m_Lan = 'V', ". Enter-Chon, Esc-Quay ra", ECode2String('SMLIB0046'))
USE IN (_Dich)
ON KEY LABEL ENTER SELECT (_InSelect)
SET ORDER TO &_Order POP KEY
RETURN
* ... PROCEDURE Quick_Get_Chon ... * SubProcedure of Quick_Get
PARAMETER _Nguon, _Ma PRIVATE M.Ma, oldOrder oldOrder = SET("ORDER")
M.Ma = &_Ma SELE &_Nguon
SET ORDER TO &_Ma SEEK(M.Ma)
IF USED("K_PhTmp")
KEYBOARD CHR(23) &&Ctrl+W ENDIF
KEYBOARD CHR(23) SET ORDER TO &oldOrder RETURN &_Ma
* ... PROCEDURE PgUpDn_Ct ... * Chuyen len , xuong, ve dau, ve cuoi file chung tu.
PROCEDURE PgUpDn_Ct PARAMETER _Step
* _Step: 1: Chuyen xuong 1 chung tu * -1: Chuyen len 1 chung tu
* TOP: Chuyen ve chung tu dau tien
* BOTTOM: Chuyen den chung tu cuoi cung
PRIVATE Arr, i, nPro, _Value
*Visible=0,Order=96,Caption=Sl td3,English=Free,Width=60,Carry=0,Post=0 nPro = ALINES(Arr, StrPro, ",")
FOR i = 1 TO nPro
_pro = ALLTRIM(LEFT(Arr[i], AT('=', Arr[i]) - 1)) IF UPPER(_Pro) == UPPER(Cpro)
_value = ALLTRIM(RIGHT(Arr[i], LEN(Arr[i]) - AT('=', Arr[i]))) RETURN _Value ENDIF ENDFOR RETURN '' *--- Procedure I_Lookup --- PROCEDURE I_Lookup
PARAMETER _Obj, _Alias, _Field PRIVATE _Len, S
IF INLIST(LASTKEY(), 7, 127, 32) && Del va BackSpace RETURN ENDIF IF NOT USED('&_Alias') RETURN ENDIF s = UPPER(ALLTRIM(_Obj.Value)) _Len = LEN(s) SELECT (_ALias)
LOCATE FOR LEFT(&_Field, _Len) == s IF FOUND()
_Obj.Value = &_Field _Obj.selstart = _Len
_Obj.sellength = LEN(ALLTRIM(_Obj.Value)) - _Obj.selstart ENDIF
RETURN
*--- Procedure I_History --- PROCEDURE I_History
PARAMETERS _Form, _Obj
PRIVATE _Len, S,_StrForm, _StrSeek s = ALLTRIM(_Obj.Value) _Len = LEN(s)
IF INLIST(LASTKEY(), 7, 127, 32) &&OR _Len < 1 && Del va BackSpace
RETURN ENDIF
_strform = UPPER(JUSTFNAME(SYS(1271, _Form))) _strform = LEFT(_strform, AT('.', _strform) - 1)
_strSeek = PADR(_strform, FSIZE('Form', 'M_History')) SELECT M_History
SEEK _StrSeek
LOCATE REST WHILE Form = _StrSeek FOR LEFT(Value, _Len) == s IF FOUND()
_Obj.Value = Value _Obj.selstart = _Len
_Obj.sellength = LEN(ALLTRIM(_Obj.Value)) - _Obj.selstart ENDIF
RETURN
*--- Procedure U_History --- PROCEDURE U_History
PARAMETERS _Form, _Obj
s = ALLTRIM(_Obj.Value) _Len = LEN(s)
_strform = UPPER(JUSTFNAME(SYS(1271, _Form))) _strform = LEFT(_strform, AT('.', _strform) - 1)
_strSeek = PADR(_strform, FSIZE('Form', 'M_History')) SELECT M_History
SEEK _StrSeek
LOCATE REST WHILE Form = _StrSeek FOR LEFT(Value, _Len) == s IF FOUND()
RETURN ENDIF
APPEND BLANK
REPLACE Form WITH _StrForm, Value WITH s RETURN
*--- Procedure D_History --- PROCEDURE D_History
PARAMETERS _Form, _Obj
PRIVATE _Len, S,_StrForm, _StrSeek s = ALLTRIM(_Obj.Value) _Len = LEN(s)
_strform = UPPER(JUSTFNAME(SYS(1271, _Form))) _strform = LEFT(_strform, AT('.', _strform) - 1)
_strSeek = PADR(_strform, FSIZE('Form', 'M_History')) SELECT M_History
SEEK _StrSeek
LOCATE REST WHILE Form = _StrSeek FOR LEFT(Value, _Len) == s IF FOUND() DELETE ENDIF RETURN *--- Procedure Dien_giai_Key --- PROCEDURE Dien_Giai_key
PARAMETERS _Form, _Obj, nKeyCode, nShiftAltCtrl DO CASE
CASE nKeyCode = 85 and nShiftAltCtrl = 1 &&Shift F2 DO U_History WITH _Form, _Obj
CASE nKeyCode = 91 and nShiftAltCtrl = 1 &&Shift F8 DO D_History WITH _Form, _Obj
ENDCASE RETURN
*--- Function Num2Word2 --- FUNCTION Num2Words
LOCAL ix, cDecimals, cResult, cBuffer LOCAL cDigits, cTens, cScale
LOCAL nScale, nInteger, nHundreds, nTens, nDigit
m.cDigits = 'Zero One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve Thirteen Fourteen Fifteen Sixteen
SeventeenEighteen NineTeen '
m.cTens = 'Ten Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety '
m.cScale = ' Thousand Million Billion Trillion *********' m.nInteger = INT(m.nNumber)
m.cDecimals = ' and '+PADL(LTRIM(STR(ROUND(MOD(m.nNumber, 1), 2)*100)), 2, '0')+'/100' m.cResult = '' m.ix = 0 DO WHILE m.nInteger>0 m.nScale = MOD(m.nInteger, 1000) m.nInteger = INT(m.nInteger/1000) m.nHundreds = INT(m.nScale/100) m.nTens = MOD(m.nScale, 100) m.cBuffer = '' IF m.nHundreds>0
m.cBuffer = TRIM(SUBSTR(m.cDigits, m.nHundreds*9+1, 9))+' Hundred '
ENDIF DO CASE
CASE m.nTens=0 CASE m.nTens<20
m.cBuffer = m.cBuffer+TRIM(SUBSTR(m.cDigits, m.nTens*9+1, 9)) OTHERWISE
m.nDigit = MOD(m.nTens, 10) m.nTens = INT(m.nTens/10)-1
m.cBuffer = m.cBuffer+TRIM(SUBSTR(m.cTens, m.nTens*9+1, 9)) IF m.nDigit>0
m.cBuffer = m.cBuffer+' '+TRIM(SUBSTR(m.cDigits, m.nDigit*9+1, 9))
ENDIF ENDCASE IF m.ix>0
m.cResult = TRIM(TRIM(m.cBuffer)+' '+TRIM(SUBSTR(m.cScale, m.ix*9+1, 9))+' '+m.cResult)
ELSE
m.cResult = TRIM(m.cBuffer) ENDIF
m.ix = m.ix+1 ENDDO IF EMPTY(m.cResult) m.cResult = TRIM(LEFT(m.cDigits, 9)) ENDIF RETURN m.cResult+m.cDecimals ENDFUNC *--- Function ChkRights --- PROCEDURE ChkRights PARAMETERS _Status PRIVATE Kq Kq = .T. DO CASE CASE _Status = [M] IF !(M_Menu_id $ M_R_Add) Kq = .F.
_Mess = IIF(M_Lan =[V], "Không đợc thêm mới trong mục này !",;
"Can not add new, you may have not permission") Msgbox(_Mess, 64)
ENDIF CASE _Status = [S]
IF !(M_Menu_id $ M_R_Edit) Kq = .F.
_Mess = IIF(M_Lan =[V], "Không đợc thêm mới trong mục này !",;
"Can not add new, you may have not permission") Msgbox(_Mess, 64)
ENDIF CASE _Status = [X]
IF !(M_Menu_id $ M_R_Del) Kq = .F.
_Mess = IIF(M_Lan =[V], "Không đợc thêm mới trong mục này !",;
"Can not add new, you may have not permission") Msgbox(_Mess, 64) ENDIF ENDCASE RETURN Kq FUNCTION ECode2String PARAMETERS _ID _OldAlias = SELECT()
SELECT Tranlan IF SEEK(_Id) _string = ALLTRIM(Tranlan.EsTring) ELSE _string = [] ENDIF USE IN Tranlan SELECT(_OldAlias) RETURN _string PROCEDURE SetItemhead M.Ma_vv = M.Ma_vv_i M.Ma_Phi = M.Ma_Phi_i M.Ma_Ku = M.Ma_Ku_i M.Ma_Ctr = M.Ma_Ctr_i M.Ma_Hm = M.Ma_Hm_i M.Ma_Dsx = M.Ma_Dsx_I M.Ma_Bpht = M.Ma_Bpht_i M.Ma_Hd = M.Ma_Hd_i M.Ma_SP = M.Ma_SP_i *+ M.Ma_Td = M.Ma_Td_i M.Ma_Td2 = M.Ma_Td2_i M.Ma_Td3 = M.Ma_Td3_i M.Ma_Td4 = M.Ma_Td4_I M.Ma_Td5 = M.Ma_Td5_i M.SL_Td = M.SL_Td_i M.Sl_Td2 = M.SL_Td2_i M.Sl_Td3 = M.SL_Td3_i M.Sl_Td4 = M.SL_Td4_I M.Sl_Td5 = M.SL_Td_i M.Ngay_Td = M.Ngay_Td_i M.Ngay_Td2 = M.Ngay_Td2_i M.Ngay_Td3 = M.Ngay_Td3_i M.Ngay_Td4 = M.Ngay_Td4_i M.Ngay_Td5 = M.Ngay_Td5_i M.GC_Td = M.GC_TD_i M.GC_Td2 = M.GC_TD2_i M.GC_Td3 = M.GC_TD3_i M.GC_Td4 = M.GC_TD4_i M.GC_Td5 = M.GC_TD5_i
RETURN *!* --- *!* FUNCTION FHe_so_luong *!* --- FUNCTION FHe_so_luong PARAMETERS _ngay_ct
PRIVATE _use_dm, _inselect, _He_so _inselect = SELECT()
_use_dm = .F.
IF !USED("M_Dmhsluong")
USE (K_cod + [Dmhsluong]) ORDER Ngay_hl ALIAS M_Dmhsluong IN 0
_use_dm = .T. ENDIF
SELECT M_Dmhsluong
SET ORDER TO Ngay_hl DESC SEEK DTOS(_ngay_ct) _He_so = M_Dmhsluong.He_so IF _use_dm USE IN M_Dmhsluong ENDIF SELECT(_inselect) RETURN _He_so