Tình hình hoạt động tại Công ty cổ phần giải pháp phần mềm thương mại Esoft

Còn hạn chế em chỉ sử dụng mức độ Unit test khi tiến hành test phần mềm đang xây dựng. Để có thể hiểu rõ về unit test trước tiên ta cần làm rõ khái niệm: thế nào là một đơn vị phần mềm (unit)? Unit là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm tra được. Theo định nghĩa này thì các hàm (function), thủ tục (procedure), lớp (class) hoặc các phương thức (method) đều có thể xem là unit. Vì unit thường có kích thước nhỏ, chức năng hoạt động đơn giản nên ta không gặp khó khăn trong việc kiểm tra, ghi nhận và phân tích kết quả kiểm tra. Nếu phát hiện lỗi việc xác định nguyên nhân cũng như khắc phục lỗi tương đối dễ dàng. Unit test đòi hỏi người kiểm tra phải có kiến thức về thiết kế và code của chương trình.

doc103 trang | Chia sẻ: Dung Lona | Lượt xem: 1096 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Tình hình hoạt động tại Công ty cổ phần giải pháp phần mềm thương mại Esoft, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
òng lưu trữ các thông tin về cá thể Nguyễn Hương Minh Trang trong thực thể cán bộ có các thông tin như: MaCB là ‘0001’, Họ tên là ‘Nguyễn Hương Minh Trang’, Ngày sinh là ‘02/05/1987’, Mỗi bảng còn có các cột (Column), còn gọi là các trường (Field). Các trường ghi lại một thuộc tính của tất cả các cá thể trong thực thể. Chẳng hạn, trường họ tên là thuộc tính họ tên của tất cả các cán bộ trong bảng ‘Hồ sơ cán bộ’. Giao giữa dòng và cột là một ô ghi lại thông tin cụ thể của cá thể. Ví dụ như ô giao giữa dòng thứ 1 và cột họ tên có dữ liệu là ‘Nguyễn Hương Minh Trang’ là thông tin về họ tên của cán bộ có mã ‘0001’ và cán bộ này có họ tên là ‘Nguyễn Hương Minh Trang’. Cơ sở dữ liệu (Database) là một nhóm gồm một hay nhiều bảng có liên quan với nhau. Ví dụ tất cả các bảng có liên quan đến cán bộ như ‘HSCB’, ‘DM_Phongban’, ‘Khen thưởng’, hợp thành cơ sở dữ liệu về nhân sự. b) Phương pháp thiết kế cơ sở dữ liệu Có hai phương pháp cơ bản để thiết kế cơ sở dữ liệu đó là: Thiết kế cơ sở dữ liệu đi từ các thông tin đầu ra và Thiết kế cơ sở dữ liệu bằng phương pháp mô hình hóa. b.1) Thiết kế cơ sở dữ liệu từ các thông tin đầu ra Để thiết kế cơ sở dữ liệu theo phương pháp này cần tiến hành theo các bước sau. Bước 1: Xác định các thông tin đầu ra Ở bước này ta liệt kê toàn bộ các thông tin đầu ra, nội dung tần suất và nơi nhận của chúng. Chẳng hạn với cơ sở dữ liệu về bảng chấm công ta sẽ có các thông tin đầu ra như: danh sách cán bộ, danh sách phòng ban, hệ số lương, Bước 2: Xác định các tên tệp cần thiết cung cấp đủ dữ liệu cho việc tạo ra từng đầu ra. Ở bước này ta cần liệt kê các phần tử thông tin đầu ra theo nguyên tắc: Liệt kê tất cả thông tin đầu ra của mỗi phần tử thông tin cụ thể. Đánh dấu các thuộc tính lặp, các thuộc tính thứ sinh. Gạch chân các thuộc tính khóa. Loại bỏ các thuộc tính thứ sinh. * Các mức chuẩn hóa dữ liệu Chuẩn hóa mức 1 (1.NF) Chuẩn hóa mức 1 quy định, mỗi danh sách không chứa danh sách lặp. Nếu có các thuộc tính lặp thì phải tách các thuộc tính đó thành các danh sách con có ý nghĩa dưới góc độ quản lý. Gắn thêm cho nó một tên, tìm cho nó một thuộc tính định danh riêng và thêm thuộc tính định danh của danh sách gốc. Chuẩn hóa mức 2 (2.NF) Chuẩn hóa mức hai quy định, mỗi danh sách mỗi thuộc tính phải phụ thuộc vào toàn bộ khóa chứ không chỉ phụ thuộc vào một phần của khóa. Nếu có sự phụ thuộc như vậy thì phải tách những thuộc tính phụ thuộc vào bộ phận của khóa thành một danh sách con mới. Lấy bộ phận khóa đó làm khóa cho danh sách mới. Đặt cho danh sách mới này một tên riêng phù hợp với nội dung các thuộc tính trong danh sách. Chuẩn hóa mức 3 (3.NF) Chuẩn hóa mức ba quy định, trong một danh sách không được phép có sự phụ thuộc bắc cầu giữa các thuộc tính. Nếu thuộc tính này phụ thuộc hàm vào các thuộc tính kia thì phải tách chúng ra thành các thuộc tính khác nhau có quan hệ với nhau. Mô tả các tệp Sau khi thực hiện xong bước chuẩn hóa ta tiến hành mô tả các tệp dữ liệu. Mỗi danh sách xác định được sau bước chuẩn hóa mức ba sẽ là một tệp cơ sở dữ liệu. Bước 3: Tích hợp các tệp để chỉ tạo ra một cơ sở dữ liệu Từ mỗi đầu ra theo cách thực hiện ở bước trên sẽ tạo ra rất nhiều danh sách và mỗi danh sách liên quan đến một đối tượng quản lý có sự tồn tại riêng tương đối độc lập. Những danh sách nào cùng mô tả một thực thể thì tích hợp lại nghĩa là tạo ra một danh sách chung bằng cách tập hợp tất cả các thuộc tính chung và riêng của nó. Bước này ta xác định số lượng các bản ghi của từng tệp cũng như xác định độ dài của từng thuộc tính, tính độ dài cho bản ghi. Đối với mỗi tệp cơ sở dữ liệu (gọi là R) ta sử dụng những số đo kinh điển cho việc tính toán khối lượng dữ liệu. L(R) là độ dài của một bản ghi tính theo số lượng ký tự. N(R) là số lượng trung bình của các bản ghi R NP(R) là số lượng trang logic dùng bởi R TP là kích thước trang logic Khi đó: NP(R) = E1[N(R)/E(TP/L(R))] Trong đó: E1(x) là số nguyên được làm tròn lên x E(x) là phần nguyên của x Khối lượng dữ liệu của một sơ đồ được tính theo công thức sau: ∑ N(Ri)*(L(Ri)+S+D) Trong đó, K là tổng số các tệp trên sơ đồ. Trên thực tế có thể chọn giá trị trung bình của D là 8 và giá trị trung bình của S là 12 để tính. Bước 4: Xác định liên hệ logic giữa các tệp và thiết lập sơ đồ cấu trúc dữ liệu giữa các tệp Ở bước này cần xác định mối liên hệ giữa các tệp và biểu diễn mối quan hệ giữa chúng bằng các mũi tên. b.2) Thiết kế cơ sở dữ liệu bằng phương pháp mô hình hóa Theo phương pháp này ta không đi mô tả và liệt kê các thông tin đầu ra mà sẽ dùng các mô hình để biểu diễn các thông tin, biểu diễn sự liên kết giữa các thực thể thông tin với nhau. Chẳng hạn, để biểu diễn mối quan hệ giữa cán bộ và phòng ban ta dùng mô hình sau. Phòng ban Có Cán bộ Theo phương pháp mô hình hóa các thực thể không tồn tại độc lập mà có quan hệ với nhau, các quan hệ này gồm: liên kết một – một, liên kết một – nhiều, liên kết nhiều – nhiều. Liên kết một – một 1@1 Một lần xuất hiện của thực thể A được liên kết với chỉ một lần xuất hiện của thực thể B và ngược lại. Trưởng phòng Lãnh đạo Phòng ban Liên kết một – nhiều 1@N Đây là loại liên kết phổ biến trong thực tế, một lần xuất hiện của thực thể A liên kết với một hay nhiều lần xuất hiện của thực thể B và mỗi lần xuất hiện của B chỉ liên kết với một lần xuất hiện của thực thể A. Ví dụ như mối quan hệ sau. Phòng ban Có Chức vụ Liên kết nhiều – nhiều N@N Liên kết này có nghĩa là mỗi lần xuất hiện của thực thể A ứng với một hay nhiều lần xuất hiện của thực thể B và ngược lại. Ví như quan hệ giữa phòng ban và cán bộ, một phòng ban có nhiều cán bộ cùng làm việc và cũng có thể một cán bộ trong một thời gian làm ở nhiều phòng khác nhau ở các cương vị khác nhau. Để biểu diễn mối quan hệ nhiều – nhiều ta dùng thực thể trung gian và trong trường hợp này là thực thể Chức vụ. Phòng ban Chức vụ Cán bộ Có Có 2.2.3. Lập trình phần mềm quản lý tiền lương Đây có thể coi là một trong những công đoạn quan trọng nhất khi sản xuất phần mềm. Nếu ta có một thiết kế tốt nhưng lập trình kém thì cũng không thể sản xuất ra một phần mềm tốt. Ở giai đoạn này trên cơ sở của hồ sơ thiết kế, phòng lập trình sẽ tiến hành chi tiết hóa các sơ đồ, lưu đồ để biến thành các bản vẽ thiết kế sản phẩm. Một điều quan trọng cần lưu ý khi lập trình là việc lập trình phải trung thành với thiết kế kiến trúc phần mềm không được làm thay đổi. Các hoạt động và kết quả đặc trưng trong công đoạn lập trình: thiết kế kỹ thuật chi tiết, lập trình các thư viện chung, module, tích hợp module, tích hợp hệ thống, tài liệu mô tả hệ thống phần mềm được hoàn thành. Lưu đồ: Bắt đầu Lập kế hoạch lập trình Lập trình thư viện chung Lập trình Module Tích hợp hệ thống Lập hồ sơ quy trình lập trình Kết thúc 2.2.3.1. Lập trình thư viện chung Đây là bước đầu tiên sau khi có kế hoạch lập trình. Trước hết cần tiến hành lập trình một thư viện là nơi lưu trữ các hàm, thủ tục, module,... để khi tiến hành lập trình các bước tiếp theo lập trình viên chỉ cần lấy ra sử dụng. 2.2.3.2. Lập trình Module Module thực chất là một đoạn chương trình hoàn thiện có khả năng giải quyết một nhiệm vụ nào đó. Với phần mềm quản lý tiền lương ta cần lập trình các module như: module cập nhật danh mục, module tính lương, module kết xuất báo cáo, 2.2.3.3. Tích hợp hệ thống: Sau khi đã có các module cần thiết lập trình viên cần phải thực hiện công việc tiếp theo là tích hợp các module đó lại với nhau thành một phần mềm hoàn chỉnh. Chẳng hạn với phần mềm quản lý tiền lương ta cần tích hợp các module như đã nói ở trên thành 1 phần mềm hoàn chỉnh. 2.2.4. Test phần mềm quản lý tiền lương Các lập trình viên là người viết ra phần mềm vì thế phần mềm lúc này còn mang tính chủ quan của họ và tất nhiên nó còn chứa đựng một vài yếu tố sai sót nhất định. Vì vậy, sau khi hoàn tất công đoạn lập trình ta phải tiến hành test chương trình và test toàn bộ phần mềm để tìm và khắc phục lỗi. Quá trình test trong sản xuất phần mềm quản lý tiền lương bao gồm: test hệ thống theo những đặc tả yêu cầu về phần mềm của khách hàng, test nghiệm thu theo tiêu chuẩn nghiệm thu. Các hoạt động đặc trưng trong quá trình test: lập kịch bản test, chuẩn bị dữ liệu test, thực hiện test, ghi nhận lỗi. Lưu đồ: Bắt đầu Lập kế hoạch Test Lập kịch bản Test Test hệ thống Test nghiệm thu Ghi nhận sai sót Lập hồ sơ Test Kết thúc Test phần mềm là công việc mà bất cứ ai từng tham gia xây dựng, phát triển phần mềm đều biết và đã từng làm. Để thực hiện việc test phần mềm trước hết ta phải xây dựng kịch bản test, chuẩn bị dữ liệu test. Sau đó căn cứ vào kịch bản test để chạy thử phần mềm phát hiện lỗi. Test phần mềm là công việc hết sức nhạy cảm, nó là bước đệm giữa giai đoạn xây dựng và sử dụng phần mềm. Trong thực tế test phần mềm có rất nhiều mức độ khác nhau và có mối tương quan với các chặng phát triển trong dự án xây dựng phần mềm. Tuy nhiên có 4 mức độ chính khi tiến hành test phần mềm là: Kiểm tra mức đơn vị (Unit test) Kiểm tra tích hợp (Integration test) Kiểm tra mức hệ thống (System test) Kiểm tra chấp nhận sản phẩm (Acceptance test) Trong khuôn khổ đề tài đang thực hiện cũng như trình độ của bản thân còn hạn chế em chỉ sử dụng mức độ Unit test khi tiến hành test phần mềm đang xây dựng. Để có thể hiểu rõ về unit test trước tiên ta cần làm rõ khái niệm: thế nào là một đơn vị phần mềm (unit)? Unit là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm tra được. Theo định nghĩa này thì các hàm (function), thủ tục (procedure), lớp (class) hoặc các phương thức (method) đều có thể xem là unit. Vì unit thường có kích thước nhỏ, chức năng hoạt động đơn giản nên ta không gặp khó khăn trong việc kiểm tra, ghi nhận và phân tích kết quả kiểm tra. Nếu phát hiện lỗi việc xác định nguyên nhân cũng như khắc phục lỗi tương đối dễ dàng. Unit test đòi hỏi người kiểm tra phải có kiến thức về thiết kế và code của chương trình. 2.3. Ngôn ngữ lập trình VISUAL BASIC VISUAL BASIC là sản phẩm ngôn ngữ lập trình trong bộ Visual Studio, đây là ngôn ngữ lập trình đa năng dùng để phát triển phần mềm nhằm giải quyết nhiều bài toán khác nhau trong quản lý. VISUAL BASIC là ngôn ngữ lập trình trên Windows do hãng Microsoft xây dựng và được coi là 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. Đây là ngôn ngữ giúp cho các lập trình viên có thể thấy được ngay kết quả và giao diện sau mỗi thao tác thiết kế. Trong Visual Basic khi thiết kế giao diện lập trình viên chỉ cần gắp thả các đối tượng và 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 chuột, nhấn phím, Hơn nữa khả năng thừa kế cũng như sử dụng những công cụ và thư viện có sẵn, khả năng tạo ra các thư viện giúp cho lập trình viên xây dựng các ứng dụng một cách nhanh chóng, hỗ trợ đắc lực trong việc lập trình theo nhóm. 2.3.1. Các thành phần của Visual Basic Form (Giao diện): là các màn hình giao tiếp thực hiện các chức năng của dự án phần mềm. Trên form là những đối tượng do lập trình viên thêm vào trong quá trình xây dựng. Report (Báo cáo): là sản phẩm đầu ra của dự án phần mềm, là kết quả cuối cùng của quá trình xử lý tổng hợp, phân tích và thống kê dữ liệu. Báo cáo chính là thước đo để đánh giá một phần mềm có thực sự tốt hay không? Các báo cáo có thể được thiết kế bằng công cụ có sẵn (Data Report) hoặc bởi một phần mềm chuyên dụng khác (Crystal report). Thư viện (Class Module): là tập hợp các hàm hay thủ tục để thực hiện một module nào đó có thể được chia sẻ, kế thừa, sử dụng giữa các chức năng của phần mềm hay giữa các phần mềm khác nhau. Cơ sở dữ liệu (Database): là nơi chứa các dữ liệu đầu vào hay đầu ra của dự án phần mềm. Nó được tạo ra và quản lý bởi một hệ quản trị cơ sở dữ liệu như Access, Foxpro hay SQL Server và được khai thác sử dụng thông qua các công cụ của Visual Basic. 2.3.2. Những ưu điểm khi sử dụng Visual Basic trong lập trình Cho phép chỉnh sửa, ghép nối chương trình một cách dễ dàng, đơn giản. Có khả năng liên kết với các thư viện liên kết động. Cho phép lập trình viên thấy ngay kết quả từng thao tác khi xây dựng chương trình. Tiết kiệm được thời gian và công sức của lập trình viên khi xây dựng các ứng dụng. Với những ưu điểm nổi bật như ở trên trong chuyê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 khi xây dựng phần mềm quản lý tiền lương. CHƯƠNG 3 PHÂN TÍCH THIẾT KẾ PHẦN MỀM QUẢN LÝ TIỀN LƯƠNG 3.1. Phân tích khi xây dựng phần mềm 3.1.1. Yêu cầu của phần mềm Yêu cầu đặt ra là phải thiết kế phần mềm quản lý tiền lương cho doanh nghiệp. Và phần mềm đó phải có tính ứng dụng thực tế cao, đáp ứng được nhu cầu trong thời kỳ mới, phải thân thiện, dễ sử dụng, an toàn và đạt hiệu quả cao. Để thực hiện được điều đó thì phần mềm phải thực hiện được những việc sau: Cập nhật và lưu trữ thông tin về nhân viên, bảng chấm công một cách nhanh chóng, chính xác. Phần mềm phải có “tính mở”, các công thức liên quan đến tính lương phải là công thức động để nâng cao và hoàn thiện hơn so với các phần mềm quản lý lương trước đó nhằm đáp ứng được những thay đổi của chính sách tiền lương. Giao diện người dùng thân thiện; cách bố trí, màu sắc hài hòa đẹp mắt. Việc bảo mật, phân quyền được thực hiện chặt chẽ ở mức cơ sở dữ liệu và mức người sử dụng chương trình. Chương trình ứng dụng đơn giản, sử dụng hệ thống phím tắt linh hoạt giúp người dùng có thể thao tác một cách nhanh chóng trong quá trình nhập liệu. Hệ thống báo cáo thống kê dữ liệu khá đầy đủ, phong phú,và có thể kết xuất sang máy in hoặc Excel. Áp dụng được luật tính thuế thu nhập cá nhân hiện nay. 3.1.2. Các thông tin đầu vào Khi xây dựng một phần mềm bao giờ ta cũng cần phải biết những thông tin đầu vào của nó. Đối với phần mềm quản lý tiền lương các thông tin đầu vào bao gồm: Hồ sơ lý lịch nhân viên bao gồm các thông tin về: Mã nhân viên: đây là mã số được dùng để phân biệt giữa hai công nhân viên khác nhau và được dùng để làm thẻ cho công nhân viên này. Họ đệm và Tên: là các thông tin thể hiện họ đệm và tên của mỗi công nhân viên. Sở dĩ chương trình thực hiện tách Họ tên của nhân viên ra thành Họ đệm và Tên là để phục vụ cho công tác tìm kiếm sau này được hiệu quả hơn. Ngày sinh: cung cấp thông tin về ngày sinh của công nhân viên. Số Chứng minh nhân dân: đây là phần phải nhập. Địa chỉ liên lạc: đây cũng là phần bắt buộc phải nhập. (.) Tất cả những thông tin này sẽ được lưu trữ để khi cần xem, kiểm tra các thông tin về bảo hiểm, tạm ứng lương, lãnh lương, chương trình sẽ dựa vào những dữ liệu này. Bảo hiểm xã hội – y tế bao gồm các thông tin: Mã nhân viên: thể hiện hợp đồng của nhân viên nào. Các hình thức bảo hiểm: bảo hiểm y tế, bảo hiểm xã hội, Số tiền tham gia bảo hiểm. Công thức tính công bao gồm các thông tin: Ngày áp dụng công thức tính: phải cập nhật ngày áp dụng công thức tính bởi công thức tính là công thức động và khi có nhiều công thức tính thì chương trình sẽ tự động chuyển công thức ngày gần nhất là có hiệu lực. Đồng thời chương trình cũng chỉ hoạt động khi chỉ một công thức là có hiệu lực. Số tiền một giờ chính khóa Số tiền một giờ ngày lễ = n% * (số tiền một giờ / ngày bình thường ) Đối tượng áp dụng (nhân viên – công nhân): cho biết công thức tính được áp dụng cho nhân viên hay công nhân. Phụ cấp bao gồm các thông tin: Mã nhân viên: cho biết phụ cấp thuộc nhân viên nào. Phụ cấp tháng – năm: số tiền phụ cấp này sẽ được cộng vào tiền lương tháng x năm y của nhân viên. Số tiền phụ cấp. Lý do phụ cấp: cho biết những lý do dẫn đến việc phụ cấp cho nhân viên chẳng hạn có trách nhiệm trong nhiệm vụ, cố gắng hoàn thành nhiệm vụ trong quá trình làm việc. Chương trình sẽ tự động lưu trữ các lý do nhập vào để có thể dùng cho những lần sau. Tạm ứng: việc tạm ứng bao gồm các thông tin sau: Mã nhân viên: cho biết nhân viên nào đã nhận tiền tạm ứng để tránh nhầm lẫn khi tính lương cuối tháng. Tạm ứng tháng – năm: chương trình sẽ tự động trừ vào tiền lương của nhân viên đã nhận tạm ứng vào đúng tháng năm nhân viên nhận tạm ứng. Ngày tạm ứng: mặc định là ngày nhân viên nhận tiền tạm ứng. Số tiền tạm ứng: mặc định là tỷ lệ phần trăm / mức lương cơ bản (hoặc số tiền công làm được trong tháng) Lý do tạm ứng 3.1.3. Các thông tin đầu ra Thông tin đầu ra là những thông tin đã được xử lý và tổng hợp từ những thông tin đầu vào. Thông tin ra là kết quả hoạt động của phần mềm phục vụ cho nhu cầu về thông tin của người sử dụng và đáp ứng nhu cầu quản lý tiền lương của doanh nghiệp. Bởi vậy thông tin ra càng có chất lượng cao thì càng chứng tỏ phần mềm hoạt động tốt. Với các thông tin đầu vào như ở trên ta thu được thông tin đầu ra là các báo cáo như: Báo cáo lương tháng theo các phòng ban Báo cáo lương tháng theo từng công nhân viên Báo cáo về thuế thu nhập cá nhân của từng công nhân viên. (.) Thông tin đầu ra có thể được kết xuất theo hai hướng: in ra máy in và xuất sang Excel. 3.2. Biểu đồ phân cấp chức năng (BFD) Biểu đồ phân cấp chức năng BFD được biểu diễn theo hình vẽ (Hình 3.1) Quản lý cán bộ Quản lý lương Tạo Báo cáo QUẢN LÝ TIỀN LƯƠNG Cập nhật danh sách nhân viên Tạo bảng chấm công Cập nhật bảo hiểm Tính mức thuế thu nhập cá nhân Cập nhật phụ cấp Cập nhật khen thưởng Cập nhật công thức tính lương Tính lương Lương tháng theo phòng ban Lương tháng theo nhân viên Thuế thu nhập cá nhân từng nhân viên Xem bảng chấm công Danh sách nhân viên Bảng tổng hợp thanh toán lương toàn công ty Hình 3.1. Biểu đồ phân cấp chức năng phần mềm quản lý tiền lương 3.3. Sơ đồ luồng dữ liệu (DFD – Data Flow Diagram) 3.3.1. Sơ đồ ngữ cảnh – Context Diagram Sơ đồ ngữ cảnh cho ta cái nhìn khái quát về quá trình hoạt động của phần mềm và được biểu diễn trong hình vẽ sau (Hình 3.2) Phần mềm quản lý tiền lương Nhân viên Ban lãnh đạo Bảng chấm công Thông tin yêu cầu Báo cáo theo yêu cầu Cục thuế Thông tin yêu cầu Báo cáo thuế thu nhập toàn công ty Bảng lương toàn công ty Bảng lương tháng từng nhân viên Bảng thuế thu nhập Hình 3.2. Sơ đồ ngữ cảnh của phần mềm quản lý lương 3.3.2. Sơ đồ luồng dữ liệu mức đỉnh Sơ đồ luồng dữ liệu mức đỉnh cho biết những chức năng chính của phần mềm cũng như dòng thông tin vào ra giữa chúng. Sơ đồ này được biểu diễn như hình vẽ (Hình 3.3) 1.0. Quản lý nhân sự 2.0. Quản lý lương 3.0. Báo cáo Nhân viên Ban lãnh đạo Thông tin cá nhân Thông tin tính lương Hồ sơ lương Hồ sơ nhân viên Chấm công Bảng chấm công Thông tin khen thưởng, phụ cấp, bảo hiểm Thông tin yêu cầu Báo cáo theo yêu cầu Bảng lương toàn công ty Cục thuế Thông tin yêu cầu Báo cáo thuế thu nhập Hồ sơ lưu báo cáo Bảng lương tháng từng nhân viên Hình 3.3. Sơ đồ luồng dữ liệu mức đỉnh 3.4. Biểu đồ thiết kế kiến trúc của phần mềm quản lý tỉền lương Biểu đồ thiết kế kiến trúc của phần mềm được biểu diễn trong hình vẽ sau (Hình 3.4) Phần mềm quản lý tiền lương Hệ thống Danh mục Quản lý cán bộ Quản lý lương Tìm kiếm Báo cáo Quản trị hệ thống Thoát Phân quyền Thay đổi MK Thêm User Sao lưu cơ sở dữ liệu Phục hồi cơ sở dl Cập nhật bảo hiểm Cập nhật phụ cấp Cập nhật ct tính lương Tạo bảng chấm công Tính mức thuế thu nhập cá nhân Tính lương Cập nhật ds nhân viên Cập nhật khen thưởng Tìm kiếm theo phòng ban Tìm kiếm theo nhân viên Tìm kiếm chi tiết nâng cao Lương tháng của các phòng Lương tháng của từng nhân viên Thuế thu nhập cá nhân Xem bảng chấm công Danh sách nhân viên Bảng tổng hợp thanh toán lương toàn công ty Danh mục phòng ban Danh mục chức vụ Danh mục lương Danh mục thuế thu nhập cá nhân Hình 3.4. Biểu đồ thiết kế kiến trúc của phần mềm quản lý tiền lương 3.5. Thiết kế cơ sở dữ liệu Từ các thông tin đầu vào cũng như các thông tin đầu ra của phần mềm quản lý tiền lương, cơ sở dữ liệu gồm các bảng sau: Bảng Nhân viên lưu trữ thông tin cá nhân của toàn bộ công nhân viên trong doanh nghiệp Bảng Phòng ban cung cấp thông tin về từng phòng ban trong doanh nghiệp. Bảng Bảo hiểm cung cấp thông tin về loại bảo hiểm cũng như phần trăm phải trích nộp của từng nhân viên. Bảng Chi tiết thuế cung cấp thông tin về mã thuế, số người phụ thuộc và số tiền giảm trừ /người của từng nhân viên. Bảng Phụ cấp cung cấp thông tin về các khoản phụ cấp cũng như số tiền phụ cấp của nhân viên trong tháng. Bảng Thuế cung cấp thông tin về các loại thuế phải trích nộp theo lương. Bảng Thưởng cung cấp thông tin về các khoản mà nhân viên được thưởng trong tháng. Bảng Lương cung cấp thông tin về bậc lương áp dụng trong doanh nghiệp. Mô hình quan hệ thực thể giữa các bảng trong cơ sở dữ liệu được biểu diễn như hình vẽ (Hình 3.5) Hình 3.5. Mô hình quan hệ thực thể giữa các bảng trong cơ sở dữ liệu Bảng Nhân viên Field Name DataType Field Size Diễn giải MaNV Text 10 Mã nhân viên TênNV Text 30 Tên nhân viên MaPhong Text 10 Mã phòng Ngaysinh Date/Time dd/mm/yyyy Ngày sinh Noisinh Text 20 Nơi sinh Gioitinh Text 20 Giới tính Socmnd Text 20 Số chứng minh thư nhân dân Ngaycap Date/time dd/mm/yyyy Ngày cấp Dienthoai Number Long Interger Điện thoại Diachi Text 50 Địa chỉ MaBacluong Text 10 Mã bậc lương Bảng Phòng ban Field Name DataType FieldSize Diễn giải MaPhong Text 10 Mã phòng Tenphong Text 30 Tên phòng Bảng Bảo hiểm Field Name DataType FieldSize Diễn giải MaBaohiem Text 10 Mã bảo hiểm MaNV Text 10 Mã nhân viên PhantramNop Number Long Interger Phần trăm phải nộp Ghichu Text 50 Ghi chú Bảng Chi tiết thuế Field Name DataType FieldSize Diễn giải MaThue Text 10 Mã thuễ MaNV Text 10 Mã nhân viên Songuoiphuthuoc Number Long Interger Số người phụ thuộc Sotientrennguoi Number Long Interger Số tiền trên người Bảng Phụ cấp FieldName DataType FieldSize Diễn giải Maphucap Text 10 Mã phụ cấp MaNV Text 10 Mã nhân viên Tenphucap Text 30 Tên phụ cấp Thangphucap Text 10 Tháng phụ cấp Sotien Number Long Interger Số tiền Bảng Thuế FieldName DataType Fieldsize Diễn giải MaThue Text 10 Mã thuễ Bacthue Text 10 Bậc thuế Thunhapnam Number Long Interger Thu nhập năm Thunhapthang Number Long Interger Thu nhập tháng Thuesuat Number Long Interger Thuế suất Bảng Thưởng FieldName DataType FieldSize Diễn giải Mathuong Text 10 Mã thưởng MaNV Text 10 Mã nhân viên LyDo Text 50 Lý do Thangthuong Text 10 Tháng thưởng Sotien Number Long Interger Số tiền Bảng Lương FieldName DataType FieldSize Diễn giải Bacluong Number Long Interger Bậc lương 3.6. Giải thuật một số module xử lý Thuật toán đăng nhập (Hình 3.6) Bắt đầu Nhập tên người dùng và mật khẩu Kiểm tra tên người dùng và mật khẩu Thực hiện các công việc theo quyền hạn Bạn có tiếp tục không? Kết thúc Đúng Sai Có Không Thuật toán nhập dữ liệu Sai Đúng Kiểm tra dữ liệu thỏa mãn điều kiện Kết thúc Báo lỗi Cập nhật dữ liệu Nhập dữ liệu theo từng trường Tạo bản ghi rỗng Bắt đầu Thuật toán sửa dữ liệu Bắt đầu Nhập mã bản ghi muốn sửa Kiểm tra sự hợp lệ của mã bản ghi Hiện bản ghi cần sửa Sửa bản ghi Bạn có sửa tiếp không? Kết thúc Có Không Không Thỏa mãn Thuật toán xóa dữ liệu Bắt đầu Nhập mã bản ghi muốn xóa Kiểm tra sự hợp lệ mã bản ghi Hiện bản ghi cần xóa Xóa bản ghi Bạn có xóa tiếp không? Kết thúc Không Có Có Không Thuật toán tìm kiếm dữ liệu Bắt đầu Nhập thông tin tìm kiếm Kiểm tra thông tin tìm kiếm Hiện thông tin tìm thấy Bạn có tiếp tục không? Kết thúc Không Có Không Có 3.7. Thiết kế giao diện Dưới đây là một số giao diện của phần mềm quản lý tiền lương. Form Đăng nhập Form chính Form Cập nhật bậc lương Form Cập nhật phòng ban Form Cập nhật Bảo hiểm Form cập nhật chi tiết thuế Form Cập nhật danh sách nhân viên Form Cập nhật phụ cấp Form Bao cao luong theo nhan vien Form Bao cao luong toan cong ty LỜI NÓI ĐẦU Ngày nay, chúng ta không ai có thể phủ nhận được sự phát triển như vũ bão của khoa học kỹ thuật nói chung và ngành công nghệ thông tin nói riêng. Là một nước đang phát triển ta có thể nhận thấy rằng ngành công nghệ thông tin đóng góp vai trò hết sức quan trọng trong công cuộc xây dựng đất nước ngày càng đổi mới, văn minh. Kể từ khi chính thức gia nhập WTO vào ngày 11/01/2007, khi cam kết thực thi lộ trình mở cửa thị trường thì Việt Nam chính thức bước vào thị trường toàn cầu với mức cạnh tranh cao hơn. Trong bối cảnh đó ngành công nghệ thông tin càng thể hiện rõ nét hơn ưu điểm của nó so với các ngành khoa học khác. Điều này được thể hiện rõ hơn trong các hoạt động xã hội đặc biệt là trong công tác quản lý kinh tế. Quản lý kinh tế nói chung và quản lý tiền lương nói riêng là một công việc phức tạp đòi hỏi nhiều thời gian, nhân lực. Trên thực tế, các chính sách tiền lương là yếu tố luôn biến động để phù hợp với tình hình phát triển của đất nước. Việc quản lý tiền lương trước đây được thực hiện chủ yếu trên sổ sách, giấy tờ. Chỉ cần một sự biến động nhỏ như: nâng hạ bậc lương, thay đổi lương cơ bản, cũng buộc các nhà quản lý phải lập lại hồ sơ, sổ sách. Công việc này mất rất nhiều thời gian và không tránh khỏi được những sai sót hơn nữa nó gây nên sự nhàm chán cho nhà quản lý. Trước thực tế đó người ta đã bắt đầu ứng dụng công nghệ thông tin vào quản lý tiền lương và nó thực sự đem lại hiệu quả rõ rệt. Rất nhiều các tổ chức, cơ quan, doanh nghiệp đã giảm bớt được chi phí, nâng cao lợi nhuận khi ứng dụng công nghệ thông tin. Mà bản chất của công nghệ thông tin chính là công nghệ phần mềm. Hiện nay, nhu cầu quản lý đòi hỏi mức độ chi tiết, chính xác và lập báo cáo nhanh chóng. Đặc biệt trong lĩnh vực quản lý tiền lương khi mà các chính sách vĩ mô của nhà nước thường xuyên thay đổi thì đòi hỏi sự cụ thể , chi tiết và chính xác gần như tuyệt đối. Vì vậy, giải pháp duy nhất cho nó chính là sử dụng phần mềm tin học, ứng dụng công nghệ thông tin vào quản lý dữ liệu. Trong quá trình thực tập tại Công ty cổ phần giải pháp phần mềm thương mại Esoft sau khi tìm hiểu kỹ thực trạng của công ty cũng như nhận được sự khích lệ của Ông Vũ Quốc Kỳ - Giám đốc Công ty em đã quyết định lựa chọn đề tài: “Xây dựng phần mềm quản lý tiền lương cho doanh nghiệp bằng ngôn ngữ lập trình Visual Basic”. Do thời gian cũng như trình độ của bản thân còn hạn chế chuyên đề thực tập tốt nghiệp của em chắc chắn không tránh khỏi những sai sót. Em mong nhận được sự giúp đỡ cũng như đóng góp ý kiến của thầy cô và các bạn để chuyên đề của em được hoàn thiện hơn. Em xin gửi lời cảm ơn chân thành tới các thầy cô trong khoa Tin học kinh tế - Trường Đại học Kinh tế quốc dân đã tận tình chỉ bảo, đặc biệt là TS. Trần Thị Thu Hà – Phó Chủ nhiệm khoa Tin học kinh tế đã tận tình chỉ bảo, hướng dẫn và tạo điều kiện cho em hoàn thành chuyên đề thực tập tốt nghiệp này. KẾT LUẬN Trong thời gian thực tập tại Công ty cổ phần giải pháp phần mềm thương mại Esoft em đã trau dồi cho mình được rất nhiều kinh nghiệm thực tiễn. Em đã hiểu rõ quy trình cũng như các công việc cần thực hiện trong nghiệp vụ quản lý tiền lương. Sau khi phân tích em nhận thấy rằng với cách quản lý lương thủ công sẽ gặp phải những nhược điểm như: quản lý bằng giấy tờ thủ công dễ thất lạc, không lưu trữ được lâu, tìm kiếm khó khăn mất nhiều thời gian, công sức. Để khắc phục những nhược điểm đó em quyết định xây dựng phần mềm quản lý tiền lương cho doanh nghiệp nhằm giảm bớt những chi phí không đáng có và nâng cao hiệu quả công tác quản lý. Sau khi hoàn thành xong đề tài em nhận thấy đã đạt được những kết quả sau: Về Công nghệ Tìm hiểu và lựa chọn được các công cụ phù hợp cho thiết kế chương trình quản lý tiền lương. Nắm bắt rõ nghiệp vụ quản lý lương cũng như quy trình xây dựng một phần mềm quản lý tiền lương cho doanh nghiệp. Về chương trình Giao diện thân thiện, dễ sử dụng. Phân quyền sử dụng đối với người dùng. Sử dụng các công thức động dễ dàng cho viêc cập nhật khi có sự thay đổi trong chính sách. Báo cáo theo các mức từ chi tiết đến tổng hợp tuỳ theo yêu cầu của nhà quản lý. Tuy nhiên phần mềm vẫn còn một số hạn chế như: Bảng chấm công chưa được cập nhật một cách tự động, chưa có sự kết nối giữa phần mềm với máy chấm công, máy quét thẻ. Chương trình mới chỉ đề cập và dừng lại ở mức tìm kiếm, cập nhật, thêm thông tin. Việc xây dựng một phần mềm quản lý nói chung và việc xây dựng phần mềm quản lý tiền lương ở một doanh nghiệp nói riêng để đáp ứng được tất cả các vấn đề đặt ra từ khi tìm hiểu yêu cầu, giải quyết bài toán, thiết kế, lập trình cho đến khi đưa ra thử nghiệm đòi hỏi rất nhiều thời gian, công sức. Vì vậy, trong bản báo cáo thực tập này em đã xây dựng phần mềm theo phương pháp phân tích thiết kế. Em hy vọng phần mềm này có thể giải quyết được những vấn đề còn tồn đọng cũng như nhược điểm của các phần mềm cũ, giảm bớt được chi phí không đáng có. Em xin gửi lời cảm ơn chân thành đến Phòng kế toán, Phòng lập trình của Công ty cổ phần giải pháp phần mềm thương mại Esoft đã nhiệt tình giúp đỡ em trong quá trình tìm hiểu và xây dựng chương trình. Một lần nữa em xin gửi lời cảm ơn đến TS. Trần Thị Thu Hà, người đã hướng dẫn, chỉ bảo và giúp đỡ em trong suốt quá trình thực hiện đề tài. TÀI LIỆU THAM KHẢO PGS.TS Hàn Viết Thuận – Bài giảng Công nghệ phần mềm ThS. Trịnh Hoài Sơn – Bài giảng Lập trình ứng dụng trong quản lý ThS. Trần Công Uẩn - Giáo trình Cơ sở dữ liệu, NXB Thống kê, Hà Nội, 2005 PGS.TS Hàn Viết Thuận - Giáo trình Cấu trúc dữ liệu và giải thuật, NXB Thống kê, Hà Nội, 2007 Trang web: http:// www.esoft.com.vn Tạp chí thông tin chung Công ty cổ phần giải pháp phần mềm thương mại Esoft. Diễn đàn của câu lạc bộ Visual Basic: http:// www.caulacbovb.com Hệ thống văn bản hướng dẫn thực hiện chế độ tiền lương mới, NXB Thống kê, Hà Nội, 2006 Trang web của Bộ tài chính: http:// www.mof.gov.vn PHỤ LỤC Form đăng nhập Dim TTip As New VToolTip Dim i As Integer Dim Bol As Boolean Dim Thoat As Boolean Private Sub Cmdlog_Click() If Trim(TxtTK.Text) = "" Then Thongbao "B¹n ch­a nhËp tªn tµi kho¶n !", , "Chus ys", Canh_Bao TxtTK.SetFocus Exit Sub End If Ketnoi_CSDL RsDangNhap.MoveFirst 'Kiem tra tai khoan co ton tai hay khong Do While Not RsDangNhap.EOF If LCase(RsDangNhap!taikhoan) = LCase(TxtTK.Text) Then GoTo Dangnhap 'Nhay den label dangnhap Exit Do End If RsDangNhap.MoveNext Loop If RsDangNhap.EOF = True Then Thongbao "Tµi kho¶n b¹n võa nhËp kh«ng tån t¹i !", Tb_Dong, "Looxi", Bao_Loi TxtTK.SetFocus SendKeys "{home}+{end}" Exit Sub End If Dangnhap: 'Kiem tra mat khau co dung hay khong If RsDangNhap!Matkhau = TxtMK.Text Then 'Neu dung mat khau m_Taikhoan = TxtTK.Text m_Quyen = RsDangNhap!Quyen Bol = True Thoat = False Me.Enabled = False Timer1.Enabled = True Else 'Neu nhap sai mat khau Thongbao "B¹n nhËp sai mËt khÈu !", Tb_Dong, "Looxi", Bao_Loi TxtMK.Text = "" TxtMK.SetFocus Exit Sub End If End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then cmdexit_Click End If ' Neu nhan to hop phim Ctrl + L If CmdLog.Enabled = True Then If Shift = 2 And KeyCode = vbKeyL Then Cmdlog_Click ' Thuc hien dang nhap chuong trinh End If End If ' Neu nhan to hop Ctrl + F4 If Shift = 4 And KeyCode = vbKeyF4 Then cmdexit_Click End If ' Neu nhan phim Ctrl + C If Shift = 2 And KeyCode = vbKeyC Then If Trim(TxtMK.Text) "" Then ' Neu txtpass khong rong Clipboard.Clear Thongbao "Chøc n¨ng sao chÐp ®· bÞ v« hiÖu ho¸ !", Tb_Dong, "Chus ys", Canh_Bao ' Ra thong bao End If End If End Sub Private Sub Form_Load() Me.Enabled = False Bol = False Thoat = True i = 0 MKTrans Me.hwnd, 0 Ketnoi_CSDL KeyPreview = True On Error Resume Next ' Nhay den buoc tiep theo neu gap loi TTip.SetToolTipObj CmdLog.hwnd, "BÊm vµo ®©y ®Ó ®¨ng nhËp ch­¬ng tr×nh (Ctrl + L)." TTip.SetToolTipObj CmdExit.hwnd, "BÊm vµo ®©y ®Ó tho¸t ch­¬ng tr×nh (Alt + F4 or ESC)." End Sub Private Sub cmdexit_Click() Thoat = True Bol = True Me.Enabled = False Timer1.Enabled = True End Sub Private Sub Timer1_Timer() If i < 255 And Bol = False Then MKTrans Me.hwnd, i i = i + 15 End If If i >= 255 And Bol = False Then Me.Enabled = True TxtTK.SetFocus MakeOpaque Me.hwnd Timer1.Enabled = False End If If i > 0 And Bol = True Then Me.Show i = i - 15 MKTrans Me.hwnd, i End If If i = 0 And Bol = True Then If Thoat = False Then FrmMDIMAIN.Show Unload Me Else End End If End If End Sub Private Sub Txtmk_KeyPress(KeyAscii As Integer) If CmdLog.Enabled = True Then If KeyAscii = vbKeyReturn Then ' Neu nhan phim Enter Cmdlog_Click ' Thuc hien dang nhap chuong trinh End If End If End Sub Form chính Option Explicit Dim Menus As cMenus Dim Vtip As New VToolTip Dim FIni As New clsIniFile Dim Result As Long Dim Tieude As String Dim B_id As Long Dim B_Tk As String Private Sub cmdchucvu_Click() mnuchucvu_Click End Sub Private Sub cmdchuyenmon_Click() mnuchuyenmon_Click End Sub Private Sub cmdhd_Click() End Sub Private Sub CmdHelp_Click() End Sub Private Sub cmdloc_Click() mnuthongke_Click End Sub Private Sub cmdluong_Click() Call mnuTinhluong_Click End Sub Private Sub CmdMk_Click() mnucpass_Click End Sub Private Sub Cmdphong_Click() mnuphongban_Click End Sub Private Sub CmdSaoluu_Click() mnusaoluu_Click End Sub Private Sub CmdThoat_Click() mnuthoat_Click End Sub Private Sub CmdTim_Click() FrmTim.Show FrmTim.WindowState = 2 FrmTim.ZOrder 0 End Sub Private Sub cmdtrinhdo_Click() mnutrinhdo_Click End Sub Private Sub MDIForm_Load() VietTitle Me.hwnd, Me.Caption Tieude = Me.Caption Timer1.Enabled = True If m_Quyen = "Kh¸ch" Then 'vo hieu hoa menu danh muc mnuphongban.Enabled = False mnuchucvu.Enabled = False mnutrinhdo.Enabled = False 'mnutongiao.Enabled = False mnuchuyenmon.Enabled = False 'mnutinhthanh.Enabled = False 'mnuhopdong.Enabled = False 'MnuLCB.Enabled = False 'mnudantoc.Enabled = False 'vo hieu hoa toolbar danh muc Cmdphong.Enabled = False 'cmdchucvu.Enabled = False cmdtrinhdo.Enabled = False 'cmdtongiao.Enabled = False cmdchuyenmon.Enabled = False cmdtinhthanh.Enabled = False cmddantoc.Enabled = False 'cmdhd.Enabled = False cmdluong.Enabled = False 'Vo hieu hoa nut lenh sao luu CmdSaoluu.Enabled = False 'Vo hieu hoa mnusaoluu va phuc hoi 'mnusaoluu.Enabled = False 'mnuphuchoi.Enabled = False 'vo hieu hoa chuc nang chuyen cong tac 'cmdchuyen.Enabled = False 'mnuchuyenct.Enabled = False Else ' mnucpass.Caption = "Qu¶n lý ng­êi dïng" End If 'Viet hoa thanh tieu de Tieude = Me.Caption Timer1.Enabled = True 'Ve menu xp Set Menus = New cMenus Call Menus.CreateFromForm(Me) Set Menus.Font = Picture1.Font Menus.DrawStyle = mds_XP 'Menus.BackGroundPicture = Image2.Picture Set Menus.ImageList = imgmenu 'dua bieu tuong vao menu danh muc Menus.ItemImage("mnutimkiem") = "timkiem" Menus.ItemImage("mnuthoat") = "exit" 'Dua bieu tuong vao menu Tien ich Menus.ItemImage("mnucpass") = "cpass" Menus.ItemImage("mnushortcut") = "shortcut" 'Dua bieu tuong vao menu tro giup Menus.ItemImage("mnuabout") = "about" Menus.ItemImage("mnuhelp") = "help" Menus.ItemImage("mnudanhmuc") = "danhmuc" Menus.ItemImage("mnuphongban") = "phongban" Menus.ItemImage("mnuchucvu") = "chucvu" Menus.ItemImage("mnutrinhdo") = "trinhdo" Menus.ItemImage("mnutongiao") = "tongiao" Menus.ItemImage("mnuchuyenmon") = "chuyenmon" Menus.ItemImage("mnutinhthanh") = "tinhthanh" Menus.ItemImage("mnuhopdong") = "hopdong" Menus.ItemImage("mnulcb") = "luongcb" Menus.ItemImage("mnudantoc") = "dantoc" Menus.ItemImage("mnuhoso") = "hsnv" Menus.ItemImage("mnuchuyenct") = "chuyenct" Menus.ItemImage("mnuthongke") = "thongke" Menus.ItemImage("mnudanhsach") = "dsnv" Menus.ItemImage("mnucon") = "con" Menus.ItemImage("mnusaoluu") = "saoluu" Menus.ItemImage("mnuphuchoi") = "phuchoi" 'Hoan tat ve menu xp Trangthai.AutoLoad = True 'Hien thi thanh trang thai Me.WindowState = 2 Vietmenu Me, "Alt + F4" 'Viet hoa menu he thong" 'Thiet lap tooltiptext cho cac nut lenh Vtip.SetToolTipObj CmdThoat.hwnd, "BÊm vµo ®©y ®Ó tho¸t ch­¬ng tr×nh (Alt + F4).", True Vtip.SetToolTipObj CmdMk.hwnd, "BÊm vµo ®©y ®Ó thay ®æi mËt khÈu cho ch­¬ng tr×nh (Ctrl + K).", True Vtip.SetToolTipObj Cmdhoso.hwnd, "BÊm vµo ®©y ®Ó vµo hå s¬ nh©n viªn (F4).", True Vtip.SetToolTipObj CmdTim.hwnd, "BÊm vµo ®©y ®Ó t×m kiÕm hå s¬ nh©n viªn (F3).", True Vtip.SetToolTipObj Cmdphong.hwnd, "BÊm vµo ®©y ®Ó cËp nhËt danh môc phßng ban (Ctrl + F1).", True 'Vtip.SetToolTipObj cmdchucvu.hwnd, "BÊm vµo ®©y ®Ó cËp nhËt danh môc chøc vô (Ctrl + F2).", True Vtip.SetToolTipObj cmdtrinhdo.hwnd, "BÊm vµo ®©y ®Ó cËp nhËt danh môc tr×nh ®é häc vÊn (Ctrl + F3).", True 'Vtip.SetToolTipObj cmdtongiao.hwnd, "BÊm vµo ®©y ®Ó cËp nhËt danh môc t«n gi¸o (Ctrl + F11).", True Vtip.SetToolTipObj cmdchuyenmon.hwnd, "BÊm vµo ®©y ®Ó cËp nhËt danh môc chuyªn m«n (Ctrl + F5).", True Vtip.SetToolTipObj cmdtinhthanh.hwnd, "BÊm vµo ®©y ®Ó cËp nhËt danh môc tØnh, thµnh phè (Ctrl + F6).", True Vtip.SetToolTipObj cmddantoc.hwnd, "BÊm vµo ®©y ®Ó cËp nhËt danh môc d©n téc (Ctrl + F7).", True 'Vtip.SetToolTipObj cmdhd.hwnd, "BÊm vµo ®©y ®Ó cËp nhËt danh môc lo¹i hîp ®ång (Ctrl + F8).", True Vtip.SetToolTipObj cmdluong.hwnd, "BÊm vµo ®©y ®Ó cËp nhËt danh môc bËc l­¬ng vµ l­¬ng c¬ b¶n (Ctrl + F9).", True Vtip.SetToolTipObj CmdSaoluu.hwnd, "BÊm vµo ®©y ®Ó sao l­u dù phßng c¬ së d÷ liÖu (Ctrl + U).", True 'Vtip.SetToolTipObj cmdloc.hwnd, "BÊm vµo ®©y ®Ó thèng kª nh©n viªn (F5).", True 'Vtip.SetToolTipObj cmdchuyen.hwnd, "BÊm vµo ®©y ®Ó lËp danh s¸ch chuyÓn c«ng t¸c (F6).", True 'Vtip.SetToolTipObj CmdHelp.hwnd, "BÊm vµo ®©y ®Ó xem trî gióp sö dông ch­¬ng tr×nh (F1).", True 'Tao file settings.ini 'Luu thong tin thiet lap cho chuong trinh FIni.File = App.Path & "\Settings.ini" 'If FIni.GetValue("Startup", "Enable") = True Then ' mnukd.Checked = True 'Else ' mnukd.Checked = False ' RegOpenKeyEx HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS, Result ' RegDeleteValue Result, "Human Resources Manager" ' FIni.WriteValue "StartUp", "Enable", False 'End If If FIni.GetValue("Toolbar", "Hide") = True Then ' mnucongcu.Checked = False Picture1.Visible = False Else FIni.WriteValue "Toolbar", "Hide", False ' mnucongcu.Checked = True Picture1.Visible = True End If FrmNhanvien.Show Ketnoi_CSDL RsLog.AddNew RsLog!taikhoan = UCase(Left(m_Taikhoan, 1)) & LCase(Right(m_Taikhoan, Len(m_Taikhoan) - 1)) RsLog!tgdangnhap = Now RsLog!tgdangxuat = "" B_id = RsLog!ID B_Tk = m_Taikhoan RsLog.Update Trangthai.Status = "Xin chµo: " & UCase(Left(B_Tk, 1)) & LCase(Right(B_Tk, Len(B_Tk) - 1)) & " !" End Sub Private Sub MDIForm_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopUpMenu mnuquanly End If End Sub Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer) Cancel = 1 mnuthoat_Click End Sub Private Sub mnubaocaoluongtb_Click() Unload FrmNhanvien CrystalReport1.ReportFileName = App.Path & "\Crystal\rptluong.rpt" CrystalReport1.PrintReport End Sub Private Sub mnuBaohiem_Click() Unload FrmNhanvien frmBaoHiem.Show frmBaoHiem.ZOrder 0 End Sub Private Sub mnubcphong_Click() Unload FrmNhanvien frmviewluongphong.Show frmviewluongphong.ZOrder 0 End Sub Private Sub mnuChamcong_Click() Unload FrmNhanvien frmChamcong.Show frmChamcong.ZOrder 0 End Sub Private Sub mnuchucvu_Click() Unload FrmNhanvien FrmChucdanh.Show FrmChucdanh.ZOrder 0 End Sub Private Sub mnuchuyenmon_Click() Unload FrmNhanvien Frmchuyenmon.Show Frmchuyenmon.ZOrder 0 End Sub 'Private Sub mnucongcu_Click() 'If mnucongcu.Checked = True Then ' mnucongcu.Checked = False 'Else ' mnucongcu.Checked = True 'End If 'If mnucongcu.Checked = True Then ' FIni.WriteValue "Toolbar", "Hide", False ' Picture1.Visible = True 'Else ' FIni.WriteValue "Toolbar", "Hide", True ' Picture1.Visible = False 'End If 'End Sub Private Sub mnucpass_Click() If m_Quyen = "Qu¶n trÞ" Then FrmThayMKAM.Show 1 Else FrmThayMKKA.Show 1 End If End Sub Private Sub mnuabout_Click() FrmGioithieu.Show 1 End Sub Private Sub mnudanhsach_Click() Rdanhsach.WindowState = 2 Rdanhsach.Show 1 End Sub Private Sub mnuHelp_Click() If FileExists(App.Path & "\help\help.hlp") = False Then Thongbao "TËp tin trî gióp ®· bÞ xo¸ !" & vbCr & "Vui lßng cµi ®Æt l¹i ch­¬ng tr×nh, hoÆc chÐp tËp tin " & Chr(34) & "Help.hlp" & Chr(34) & " vµo ®­êng dÉn " & Chr(34) & App.Path & "\help" & Chr(34) & " ®Ó cã thÓ xem ®­îc trî gióp.", Tb_Dong, "Taajp tin khoong toofn taji", Bao_Loi, True, 15000 Exit Sub End If With SHelp .HelpCommand = 3 .HelpFile = App.Path & "\help\help.hlp" .ShowHelp End With End Sub Private Sub mnuhoso_Click() FrmNhanvien.Show FrmNhanvien.ZOrder 0 End Sub 'Private Sub mnukd_Click() 'Dim val As String 'If mnukd.Checked = True Then ' mnukd.Checked = False 'Else ' mnukd.Checked = True 'End If 'If mnukd.Checked = True Then ' val = App.Path & "\" & App.EXEName & ".exe" 'Duong dan den chuong trinh ' RegOpenKeyEx HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS, Result ' RegSetValueEx Result, "Human Resources Manager", 0, REG_SZ, ByVal val, Len(val) ' RegCloseKey Result ' FIni.WriteValue "StartUp", "Enable", True ' Thongbao "Khëi ®éng cïng Windows ®· ®­îc thiÕt lËp !", Tb_Dong, "Chus ys", Thong_Tin, True, 5000 'Else ' RegOpenKeyEx HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS, Result ' RegDeleteValue Result, "Human Resources Manager" ' FIni.WriteValue "StartUp", "Enable", False ' Thongbao "Khëi ®éng cïng Windows ®· ®­îc gì bá !", Tb_Dong, "Chus ys", Canh_Bao, True, 5000 'End If 'End Sub Private Sub MnuLCB_Click() Unload FrmNhanvien FrmLuongcb.Show FrmLuongcb.ZOrder 0 End Sub Private Sub mnuKetthuc_Click() End End Sub Private Sub mnuLuongNV_Click() Unload FrmNhanvien frmviewluongnv.Show frmviewluongnv.ZOrder 0 End Sub Private Sub mnuphongban_Click() Unload FrmNhanvien FrmPhong.WindowState = 0 FrmPhong.Show FrmPhong.ZOrder 0 End Sub Private Sub mnuphucap_Click() Unload FrmNhanvien frmphucap.Show frmphucap.ZOrder 0 End Sub Private Sub mnuphuchoi_Click() If Thongbao("B¹n ch¾c ch¾n muèn phôc håi c¬ së d÷ liÖu chø ?", Tb_CoKhong, "Chus ys", Hoi) = Tl_Co Then PhucHoi End If End Sub Private Sub mnusaoluu_Click() If Thongbao("B¹n ch¾c ch¾n muèn sao l­u d÷ liÖu chø ?", Tb_CoKhong, "Chus ys", Hoi) = Tl_Co Then SaoLuu End If End Sub Private Sub mnushortcut_Click() Create_ShortCut App.EXEName & ".lnk", , , App.Path Thongbao "C«ng viÖc t¹o lèi t¾t trªn mµn h×nh ®· hoµn tÊt !", Tb_Dong, "Chus ys", Thong_Tin End Sub Private Sub mnuthoat_Click() Ketnoi_CSDL Me.WindowState = 2 If Thongbao("B¹n ch¾c lµ muèn tho¸t ch­¬ng tr×nh chø ?", Tb_CoKhong, "Chus ys", Hoi) = Tl_Co Then If RsLog.RecordCount > 0 Then RsLog.MoveFirst RsLog.FindFirst "id=" & B_id & " and " & " taikhoan='" & B_Tk & "'" If Not RsLog.NoMatch Then RsLog.Edit RsLog!tgdangxuat = Now RsLog.Update End If End If End End If End Sub Private Sub mnuphuchoicsdl_Click() PhucHoi End Sub Private Sub mnusaoluucsdl_Click() If Thongbao("B¹n ch¾c ch¾n muèn sao l­u d÷ liÖu chø ?", Tb_CoKhong, "Chus ys", Hoi) = Tl_Co Then SaoLuu End If End Sub Private Sub mnuthongke_Click() FrmThongke.Show FrmThongke.ZOrder 0 End Sub Private Sub mnutimkiem_Click() FrmTim.Show FrmTim.WindowState = 2 End Sub Private Sub mnuthue_Click() Unload FrmNhanvien CrystalReport1.ReportFileName = App.Path & "\Crystal\rptThue1.rpt" CrystalReport1.PrintReport End Sub Private Sub mnuThueTNCN_Click() Unload FrmNhanvien frmbacthue.Show frmbacthue.ZOrder 0 End Sub Private Sub mnuThueTNCN1_Click() Unload FrmNhanvien frmChitietThue.Show frmChitietThue.ZOrder 0 End Sub Private Sub mnutimnangcao_Click() Unload FrmNhanvien FrmTim.Show FrmTim.ZOrder 0 End Sub Private Sub mnutimnhanh_Click() Unload FrmNhanvien FrmXemnhanh.Show FrmXemnhanh.ZOrder 0 End Sub Private Sub mnuTinhluong_Click() Unload FrmNhanvien frmTinhluong.Show frmTinhluong.ZOrder 0 End Sub Private Sub mnuTinhthue_Click() Unload FrmNhanvien frmTinhthue.Show frmTinhthue.ZOrder 0 End Sub Private Sub mnutrinhdo_Click() Unload FrmNhanvien FrmTrinhdo.Show FrmTrinhdo.ZOrder 0 End Sub Private Sub Timer1_Timer() If Me.Caption Tieude Then VietTitle Me.hwnd, Me.Caption 'Viet hoa thanh tieu de Tieude = Me.Caption End If End Sub Form tính lương Private Sub cmddong_Click() Unload Me End Sub Private Sub cmdTinhluong_Click() If cmbThang.Text = "" Then MsgBox "b¹n ch­a nhËp th¸ng cÇn tÝnh" Exit Sub End If If cmbnam.Text = "" Then MsgBox "b¹n ch­a nhËp n¨m cÇn tÝnh" Exit Sub End If If check Then Dim sql As String Dim rs As Recordset sql = "SELECT nhanvien.manv, Phong.maphong, nhanvien.bacluong, Luongcb.luongcb, tblchamcong.SongayNghi,tblchamcong.songaylam FROM Luongcb, (Phong INNER JOIN (luong INNER JOIN nhanvien ON luong.bacluong = nhanvien.bacluong) ON Phong.maphong = nhanvien.maphong) INNER JOIN tblchamcong ON nhanvien.manv = tblchamcong.MaNV" Set rs = CN.Execute(sql) Do While Not rs.EOF Dim hs As Double hs = rs("bacluong") * rs("luongcb") - rs("bacluong") * rs("luongcb") * rs("songaynghi") / 24 + (rs("songaylam") - 24) * rs("bacluong") * rs("luongcb") / 24 Call tinhluong(rs("manv"), rs("maphong"), Me.cmbThang.Text, Me.cmbnam.Text, hs) rs.MoveNext Loop rs.Close End If End Sub Private Function check() As Boolean check = False Dim sql11 As String ' sql11 = "Select * from tbltinhluong where thang =" & cmbThang.Text And "nam = " & cmbnam.Text sql11 = "Select * from tbltinhluong Where thang=" & Me.cmbThang.Text & " and nam=" & Me.cmbnam.Text Dim rs11 As Recordset Set rs11 = CN.Execute(sql11) If Not rs11.EOF Then check = False Exit Function Else check = True End If rs11.Close End Function Private Sub tinhluong(ByVal manv As String, ByVal maphong As String, ByVal thang As Integer, ByVal nam As Integer, ByVal luong As Double) On erro GoTo Loi Cdata.ConnectionString = "Provider=MSDASQL;" & "Driver={Microsoft Access Driver (*.mdb)};" & "Dbq=" & App.Path & "\database\data.mdb;" & "Uid=admin;" & "Pwd= 613339640072" Cdata.RecordSource = "Select * From tbltinhluong" Cdata.Refresh Cdata.Recordset.AddNew ' Cdata.Recordset() Cdata.Recordset("manv") = manv Cdata.Recordset("maphong") = maphong Cdata.Recordset("thang") = thang Cdata.Recordset("nam") = nam Cdata.Recordset("luong") = luong Cdata.Recordset.Update Loi: ' rs1.Close End Sub Private Sub Form_Load() Cdata.ConnectionString = "Provider=MSDASQL;" & "Driver={Microsoft Access Driver (*.mdb)};" & "Dbq=" & App.Path & "\database\data.mdb;" & "Uid=admin;" & "Pwd= 613339640072" Cdata.RecordSource = "Select * From tbltinhluong" Cdata.Refresh End Sub Form Tính thuế Private Sub cmdTinhthue_Click() If cmbThang.Text = "" Then MsgBox "b¹n ch­a nhËp th¸ng cÇn tÝnh" Exit Sub End If If cmbnam.Text = "" Then MsgBox "b¹n ch­a nhËp n¨m cÇn tÝnh" Exit Sub End If If check Then Dim sql12 As String Dim rs12 As Recordset sql12 = "SELECT nhanvien.manv, Phong.maphong, tblbaohiem.PhantramNop, tblphucap.Sotien, tblchitietthue.Songuoiphuthuoc, tblchitietthue.Sotientrennguoi, tbltinhLuong.Luong" sql12 = sql12 & " From Phong " sql12 = sql12 & "INNER JOIN (((tbltinhLuong INNER JOIN (nhanvien INNER JOIN tblchitietthue ON nhanvien.manv = tblchitietthue.MaNV) ON tbltinhLuong.maNV = nhanvien.manv) INNER JOIN tblbaohiem ON nhanvien.manv = tblbaohiem.MaNV) INNER JOIN tblphucap ON nhanvien.manv = tblphucap.MaNV) ON (tbltinhLuong.maPhong = Phong.maphong) AND (Phong.maphong = nhanvien.maphong) " Set rs12 = CN.Execute(sql12) Dim thunhap As Double Do While Not rs12.EOF thunhap = 0 thunhap = (rs12("Sotien") + rs12("luong")) - rs12("luong") * rs12("PhantramNop") / 100 Call tinhthue(rs12("manv"), rs12("maphong"), cmbThang.Text, cmbnam.Text, thue(thunhap)) rs12.MoveNext Loop End If End Sub Private Function check() As Boolean check = False Dim sql11 As String sql11 = "Select * from tbltinhthue Where thang=" & Me.cmbThang.Text & " and nam=" & Me.cmbnam.Text Dim rs11 As Recordset Set rs11 = CN.Execute(sql11) If Not rs11.EOF Then check = False rs11.Close Exit Function Else check = True rs11.Close End If End Function Private Sub tinhthue(ByVal manv As String, ByVal maphong As String, ByVal thang As Integer, ByVal nam As Integer, ByVal thue As Double) On erro GoTo Loi Cdata.ConnectionString = "Provider=MSDASQL;" & "Driver={Microsoft Access Driver (*.mdb)};" & "Dbq=" & App.Path & "\database\data.mdb;" & "Uid=admin;" & "Pwd= 613339640072" Cdata.RecordSource = "Select * From tbltinhthue" Cdata.Refresh Cdata.Recordset.AddNew ' Cdata.Recordset() Cdata.Recordset("manv") = manv Cdata.Recordset("maphong") = maphong Cdata.Recordset("thang") = thang Cdata.Recordset("nam") = nam Cdata.Recordset("thuetn") = thue Cdata.Recordset.Update Loi: ' rs1.Close End Sub Private Function thue(ByVal tt As Double) As Double thue = 0 Dim sobac As Integer Dim rs As Recordset Dim sql As String sql = "select * from tblthue" Set rs = CN.Execute(sql) Do While Not rs.EOF If (tt - rs("Thunhapthang") * 1000000) > 0 Then thue = thue + (tt - rs("Thunhapthang") * 1000000) * rs("Thuesuat") / 100 End If rs.MoveNext Loop rs.Close End Function MỤC LỤC Trang LỜI NÓI ĐẦU DANH MỤC HÌNH VẼ TRONG CHUYÊN ĐỀ THỰC TẬP Hình 1.1. Sơ đồ tổ chức Công ty CP giải pháp phần mềm Esoft 5 Hình 1.2. Mối quan hệ giữa các phòng ban 7 Hình 2.1. Mô hình các công đoạn xây dựng phần mềm QLTL 23 Hình 3.1. Biểu đồ phân cấp chức năng BFD 52 Hình 3.2. Sơ đồ ngữ cảnh phần mềm quản lý tiền lương 53 Hình 3.3. Sơ đồ luồng dữ liệu mức đỉnh 54 Hình 3.4. Biểu đồ thiết kế kiến trúc phần mềm quản lý tiền lương 55 Hình 3.5. Mô hình quan hệ thực thể giữa các bảng trong CSDL 57

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

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