Chuyên đề Xây dựng phần mềm quản lý nhân sự tại công ty TNHH phần mềm trí tuệ ISOFTCO

Thuật toán xây dựng cần có các tính chất sau: 1. Tính kết thúc Thuật toán thiết kế cần phải kết thúc sau khi thực hiện một số lần hữu hạn các bước công việc. Các bước lặp, của thuật toán phải xác định một cách rõ ràng. 2. Tính xác định Thuật toán xây dựng phải có tính xác định, nghĩa là trong những điều kiện như nhau thì kết quả thực hiện toán hay máy tính thực hiện thuật toán. Nói cách khác thuật toán phải rõ ràng, không gây ra sự nhập nhằng, lẫn lộn hoặc có thể hiểu theo nhiều nghĩa khác nhau. 3. Tính tổng quát Thuật toán phải có tính tổng quát dùng để giải cả một lớp bài toán cùng loại chứ không phải dùng để giải một bài toán cụ thể, riêng lẻ. 4. Tính xác định đầu vào – đầu ra Thuật toán xây dựng phải có tính xác định rõ ràng đầu vào và đẩu ra. Các đầu vào- đầu ra được xác định càng chính xác thì quá trình xay dựng thuật toán càng thuận lợi và thuật toán càng có chất lượng cao hơn. 5. Tính hiệu quả Thuật toán phải đạt được tính hiệu quả nghĩa là nó cho kết quả đúng với những chi phí ít nhất về sức người, thời gian và tiền bạc.

doc103 trang | Chia sẻ: aloso | Lượt xem: 1947 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Chuyên đề Xây dựng phần mềm quản lý nhân sự tại công ty TNHH phần mềm trí tuệ ISOFTCO, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hức năng của các phân hệ và cuối cùng là thiết kế một chương trình làm nhiệm vụ tập hợp các module thành một hệ chương trình thống nhất, hoàn chỉnh. Để minh hoạ cho tư tưởng thiết kế này ta xem xét ví dụ sau đây: Giả sử trong một doanh nghiệp, công việc ứng dụng tin học trong quản lý đã được triển khai ở các bộ phận khác nhau và trong từng thời điểm khác nhau. Kết quả là người ta đã thiết kế và đưa vào sử dụng một số chương trình quản lý trong các phòng ban (phòng Tài vụ, phòng cung ứng vật tư, phòng Tổ chức hành chính,…). Danh sách các chương trình như sau: Prog 1: Vào số liệu cho tệp hồ sơ cán bộ. Prog 2: Sửa chữa, bổ sung, cập nhật hồ sơ. Prog 3: Vào số liệu cho tệp quản lý vật tư. Prog 4: Vào số liệu cho tệp hoá đơn bán sản phẩm. Prog 5: Tính lương cán bộ quản lý. Prog 6: Lập bảng dự toán sử dụng vật tư. Prog 7: Quản lý cán bộ. Prog 8: Lập bảng tính giá trị sản phẩm bán ra. Các chương trình này đã được sử dụng và có kết quả trong sản xuất kinh doanh đã được thực tế kiểm nghiệm. Bây giờ trên cơ sở các chương trình cụ thể này, lãnh đạo công ty có nhu cầu thiết kế một hệ thống chương trình thống nhất, phục vụ tốt hơn cho việc quản lý doanh nghiệp. Trong trường hợp này, chúng ta phải vận dụng phương pháp thiết kế từ dưới lên. Ta lần lượt được các phác thảo sau đây: √ Phác thảo thứ nhất: Gộp các module 1, 2, 5, 7 thành phân hệ quản lý nhân sự: √ Phác thảo thứ hai: Gộp các module 4, 8 thành phân hệ quản lý bán hàng: √ Phác thảo thứ ba: Gộp các module 3, 6 thành các chức năng quản lý kho hàng: √ Phác thảo thứ 4: Trên cơ sở chức năng của các phân hệ quản lý trên đây, chúng ta có thể tiến hành thiết kế thêm một số chương trình khác làm phong phú thêm các vấn đề mà hệ thống quản lý (Prog 9 - dự báo mức tiêu thụ hàng hoá, Prog 10 - lập bảng tổng hợp hàng tồn kho). Các chương trình đựơc thiết kế bổ sung phải đảm bảo được yêu cầu phù hợp về mặt chức năng với các chương trình đã được thiết kế bà cài đặt trước đó. Đồng thời phải có sự tương thích với các chương trình đã được kiểm nghiệm trong thực tiễn. Trong ví dụ trên đây ta co thể thiết kế thêm nhiều chương trình trong mỗi phân hệ làm cho khả năng của các phân hệ ngày càng đa dạng, giải quyết được ngày càng hiệu quả các vấn đề mà thực tế quản lý của doanh nghiệp đặt ra. Ở đây là gộp ba phân hệ vừa thiết kế thành một hệ tin học quản lý thống nhất của doanh nghiệp dưới dạng mô hình sau: 2.3. CÁC QUY TRÌNH TRONG CÔNG NGHỆ PHẦN MỀM Xây dựng một phần mềm quản lý gồm 6 quy trình: Quy trình 1: Xây dựng hợp đồng phần mềm. Quy trình 2: Xác định yêu cầu. Quy trình 3: Phân tích thiết kế phần mềm Quy trình 4: Lập trình. Quy trình 5: Test Quy trình 6: Triển khai 2.3.1 Quy trình 1: Xây dựng hợp đồng phần mềm Mục đích: Nghiên cứu, đề xuất giải pháp kỹ thuật, tiến hành xây dựng hợp đồng với khách hàng, theo dõi tiến trình thực hiện hợp đồng, tổ chức thanh lý, thanh toán hợp đồng và lập hồ sơ tổng quát về quy trình hợp đồng phần mềm. Dấu hiệu: Xây dựng hợp đồng phần mềm với khách hàng. Theo dõi thực hiện hợp đồng với khách hàng. Thanh toán thanh lý hợp đồng phần mềm. 2.3.2. Quy trình 2: Xác định yêu cầu phần mềm Mục đích: Sau khi đã có hợp đồng phần mềm với khách hàng, hợp đồng được chuyển sang để xác định nhu cầu của khách hàng về sản phẩm tương lai. Yêu cầu đặt ra là phải lượng hoá các dạng mô hình. Dấu hiệu: Phân tích nghiệp vụ chuyên sâu. Lập mô hình hoạt động của hệ thống. Lưu đồ quy trình 2: Xác định yêu cầu khách hàng 2.3.3 Quy trình thiết kế phần mềm Mục đích: Sau khi quy trình xác định yêu cầu phần mềm, trên cơ sở hồ sơ của giai đoạn phân tích ta chuyển sang quy trình thiết kế nhằm xác định hồ sơ tổng thể các vấn đề thiết kế phần mềm từ tổng quát tới chi tiết. Thiết kế là chìa khoá dẫn đến thành công của một dự án. Thiết kế là một quá trình đòi hỏi tính sáng tạo, tinh tế và hiểu biết sâu sắc của người thiết kế.Thiết kế phần mềm cung cấp cách biểu diễn phần mềm có thể được xác nhận về chất lượng, là cách duy nhất mà chúng ta có thể chuyển hoá một cách chính xác các yêu cầu của khách hàng thành sản phẩm hay hệ thống phần mềm cuối cùng. Dấu hiệu: Thiết kế cấu trúc phần mềm. Thiết kế kỹ thuật. + Thiết kế dữ liệu. + Thiết kế thủ tục. + Thiết kế chương trình. + Thiết kế giao diện. Lưu đồ quy trình thiết kế: 2.3.4 Quy trình lập trình Mục đích: Trên cơ sở của hộ sơ thiết kế, bộ phận lập trình tiến hành chi tiết hoá các sơ đồ khối hay các lưu đồ để biến thành các bản vẽ thiết kế sản phẩm phần mềm nhưng bản thân công đoạn lập trình phải trung thành với thiết kế. Lập trình là một tiến trình dịch thiết kế chi tiết thành chương trình bao gồm tập hợp các dòng mã lệnh mã máy tính có thể hiểu được. Mỗi ngôn ngữ lập trình có những giới hạn nhất định do vậy dựa trên các đặc trưng của ngôn ngữ, chúng ta sẽ chọn ngôn ngữ phù hợp. Dấu hiệu: Lập trình các thư viện chung Lập trình module Tích hợp hệ thống. Lưu đồ quy trình lập trình: 2.3.5 Quy trinh test Mục đích: Sau khi đã có công đoạn lập trình, các lập trình viên tiến hành test chương trình và test toàn bộ phần mềm bao gồm test hệ thống, test tiêu chuẩn nghiệm thu nhằm đảm bảo có một phần mềm chất lượng cao. Quy trình test là quá trình đánh giá xem chương trình có phù hợp với những đặc tả yêu cầu và đáp ứng mong đợi của khách hàng không. Quá trình này phải được tiến hành thường xuyên sau mỗi giai đoạn sản xuất phần mềm. Quá trình này liên quan đến hai mục đích là “Phần mềm đáp ứng nhu cầu khách hàng và quá trình sản xuất không sai sót”. Dấu hiệu: Lập kịch bản test. Test hệ thống. Test nghiệm thu. Lưu đồ quy trình test: 2.3.6 Quy trình triển khai Mục đích: Đây là quy trình cuối cùng trong toàn bộ công đoạn khép kín của quy trình sản xuất phần mềm. Triển khai là một giai đoạn quan trọng, là một phần việc tất yếu đi kèm khi chuyển giao phần mềm, nên khi đánh giá thường chỉ quan tâm đến các chức năng và tính năng của hệ thống mà quên một điều quan trọng rằng đó là những tiềm năng sẵn có. Để đưa hệ thống cùng toàn bộ tính năng ưu việt của nó vào ứng dụng trong thực tế thì chỉ có quá trình triển khai tốt mới có thể biến các tiềm năng đó thành hiện thực. Tỷ lệ thất bại của phần mềm do quá trình triển khai vẫn đang chiếm một tỷ lệ rất cao mà nguyên nhân chủ yếu là do: Năng lực của người sử dụng còn hạn chế. Truyền đạt và thông tin không tốt. Phương pháp triển khai thiếu tính khoa học và không rõ ràng. Đào tạo người sử dụng là vấn đề không thể thiếu trong quá trình triển khai. Để người sử dụng có thể điều hành trôi chảy hệ thống mới, thông báo một số tình huống có thể xảy ra lỗi khi vận hành sản phẩm để người dùng biết cách xử lý. Dấu hiệu: Cài đặt máy chủ Cài đặt máy mạng Vận hành phần mềm Hướng dẫn đào tạo sử dụng. Lưu đồ quy trình triển khai: 2.4. PHƯƠNG PHÁP LUẬN VỀ PHÂN TÍCH HTTT 2.4.1. Các Phương pháp thu thập thông tin. Phỏng vấn. Phỏng vấn là một trong hai công cụ thu thập thông tin đắc lực nhất dùng cho hầu hết các dự án phát triển HTTT. Phỏng vấn cho phép thu thập những thông tin được xử lý theo cách khác nhau với mô tả trong tài liệu. Nghiên cứu tài liệu. Cho phép nghiên cứu kĩ và tỉ mỉ về nhiều khía cạnh của tổ chức như lịch sử hình thành và phát triển của tổ chức, tình trạng tài chính, các tiêu chuẩn và định mức, cấu trúc thứ bậc, vai trò và nhiệm vụ của các thành viên, nội dung và tình trạng của các thông tin đầu vào cũng như đầu ra. Sử dụng phiếu điều tra. Phương pháp này sử dụng đối với các đồi tượng cần điều tra thông tin với quy mô lớn. Quan sát. Việc thực hiện quan sát cho phép chúng ta thấy những gì không thể hiện trên tài liệu hoặc qua phỏng vấn như tài liệu để ở đâu, cho ai…? Phương pháp quan sát có nhiều rủi ro vì nếu để đối tượng quan sát để ý thì họ sẽ thay đổi lịch trình làm việc không như ngày thường. 2.4.2. Các công cụ mô mình hóa HTTT. Các yêu cầu của người sử dụng thường được viết bằng ngôn ngữ tự nhiên để những người không có kiến thức về mặt kỹ thuật có thể hiểu được nó. Tuy nhiên, những yêu cầu hệ thống chi tiết phải được mô hình hóa, Mô hình hóa hệ thống giúp người phân tích hiểu rõ các chức năng của hệ thống. Một số công cụ chính dùng để mô hình hóa và xây dựng tài liệu cho hệ thống là: sơ đồ chức năng kinh doanh BFD(Business Function Diagram), sơ đồ luồng thông tin IFD( Information Flow Diagram) và sơ đồ luồng dữ liệu DFD ( Data Flow Diagram), Sơ đồ chức năng kinh doanh BFD (Business Function Diagram). Sơ đồ chức năng BFD là sơ đồ mô tả các chức năng nghiệp vụ của một tổ chức và những mối quan hệ bên trong giữa các chức năng đó cũng như các mối quan hệ của chúng với môi trường bên ngoài. Mô hinhf được xây dựng dần cùng với tiến trình khảo sát chi tiết giúp cho việc định hướng hoạt động khảo sát Nó cho phép xác định phạm vi các chức năng hay miền cần nghiên cứu của tổ chức. Nó cho thấy vị trí của mỗi công việc trong toàn hệ thống, tránh trùng lặp, giúp phát hiện các chức năng còn thiếu. Là cơ sở để thiết kế cấu trúc hệ thống chương trình của hệ thống sau này. Sơ đồ luồng thông tin IFD ( Information Flow Diagram). Khái niệm Sơ đồ luồng thông tin được dùng để mô tả hệ thống thông tin theo cách thức động, tức là mô tả sự di chuyển của dữ liệu, việc xử lý, việc lưu trữ trong thế giới vật lý bằng các sơ đồ. Xử lý Thủ công Giao tác người máy Tin học hoá hoàn toàn Thủ công Tin học hoá Tài liệu Kho lưu trữ dữ liệu. Sơ đồ luông dữ liệu DFD(Data Flow Diagram) Khái niệm Là sự biểu diễn bằng sơ đồ sự vận động của dữ liệu và có liên quan đến nguồn, đích, xử lý và kho. Một số quy tắc và quy ước liên quan tới sơ đồ DFD Mỗi luồng dữ liệu phải có một tên trừ luồng giữa xử lý và kho giữ liệu. Dữ liệu chứa trên 2 vật mang khác nhau nhưng luôn luôn đi cùng nhau thì có thể tạo ra chỉ một luồng duy nhất. Xử lý luông phải được đánh mã số. Vẽ lại các kho dữ liệu để các luồng dữ liệu không cắt nhau. Tên cho xử lý phải là một động từ. Xử lý buộc phải thực hiện một biến đổi dữ liệu. Luồng vào phải khác với luồng ra từ một xử lý. Quy ước đối với việc phân rã DFD Thông thường một xử lý mà lô gic xử lý của nó được trình bày bằng ngôn ngữ có cấu trúc chỉ chiếm một trang giấy thì không phân ra tiếp. Cố gắng chỉ để tối đa 7 xử lý trên một trang DFD. Tất cả các xử lý trên một DFD phải thuộc cùng một mức phân rã. Luồng vào của một DFD mức cao phải là luồng vào của một DFD con mức thấp nào đó. Luồng ra tới đích của một DFD con phải là luồng ra tới đích của một DFD mức lớn hơn nào đó. Đây là nguyên tắc cân đối của DFD. Xử lý không phân ra tiếp được thì gọi là xử lý nguyên thủy. Mỗi xử lý nguyên thủy phải có một phích lô gic trong từ điển hệ thông. Các mức phân rã cơ bản của sơ đồ DFD gồm có: Mức ngữ cảnh (context). Mức 0. Mức 1. Các ký pháp sử dụng trong sơ đồ DFD. Sơ đồ luồng dữ liệu là phần cốt lõi của rất nhiều phương pháp phân tích. Nó chứa các ký pháp rất dễ hiểu đối với khách hành. Các ký pháp sử dụng trong sơ đồ DFD bao gồm: Quá trình hoặc chức năng. Nhận tiền Dòng dữ liệu Hóa đơn nhận tiền Kho dữ liệu. Sổ kế toán Tác nhân bên ngoài. Thanh toán Tác nhân bên trong. Lãnh đạo Một số công cụ chính dùng để mô hình hóa và xây dựng tài liệu cho hệ thống là sơ đồ chức năng kinh doanh (BFD) và sơ đồ luồng dữ liệu (DFD). 2.5. PHƯƠNG PHÁP LUẬN VỀ THIẾT KẾ HTTT 2.5.1. Nguyên tắc thiết kế vật lý ngoài. Theo Joseph Dusmas thì thiết kế vật lý ngoài một HTTT phải dựa vào 7 nguyên tắc chung sau đây. Đảm bảo rằng người sử dụng luôn đang kiểm soát hệ thống. Có nghĩa là, người dùng luôn luôn có thể thông báo cho hệ thống những việc cần thực hiện. Thiết kế hệ thống theo thói quen và kinh nghiệm của người sử dụng. Gắn chặt chẽ với các thuật ngữ, dạng thức và các thủ tục đã được dùng. Che khuất những bộ phận bên trong của các phần mềm và phần cứng tạo thành hệ thống. Cung cấp thông tin tư liệu trên màn hình. Giảm tới mức tối thiểu lượng thông tin mà người dùng phải nhớ trong khi sử dụng hệ thống Dựa vào những quy tắc đã được chấp nhận về đồ họa, ký họa khi thể hiện thông tin trên ra màn hình. 2.5.2. Nguyên tắc trình bày thông tin trên màn hình. Những chú ý khi thiết kế thông tin trên màn hình. Thông tin ra phải được thiết kế sao cho người sử dụng phải kiểm soát được lượng thông tin ra màn hình. Cần thiết kế thông tin lấp đầy màn hình rồi dừng lại và để người sử dụng chủ động cho tiếp tục hiện thông tin ra hay không? Thiết kế sao cho người sử dụng có thể lùi về trang trước hoặc xem trang sau bằng phím (Up, Down.PageUp,PageDown). Thiết kế viên phải cho phép người sử dụng hạn chế khối lượng thông tin hiện trên màn hình. Nguyên tắc thiết kế thông tin ra trên màn hình. Đặt mọi thông tin gắn liền với nhiệm vụ trên một màn hình. Người sử dụng không phải nhớ thông tin từ màn hình này sang màn hình khác. Chỉ dẫn rõ ràng cách thoát khỏi màn hình. Đặt giữa các tiêu đề và xếm đặt các thông tin theo trung tâm. Nếu đầu ra gồm nhiều trang màn hình thì mỗi trang phải được đánh số thứ tự. Việc này giúp cho người sử dụng biết rõ mình đang ở đâu? Viết văn bản theo quy ước chung bằng cách sử dụng chữ in hoa, gạch chân và ngắt câu hợp lý. Đặt tiêu đề cho mỗi cột, chỉ đặt màu cho những thông tin quan trọng. Tổ chức các phần tử của danh sách theo trật tự quen thuộc. Căn trái các cột văn bản và căn phải các cột số. Chỉ tô màu cho những thông tin quan trọng. 2.5.3. Nguyên tắc thiết kế màn hình nhập liệu. Mục đích của thiết kế màn hình nhập liệu. Thiết kế các thủ tục nhập liệu có hiệu quả và giảm thiểu tối đa các sai sót. Các nguyên tắc thiết kế màn hình nhập liệu. Màn hình nhập liệu được thiết kế dựa trên các nguyên tắc sau: Khi nhập tài liệu được thiết kế từ một tài liệu gốc, khuôn dạng màn hình phải giống như tài liệu gốc. Nên nhóm các trường trên màn hình theo một trật tự có ý nghĩa, theo trật tự tự nhiêm, theo tần số chung, theo chức năng hoặc theo tầm quan trọng. Không nhập các thông tin mà hệ thống thông tin có thể truy tìm được từ cơ sở dữ liệu hoặc tính toán được. Đặt tên các trường ở trên hoặc trước trường nhập. Đặt các giá trị ngầm định cho phù hợp. Sử dụng phím tab để chuyển trường hợp nhập. 2.6. CÔNG CỤ XÂY DỰNG 2.6.1. Cơ sở dữ liệu Microsoft Access( MS Access) Khi lựa chọn một HQTCSDL( hệ quản trị cơ sở dữ liệu) để dựa vào đó mà viết những ( trình) ứng dụng CSDL ( datase application), người ta thường chú ý đến khả năng, mức độ tiện dụng và các lĩnh vực chuyên sâu của bản thân HQTCSDL, đồng thời chú ý đến tính tương thích của nó với phần cứng hiện có cũng như với các phần mềm mà khách hàng đang thường xuyên sử dụng. Vì thế, để xây dựng CSDL tôi sử dụng Microsoft Access bởi những điều sau đây: MS Access là một trong những HQLCSDL đang được sử dụng nhiều nhất và phổ biến nhất hiện nay. MS Access là một thành phần của hệ thống phần mềm Microsoft Office Professional, vì thế mà những đối tượng thuộc giao diện như thực đơn, dải công cụ( toolbar) mà hộp thoại đều rất tương tự như các ứng dụng khác của Office mà phần lớn cán bộ văn phòng đã quen dùng. Việc trao đổi( nhập/xuất) dữ liệu giữa Access và các ứng dụng khác trong môi trường Windows như Excel, Word, Visual FoxPro, SQL Sever, Oracle, HTML, XML… cũng rất thuận tiện. Access có rất nhiều chức năng để đáp ứng những nhu cầu khác nhau về CSDL. Có thể dùng Access để phát triển sáu kiểu ứng dụng phổ biến nhất, đó là: + Ứng dụng cá nhân + Ứng dụng cho doanh nghiệp nhỏ + Ứng dụng trong nội bộ từng phòng ban + Ứng dụng cho toàn công ty + Ứng dụng ở tuyến trước( front – end) cho các CSDL theo mô hình khách chủ trên phạm vi toàn doanh nghiệp + Ứng dụng trên mạng nội bộ của một cơ quan (intranet) và mạng máy tính quốc tế ( Internet). 2.6.2. Ngôn ngữ lập trình Visual Basic 6.0 2.6.2.1 Khái niệm về ngôn ngữ lập trình ViusualBasic Lập trình với VisualBasic ngày càng được chú ý và có nhiều yêu cầu trong các đề án được thực hiện trong nước và nước ngoài. Bởi vì, Visual Basic là một ngôn ngữ lập trình sử dụng phương pháp luận lập trình mới nhất như phương pháp lập trình hướng đối tượng, với công cụ cơ sở dữ liêụ mô hình quan hệ, kiến trúc Client – Sever. Visual Basic là ngôn ngữ lập trình trên Windows do hãng Microsoft xây dựng, nó là một ngôn ngữ lập trình hướng đối tượng. Visual Basic có một môi trường soạn thảo đơn giản, dễ sử dụng, dễ hiểu và thân thiện với người sử dụng. Nó giúp cho lập trình viên có thể thấy được ngay kết quả, giao diện sau mỗi thao tác thiết kế. Khi thiết kế giao diện ta chỉ cần gắp thả các đối tượng. Khi chương trình thực hiện, nó sẽ thực hiện thông qua các sự kiện của đối tượng như: kích chuột, di chuyển, nhấn phím… Khả năng thừa kế cũng như sử dụng những công cụ và thư viện sẵn có cũng như khả năng tạo ra các thư viện giúp cho lập trình viên xây dựng ứng dụng một các nhanh chóng và thuận lợi cho việc lập trình theo nhóm. Với sự hỗ trợ của các thành phần có sẵn cho nên Visual Basic rất mạnh cho việc xây dựng các ứng dụng. 2.6.2.2. Các tính năng của Visual Basic Tiết kiệm thời gian và công sưckhi xây dựng ứng dụng. Cho phép chỉnh sửa chương trình một cách dễ dàng, đơn giản. Khi thiết kế chương trình có thể thấy ngay kết quả của từng thao tác. Có khả năng liên kết với các thư viện liên kết động. Vì những đặc điểm nổi bật và sự thân thiện với người sử dụng trong giao diện, cũng như các tính năng ưu việt của Visual Basic trong đồ án tốt nghiệp của mình em đã quyết định chọn Visual Basic làm ngôn ngữ lập trình. CHƯƠNG III: XÂY DỰNG PHẦN MỀM QUẢN LÝ NHÂN SỰ TẠI CÔNG TY TNHH PHẦN MỀM TRÍ TUỆ ISOFTCO 3.1. Khảo sát sơ bộ Hiện nay quá trình quản lý nhân sự tại Công ty TNHH phần mềm trí tuệ ISOFTCO vẫn còn thấy thực hiện một cách thủ công. Khi một phòng ban nào có nhu cầu về thay đổi nhân sự thì phòng ban đó phải chuyển yêu cầu lên phòng tổng hợp của công ty. Cán bộ phòng tổng hợp sẽ xem xét sau đó chuyển lên ban lãnh đạo phê duyệt. Quá trình này rất tốn thời gian và thường có nhiều sai sót. Một nhân viên khi bắt đầu làm việc cho đến khi nghỉ hưu hay buộc thôi việc, chuyển Công ty thì Công ty TNHH Phần mềm trí tuệ phải lưu hồ sơ của nhân viên đó. Toàn bộ hồ sơ nhân viên hầu như lưu dưới dạng sổ sách cũng như quá trình quản lý bằng thủ công. Việc tìm kiếm, tra cứu, bổ sung, sửa đổi hồ sơ cũng rất phức tạp và mất nhiều thời gian. Ban lãnh đạo muốn xem trong tháng các nhân viên của minh làm việc thể nào, có nên khen thưởng hay không phải trải qua một số công đoạn như có yêu cầu gửi về phòng ban. Các phòng ban xem xét quá trình làm việc rồi lên danh sách gửi lên ban lãnh đạo phê duyệt…Phần mềm Quản lý nhân sự tại công ty sau khi được xây dựng sẽ giúp ban lãnh đạo quản lý thông tin nhân sự một cách dễ dàng, đưa ra các quyết định kịp thời, nhanh chóng, chính xác khi có nhu cầu phát sinh trong quản lý như: Cần có thông tin về trình độ chuyên môn, quá trình công tác, khen thưởng, ký luật của nhân viên… để từ đó đưa ra những quyết định đúng đắn. Thực hiện tin học hoá trong quản lý sẽ giúp cho cán bộ phòng tổng hợp làm việc hiệu quả hơn, hệ thống quản lý gọn nhẹ, việc sử dụng đơn giản, hạn chế những sai sót không đáng có. 3.2. Mô hình hóa các yêu cầu 3.2.1 Sơ đồ luồng thông tin (IDF) - Khi có nhân viên mới vào công ty, hồ sơ nhân viên sẽ được chuyển đền phòng tổng hợp. Phòng tổng hợp sẽ cập nhật hồ sơ nhân viên vào cơ sở dữ liệu bằng phần mềm quản lý nhân sự. - Thông tin được lưu vào kho hồ sơ của nhân viên công ty. - Khi nhân viên nghỉ việc, thôi việc, hay bị thôi việc hồ sơ của nhân viên sẽ được xóa khỏi kho hồ so nhân viên của công ty hoặc kết chuyển sang kho dữ liệu khác. - Hàng ngày khi có sự thay đổi về thông tin của nhân viên hay theo yêu cầu của giám đốc thì cán bộ phòng tổng hợp sẽ trực tiếp cập nhật sửa đổi hồ sơ theo yêu cầu và lưu lại. - Thông tin sẽ được lưu vào kho hồ sơ. - Cuối mỗi tháng, kỳ hay theo yêu cầu của ban giám đốc cán bộ phòng tổng hợp sẽ in báo cáo trình ban giám đốc cũng như có các đề nghị về thưởng, tăng lương, thăng chức…. - Sơ đồ IFD 3.2.2. Sơ đồ chức năng kinh doanh BFD Xác định chức năng nghiệp vụ là bước đầu tiên của phân tích hệ thống. Để phân tích nhu cầu thông tin của tổ chức ta phải biết được tổ chức thực hiện những nhiệm vụ, chức năng gì. Từ đó biết được các dữ liệu, thông tin gì mà tổ chức sử dụng và làm thế nào để có các thông tin cần thiết. HTTT quản lý nhân sự tại công ty TNHH phần mềm trí tuệ ISOFTCO có những chức năng chính sau: *Quản lý hồ sơ nhân viên - Cập nhập hồ sơ nhân viên khi có nhân viên mới được tuyển chọn vào làm việc tại công ty. - Sửa đổi, bổ sung điều chỉnh hồ sơ khi có sự thay đổi thông tin về cá nhân, thuyên chuyển nhân viên giữa các phòng ban hay sự thay đổi về chức vụ - Tìm kiếm và in báo cáo theo phòng ban, độ tuổi hay chức vụ… - Tạo và in báo cáo khen thưởng kỷ luật nhân viên… Sơ đồ chức năng của hệ thống quản lý nhân sự tại công ty TNHH phần mềm trí tuệ ISOFTCO được biểu diễn trong hình dưới đây: Quản lý nhân sự Báo cáo Quản lý danh mục Truy xuất dữ liệu Danh mục phòng ban Danh sách nhân viên Các danh mục khác Tìm kiếm nhân viên Theo dõi khen thưởng, kỷ luật Lập báo cáo Xử lý Sơ đồ chức năng của hệ thống quản lý nhân sự 3.2.3. Sơ đồ luồng dữ liệu DFD Sơ đồ luồng dữ liệu DFD cung cấp cho người sử dụng một cách nhìn tổng thể về hệ thống và cơ chế lưu chuyển thông tin trong hệ thống ấy. Nó xác định các thông tin chuyển vận từ một quá trình hoặc từ chức năng này trong hệ thống sang một quá trình hoặc chức năng khác. Sơ đồ ngữ cảnh Khi xem xét một vấn đề, chúng ta luôn có cái nhìn tổng thể về vấn đề đó. Sơ đồ ngữ cảnh sẽ cho ta thấy những thành phần cốt lõi của hệ thống cần xây dựng. Dưới đây là sơ đồ ngữ cảnh của hệ thống quản lý nhân sự. Giám đốc Các phòng ban Nhân viên Quản lý nhân sự Hồ sơ nhân viên Thông tin Nhân sự Các báo cáo Các báo cáo Các yêu cầu Sơ đồ ngữ cảnh của hệ thống quản lý nhân sự Sơ đồ DFD mức 0 Sơ đồ DFD mức 0 chỉ ra tất cả các xử lý chính mà bao gồm toàn bộ hệ thống các thành phần trong của xử lý, chỉ ra các xử lý chính tương quan với nhau bởi các luồng dữ liệu như thế nào… Hình dưới đây là sơ đồ DFD mức 0 của hệ thống quản lý nhân sự tại công ty TNHH phần mềm trí tuệ ISOFTCO Giám đốc, phòng ban Nhân viên 2.0 Quản lý khen thưởng kỷ luật 3.0 Thống kê báo cáo Hồ sơ NV Hồ sơ NV Giám đốc 1.0 Quản lý hồ sơ NV Quy định làm việc Thông tin NV Dữ liệu khen thưởng kỷ luật TT khen thưởng, kỷ luật Báo cáo nhân sự Hồ sơ NV Sơ đồ DFD mức 0 Các DFD mức 1 Sơ đồ DFD mức 1 của tiến trình quản lý hồ sơ nhân viên Sơ đồ DFD mức 1 của tiến trình quản lý hồ sơ NV Khi một nhân viên mới được tuyển dungv vào công ty thì nhân viên này sẽ nộp hồ sơ cho phòng nhân sự. Phòng nhân sự sẽ thực hiện cập nhật và lưu trữ hồ sơ vào kho dữ liệu hồ sơ nhân viên. Hàng ngày, khi có sự thay đổi, biến động nhân sự (thay đổi vị trí trong phòng ban, giữa các phòng ban, nhân viên thôi việc, nghỉ hưu, hết hợp đồng…) thì Giám đốc, các phòng ban hay nhân viên sẽ gửi yêu cầu cho phòng nhân sự. Phòng nhân sự có nhiệm vụ sửa đồi, điều chỉnh theo yêu cầu và lưu thông tin vào kho dữ liệu hồ sơ nhân viên. Sơ đồ DFD mức 1 của tiến trình quản lý khen thưởng kỷ luật Các phòng ban Phòng nhân sự 2.1. Theo dõi khen thưởng 2.2. Theo dõi kỷ luật DL khen thưởng, kỷ luật DS kỷ luật DS khen thưởng NV hoàn thành công việc vượt KH NV không hoàn thành công việc Sơ đồ DFD mức 1 của tiến trình thống kê báo cáo 3.1. Truy xuất dữ liệu 3.1. Lập báo cáo Hồ sơ NV Dữ liệu khen thưởng Dữ liệu kỷ luật TT nhân viên DS khen thưởng DS kỷ luật Dữ liệu tổng hợp Giám đốc, phòng ban Các loại báo cáo Sơ đồ DFD mức 1 của tiến trình thống kê báo cáo 3.3. Thiết kế cơ sở dữ liệu 3.3.1. Cấu trúc các thực thể: Các bảng sau đây thể hiện cấu trúc các thực thể dữ liệu trong hệ thống. Bảng bằng cấp STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MaNV TEXT 10 Mã nhân viên 2 TRINHDO TEXT 50 Trình độ 3 TENBANG TEXT 200 Tên bằng 4 CHUYENNGANH TEXT 100 Chuyên ngành 5 NOICAP TEXT 200 Nơi cấp 6 TUNGAY Datetime 8 7 DENNGAY Datetime 8 Bảng bộ phận STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MaBP TEXT 10 Mã bộ phận 2 TEN TEXT 100 Tên bộ phận 3 DIACHI TEXT 200 Địa chỉ 4 DIENTHOAI TEXT 16 Điện thoại 5 SOFAX TEXT 16 Số Fax 6 NGAYLAP Datetime 8 Ngày lập 7 NGAYKT Datetime 8 Ngày kết thúc Bảng chức vụ STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MaCV TEXT 10 Mã chức vụ 2 TEN TEXT 100 Tên chức vụ 3 DANGSUDUNG1 Bit 1 Đang sử dụng 4 DANGSUDUNG0 Bit 1 Đang sử dụng 5 GHICHU TEXT 500 Ghi chú Bảng chức vụ phòng ban (Lưu thông tin về chức vụ phòng ban hiện thời của nhân viên) STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MaNV TEXT 10 Mã nhân viên 2 MaPB TEXT 10 Mã phòng ban 3 MaCV TEXT 10 Mã chức vụ 4 NGAYDAU Datetime 8 5 NGAYCUOI Datetime 8 Bảng chức vụ phòng ban 1 (Lưu thông tin chức vụ phòng ban trước đây của nhân viên) STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MaNV TEXT 10 Mã nhân viên 2 MaPB TEXT 10 Mã phòng ban 3 MaCV TEXT 10 Mã chức vụ 4 NGAYDAU Datetime 5 NGAYCUOI Datetime Bảng hợp đồng STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MaNV TEXT 10 Mã nhân viên 2 SoHD TEXT 50 Số hợp đồng 3 NGAYKYHD Datetime 8 Ngày ký hợp đồng 4 NGAYBDHD Datetime 8 Ngày bắt đầu hợp động 5 NGAYKTHD Datetime 8 Ngày kết thúc hợp đồng 6 NGAYTHUVIEC Datetime 8 Ngày thử việc 7 NGAYKTTHUVIEC Datetime 8 Ngày kết thúc thử việc 8 NGAYCDHD Datetime 8 Ngày chấm dứt hợp đồng 9 CHEDOLAMVIEC TEXT 50 Chế độ làm việc 10 MaBHXH TEXT 10 Mã BHXH 11 MaBHYT TEXT 10 Mã BHYT 12 HTTRALUONG TEXT 200 Hình thức trả lương 13 LUONGCOBAN Money Lương cơ bản 14 DONVITT TEXT 50 15 SLTRALUONG Int Số lần trả lương 16 SONGAYPHEP Int Só ngày phép 17 MUCBOITHUONG Money Mức bồi thường 18 LYDOCHAMDUT TEXT 500 Lý do chấm dứt 19 DANGHI Bit 1 Đã nghỉ Bảng dân tộc STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MaDT TEXT 10 Mã dân tộc 2 DANTOC TEXT 50 Dân tộc Bảng hôn nhân STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 HONNHAN TEXT 50 Hôn nhân Bảng khen thưởng STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MaNV TEXT 10 2 NGUOIQD TEXT 200 Người quyết định 3 LOAIQD TEXT 50 Loại quyết định 4 SOQD TEXT 50 Số quyết định 5 HINHTHUC TEXT 50 6 NOIDUNG TEXT 500 7 NGAYKY Datetime 8 Ngày ký 8 NGAYHL Datetime 8 Ngày hiệu lực 9 SOTIEN Money Số tiền 10 DONVI TEXT 50 Đơn vị Bảng nhân viên STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MANV TEXT 10 2 HOTEN TEXT 50 3 NGAYSINH Datetime 8 4 NOISINH TEXT 500 5 QUEQUAN TEXT 500 6 DANTOC TEXT 50 7 TONGIAO TEXT 50 8 QUOCTICH TEXT 50 9 HONNHAN TEXT 50 10 CMT TEXT 50 Số chứng minh thư 11 NGAYVAOLAM Datetime 8 12 NGAYTHOIVIEC Datetime 8 13 DANGHI Bit 1 14 NGAYCAP Datetime 8 15 NOICAP TEXT 500 16 DCTHUONGTRU TEXT 500 Địa chỉ thường trú 17 DCTAMTRU TEXT 500 Địa chỉ tạm trú 18 MAIL TEXT 100 Mail 19 DIENTHOAI TEXT 15 20 GIOITINH TEXT 50 21 DKTHUONGTRU TEXT 500 Đăng ký thường trú 22 DK TAMTRU TEXT 500 Đăng ký tạm trú Bảng nước STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MANUOC TEXT 10 Mã nước 2 NUOC TEXT 50 Tên nước Bảng tài khoản người dùng STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 TENDN TEXT 50 Tên đăng nhập 2 MATKHAU TEXT 50 Mật khẩu Bảng thẻ bảo hiểm xã hội STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MANV TEXT 10 Mã nhân viên 2 MASOBHXH TEXT 50 Mã số BHXH 3 NOIDANGKY TEXT 500 Nơi đăng ký 4 NGAYCAP Datetime 8 Ngày cấp 5 NGAYHET Datetime 8 Ngày hết hạn Bảng thẻ bảo hiểm y tế STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MANV TEXT 10 Mã nhân viên 2 MASOBHYT TEXT 50 Mã số BHYT 3 NOIDANGKY TEXT 500 Nơi đăng ký 4 NGAYCAP Datetime 8 Ngày cấp 5 NGAYHET Datetime 8 Ngày hết 6 TENBV TEXT 500 Tên bệnh viện Bảng tôn giáo STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MATG TEXT 10 Mã tôn giáo 1 TONGIAO TEXT 50 Tên tôn giáo Bảng tính lương STT Tên trường Kiểu dữ liệu Độ rộng Diễn giải 1 MANV TEXT 10 Mã nhân viên 2 HSL Float Hệ số lương 3 LCB Money Lương cơ bản 4 BHXH Money Tiền BHXH 5 BHYT Money Tiền BHYT 6 PHUCAP Money Tiền phụ cấp 7 TONGTIENNHAN Money Thực lĩnh 8 TONGTIENCHU TEXT 700 Thực lĩnh bằng chữ 3.3.2 Mô hình quan hệ 3.4. Thiết kế giải thuật 3.4.1 Định nghĩa Giải thuật ( Algorithm) là một dãy các quy tắc chặt chẽ xác định một trình tự các thao tác trên một đối tượng cụ thể để giải quyết một vấn đề hoặc để giải quyết một vấn đề để hoàn thành một mục đích cuối cùng nào đó. 3.4.2. Các phương pháp thiết kế giải thuật Để diễn đạt một giải thuật thông thường người ta có thể dùng ba phương pháp chủ yếu sau: + Phương pháp 1 : Diễn đạt giải thuật bằng lời + Phương pháp 2 : Diễn đạt giải thuật bằng sơ đồ khối + Phương pháp 3 : Diễn đạt giải thuật bằng một ngôn ngữ lập trình có cấu trúc. Trong đề án dùng phương pháp diễn đạt thuần bằng sơ đồ khối 3.4.3. Vai trò của thiết kế giải thuật Một chương trình có thiết kế giải thuật sẽ có tính bền vững, khi có một sự thay đổi về cấu trúc người lập trình dựa vào giải thuật thiết kế, viết lại chương trình, mở rộng dễ dàng không dẫn tới sự đổ vỡ của hệ thống. Là ngôn ngữ chung dễ hiểu đối với người lập trình. Tránh được thiếu sót và lầm lẫn trong lập trình Giúp cho việc theo dõi, hiểu bố cục chương trình và bảo trì chương trình một cách dễ dàng hơn 3.4.4. Nguyên tắc thiết kế giải thuật Thuật toán xây dựng cần có các tính chất sau: Tính kết thúc Thuật toán thiết kế cần phải kết thúc sau khi thực hiện một số lần hữu hạn các bước công việc. Các bước lặp, của thuật toán phải xác định một cách rõ ràng. Tính xác định Thuật toán xây dựng phải có tính xác định, nghĩa là trong những điều kiện như nhau thì kết quả thực hiện toán hay máy tính thực hiện thuật toán. Nói cách khác thuật toán phải rõ ràng, không gây ra sự nhập nhằng, lẫn lộn hoặc có thể hiểu theo nhiều nghĩa khác nhau. Tính tổng quát Thuật toán phải có tính tổng quát dùng để giải cả một lớp bài toán cùng loại chứ không phải dùng để giải một bài toán cụ thể, riêng lẻ. Tính xác định đầu vào – đầu ra Thuật toán xây dựng phải có tính xác định rõ ràng đầu vào và đẩu ra. Các đầu vào- đầu ra được xác định càng chính xác thì quá trình xay dựng thuật toán càng thuận lợi và thuật toán càng có chất lượng cao hơn. Tính hiệu quả Thuật toán phải đạt được tính hiệu quả nghĩa là nó cho kết quả đúng với những chi phí ít nhất về sức người, thời gian và tiền bạc. 3.4.5. Biểu diễn thuật toán bằng sơ đồ khối Mỗi bước công việc cho tương ứng với một khối. Khối là một hình được biểu diễn theo ký pháp, ghi vắn tắt nội dung công việc cần thực hiện dưới dạng một công thức. Thứ tự thực hiện các bước công việc được chỉ ra bằng các mũi tên nối liên các khối với nhau. 3.4.6 Các thuật toán điển hình Thuật toán đăng nhập: B Nhập tên và mật khẩu Kiểm tra tên và mật khẩu Đăng nhập hệ thống S Thông báo sai tên hoặc mật khẩu S E Đ I <=3 Đ I=I+1 I = 0 Đ Thông báo mất quyên đăng nhập Tiếp tục? S Thuật toán đăng nhập hệ thống Khi người dùng đăng nhập hệ thống, sẽ có một thuạt toán kiểm tra tính hợp lệ của dữ liệu đăng nhập với cơ sở dữ liệu sẽ cho người sử dụng đăng nhập, chương trình thuật toán kết thúc. Nếu sai sẽ yêu cầu đăng nhập lạ. Nếu sai quá 3 lần, chương trình sẽ tự động kết thúc. Thuật toán nhập dữ liệu: Khi nhân viên của phòng Nhân sự tiến hành cập nhật thông tin thì hệ thống sẽ kiểm tra tính hợp lệ của thông tin nhập vào. Dữ liệu hợp lệ sẽ được lưu vào kho dữ liệu, ngược lại, nếu dữ liệu không hợp lệ, hệ thống sẽ thông báo lỗi và yêu cầu nhập lại. Việc cập nhật kết thúc khi thông tin đã cập nhật xong. B Nhập dữ liệu Kiểm tra dữ liệu thỏa mãn đk? Lưu các thông tin vừa nhập S Thông báo lỗi S E Đ Nhập lại? Đ Thêm một bản ghi trắng Đ Tiếp tục? S Thuật toán cập nhật thông tin Thuật toán sửa dữ liệu: B Chọn đối tượng cần sửa Kiểm tra dữ liệu ? Sửa và ghi thông tin vào CSDL S Thông báo DL không hợp lệ S E Đ Có chấp nhận sửa không? Đ Mờ form cần xử lý Đ Tiếp tục? S Thuật toán sửa dữ liệu Thuật toán xóa dữ liệu: B Chọn đối tượng cần xóa Có chấp nhận xóa không? Xóa thông tin trong CSDL S E Đ Mở Form cần xử lý Đ Tiếp tục? S Thuật toán xóa dữ liệu Thuật toán tìm kiếm: B Kiểm tra dữ liệu thỏa mãn đk? Hiện các bản ghi phù hợp S Thông báo không có dữ liệu thỏa mãn S E Tiếp tục? Đ Nhập điều kiện tìm kiếm Đ Thuật toán tìm kiếm Thuật toán lên báo cáo: B Nhập điều kiện ràng buộc cho báo cáo Tìm thấy dữ liệu? Đưa ra báo cáo S Thông báo không tìm thấy dữ liệu S E Đ Có in không? Đ Lựa chọn loại báo cáo Đ Tiếp tục? S Tìm và lọc dữ liệu theo yêu cầu In báo cáo Thuật toán lên báo cáo 3.5 Thiết kế giao diện * Form đăng nhập * Form giao diện chính * From quản lý người dùng *Form danh mục phòng ban * Form danh sách nhân viên *Tìm kiếm nhân viên * Form quyết định khen thưởng *Form thông tin phần mềm * Báo cáo danh sách đóng bảo hiểm * Báo cáo khen thưởng nhân viên KẾT LUẬN Nguồn lực trong một tổ chức doanh nghiệp là một trong những nguồn lực quan trọng và tốn kém nhất. Đi kèm với sự phát triển của tổ chức, số lượng cán bộ công nhân viên ngày càng tăng công tác quản lý nhân sự sẽ gạp phải những khó khăn trong công tác quản lý như tra cứu hồ sơ, lý lịch CBCNV, công tác tuyển dụng thêm lao động, các phụ cấp, trợ cấp… Một phần mêm quản lý nhân sự tốt sẽ giúp cho tổ chức quản ly nhân sự của mình một cách dễ dàng. Với hệ thống các báo cáo của phần mềm sẽ đáp ứng nhanh nhất các thông tin về nhân sự hỗ trợ trưởng phòng, nhà quản lý, ban giám đốc những quyết định chính xác nhất, nhanh nhất về công tác nhân sự của Tổ chức. Đề tài “Xây dựng phần mềm quản lý Nhân sự tại công ty TNHH phần mềm trí tuệ ISOFTCO” đã đạt được một số kết quả như sau: Tìm hiểu về quá trình hình thành phát triển của công ty TNHH phần mềm trí tuệ ISOFTCO, tìm hiểu những đòi hỏi, yêu cầu, tính cấp thiết cũng như các tính năng cần có của phần mêm QLNS. Áp dụng những kiến thức cơ bản của hệ thống thông tin quản lý cũng như công cụ phát triển phần mềm để xây dựng đề tài. Phân tích một cách chi tiết các yêu cầu của công ty TNHH phần mềm trí tuệ ISOFTCO cũng như đòi hỏi về chức năng của phần mềm. Thiết kế vật lý, chi tiết, thiết kế giao diện, thiết kế dữ liệu, thiết kế giải thuật đảm bảo cho tính bền vững của hệ thống. Trên cơ sở đó kết hợp với các công cụ phát triển phần mềm là ngôn ngữ lập trình Visual Basic 6.0 , cơ sở dữ liệu Microsoft Access tạo nên một phần mềm hoàn chỉnh có tính ứng dựng trong thực tế. Giúp cho quá trình quản lý nhân sự tại Công ty TNHH phần mêm trí tuệ ISOFTCO trở nên dễ dàng gọn nhẹ, đáp ứng các yêu cầu thực tế về nhân sự. Một lần nữa em xin chân thành cảm ơn TS Đặng Quế Vinh đã hướng dẫn, đồng thời cũng xin chân thành cảm ơn sự giúp đỡ nhiệt tình từ phía công ty TNHH phần mềm trí tuệ ISOFTCO mà đặc biệt là ban lãnh đạo và phòng kĩ thuật của công ty trong suốt thời gian em đến thực tập. Những sự giúp đỡ, hướng dẫn nhiệt tình đã giúp em hoàn thành phần mềm cũng như mục tiêu của khóa thực tập. Tuy vậy trong quá trình thực tập cũng như viết đề tài em không tránh khỏi những sai sót. Em rất mong được nhự góp ý từ công ty cũng như giáo viên hướng dẫn để ngày càng hoàn thiện hơn. Hà Nội, ngày 06 tháng 05 năm 2009 Sinh viên: Đặng Thanh Bình Lớp : Tin học kinh tế 47B- Khoa tin học kinh tế Trường : ĐH Kinh tế Quốc dân Danh mục tài liệu tham khảo “ Hệ thống thông tin quản lý” Ts Trương Văn Tú – Ts Trần Thị Song Minh 2. “ Cấu trúc dữ liệu và giải thuật” PGS TS Hàn Viết Thuận 3. “Cơ sở dữ liệu 1” Ths Trần Công Uẩn 4. “ Giáo trình Kỹ thuật lập trình 1” Ts Đặng Quế Vinh 5. “Bài giảng công nghệ phần mềm ” PGS TS Hàn Viết Thuận 6. “Bài giảng lập trình trong quản lý” Ths Trịnh Hoài Sơn Phụ lục Một số đoạn mã chương trình tiêu biểu Global cn As New ADODB.Connection Public Sub Main() Set cn = New ADODB.Connection With cn .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Database\QLNS.mdb;Persist Security Info=False" .Open End With End Sub Option Explicit Dim strbang As String Dim strtruongdulieu As String Dim strften As String Private Sub Hienthithongtin() If lstdanhmuc.ListIndex = 0 Then Label1.Caption = "M· b»ng :" Label2.Caption = "Tªn b»ng :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_bangcap" Call Toanbobangcap txtma.MaxLength = 2 ElseIf lstdanhmuc.ListIndex = 1 Then Label1.Caption = "M· CV :" Label2.Caption = "Tªn chøc vô :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_chucvu" txtma.MaxLength = 3 Call Toanbochucvu ElseIf lstdanhmuc.ListIndex = 2 Then Label1.Caption = "M· CN :" Label2.Caption = "Tªn ngµnh :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_chuyennganh" txtma.MaxLength = 2 Call Toanbochuyennganh ElseIf lstdanhmuc.ListIndex = 3 Then Label1.Caption = "M· DV :" Label2.Caption = "Tªn ®¬n vÞ :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_donvi" txtma.MaxLength = 3 Call Toanbodonvi ElseIf lstdanhmuc.ListIndex = 4 Then Label1.Caption = "M· DT :" Label2.Caption = "Tªn d©n téc :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_dantoc" txtma.MaxLength = 2 Call Toanbodantoc ElseIf lstdanhmuc.ListIndex = 5 Then Label1.Caption = "M· CV :" Label2.Caption = "Néi dung :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_congviec" txtma.MaxLength = 2 Call Toanbocongviec ElseIf lstdanhmuc.ListIndex = 6 Then Label1.Caption = "M· tØnh :" Label2.Caption = "Tªn tØnh :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_tinh" txtma.MaxLength = 2 Call Toanbotinhthanh ElseIf lstdanhmuc.ListIndex = 7 Then Label1.Caption = "M· QG :" Label2.Caption = "Tªn quèc gia :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_quocgia" txtma.MaxLength = 2 Call Toanboquocgia ElseIf lstdanhmuc.ListIndex = 8 Then Label1.Caption = "M· QH :" Label2.Caption = "Tªn quan hÖ :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_quanhe" txtma.MaxLength = 2 Call Toanboquanhe ElseIf lstdanhmuc.ListIndex = 9 Then Label1.Caption = "M· HD :" Label2.Caption = "Tªn hîp ®ång :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_hopdong" txtma.MaxLength = 2 Call Toanbohopdong ElseIf lstdanhmuc.ListIndex = 10 Then Label1.Caption = "M· TG :" Label2.Caption = "Tªn t«n gi¸o :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_tongiao" txtma.MaxLength = 2 Call Toanbotongiao ElseIf lstdanhmuc.ListIndex = 11 Then Label1.Caption = "M· NN :" Label2.Caption = "Tªn ngo¹i ng÷ :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_ngoaingu" txtma.MaxLength = 2 Call Toanbongoaingu ElseIf lstdanhmuc.ListIndex = 12 Then Label1.Caption = "M· HV :" Label2.Caption = "Tªn häc vÊn :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_hocvan" txtma.MaxLength = 2 Call Toanbohocvan ElseIf lstdanhmuc.ListIndex = 13 Then Label1.Caption = "M· HV :" Label2.Caption = "Tªn häc vÞ :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_hocvi" txtma.MaxLength = 2 Call Toanbohocvi ElseIf lstdanhmuc.ListIndex = 14 Then Label1.Caption = "M· ND :" Label2.Caption = "Tªn nghÒ ®Õn :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_ngheden" txtma.MaxLength = 2 Call Toanbonghekhiden ElseIf lstdanhmuc.ListIndex = 15 Then Label1.Caption = "M· TPBT :" Label2.Caption = "Thµnh phÇn BT :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_tpbt" txtma.MaxLength = 2 Call Toanbothanhphanbanthan ElseIf lstdanhmuc.ListIndex = 16 Then Label1.Caption = "M· TPXT :" Label2.Caption = "Thµnh phÇn XT :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_tpxt" txtma.MaxLength = 2 Call Toanbothanhphanxuatthan ElseIf lstdanhmuc.ListIndex = 17 Then Label1.Caption = "M· NN :" Label2.Caption = "Tr×nh ®é NN :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_trinhdonn" txtma.MaxLength = 2 Call Toanbotrinhdongoaingu ElseIf lstdanhmuc.ListIndex = 18 Then Label1.Caption = "M· VT :" Label2.Caption = "Tr×nh ®é VT :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_trinhdovt" txtma.MaxLength = 2 Call Toanbotrinhdovitinh ElseIf lstdanhmuc.ListIndex = 19 Then Label1.Caption = "Lý do :" Label2.Caption = "Tªn lý do :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_lydonghi" txtma.MaxLength = 2 Call Toanbolydonghi ElseIf lstdanhmuc.ListIndex = 20 Then Label1.Caption = "M· GDCS :" Label2.Caption = "Ghi chó :" lvwchitiet.ColumnHeaders.Clear strbang = "hr_gdcs" txtma.MaxLength = 2 Call Toanbogiadinhchinhsach ElseIf lstdanhmuc.ListIndex = 21 Then Label1.Caption = "M· TD" Label2.Caption = "Tªn tr×nh ®é :" lvwchitiet.ColumnHeaders.Clear strbang = "HR_Trinhdo" txtma.MaxLength = 4 Call Toanbotrinhdo End If End Sub Private Sub cmdluu_Click() If cmdluu.Caption = "L­u" Then If txtten.text = "" Or txtma.text = "" Then MsgBox "B¹n ph¶i nhËp ®Çy ®ñ th«ng tin tr­íc khi l­u", vbExclamation, "Luu" Else lvwchitiet.ColumnHeaders.Clear Call Nhapthemgiatri Call Capnhatdanhsach frmMain.Capnhattoanbodulieu Editstate (NotEditing) txtma.text = "" txtten.text = "" End If Else If txtten.text = "" Then MsgBox "B¹n ph¶i nhËp tªn tr­íc khi l­u", vbExclamation, "Luu" Else lvwchitiet.ColumnHeaders.Clear Call Capnhatdulieu Call Capnhatdanhsach frmMain.Capnhattoanbodulieu Editstate (NotEditing) cmdluu.Caption = "L­u" txtma.text = "" txtten.text = "" End If End If End Sub Private Sub cmdsua_Click() If txtma.text = "" Then MsgBox "B¹n ph¶i chän tr­íc khi söa ch÷a th«ng tin", vbExclamation, "Thong bao" Else Editstate (Editing) cmdluu.Caption = "CËp nhËt" txtma.Enabled = False End If End Sub Private Sub cmdthem_Click() If cmdthem.Caption = "Thªm" Then Editstate (Editing) txtma.text = "" txtten.text = "" txtma.SetFocus Else cmdluu.Caption = "L­u" Editstate (NotEditing) txtma.text = "" txtten.text = "" End If End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxoa_Click() Dim m As Integer If txtma.text = "" Then MsgBox "B¹n ph¶i lùa chän tr­íc khi xo¸", vbExclamation, "Xoa" Else m = MsgBox("B¹n cã ch¾c ch¾n muèn xo¸ m· sè " & "'" & lvwchitiet.SelectedItem & "'" & " trong danh môc " & "'" & lstdanhmuc.text & "'" & " kh«ng ?", vbQuestion + vbYesNo, "Xoa") If m = vbYes Then lvwchitiet.ColumnHeaders.Clear Call Xoadulieu Call Capnhatdanhsach frmMain.Capnhattoanbodulieu Editstate (NotEditing) txtma.text = "" txtten.text = "" Else Exit Sub End If End If End Sub Private Sub Nhapthemgiatri() On Error GoTo HandleErrors Dim strthem As String strthem = "insert into " & strbang & " values (" & "'" & txtma.text & "','" & txtten & "')" ExecuteSQL (strthem) mconCurrent.Close Exit Sub HandleErrors: MsgBox "§· cã lçi x¶y ra b¹n h·y xem l¹i tr­íc khi l­u", vbCritical, "Loi" End Sub Private Sub Capnhatdulieu() On Error GoTo HandleErrors Dim strcapnhat As String strcapnhat = "Update " & strbang & " set " & _ strften & "=" & "'" & txtten.text & "'" & " where " & strtruongdulieu & " = " & "'" & txtma.text & "'" ExecuteSQL (strcapnhat) mconCurrent.Close Exit Sub HandleErrors: MsgBox "§· cã lçi x¶y ra b¹n h·y xem l¹i tr­íc khi l­u", vbCritical, "Loi" End Sub Private Sub Thongtinchietiet() On Error GoTo HandleErrors Dim strchietiet As String strchietiet = "select * from " & strbang & " where " & strtruongdulieu & "=" & "'" & CStr(lvwchitiet.SelectedItem) & "'" OpenSQL (strchietiet) txtma.text = "" & mrstCurrent(0) & "" txtten.text = "" & mrstCurrent(1) & "" mconCurrent.Close Exit Sub HandleErrors: On Error GoTo 0 End Sub Private Sub lvwchitiet_Click() Call Luachontruongdulieu Call Thongtinchietiet End Sub Private Sub Luachontruongdulieu() If lstdanhmuc.ListIndex = 0 Then strtruongdulieu = "Mabang" strften = "tenbang" ElseIf lstdanhmuc.ListIndex = 1 Then strtruongdulieu = "Machucvu" strften = "tenchucvu" ElseIf lstdanhmuc.ListIndex = 2 Then strtruongdulieu = "ma_cn" strften = "tennganh" ElseIf lstdanhmuc.ListIndex = 3 Then strtruongdulieu = "Madv" strften = "tendv" ElseIf lstdanhmuc.ListIndex = 4 Then strtruongdulieu = "Madt" strften = "tendt" ElseIf lstdanhmuc.ListIndex = 5 Then strtruongdulieu = "macv" strften = "noidung" ElseIf lstdanhmuc.ListIndex = 6 Then strtruongdulieu = "matinh" strften = "tentinh" ElseIf lstdanhmuc.ListIndex = 7 Then strtruongdulieu = "maqg" strften = "tenqg" ElseIf lstdanhmuc.ListIndex = 8 Then strtruongdulieu = "maqh" strften = "tenqh" ElseIf lstdanhmuc.ListIndex = 9 Then strtruongdulieu = "mahd" strften = "tenhd" ElseIf lstdanhmuc.ListIndex = 10 Then strtruongdulieu = "matgiao" strften = "tentgiao" ElseIf lstdanhmuc.ListIndex = 11 Then strtruongdulieu = "mann" strften = "tennn" ElseIf lstdanhmuc.ListIndex = 12 Then strtruongdulieu = "mahvan" strften = "tenhvan" ElseIf lstdanhmuc.ListIndex = 13 Then strtruongdulieu = "mahocvi" strften = "tenhocvi" ElseIf lstdanhmuc.ListIndex = 14 Then strtruongdulieu = "mangheden" strften = "ngheden" ElseIf lstdanhmuc.ListIndex = 15 Then strtruongdulieu = "matpbt" strften = "thanhphanbt" ElseIf lstdanhmuc.ListIndex = 16 Then strtruongdulieu = "matpxt" strften = "thanhphanxt" ElseIf lstdanhmuc.ListIndex = 17 Then strtruongdulieu = "matrinhdonn" strften = "tentrinhdonn" ElseIf lstdanhmuc.ListIndex = 18 Then strtruongdulieu = "mavitinh" strften = "tentdvt" ElseIf lstdanhmuc.ListIndex = 19 Then strtruongdulieu = "lydo" strften = "tenlydo" ElseIf lstdanhmuc.ListIndex = 20 Then strtruongdulieu = "maGDCS" strften = "ghichu" ElseIf lstdanhmuc.ListIndex = 21 Then strtruongdulieu = "Matrinhdo" strften = "tentrinhdo" End If End Sub Private Sub Xoadulieu() On Error GoTo HandleErrors Dim strxoa As String strxoa = "Delete from " & strbang & " where " & strtruongdulieu & "=" & "'" & txtma.text & "'" ExecuteSQL (strxoa) mconCurrent.Close Exit Sub HandleErrors: MsgBox "§· cã lçi x¶y ra b¹n h·y xem l¹i tr­íc khi l­u", vbCritical, "Loi" End Sub Private Sub Capnhatdanhsach() If lstdanhmuc.ListIndex = 0 Then Call Toanbobangcap ElseIf lstdanhmuc.ListIndex = 1 Then Call Toanbochucvu ElseIf lstdanhmuc.ListIndex = 2 Then Call Toanbochuyennganh ElseIf lstdanhmuc.ListIndex = 3 Then Call Toanbodonvi ElseIf lstdanhmuc.ListIndex = 4 Then Call Toanbodantoc ElseIf lstdanhmuc.ListIndex = 5 Then Call Toanbocongviec ElseIf lstdanhmuc.ListIndex = 6 Then Call Toanbotinhthanh ElseIf lstdanhmuc.ListIndex = 7 Then Call Toanboquocgia ElseIf lstdanhmuc.ListIndex = 8 Then Call Toanboquanhe ElseIf lstdanhmuc.ListIndex = 9 Then Call Toanbohopdong ElseIf lstdanhmuc.ListIndex = 10 Then Call Toanbotongiao ElseIf lstdanhmuc.ListIndex = 11 Then Call Toanbongoaingu ElseIf lstdanhmuc.ListIndex = 12 Then Call Toanbohocvan ElseIf lstdanhmuc.ListIndex = 13 Then Call Toanbohocvi ElseIf lstdanhmuc.ListIndex = 14 Then Call Toanbonghekhiden ElseIf lstdanhmuc.ListIndex = 15 Then Call Toanbothanhphanbanthan ElseIf lstdanhmuc.ListIndex = 16 Then Call Toanbothanhphanxuatthan ElseIf lstdanhmuc.ListIndex = 17 Then Call Toanbotrinhdongoaingu ElseIf lstdanhmuc.ListIndex = 18 Then Call Toanbotrinhdovitinh ElseIf lstdanhmuc.ListIndex = 19 Then Call Toanbolydonghi ElseIf lstdanhmuc.ListIndex = 20 Then Call Toanbogiadinhchinhsach ElseIf lstdanhmuc.ListIndex = 21 Then Call Toanbotrinhdo End If End Sub Option Explicit Dim lanTC As Byte Private Sub cmdcancel_Click() End End Sub Private Sub cbousername_Change() Call Luachonquyentruycap End Sub Private Sub cbousername_Click() Call Luachonquyentruycap End Sub Private Sub cmdok_Click() Dim err_name As String lanTC = lanTC + 1 If lanTC < 3 Then ConnectDatabase Set rsPL = Nothing rsPL.Open "Select * From HR_TruycapHS Where TenTC='" & cbousername.text & "'", mconCurrent, adOpenKeyset, adLockOptimistic If rsPL.RecordCount > 0 Then If Not IsNull(rsPL.Fields("Matkhau")) Then If rsPL.Fields("Matkhau") = txtPassword.text Then Ok = True Else If txtPassword.text = "" Then Ok = True End If Else Ok = False End If If Ok = False Then MsgBox "Tªn ®¨ng nhËp hoÆc mËt khÈu kh«ng chÝnh x¸c. Xin vui lßng nhËp l¹i", vbInformation + vbOKOnly, "Error" txtPassword.SetFocus SendKeys "{home}+{end}" Exit Sub End If Else MsgBox "B¹n ®· nhËp sai qu¸ 3 lÇn. Ch­¬ng tr×nh sÏ tù ®éng kÕt thóc", vbInformation, "Thoat" End End If If Ok = True Then Ok = False strusername = cbousername.text Unload Me MDI.Show End If End Sub Private Sub cmdthoat_Click() End End Sub Private Sub Form_Load() On Error GoTo HandleErrors Toanbonguoidangnhap cbousername.ListIndex = 0 Exit Sub HandleErrors: On Error GoTo 0 End Sub Private Sub txtPassword_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then cmdok_Click End Sub Private Sub txtUserName_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then cmdok_Click End Sub Private Sub Luachonquyentruycap() On Error GoTo HandleErrors Dim strdn As String strdn = "select quyen from TRUYCAP where tentc=" & "'" & cbousername.text & "'" OpenSQL (strdn) strpermission = mrstCurrent("quyen") mconCurrent.Close Exit Sub HandleErrors: On Error GoTo 0 End Sub Private Sub Toanbonguoidangnhap() On Error GoTo HandleErrors Dim strdn As String strdn = "select * from hr_truycaphs" OpenSQL (strdn) cbousername.Clear Do Until mrstCurrent.EOF cbousername.AddItem mrstCurrent("Tentc") mrstCurrent.MoveNext Loop mconCurrent.Close Exit Sub HandleErrors: On Error GoTo 0 End Sub Private Sub Timer1_Timer() Label3.Caption = " Chµo mõng b¹n ®Õn víi ch­¬ng tr×nh qu¶n lý nh©n sù" End Sub Private Sub Timer2_Timer() Label3.Caption = " H·y ®¨ng nhËp ®Ó vµo hÖ thèng " End Sub

Các file đính kèm theo tài liệu này:

  • doc21894.doc
Tài liệu liên quan