Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 141 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
141
Dung lượng
4,09 MB
Nội dung
ĐẠI HỌC QUỐC GIA TPHCM TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM -oOo - DƯƠNG MIÊN KA HỆ THỐNG QUẢN LÝ NHÂN SỰ DỰA VÀO ẢNH VÂN TAY LUẬN VĂN THẠC SĨ TP.HCM THÁNG 12 – NĂM 2009 ĐẠI HỌC QUỐC GIA TPHCM TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM -oOo - DƯƠNG MIÊN KA HỆ THỐNG QUẢN LÝ NHÂN SỰ DỰA VÀO ẢNH VÂN TAY CHUYÊN NGÀNH : TỰ ĐỘNG HÓA LUẬN VĂN THẠC SĨ TP.HCM THÁNG 12 NĂM 2009 CÔNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học :GVC.TS NGUYỄN ĐỨC THÀNH Chữ ký: Cán chấm phản biện : PGS.TS DƯƠNG HOÀI NGHĨA Chữ ký: Cán chấm phản biện : TS.TRƯƠNG ĐÌNH CHÂU Chữ ký: Luận văn thạc sĩ bảo vệ HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ, TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày tháng năm ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HOÀ XÃ HỘI CHỦ NGHIÃ VIỆT NAM Độc Lập - Tự Do - Hạnh Phúc -oOo Tp HCM, ngày 15 tháng 12 năm 2009 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: DƯƠNG MIÊN KA Giới tính : Ngày, tháng, năm sinh : 01/01/1983 Nam Nơi sinh : Phú Yên Chuyên ngành : Tự Động Hóa Khoá (Năm trúng tuyển) : 2007 1- TÊN ĐỀ TÀI: “HỆ THỐNG QUẢN LÝ NHÂN SỰ DỰA VÀO ẢNH VÂN TAY” 2- NHIỆM VỤ LUẬN VĂN: Nhiệm vụ nghiên cứu đề tài: • Tìm hiểu cơng nghệ nhận dạng sinh trắc học, vấn đề nhận dạng sinh trắc học • Tìm hiểu nhận dạng vân tay: phương pháp nhận dạng, giải thuật nhận dạng, ứng dụng lý thuyết Markov ẩn nhận dạng vân tay • Ứng dụng giải thuật nhận dạng vân tay vừa nghiên cứu để viết chương trình quản lý nhân (phần mềm chấm công) PC cho quan, công ty hay nhà máy dựa vào ảnh vân tay lấy trực tiếp từ đầu đọc vân tay nhân viên, xuất liệu thông tin cá nhân nhân viên như: Tên, Phòng ban, chức vụ, điện thoại, MSNV (mã số nhân viên) • Chương trình Quản lý nhân thực chức như: ghi nhận kiện vào, quan, báo trễ, sớm, lưu trữ thông tin vào, nhân viên để phục vụ cho việc tính tốn thời gian làm thực tế ngày để tính lương cho nhân viên 3- NGÀY GIAO NHIỆM VỤ : 4- NGÀY HOÀN THÀNH NHIỆM VỤ : 5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : GVC.TS NGUYỄN ĐỨC THÀNH Nội dung đề cương Luận văn thạc sĩ Hội Đồng Chuyên Ngành thông qua CÁN BỘ HƯỚNG DẪN (Họ tên chữ ký) GVC.TS.NGUYỄN ĐỨC THÀNH CHỦ NHIỆM BỘ MÔN QUẢN LÝ CHUYÊN NGÀNH (Họ tên chữ ký) GVC.TS.NGUYỄN ĐỨC THÀNH LUẬN VĂN THẠC SỸ - TỰ ĐỘNG HĨA LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành đến : Thầy GVC TS Nguyễn Đức Thành trực tiếp hướng dẫn em thực đề tài Những nhận xét dẫn thường xuyên thầy nội dung đề tài em thật quí báu, em học thầy cách triển khai ý tưởng, cách trình bày cách phân chia cơng việc lớn cách hợp lý Em xin cảm ơn quí thầy, cô Khoa Điện- Điện Tử Trường ĐH Bách Khoa Tp Hồ Chí Minh q thầy, hướng dẫn, dạy dỗ em suốt trình học tập trường Xin cảm ơn quý thầy cô trường ĐH Công nghiệp TPHCM tạo điều kiện thuận lợi giúp đỡ mặt tinh thần trình thực đề tài Xin gửi lời cảm ơn đến anh Ngọc Mai ( Trường CĐ Lý Tự Trọng) hỗ trợ em tài liệu cho đề tài Xin gửi lời cảm ơn đến ba mẹ chia vật chất tinh thần để thực thành công đề tài Xin cảm ơn Ngày 30 tháng 11 năm 2009 Học viên thực DƯƠNG MIÊN KA Lớp Cao học TĐH Khóa 2007 HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 LUẬN VĂN THẠC SỸ - TỰ ĐỘNG HÓA TÓM TẮT LUẬN VĂN Đề tài nghiên cứu nhận dạng vân tay dựa vào mơ hình Markov ẩn ứng dụng nhận dạng vân tay để viết chương trình hệ thống quản nhân sự, chấm công cho nhân viên công ty, nhà máy hay quan… Để làm kiến thức cho đề tài, đề tài tìm hiểu sinh trắc học tổng quan, so sánh cơng nghệ sinh trắc học, từ chọn lĩnh vực nhận dạng vân tay cho đề tài Đề tài tìm hiểu cấu trúc hệ thống quản lý nhân sử dụng quan, nhà máy… tìm hiểu lý thuyết nhận dạng vân tay tổng quan mơ hình Markov ẩn để ứng dụng mơ hình Markov ẩn vào thuật toán nhận dạng Kết đề tài chương trình (phần mềm) quản lý nhân (chấm công) dựa vào ảnh vân tay nhận dạng kết nối với sở liệu Access để quản lý thông tin cá nhân nhân viên viết ngôn ngữ VC++6.0, kết xuất thông tin lên chương trình lên LCD HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 LUẬN VĂN THẠC SỸ - TỰ ĐỘNG HÓA CHƯƠNG CHƯƠNG CƠ SỞ NGHIÊN CỨU VÀ MỤC ĐÍCH CỦA LUẬN VĂN 1.1 Cơ sở hình thành luận văn 1.2 Mục tiêu nghiên cứu 1.3 Phạm vi đối tượng nghiên cứu 1.4 Nội dung nghiên cứu đề tài 1.5 Phương pháp nghiên cứu 1.6 Cấu trúc luận văn HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang LUẬN VĂN THẠC SỸ - TỰ ĐỘNG HÓA CHƯƠNG 1.1 Cơ sở hình thành luận văn Ngày cơng nghệ điện tử, kỹ thuật máy tính sinh trắc học ngày phát triển cho phép nhà khoa học tạo sản phẩm cơng nghệ cao Tích hợp công nghệ nhận dạng sinh trắc học vào sản phẩm, điều giúp giải nhu cầu cấp thiết xã hội lĩnh vực nhận dạng vân tay lĩnh vực rộng mở, tầm ứng dụng cao nhiều lĩnh vực từ an ninh, pháp lý sản phẩm thương mại Hệ thống quản lý nhân dựa vào ảnh vân tay hệ thống điển hình cho việc ứng dụng cơng nghệ nhận dạng vân tay chế tạo dùng rộng rãi giới Việt Nam Đây lĩnh vực ứng dụng hứa hẹn nhiều tiềm tương lai ngày nhiều cơng ty, nhà máy tăng cường trang bị hệ thống truy cập vào ra, quản lý giấc nhân viên Tuy nghiên cứu nhiều nơi để ngày hồn thiện cơng nghệ nhận dạng vân tay ứng dụng vào đời sống xã hội, nhà khoa học khơng ngừng nghiên cứu để tìm giải thuật, công nghệ tiến hơn, ứng dụng ưu việt nhận dạng vân tay Cũng xu hướng đó, Việt Nam việc nghiên cứu nhận dạng vân tay thực số trường đại học, chưa có kết thực mang tính ứng dụng cao Những hệ thống truy cập vào ra, quản lý nhân vân tay Việt Nam đa phần có xuất xứ từ nước ngồi Ở nước nhiều cơng ty Việt Nam cung cấp hệ thống quản lý nhân dựa vào ảnh vân tay hệ thống dừng lại dạng phần mềm quản lý nhân Việt Nam viết cịn phải tích hợp với máy chấm cơng vân tay nhập từ nước hệ thống hồn chỉnh Điều cho thấy việc nghiên cứu nhận dạng vân tay ứng dụng vào hệ thống quản lý nhân mẽ nước Với nhận xét trên, cần thiết cần phải nghiên cứu việc nhận dạng vân tay ứng dụng vào sản phẩm thương mại mà hệ thống quản lý nhân lĩnh vực tiềm năng, lẽ đó, đề tài tập trung vào thực việc tìm hiểu nghiên cứu lĩnh vực nhận dạng vân tay, ứng dụng vào hệ thống quản lý nhân Đề tài nghiên cứu trường Đại Học Bách Khoa TPHCM bước đầu, tảng cho khóa sau để thực hoàn chỉnh hệ thống quản lý nhân dựa vào nhận dạng vân tay ứng dụng xã hội HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang LUẬN VĂN THẠC SỸ - TỰ ĐỘNG HÓA CHƯƠNG 1.2 Mục tiêu nghiên cứu Mục tiêu nghiên cứu đề tài tìm hiểu cơng nghệ nhận dạng sinh trắc học, vấn đề nhận dạng sinh trắc học Mục tiêu thứ hai tập trung vào tìm hiểu cơng nghệ nhận dạng vân tay: phương pháp nhận dạng, giải thuật nhận dạng, ứng dụng lý thuyết Markov ẩn nhận dạng vân tay Mục tiêu thứ ba thiết lập chương trình nhận dạng vân tay Và cuối thiết lập chương trình quản lý nhân dựa vào chương trình nhận dạng vân tay thiết lập 1.3 Phạm vi đối tượng nghiên cứu Luận văn nghiên cứu tìm hiểu lý thuyết nhận dạng vân tay, hệ thống quản lý nhân dựa vào ảnh vân tay kết cuối chương trình ứng dụng hệ thống quản lý nhân dựa vào ảnh vân tay Với sở liệu công ty giả định khoảng vài chục đến hàng trăm người Kết cho phép nhận dạng vân tay người truy cập (nhân viên công ty) hiển thị thông tin người truy cập hệ thống nhận dạng vân tay người đó, cập nhật thời gian vào ra, xuất tín hiệu điều khiển mở cửa… 1.4 Nội dung nghiên cứu đề tài • Tìm hiểu sinh trắc học • Tìm hiểu hệ thống quản lý nhân vào quan, nhà máy dựa vào nhận dạng vân tay • Tìm hiểu lý thuyết nhận dạng vân tay • Tìm hiểu mơ hình Markov ẩn HMM • Ứng dụng mơ hình Markov ẩn HMM vào nhận dạng vân tay • Viết chương trình nhận dạng vân tay • Viết chương trình ứng dụng hệ thống quản lý nhân dựa vào ảnh vân tay • Thiết kế kết nối với LCD hiển thị kết nhận dạng LCD 1.5 Phương pháp nghiên cứu • Sử dụng đầu đọc vân tay Microsoft Fingerprint Reader đề tài để thu nhận ảnh vân tay đầu vào cho việc xử lý nhận dạng • Sử dụng ngơn ngữ Visual C ++ để lập trình chương trình ứng dụng : “Hệ Thống Quản Lý Dựa Vào Ảnh Vân Tay” HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang LUẬN VĂN THẠC SỸ - TỰ ĐỘNG HÓA CHƯƠNG 1.6 Cấu trúc luận văn Luận văn gồm chương trình bày theo thứ tự sau: Chương 1: Cơ sở nghiên cứu mục đích luận văn Chương 2: Tổng quan hệ thống sinh trắc học Chương 3: Tổng quan nhận dạng vân tay Chương 4: Lý thuyết nhận dạng vân tay Chương 5: Mơ hình Markov ứng dụng vào hệ thống nhận dạng Chương 6: Hệ thống nhận dạng vân tay Chương 7: Hệ thống quản lý nhân dựa vào ảnh vân tay Chương 8: Kết luận hướng phát triển đề tài HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ //=============================KET THUC DU LIEU=================================// } else { m_outHovaten=""; m_outNgaysinh=""; m_outPhongban=""; m_outChucvu=""; m_outDienthoai=""; m_outMSNV=""; UpdateData(FALSE); Send_String('3'); MessageBox("VAN TAY CUA NGUOI LA !!! \n BAN KHONG CO QUYEN TRUY CAP VAO HE THONG"); m_buttongvao.ShowWindow(FALSE); m_buttongra.ShowWindow(FALSE); } c=0; if (quansat) { SetTimer(2,500, NULL); quansat = false; }; } } else MessageBox("BAN PHAI CHON MODE NHAN DANG HOAC HUAN LUYEN");} //XOA ANH void CLUAN_VANView::OnXoaAnh() { Invalidate(); } //MO FILE HINH void CLUAN_VANView::OnOpenImage() { Load_image(); m_inHovaten = ""; m_inNgaysinh =""; m_inPhongban = ""; m_inChucvu = ""; m_inDienthoai = ""; m_inMSNV = ""; UpdateData(FALSE); c = 1; } //NHAP DU LIEU THONG TIN CA NHAN void CLUAN_VANView::OnNhap() { // Lay tro toi ban ghi CRecordset* pSet = OnGetRecordset(); // Lay ID cho ban ghi moi long m_lnewID = m_pSet->GetMaxID()+ 1; // Them ban ghi moi HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 121 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ m_pSet->AddNew(); // Thiet lap ID ban ghi moi m_pSet->m_ID = m_lnewID; // Luu ban ghi moi UpdateData(TRUE); m_pSet->m_Ho_va_Ten= m_inHovaten; m_pSet->m_Ngay_sinh= m_inNgaysinh; m_pSet->m_Phong_ban= m_inPhongban; m_pSet->m_Chuc_vu= m_inChucvu; m_pSet->m_Dien_thoai= m_inDienthoai; m_pSet->m_MSNV= m_inMSNV; m_pSet->Update(); // Refresh tap ban ghi m_pSet->Requery(); // Di chuyen toi ban ghi moi m_pSet->MoveLast(); index_image=0;//So thu tu cua anh mau folder while (!m_pSet->IsEOF()) { ten_nguoi=m_pSet->m_Ho_va_Ten; S_name[num_name]=ten_nguoi; num_name ++; m_pSet->MoveNext(); } MessageBox("DA NHAP XONG THONG TIN CA NHAN"); } void CLUAN_VANView::OnTimer(UINT nIDEvent) { if (nIDEvent == 1) { image = cvQueryFrame(capture); CvSize size = cvGetSize(image); UpdateData(TRUE); cvSaveImage("image.bmp", image); cvSaveImage("image.bmp",image); CaptureDisplayOneFrame("image.bmp",1); }; if (nIDEvent == 2) { UpdateData(true); NhandangOnline_Temp(); UpdateData(false); }; if (nIDEvent == 3) { if (nhandang_xong) { // Out32(PARA_DATA, 0xFF); nhandang_xong = false; KillTimer(3); } }; HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 122 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ CRecordView::OnTimer(nIDEvent); } // XEM THONG TIN TRONG CO SO DU LIEU void CLUAN_VANView::OnViewDatabase() { Database m_dlg; if(m_dlg.DoModal()==IDOK){ } } //CO SO DU LIEU THONG TIN CA NHAN void CLUAN_VANView::OnDatabase() { Database m_dlg; if(m_dlg.DoModal()==IDOK){ } } void CLUAN_VANView::OnNhap1() { // Lay tro tro toi ban ghi CRecordset* pSet1 = OnGetRecordset(); // Lay ID cua ban ghi moi long m_lnewID = m_pSet->GetMaxID()+ 1; // m_pSet->RefreshRowset(); // Them ban ghi moi m_pSet->AddNew(); // Gan ID cho ban ghi moi m_pSet->m_ID = m_lnewID; // Luu ban ghi moi UpdateData(TRUE); m_pSet->m_Ho_va_Ten= m_inHovaten; m_pSet->m_Ngay_sinh= m_inNgaysinh; m_pSet->m_Phong_ban= m_inPhongban; m_pSet->m_Chuc_vu= m_inChucvu; m_pSet->m_Dien_thoai= m_inDienthoai; m_pSet->m_MSNV= m_inMSNV; m_pSet->Update(); // Refresh tap hop ban ghi m_pSet->Requery(); // Di chuyen toi ban ghi moi m_pSet->MoveLast(); //Update the form index_image=0; //So thu tu cua anh mau folder while (!m_pSet->IsEOF()) { ten_nguoi=m_pSet->m_Ho_va_Ten; S_name[num_name]=ten_nguoi; num_name ++; m_pSet->MoveNext(); } MessageBox("Thong tin ca nhan da nhap xong "); } //=======================XU LY SU KIEN KHI NHAN BUTTON OK===========================// HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 123 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ void CLUAN_VANView::OnOkMode() { UpdateData(TRUE); if (m_Hoc == TRUE ) { // Cho phep hien thi cat nut nhan che HOC //m_Nhan_dang == FALSE; m_Button_nhan_dang.ShowWindow(FALSE); m_Lay_mau.ShowWindow(TRUE); m_Huan_luyen.ShowWindow(TRUE); m_hoc.ShowWindow(TRUE); m_nhap.ShowWindow(TRUE); UpdateData(FALSE); a=1; } else { //Khong cho phep hien thi cac nut nhan che HOC m_Lay_mau.ShowWindow(FALSE); m_Huan_luyen.ShowWindow(FALSE); m_nhap.ShowWindow(FALSE); m_hoc.ShowWindow(FALSE); UpdateData(FALSE); }; if(m_Nhan_dang == TRUE) { //Khong cho phep hien thi cac nut nhan che NHAN DANG //m_Hoc == FALSE; m_Lay_mau.ShowWindow (FALSE); m_Huan_luyen.ShowWindow(FALSE); m_hoc.ShowWindow(FALSE); m_Button_nhan_dang.ShowWindow(TRUE); // hien thi nut nhan dang UpdateData(FALSE); a=1; } else { m_Button_nhan_dang.ShowWindow(FALSE); // tat nut nhan dang } } //======================XU LY SU KIEN KHI CHON CHE DO ONLINE=======================// void CLUAN_VANView::OnOnline() { if (!online) { SetDlgItemText(IDC_ONLINE, "OFFLINE"); //doi chu Online Offline m_Button_nhan_dang_online.ShowWindow(TRUE); m_Button_lay_mau_online.ShowWindow(TRUE); m_Button_mo_file_hinh.ShowWindow(FALSE); online = true; ketthuc_online = false; CString folderRoot = "C:/Temp_process/"; CString executeFile = folderRoot + "GrFingerXSampleVB6.exe"; ShellExecute(NULL, "open", executeFile, NULL,NULL,SW_SHOWDEFAULT); } else HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 124 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ { SetDlgItemText(IDC_ONLINE, "ONLINE"); m_Button_nhan_dang_online.ShowWindow(FALSE); m_Button_lay_mau_online.ShowWindow(FALSE); m_Button_mo_file_hinh.ShowWindow(TRUE); online = FALSE; } } //===================================LAY MAU ONLINE===============================// void CLUAN_VANView::OnLayMauOnline() { // TODO: Add your control notification handler code here CString folderRoot = "C:/Temp_process/"; CFileStatus status; CString sFile(folderRoot + "ba1.txt"); // ba1 CString msg; CStdioFile file; CString sRecord; { if(!CFile ::GetStatus(sFile, status)) { msg.Format("%s doesn't exist", sFile); AfxMessageBox(msg); } else { if (!file.Open(sFile,0, NULL)) { msg.Format("%s : FAILT TO OPEN", sFile); AfxMessageBox(msg); } else { file.ReadString(sRecord); file.Close(); } } } while (sRecord != "0"); Load_image_online(); m_inHovaten = ""; m_inNgaysinh =""; m_inPhongban = ""; m_inChucvu = ""; m_inDienthoai = ""; m_inMSNV = ""; UpdateData(FALSE); GetDlgItem(IDC_HUAN_LUYEN)->EnableWindow(false); c = 1; } //==================LOAD ANH VAO KHUNG HINH O CHE DO ONLINE======================// void CLUAN_VANView::Load_image_online() { CString folderRoot = "C:/Temp_process/"; CString defaultPath = folderRoot + "default.bmp"; UpdateData(true); image = cvLoadImage(defaultPath); OnSet(); HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 125 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ fingerprint_rect.x=fingerprint_rect.y=0; fingerprint_rect.width=size.width; fingerprint_rect.height=size.height; CaptureDisplayOneFrame(defaultPath,3); UpdateData(FALSE); } //==========================CHE DO NHAN DANG ONLINE===============================// void CLUAN_VANView::OnNhanDangOnline() { // TODO: Add your control notification handler code here if (!ketthuc_online) { CString folderRoot = "C:/Temp_process/"; CFileStatus status; CString statusFile(folderRoot + "ba2.txt");//ba2 CString msg; CStdioFile file; if(!CFile ::GetStatus(statusFile, status)) { msg.Format("%s doesn't exist", statusFile); AfxMessageBox(msg); } else { if (!file.Open(statusFile,0, NULL)) { msg.Format("%s : FAILT TO OPEN", statusFile); AfxMessageBox(msg); } else { file.ReadString(quansat_status); file.Close(); } } SetDlgItemText(IDC_NHAN_DANG_ONLINE, "STOP");//doi "nhan dang online" chu STOP SetTimer(2, 500, NULL); m_Button_lay_mau_online.ShowWindow(FALSE); m_Button_mo_file_hinh.ShowWindow(FALSE); m_Check_hoc.ShowWindow(FALSE); m_Check_nhan_dang.ShowWindow(FALSE); m_Button_OK_mode.ShowWindow(FALSE); m_Button_nhan_dang.ShowWindow(FALSE); m_Lay_mau.ShowWindow (FALSE); m_Huan_luyen.ShowWindow(FALSE); m_hoc.ShowWindow(FALSE); m_nhap.ShowWindow(FALSE); m_chon_mode.ShowWindow(FALSE); m_Button_online_mode.ShowWindow(FALSE); ketthuc_online = true; a=1; } else { HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 126 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ SetDlgItemText(IDC_NHAN_DANG_ONLINE, "Nhan dang Online");//doi chu STOP thanh"nhan dang online" KillTimer(2); m_Button_lay_mau_online.ShowWindow(TRUE); m_Button_mo_file_hinh.ShowWindow(TRUE); m_Check_hoc.ShowWindow(TRUE); m_Check_nhan_dang.ShowWindow(TRUE); m_Button_OK_mode.ShowWindow(TRUE); m_Button_nhan_dang.ShowWindow(TRUE); m_nhap.ShowWindow(TRUE); m_chon_mode.ShowWindow(TRUE); m_Button_online_mode.ShowWindow(TRUE); ketthuc_online = false; a = 0; } } // CHE DO NHAN DANG ONLINE TEMPROCESS void CLUAN_VANView::NhandangOnline_Temp() { CString folderRoot = "C:/Temp_process/"; CFileStatus status; CString sFile(folderRoot + "ba1.txt");//ba1 CString statusFile(folderRoot + "ba2.txt");//ba2 CString msg; CStdioFile file; CString sRecord; { if(!CFile ::GetStatus(sFile, status)) { msg.Format("%s doesn't exist", sFile); AfxMessageBox(msg); } else { if (!file.Open(sFile,0, NULL)) { msg.Format("%s : FAILT TO OPEN", sFile); sRecord = "1"; // AfxMessageBox(msg); } else { file.ReadString(sRecord); file.Close(); } } } while (sRecord != "0"); sRecord = ""; if(!CFile ::GetStatus(statusFile, status)) { msg.Format("%s doesn't exist", statusFile); AfxMessageBox(msg); } else { if (!file.Open(statusFile,0, NULL)) { msg.Format("%s : FAILT TO OPEN", statusFile); HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 127 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ AfxMessageBox(msg); } else { file.ReadString(sRecord); file.Close(); } } if (sRecord != quansat_status) { quansat_status = sRecord; OnXoaAnh(); Load_image_online(); m_inHovaten = ""; m_inNgaysinh =""; m_inPhongban = ""; m_inChucvu = ""; m_inDienthoai = ""; m_inMSNV = ""; UpdateData(FALSE); GetDlgItem(IDC_HUAN_LUYEN)->EnableWindow(false); c = 1; KillTimer(2); quansat = true; OnNhanDang(); }; } // LAY GIO HE THONG HIEN TAI GAN CHO GIO RA CUA NHAN VIEN void CLUAN_VANView::OnBtnGioRa() // lay gio { int CurHour, CurMin, CurSec, CurDay, CurMonth, CurYear; CString text; bool lFound=FALSE; outtime = COleDateTime::GetCurrentTime(); // Lay gio he thong gan cho gio CurHour = outtime.GetHour(); CurMin = outtime.GetMinute(); CurSec = outtime.GetSecond(); CurDay = outtime.GetDay(); CurMonth = outtime.GetMonth(); CurYear = outtime.GetYear(); text.Format(_T(" %d / %d / %d - %d : %d : %d "), CurDay, CurMonth, CurYear, CurHour, CurMin, CurSec); // XAC DINH THOI GIAN VE SOM if(CurHourMoveFirst(); while (!m_pSet->IsEOF() ^ lFound) if(m_pSet->m_ID == g_iNumPeople) lFound=TRUE; else m_pSet->MoveNext(); m_pSet->Edit(); m_pSet->m_gioratable = text; m_pSet->Update(); HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 128 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ gtotaltime == 0; // Tinh phep tru thoi gian de tinh tong thoi gian lam duoc gtotaltime += outtime-intime; CurHour = gtotaltime.GetHour(); CurMin = gtotaltime.GetMinute(); CurSec = gtotaltime.GetSecond(); text.Format(_T("%d : %d : %d "), CurHour, CurMin, CurSec); m_pSet->Edit(); m_pSet->m_giolamtable = text; m_pSet->Update(); } // LAY GIO HE THONG HIEN TAI GAN CHO GIO VAO CUA NHAN VIEN void CLUAN_VANView::OnBtnGioVao() { int CurHour, CurMin, CurSec, CurDay, CurMonth, CurYear; // khai bao cac bien gio, phut, giay, ngay, thang… CString text; bool lFound=FALSE; intime = COleDateTime::GetCurrentTime(); // lay gio he thong gan cho gio vao CurHour = intime.GetHour(); CurMin = intime.GetMinute(); CurSec = intime.GetSecond(); CurDay = intime.GetDay(); CurMonth = intime.GetMonth(); CurYear = intime.GetYear(); // hien thi edit text text.Format(_T(" %d / %d / %d - %d : %d : %d "), CurDay, CurMonth, CurYear, CurHour, CurMin, CurSec); // XAC DINH THOI GIAN DI LAM TRE if(CurHour>8) // neu di lam sau h phut thi he thong bao nhan vien di lam tre { MessageBox(" BAN DA DI LAM TRE !!! "); } else if(CurHour==8) { if(CurMin>=5) // neu nhan vien di lam sau 8h 5phut thi he thong bao di lam tre { MessageBox(" BAN DA DI LAM TRE !!! "); } else { MessageBox(" BAN DI LAM DUNG GIO !!! "); } } else { MessageBox(" CHAO MUNG BAN DEN SOM !!! } m_pSet->MoveFirst(); while (!m_pSet->IsEOF() ^ lFound) if(m_pSet->m_ID == g_iNumPeople) lFound=TRUE; else m_pSet->MoveNext(); m_pSet->Edit(); m_pSet->m_giovaotable = text; m_pSet->Update(); "); // di lam truoc 8h } Phụ lục code C cho hiển thị LCD HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 129 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ #include #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #use rs232(baud=9600,xmit=PIN_C6, rcv=PIN_C7) //*********************************** //Khai bao bien //*********************************** #define Sensor AN0//an0 #define Menu RC0//rc0 #define Up RC1//rc1 #define Down RC2//rc2 #define Enter RC3//rc3 #byte porte = 0x09 #byte portd = 0x08 #bit RE5 = porte.2 #bit RE6 = porte.1 #bit RE7 = porte.0 #define RS RE5 //RS= thi thang ghi IR duoc chon,=1 thi ghi DR dc chon #define RW RE6 //RW=1 la read, RW=0 la write #define E RE7 //e=1 thi cho phep doc,e=0 cho phep ghi #byte lcd_data = 0x08 // Dia chi PORTD int8 data,i; int1 s; void tachhang(int&a,int&b,int&c,int&d); char so[11] ="0123456789"; //************************************************ //Cac ham lien quan toi LCD //************************************************ byte lcd_read_byte(); void lcd_send_byte( byte address, byte n ); void lcd_init(); void lcd_gotoxy( byte x, byte y); void lcd_putc( char c); void lcd_refresh(); /* Doc mot byte tu LCD */ byte lcd_read_byte() { byte read_byte; set_tris_D(0xFF); // PORTB = input RW = 1; delay_cycles(1); E = 1; delay_cycles(1); read_byte = lcd_data; E = 0; set_tris_D(0x00); // PORTB = output return(read_byte); } /* Goi 1byte den LCD */ void lcd_send_byte( byte address, byte n ) { RS = 0; while ( bit_test(lcd_read_byte(),7) ) ; //kiem tra xem co BF co bat len hay khong RS = address; HỌC VIÊN: DƯƠNG MIÊN KA-MS:01507314 Trang 130 LUẬN VĂN CAO HỌC - TDH2007 PHỤ LỤC CODE C++ delay_cycles(1); RW = 0; delay_cycles(1); E = 0; lcd_data = n; delay_cycles(1); E = 1; delay_us(2); delay_us(2); delay_us(2); delay_us(2); delay_us(2); delay_us(2); delay_us(2); E = 0; } /* Khoi tao ban dau cho LCD */ void lcd_init() { byte const lcd_init_string[4] = {0x38, 0x0C, , 6}; byte i; set_tris_D(0x00); RS = 0; RW = 0; E = 0; delay_ms(15); for(i=1;i