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.
103 trang |
Chia sẻ: Dung Lona | Lượt xem: 1111 | Lượt tải: 0
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 cha 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 lu 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 lu 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 lu 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 cha nhËp th¸ng cÇn tÝnh"
Exit Sub
End If
If cmbnam.Text = "" Then
MsgBox "b¹n cha 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 cha nhËp th¸ng cÇn tÝnh"
Exit Sub
End If
If cmbnam.Text = "" Then
MsgBox "b¹n cha 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:
- 2077.doc