4. 1– Danh sách các Form thiết kế trong chương trình
4.2.2 1– Báo cáo Lương Tháng
KẾT LUẬN
Mặc dù việc ứng dụng tin học trong quản lý ở nước ta vẫn còn rất mới mẻ, nhất là trong công tác quản lý chấm công với sự hỗ trợ của thiết bị thông minh cũng như phần mềm vẫn còn rất mới mẻ. Với việc tin học hoá trong công tác quản lý nhân sự ngày càng được ứng dụng nhiều, thì việc cần thiết phải tự động hoá chấm công là điều tất yếu. Với đề tài này em xây dựng trong phạm vi hẹp đó là hệ thống chấm công cho công ty cổ phần thương mại AZLAZ, đã phần nào đáp ứng được trong công tác quản lý chấm công cho công ty.
Các công việc trong hệ thống đã được trình bày tương đối cụ thể, từ khâu khảo sát nghiệp vụ và phân tích hệ thống đến thiết kế hệ thống đã đảm bảo được cơ bản về yêu cầu và phân tích hệ thống. Trước khi phân tích hệ thống thì hệ thống đã được tách nhỏ dễ hiểu, để làm từ phần nhỏ lại được tổng hợp thành một phần lớn và tất cả tạo thành một hệ thống tương đối hoàn chỉnh.
Mặc dù em đã cố gắng hết sức để hoàn thiện đề tài xong do thời gian có hạn và trình độ hiểu biết về thực tế chưa sâu vốn kinh nghiệm còn ít nên chương trình còn một số bất cập cần bổ sung góp ý. Rất mong toàn thể Thầy cô giáo cũng như các bạn trong lớp bổ sung và góp ý để chương trình của em ngày càng hoàn thiện hơn.
Em xin chân thành cảm ơn cô giáo Nguyễn Thanh Hương cùngtoàn thể các Thầy cô giáo trong khoa công nghệ thông tin trường ĐH Kinh tế quôc dân và tập thể nhân viên trong công ty cổ phần thương mại AZLAZ đã nhiệt tình giúp đỡ em trong thời gian thực tập vừa qua.
HƯỚNG PHÁT TRIỂN TRONG TƯƠNG LAI
Hiện tại, hệ thống quản lý thời gian bằng thẻ từ cũng đã phần nào đáp ứng được trong công tác quản lý chấm công cho công ty cổ phần thương mại AZLAZ. Đề tài này mới chỉ dừng lại ở một phần nhỏ trong toàn bộ dự án tin học hoá văn phòng của công ty.
Trong tương lai khi thị trường điện tử phát triển mạnh, việc thay thế đầu đọc thẻ từ bằng các chủng loại đầu đọc thông minh hơn là điều tất yếu. Nhất là khi thị trường thẻ ATM, thẻ Chíp, thẻ Thông minh phát triển, việc tích hợp các loại thẻ hiện đại chắc chắn sẽ nâng cao rất nhiều về độ chính xác cũng như quy mô nhân sự của công ty.
Phần mềm hiện tại mới chỉ dừng lại ở việc ứng dụng cơ sở dữ liệu Access, nhưng chắc chắn trong thời gian tới cơ sở dữ liệu sẽ được chuyển sang một cơ sở dữ liệu lớn hơn đó là cơ sở dữ liệu SQL Server. Cơ sở dữ liệu này cho phép chúng ta quản lý một quy mô nhân sự lớn hơn, cũng như giúp cho việc tăng tốc độ tìm kiếm thông tin nhân sự tốt hơn.
PHỤ LỤC
TÀI LIỆU THAM KHẢO
(1). PGS-TS Đặng Minh Ất chủ biên (2007), ‘Bài giảng môn Phân tích, thiết kế và cài đặt HTTT’, Đại học kinh tế quốc dân.
(2). Nguyễn Thị Ngọc Mai (2000), ‘Lập Trình Cơ Sở Dữ Liệu Với Visual Basic 6.0’, Nhà xuất bản giáo dục.
(3). GS-TS Bạch Hưng Khang (1991), ’Phân tích thiết kế và cài đặt hệ thống quản lý’, Viện tin học.
(4). By Neil FitzGerald, Ryan Marples, Naisan Geula, Bob Coates, James Edkins, Michael Voloshko, Joe Estes, Kathryn Hunt, Steve Lucas,
Roger Sanborn (2004), ‘SPECIAL EDITION USING Crystal Reports® 8’, Publisher: Que.
ĐOẠN CODE CHƯƠNG TRÌNH:
Sử Lý Giờ Vào Ra Khi Nhân Viên Quẹt Thẻ
Option Explicit Option Compare Text Dim strMaNV As String Dim strTieuDe As String Dim intSoLan As Integer Dim intTime As Integer Public intKT As Byte Dim intYN As Byte
Dim NhapNhay As Boolean
Dim rstSoLan As New ADODB.Recordset Dim rstGioVaoRa As New ADODB.Recordset Dim rstHienThi As New ADODB.Recordset
Dim rstThietlapDauDoc As New ADODB.Recordset Private Sub NhapGioVaoRa()
KetNoi
RS.Open "Select MaNV from HOSO", DB, 3, 3
RS.Find "MaNV='" & strMaNV & "'", 0, adSearchForward, 0 If Not RS.EOF Then
rstGioVaoRa.Open "Select * from GIOVAORA where Manv='" & strMaNV & "' And NgayLam=#" & Format(Date, "mm/dd/yyyy") & "#", DB, 3, 3
If (rstGioVaoRa.EOF) Then intKT = 0
rstSoLan.Open "select Count(MaNV) as SL from giovaora where Manv='" & strMaNV & "' And NgayLam=#" & Format(Date, "mm/dd/yyyy") & "#", DB, 3, 3
intSoLan = 0
If (Not rstSoLan.EOF) Then
rstHienThi.Open "Select hs.Manv,Hoten,TenPB From Hoso HS,PhongBan PB Where hs.Mapb=PB.Mapb And HS.MaNV='" & strMaNV & "'", DB, 3, 3
If (intSoLan = 0) Then
SQL = "INSERT INTO GIOVAORA(Manv,NgayLam,TGVao) VALUES('" & strMaNV & "',#" & Format(Date, "dd/mm/yyyy") & "#,#" & Format(Time(), "hh:nn") & "#)"
DB.Execute SQL
lblGioVaoRa.Caption = "Giê Vµo LÇn 1: " & Format(Time(), "Hh:nn") & "" Else
If (Not rstGioVaoRa.EOF) Then rstGioVaoRa.MoveLast
If (rstGioVaoRa.Fields("TGRa") = False) Then intKT = 1 Else intKT = 0 End If End If If (intSoLan = 1) Then If (intKT = 1) Then
If (DateDiff("s", Format(rstGioVaoRa!TGVao, "hh:nn"), Format(Time(), "Hh:Nn")) > 10) Then
SQL = "UPDATE GIOVAORA set TGRa=#" & Format(Time(), "hh:nn") & "# where Manv='" & strMaNV & "' And NgayLam=#" & Format(Date, "mm/dd/yyyy") & "#"
DB.Execute SQL
lblGioVaoRa.Caption = "Giê Ra LÇn 1: " & Format(Time(), "Hh:nn") & "" Else
FrmThongBao.lbThongBao = "B¹n míi quÑt thÎ" intYN = 0
End If Else
SQL = "INSERT INTO GIOVAORA(MaNV,NgayLam,TGVao) VALUES('" & strMaNV & "',#" & Format(Date, "dd/mm/yyyy") & "#,#" & Format(Time(), "hh:nn") & "#)"
End If End If
If (intSoLan = 2) Then If (intKT = 1) Then
If (DateDiff("s", Format(rstGioVaoRa!TGVao, "hh:nn"), Format(Time(), "Hh:Nn")) > 10) Then
SQL = "UPDATE GIOVAORA set TGRa=#" & Format(Time(), "hh:nn") & "# where Manv='" & strMaNV & "' And NgayLam=#" & Format(Date, "mm/dd/yyyy") & "#" DB.Execute SQL
lblGioVaoRa.Caption = "Giê Ra LÇn 2: " & Format(Time(), "Hh:nn") & "" Else
FrmThongBao.lbThongBao = "B¹n míi quÑt thÎ" intYN = 0
End If Else
SQL = "INSERT INTO GIOVAORA(MaNV,NgayLam,TGVao) VALUES('" & strMaNV & "',#" & Format(Date, "dd/mm/yyyy") & "#,#" & Format(Time(), "hh:nn") & "#)"
DB.Execute SQL
lblGioVaoRa.Caption = "Giê Vµo LÇn 3: " & Format(Time(), "Hh:nn") & "" End If
End If
If (intSoLan = 3) Then If (intKT = 1) Then
If (DateDiff("s", Format(rstGioVaoRa!TGVao, "hh:nn"), Format(Time(), "Hh:Nn")) > 10) Then
SQL = "UPDATE GIOVAORA set TGRa=#" & Format(Time(), "hh:nn") & "# where Manv='" & strMaNV & "' And NgayLam=#" & Format(Date, "mm/dd/yyyy") & "#"
SQL = "INSERT INTO GIOVAORA(MaNV,NgayLam,TGVao) VALUES('" & strMaNV & "',#" & Format(Date, "dd/mm/yyyy") & "#,#" & Format(Time(), "hh:nn") & "#)"
DB.Execute SQL
lblGioVaoRa.Caption = "Giê Vµo LÇn 4: " & Format(Time(), "Hh:nn") & "" End If
End If
If (intSoLan = 4) Then If (intKT = 1) Then
SQL = "UPDATE GIOVAORA set TGRa=#" & Format(Time(), "hh:nn") & "# where Manv='" & strMaNV & "' And NgayLam=#" & Format(Date, "mm/dd/yyyy") & "#" DB.Execute SQL
lblGioVaoRa.Caption = "Giê Ra LÇn 4:" & Format(Time(), "Hh:nn") & "" Else FrmThongBao.lbThongBao = "Kh«ng Thµnh C«ng" intYN = 0 End If End If End If If (intYN = 1) Then LoadAnh frmGioVaoRa txtHoTen.Text = rstHienThi!Hoten txtPhongBan.Text = rstHienThi!TenPB
FrmThongBao.lbThongBao.Caption = "ThÎ " & strMaNV & " Thµnh C«ng" Else frmGioVaoRa.imgPhoto.Picture = LoadPicture() lblGioVaoRa.Caption = "" txtMaNV = "" txtHoTen = "" txtPhongBan = "" End If rstGioVaoRa.Close rstHienThi.Close Else
frmGioVaoRa.txtMaNV.Text = "" frmGioVaoRa.txtHoTen.Text = "" frmGioVaoRa.txtPhongBan.Text = "" frmGioVaoRa.txtMaNV.SetFocus End If
'Dat form thong bao dung vi tri
FrmThongBao.Move Screen.Width / 2 - 4300, 140, 8600, 1100 FrmThongBao.Show vbModal
RS.Close DongKetNoi End Sub
Private Sub Form_Load() intTime = 0
'Gan duong dan khi da thay doi
DuongDan = CStr(clsReg.QueryValue(clsReg.HKEY_LOCAL_MACHINE, "Software\Xuan_Nam\Database", "Path"))
' Neu dung dan chua dang ky thi gan duong dan mac dinh
If DuongDan = "" Then DuongDan = App.Path & "\Database\AZLAZ.MDB" KetNoi
rstThietlapDauDoc.Open "Select * From ThietLapCong", DB, 3, 3 On Error GoTo Port_Err
With rstThietlapDauDoc
If Not nlReader.PortOpen Then nlReader.PortOpen = True .MoveLast
If .Fields("ComPort").Value = "" Then nlReader.CommPort = .Fields("ComPort").Value
nlReader.Track = .Fields("Track").Value End If
Private Sub Form_Unload(Cancel As Integer) Unload Me
End Sub
Private Sub nlReader_OnComm() strMaNV = nlReader.Text NhapGioVaoRa
strMaNV = "" End Sub
Private Sub tmrChay_Timer() Dim i As Integer Dim j As Integer j = 0 intTime = intTime + 1 If (intTime <= 32) Then For i = 1 To intTime a(i).Visible = True
NhapNhay = Not (NhapNhay) j = j + 1 Next If (j = 32) Then For i = 1 To 32 a(i).Visible = False Next End If Else
intTime = intTime Mod 32 End If
End Sub
Private Sub txtMaNV_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then
strMaNV = txtMaNV.Text NhapGioVaoRa
strMaNV = "" End If