Cùng với sự phát triển của xã hôị thì công nghệ thông tin và đang được đưa và ứng dụng trên phạm vi toàn thế giới, dần tiến tới tin học hoá tất cả các hoạt động trong mọi lĩnh vực của các ngành nghề. Máy tính thực sự là công cụ không thể thiếu được trong mọi hoạt động của xã hội trong thời đại bùng nổ thông tin như hiện nay. Chính vì thế việc quản lý nói chung và quản lý tiền lương nói riêng phải được tin học hoá toàn bộ, không còn làm theo lối thủ công sổ sách, giấy tờ, chậm chạp trong công việc khai thác thông tin và mất nhiều thời gian lưu trữ. Mục đích của việc xây dựng đề tài này là :
- Giảm bớt thời gian ghi chép, không gây nhầm lẫn, thiếu chính xác.
- Thực hiện sửa dữ liệu rất thuận tiện.
- Tận dụng tối đa khả năng tính đã có.
- Mọi công việc cập nhật, điều chỉnh, tìm kiếm, tra cứu đều được thực hiện nhanh chóng, chính xác và tiết kiệm thời gian.
- Công việc của cán bộ quản lý không còn vất vả, hiệu suất lao động cao.
Bạn đang xem trước 20 trang tài liệu Phân tích và thiết kế hệ thống thông tin quản lý lương, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
n cứu hệ thống thực tại.
Đưa ra chuẩn đoán và xác định các yếu tố giải pháp.
Đánh giá lại tính khả thi.
Thay đổi để xuất của dự án.
Chuẩn bị và trình bày báo cáo phân tích chi tiết.
Thiết kế logic
Giai đoạn này nhằm xác định tất cả các thành phần lôgic của một hệ thống thông tin, cho phép loại bỏ được các vấn đề của hệ thống thực tế và đạt được những mục tiêu đã được thiết lập ở giai đoạn trước. Thiết kế lôgíc bao gồm những công đoạn sau:
Thiết kế cơ sở dữ liệu.
Thiết kế xử lý.
Thiết kế các luồng dữ kiệu vào.
Chỉnh sửa tài liệu cho mức lôgíc.
Hợp thức hoá mô hình lôgíc.
Đề xuất các phương án của giải pháp
Xác định các ràng buộc tin học và ràng buộc tổ chức.
Xây dựng các phương án của giải pháp.
Đánh giá các phương án của giải pháp.
Chuẩn bị và tính bày báo cáo của giải pháp.
Chuẩn bị và trình bày báo cáo của giai đoạn đề xuất các phương án giải pháp.
Thiết kế vật lý ngoài
Giai đoạn này được tiến hành sau khi một phương án giải pháp được lựa chọn. Thiết kế vật lý bao gồm hai tài liệu kết quả cần có: Trước hết là một tài liệu bao chứa tất cả các đặc trưng của hệ thống mới sẽ cần cho người sử dụng và nó mô tả cả phần thủ công và cả những giao diện với những phần tin học hoá. Những công đoạn chính của thiết kế vật ký ngoài là:
Lập kế hoạch thiết kế vật lý ngoài.
Thiết kế chi tiết các giao diện (vào/ ra).
Thiết kế các thủ tục thủ công.
Chuẩn bị và trình bày báo cáo về thiết kế vật lý ngoài.
Triển khai kỹ thuật hệ thống
Các hoạt động chính của việc triển khai thực hiện kỹ thuật hệ thống là như sau:
Lập kế hoạch thực hiện kỹ thuật
Thiết kế vật lý trong
Lập trình
Thử nghiệm hệ thống
Chuẩn bị tài liệu.
Cài đặt và khai thác.
Cài đặt hệ thống là việc chuyển từ hệ thống cũ sang hệ thống mới được thực hiện. Để việc chuyển đổi này được thực hiện với những va chạm ít nhất, cần phải lập kế hoạch một cách cẩn thận. Giai đoạn này bao gồm các công đoạn sau:
Lập kế hoạch cài đặt.
Chuyển đổi.
Khai thác và bảo trì.
Đánh giá
Như vậy kết quả của quá trình phân tích và thiết kế bao gồm hai phần lớn : hệ thống thông tin và tài liệu về hệ thống.
Công cụ mô hình hoá
Sơ đồ luồng dữ liệu
Sơ đồ luồng dữ liệu dùng để mô tả hệ thống thông tin nhưng trên góc độ trừu tượng. Trên sơ đồ chỉ bao gồm các luồng dữ liệu, các xử lý, các lưu trữ dữ liệu, nguồn và đích nhưng không hề quan tâm tới nơi, thời điểm và đối tượng chịu trách nhiệm xử lý. Sơ đồ luồng dữ liệu chỉ mô tả đơn thuần hệ thống thông tin làm gì và để làm gì.
Ký pháp dùng cho sơ đồ luồng dữ liệu(DFD)
Ngôn ngữ sơ đồ luồng dữ liệu sử dụng 4 loại ký pháp cơ bản: thực thể, tiến trình, kho dữ liệu và dòng dữ liệu.
Tên người/ bộ phận phát/ nhận tin
Nguồn hoặc đích
Tên dòng dữ liệu Dòng dữ liệu
Tên tiến trình xử lý
Tiến trình xử lý
Tệp dữ liệu Kho dữ liệu
Các ký pháp cơ bản của ngôn ngữ DFD
Các mức của DFD
Sơ đồ ngữ cảnh thể hiện rất khái quát nội dung chính của hệ thống thông tin. Sơ đồ này không đi vào chi tiết mà mô tả sao cho chỉ cần một lần nhìn là nhận ra nội dung chính của hệ thống. Để cho sơ đồ ngữ cảnh sáng sủa, dễ nhìn có thể bỏ qua các kho dữ liệu, bỏ qua các xử lý cập nhật.
Phân rã sơ đồ: Để mô tả hệ thống chi tiết hơn người ta dùng kỹ thuật phân rã sơ đồ. Bắt đầu từ sơ đồ mức khung cảnh, người ta phân rã ra thành sơ đồ mức 0, sau đó là mức 1…
Các giai đoạn trong quá trình xây dựng mô hình dữ liệu
Thiết kế CSDL lô gíc đi từ các thông tin đầu ra
Xác định các tệp cơ sở dữ liệu trên cơ sở các thông tin đầu ra của hệ thống là phương pháp cơ bản của việc thiết cơ sở dữ liệu.
Các bước chi tiết khi thiết kế CSDL đi từ các thông tin ra:
Bước 1. Xác định các đầu ra: Liệt kê toàn bộ các thông tin đầu ra, nội dung, khối lượng, tần suất và nơi nhận của chúng.
Bước 2. Xác định các tệp cần thiết cung cấp đủ dữ liệu cho việc tạo ra từng đầu vào.
Liệt kê các phần tử thông tin trên đầu ra. Trên mỗi thông tin đầu ra bao gồm các phần tử thông tin gọi là thuộc tính.
Đánh dấu các thuộc tính lặp( là những thuộc tính có thể nhận nhiều giá trị dữ liệu) và các thuộc tính thứ sinh( là những thuộc tính được tính toán ra hoặc suy ra từ các thuộc tính khác).
Gạch chân các thuộc tính khoá cho thông tin đầu ra và loại bỏ các thuộc tính thứ sinh khỏi danh sách.
Bước 3. Thực hiện việc chuẩn hoá.
Chuẩn hoá mức 1(1NF): quy định trong mỗi danh sách không được phép chứa những thuộc tính lặp. Nếu có các thuộc tính lặp thì phải tách các thuộc tính lặp đó ra thành các danh sách con, có một ý nghĩa dưới góc độ quản lý. Sau đó đặt cho nó một tên, tìm cho nó một thuộc tính định danh của danh sách gốc.
Chuẩn hoá mức 2(2NF): trong một danh sách mỗi thuộc tính phải phụ thuộc hàm vào toàn bộ khoá chứ không chỉ phụ thuộc vào một phần của khoá. Nếu có sự phụ thuộc như vậy thì phải tách những thuộc tính phụ thuộc hàm vào bộ phận của khoá thành một danh sách con mới. Sau đó lấy bộ phận đó làm khoá cho danh sách mới. Đặt cho danh sách mới này một tên cho phù hợp với nội dung của các thuộc tính trong danh sách.
Chuẩn hoá mức 3(3NF): 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 Z phụ thuộc hàm vào thuộc tính Y và thuộc tính Y phụ thuộc hàm vào thuộc tính X thì phải tách chúng vào 2 danh sách chưa quan hệ Z, Y và danh sách chứa quan hệ Y và X. Sau đó xác định khoá và tên cho mỗi danh sách mới.
Xác định mối quan hệ giữa các thực thể
Các bước để xác định mối quan hệ:
Mô tả các thực thể(bảng) và các thuộc tính của nó.
Xác định các khoá chính( khoá chính và khoá ngoại lai.
Tiến hành chuẩn hoá dữ liệu đối với từng thực thể(bảng)
Thiết kế cơ sở dữ liệu
Thiết kế cơ sở dữ liệu là xác định yêu cầu thông tin của người sử dụng HTTT mới. Thiết kế cơ sở dữ liệu gồm các công việc sau:
Xác định mục đích của cơ sở dữ liệu: đây là công việc quan trọng nhất. Là một cán bộ thiết kế một cơ sở dữ liệu(CSDL), họ cần phải biết rõ CSDL này sẽ được dùng làm gì? Muốn vậy phải nghiên cứu xem người dùng CSDL trong tương lai cần trích rút những dữ liệu nào dưới dạng những báo xáo như thế nào và sử dụng những dữ liệu ấy vào việc gì.
Phác hoạ mô hình dữ liệu: trước hết là xác định các thực thể và thuộc tính của mỗi thực thể đó. Xác định thực thể nào với thuộc tính nào cần được ghi nhận và lưu trữ trong CSDL sao cho có thể đạt được những mục đích đã đề ra. Thực chất là xác định CSDL cần chứa những bảng nào và mỗi bảng cần chưa những cột nào.
Những nguyên lý để chọn lựa các bảng và các cột trong bảng:
Giảm thiểu sự trùng lắp: Mỗi bảng khôn gnên chứa dữ liệu trùng lặp và các bảng khác nhau cũng không nên chứa dữ liệu như nhau.
Tránh dư thừa: mỗi bảng phải chứa vừa đủ những dữ liệu cần thiết về một thực thể. Không nên đưa vào những cột có thể tính toán suy ta từ những cột khác.
Tăng tính độc lập giữa các bảng: Phân chia dữ liệu vào các bảng sao cho có thể biên tập dữ liệu trong bảng này một cách độc lập với bảng khác.
Dữ liệu nguyên tố: mỗi cột chỉ nên chứa những yếu tố dữ liệu có tính chất nguyên tố.
Xác định những mối quan hệ giữa các thực thể: sau khi đã phân chia dữ liệu vào các bảng, nhà thiết kế phải tìm ra quan hệ giữa các bảng để sau này có thể trích rút và kết hợp dữ liệu từ các bảng khác nhau nhằm đáp một cách nhanh chóng và đầy đủ nhu cầu của người dùng.
Xác định các khoá chính để tránh sự xâm nhập về thông tin dữ liệu giữa các bản ghi, trong một bảng đòi hỏi ta phải nhận diện một trường hay một thuộc tính làm yếu tố phân biệt còn gọi là khoá chính của bảng. Nếu có nhiều lựa chọn thì phải chọn ra trường nào có ý nghĩa nhất đối với ứng dụng để làm khoá chính. Đôi khi ta cũng phải biết kết hợp một vài thuộc tính để tạo mục khoá chính.
Nhận diện mục khoá ngoại lai: khoá này yêu cầu là một trường trên bảng dữ liệu này những giá trị của nó phải khớp với giá trị của mục khoá chính trên bảng dữ liệu cần liên kết kia. Song khoá chính này chỉ mang tính kết quả chứ không xác định tính duy nhất của các bản ghi trong bảng dữ liệu.
Thêm vào các trường không phải là khoá: yêu cầu tạo ra những tên để đặt cho các trường trong bảng sao cho gợi nhớ và thuận tiện khi xử lý các dữ liệu trên bản. Sau đó cần tiến hành chuẩn hoá để liên kết một cách chặt chẽ với nhau đảm bảo không mất thông tin.
Duyệt lại mô hình dữ liệu để phát hiện và khắc phục những khuyết điểm của bản thiết kế CSDL.
Tạo lập CSDL: sau khi đã sửa và duyệt mô hình một cách chu đáo thì có thể tiến hành “phiên dịch” mô hình thành CSDL, tạo bảng, ghi nhận những mối quan hệ, điền dữ liệu vào các bảng và tạo ra các đối tượng khác của cơ sở dữ liệu như: mẫu(form), báo cáo,
Phân tích bài toán
Giới thiệu bài toán
Bài toán quản lý tiền lương là quản lý thông tin có liên quan tới lương bao gồm các thông tin: nhân viên, thời gian lao động, chấm công,mức lương, hệ số lương, khen thưởng, kỷ luật, bảo hiểm xã hội, bảo hiểm y tế, cách thức tính lương, …
Thông tin đầu vào của hệ thống bao gồm các thông tin về nhân viên, thông tin về thời gian lao động của nhân viên, các thông tin về khen thưởng, kỷ luật, thông tin về thời gian lao động, các quy định về chế độ lao động và tiền lương cũng như các chế độ bảo hiểm của doanh nghiệp… Từ các thông tin đầu vào và những yêu cầu của các doanh nghiệp sẽ tính toán tiền lương cho mỗi nhân viên đồng thời cũng đưa ra được các báo cáo tổng hợp để trình lên ban lãnh đạo và các phòng ban có liên quan.
Mục đích xây dựng đề tài
Cùng với sự phát triển của xã hôị thì công nghệ thông tin và đang được đưa và ứng dụng trên phạm vi toàn thế giới, dần tiến tới tin học hoá tất cả các hoạt động trong mọi lĩnh vực của các ngành nghề. Máy tính thực sự là công cụ không thể thiếu được trong mọi hoạt động của xã hội trong thời đại bùng nổ thông tin như hiện nay. Chính vì thế việc quản lý nói chung và quản lý tiền lương nói riêng phải được tin học hoá toàn bộ, không còn làm theo lối thủ công sổ sách, giấy tờ,… chậm chạp trong công việc khai thác thông tin và mất nhiều thời gian lưu trữ. Mục đích của việc xây dựng đề tài này là :
Giảm bớt thời gian ghi chép, không gây nhầm lẫn, thiếu chính xác.
Thực hiện sửa dữ liệu rất thuận tiện.
Tận dụng tối đa khả năng tính đã có.
Mọi công việc cập nhật, điều chỉnh, tìm kiếm, tra cứu đều được thực hiện nhanh chóng, chính xác và tiết kiệm thời gian.
Công việc của cán bộ quản lý không còn vất vả, hiệu suất lao động cao.
Yêu cầu của đề tài.
Xác định yêu cầu là bước có ý nghĩa quyết định đến chất lượng HTTT
Cập nhật những thông tin cần thiết.
Cập nhật các thông tin có liên quan đến việc tính lương như: danh mục phòng ban, danh mục chức vụ, hồ sơ nhân sự, danh mục phụ cấp,bảng chấm công, các khoản khen thưởng,kỷ luật,trích trừ các khoản bảo hiểm kinh phí khác…Các cập nhật này đã được nhập từ trong cơ sở dữ liệu. Khi cần thay đổi thì chúng ta có thể thay đổi trực tiếp.
Công ty xây dựng công trình giao thông 889 là một công ty lớn nên khối lượng dữ liệu của Công ty khá nhiều và chúng có mối quan hệ với nhau. Do vậy khi có sự thay đổi trong công tác quản lý phải được cập nhật thường xuyên và nhanh chóng để bộ phận tính lương có thể tính toán cho người lao động đúng thời gian và kế hoạch đã định.
Bên cạnh việc cập nhật các thông tin để tính lương, hệ thống cần cập nhật những quy định về lương và chế độ bảo hiểm của Bộ lao động thương binh xã hội.
Công ty xây dựng công trình giao thông 889 là một công ty có nguồn nhân lực rất lớn. Ngoài nguồn lao động làm việc gián tiếp là chủ yếu thì nguồn lao động làm việc trực tiếp cũng đông đảo. Phần lớn nguồn lao động này tập trung ở công ty và các công trình ở các tỉnh thành. Bởi vậy phải tổ chức lưu trữ các bảng chấm công cho từng phòng ban, đội công trình và từng nhân viên trong Công ty theo từng tháng. Để hệ thống tính toán đúng tiền lương cho người lao động thì bảng chấm công phải có đầy đủ các thông tin như: tổng số ngày đi làm thực tế, số ngày nghỉ phép, số ngaỳ công không hợp lệ và các ngày lễ trong tháng. Vì vậy bộ phận quản lý chấm công phải lưu trữ các thông tin cần thiết trong bảng chấm công.
Vấn đề tiền lương không chỉ là mối quan tâm của người lao động mà nó còn là mối quan tâm của cả Công ty hay doanh nghiệp. Vì nó ảnh hưởng trực tiếp đến lợi ích của người lao động cũng như doanh thu của Công ty hoặc doanh nghiệp. Tiền lương là một trong những động lực kích thích người lao động làm việc hăng hái nhưng đồng thời cũng có thể là nguyên nhân dẫn đến sự mất ổn định hay những thiệt hại trong nhiều mặt hoạt động kinh doanh mà Công ty hay doanh nghiệp khó có thể đo lường trước được. Để việc quản lý tiền lương bảo đảm được những chức năng của nó thì hệ thống thông tin cần phải chính xác trong từng con số, cập nhật và thanh toán lương kịp thời cho người lao động.
Hỗ trợ việc tìm kiếm
Để tránh mất thời gian của công ty cũng như của nhân viên hệ thống cần phải có công cụ tìm kiếm những thông tin liên quan đến nhân viên theo mã số nhân viên,và theo thứ tự trong danh sách.
Lập các báo cáo thống kê.
In ra các báo cáo:
Báo cáo chi tiết: Báo cáo cụ thể tình hình lương của nhân viên.
Báo cáo tổng hợp: Báo cáo lương của nhân viên theo phòng ban.
Nói chung hệ thống quản lý tiền lương theo thời gian phải đáp ứng được mọi đòi hỏi về mặt thông tin cần thiết cho việc quản lý tiền lương trong Công ty.
Qua việc phân tích bài toán em lựa chọn lập trình theo ngôn ngữ pascal kiểu danh sách liên kết.
Phân tích và thiết kế hệ thống thông tin quản lý tiền lương
Phân tích luồng thông tin và dữ liệu
Sơ đồ chức năng của hệ thống thông tin.
Hệ thống thông tin quản lý lương
Báo cáo tổng hợp
Cập nhật
Tìm kiếm
Tìm kiếm theo mã nhân viên
Báo cáo
Báo cáo chi tiết
Tìm kiếm theo số thứ tự
Sửa danh sách nhân viên
Bổ sung nhân viên
Loại bỏ nhân viên
Cập nhật nhân viên
Lập báo cáo
Báo cáo
tổng hợp
Báo cáo
chi tiết
Sơ đồ luồng dữ liệu.
Sơ đồ ngữ cảnh của hệ thống tính lương.
Nhân viên
Phòng chấm công
BHXH
Giám đốc
Tính lương
Nhân viên
Giám đốc
1.0
Kiểm tra ngày công
2.0
Tính BHXH
3.0
Tính lương
Ngày công
Phiếu lương Báo cáo
Yêu cầu Biểu nộp BHXH
Bảng chấm
công
Biểu đồ luồng dữ liệu mức đỉnh
Nhân viên
Ngày công
Ngày công đã BHXH
Kiểm tra
Phiếu lương Báo cáo
Sơ đồ phân rã chức năng mô tả hoạt động chấm công(CC)
Ngày công
1.1
Kiểm tra ngày công
1.2
Chấm công
1.3
Lập bảng CC tổng hợp
Bộ phận tính lương
Nhân viên
Gửi ngày công
Ngày công hợp lệ
Bảng CC chính Bảng CC thêm giờ
Bảng CC ca đêm Bảng CC khác
Bảng chấm công
Bảng CC tổng hợp
Thiết kế Cơ sở dữ liệu
Thiết kế cơ sở dữ liệu đi từ các thông tin đầu ra.
Dựa vào các thông tin đầu ra: danh sách nhân viên, danh sách phòng ban, bảng chấm công, bảng thanh toán lương cho nhân viên các công trình, bảng thanh toán lương hành chính, danh sách nộp bảo hiểm xã hội… ta có các thông tin đầu ra sau:
Thông tin đầu ra
Thuộc tính
Mã nhân viên
Họ tên nhân viên
Chức vụ
Mã phòng ban
R
Phòng ban
Tên phòng ban
Ngày sinh
Giới tính
Quê quán
Trình độ
Ngày vào biên chế
Hệ số lương cơ bản
Mức lương cơ bản
Hệ số phụ cấp
Số hiệu khen thưởng
Số hiệu kỷ luật
Hình thức kỷ luật
R
Hình thức khen thưởng
R
Ngày có quyết định khen thưởng,kỷ luật
Lý do khen thưởng, kỷ luật
R
Tháng
Ngày công chính thức
Ngày công thêm giờ
Ngày công làm ca đêm
Ngày công nghỉ phép, đi học
Địa điểm phòng ban
Điện thoại phòng ban
Ngày bắt đầu lương
Ngày kết thúc hệ số lương
Tiền lương cơ bản
S
Tiền lương làm thêm
S
Tiền BHXH
S
Tiền phụ cấp
S
Tiền khen thưởng
S
Tiền kỷ luật
S
Tiền ăn
Thực lĩnh
S
Từ các thông tin đầu ra trên, sau khi xác định các thuộc tính lặp(R), loại bỏ các thuộc tính thứ sinh (S) khỏi danh sách và thực hiện việc chuẩn hoá mức 1NF, 2NF, 3NF ta có các tệp sau:
Nhân viên
Mã nhân viên
Tên nhân viên
Mã phòng ban
Ngày sinh
Giới tính
Trình độ
Quê quán
Ngày vào biên chế
Hệ số lương
Hệ số phụ cấp
Số hiệu khen thưởng
Số hiệu kỷ luật
Phòng ban
Mã phòng ban
Tên phòng ban
Địa điểm
Điện thoại
Khen thưởng
Số hiệu khen thưởng
Hệ số khen thưởng
Hình thức khen thưởng
Lý do khen thưởng
Ngày quyết định
Kỷ luật
Số hiệu kỷ luật
Hệ số kỷ luật
Lý do kỷ luật
Hình thức kỷ luật
Ngày quyết định
Bảo hiểm
Mã bảo hiểm
Bảo hiểm xã hội
Bảo hiểm y tế
Ngày áp dụng
Ngày huỷ bỏ
Lương cơ bản
Mã lương cơ bản
Mức lương cơ bản
Tiền lương cơ bản
Ngày thực hiện
Ngày huỷ bỏ
Ngày công
Tháng
Mã nhân viên
Mã phòng ban
Ngày công chính thức
Ngày công thêm giờ
Ngày công ca đêm
Ngày công nghỉ phép
Tiền lương
Tháng
Mã phòng ban
Tên phòng ban
Mã nhân viên
Họ và tên nhân viên
Mã lương cơ bản
Mã bảo hiểm
Tiền ăn
Từ các danh sách trên ta có sơ đồ cấu trúc dữ liệu:
Tiền lương
Tháng
Mã nhân viên
Tên nhân viên
Mã lương cơ bản
Mã bảo hiểm
Tiền ăn ca
Nhân viên
Mã nhân viên
Tên nhân viên
Mã phòng ban
Chức vụ
Ngày sinh
Giới tính
Trình độ
Quê quán
Ngày vào biên chế
Hệ số lương
Hệ số phụ cấp
Số hiệu khen thưởng
Số hiệu kỷ luật
Bảo hiểm
Mã bảo hiểm
Bảo hiểm xã hội
Bảo hiểm y tế
Ngày áp dụng
Ngày huỷ bỏ
Kỷ luật
Số hiệu kỷ luật
Hệ số kỷ luật
Lý do kỷ luật
Hình thức kỷ luật
Ngày quyết định
Ngày công
Tháng
Mã nhân viên
Ngày công chính thức
Ngày công thêm giờ
Ngày công ca đêm
- Ngày công nghỉ phép
Lương cơ bản
Mã lương cơ bản
Mức lương cơ bản
Ngày thực hiện
Ngày huỷ bỏ
Khen thưởng
Số hiệu khen thưởng
Hệ số khen thưởng
Hình thức khen thưởng
Lý do khen thưởng
Ngày quyết định
Phòng ban
Mã phòng ban
Tên phòng ban
Địa điểm
- Điện thoại
Mô tả các bảng.
Bảng lương nhân viên .
TT
Thuộc tính
Diễn giải
Kiểu
Độ rộng
1
TT
Số thứ tự
Intger
2
2
MaNV
Mã nhân viên
string
10
3
HoTen
Tên nhân viên
String
30
4
HSL
Hệ số lương
Real
8
5
NC
Ngày công
Real
3
6
TongL
Tổng lương
Real
8
7
BHXH
Bảo hiểm xã hội
Real
5
8
Lthem
Làm thêm
Real
5
9
PC
Phụ cấp
Real
5
10
TH
Thưởng
Real
5
11
PH
Phạt
Real
5
12
TAN
Tiền ăn
Real
3
13
TL
Thực lĩnh
Real
8
Lương theo phòng ban.
TT
Thuộc tính
Diễn giải
Kiểu
Độ rộng
1
TT
Số thứ tự
Integer
2
2
MaPB
Mã phòng ban
String
5
3
MaNV
Mã nhân viên
String
3
4
TenPB
Tên phòng ban
String
17
5
TenNV
Tên nhân viên
String
10
6
ChucVu
Chức vụ
String
18
7
Tong Luong
Thực lĩnh
Real
14
Thiết kế chương trình quản lý lương
Ngôn ngữ thiết kế chương trình.
Pascal là một ngữ lập trình cấp cao, các chương trình có cấu trúc rõ ràng và dễ hiểu. Được dùng phổ biến ở nước ta hiện nay trong công tác giảng dạy, lập trình tính toán, đồ hoạ, xử lý văn bản. Với tiện ích của Pascal và sự hiểu biết của em qua chương trình đào tạo của trường và sự giúp đỡ hướng dẫn của thầy trưởng khoa Hàn Viết Thuận.
Em đã vận dụng ngôn ngữ này để thiết kế chương trình quản lý lương. Em hy vọng rằng phần mềm này của em sẽ góp phần nâng cao hiệu quả quản lý tiền lương trong các doanh nghiệp của nước ta hiện nay.
Thiết kế menu của chương trình.
Thực đơn trong chương trình chính gồm các mục sau:
Cập nhật danh sách.
Tìm kiếm danh sách.
Báo cáo.
Thoát.
Thực đơn cập nhật danh sách:
Cập nhật danh sách nhân viên.
Duyệt danh sách.
Bổ sung vào cuối danh sách.
Bổ sung vào vị trí bất kỳ.
Loại bỏ nhân viên.
Ghi danh sách ra tệp.
Đọc danh sách từ tệp.
Kết thúc cập nhật.
Thực đơn tìm kiếm
Bao gồm:
Tìm kiếm theo số thứ tự.
Tìm kiếm theo mã nhân viên.
Kết thúc.
Thực đơn báo cáo
Bao gồm:
Báo cáo bảng lương chi tiết.
Báo cáo bảng lương tổng hợp.
Kết thúc.
Màn hình giao diện của thực đơn.
a. Thực đơn chính
PHAN MEM QUAN LY LUONG
***********************************************
THUC DON CHUONG TRINH QUAN LY LUONG
1.Thuc Don Cap Nhat
2.Tim Kiem
3. Bao Cao
4.Thoat
***********************************************
b. Thực đơn cập nhật,
PHAN MEM QUAN LY LUONG
+++++++++++++++++++++++++++++++++++++++++++++
THUC DON CHUONG TRINH CAP NHAT
1. Cap nhat danh sach nhan vien
2. Duyet danh sach
3. Bo sung vao cuoi danh sach
4 Bo sung vao vi tri bat ky
5. Loai bo nhan vien
6. Sua du lieu nhan vien
7. Ghi danh sach
8.Doc danh sach
9. Ket thuc cap nhat
+++++++++++++++++++++++++++++++++++++++++++++
c. Thực đơn tìm kiếm.
PHAN MEM QUAN LY LUONG
+++++++++++++++++++++++++++++++++++++++++++++
THUC DON CHUONG TRINH TIM KIEM
1.Tim kiem theo so thu tu
2.Tim kiem theo ma nhan vien
3. Ket thuc
+++++++++++++++++++++++++++++++++++++++++++++
d. Thực đơn báo cáo.
PHAN MEM QUAN LY LUONG
+++++++++++++++++++++++++++++++++++++++++++++
THUC DON CHUONG TRINH BAO CAO
1. Bao cao chi tiet luong
2.Bao cao tong hop luong
3.Ket thuc
++++++++++++++++++++++++++++++++++++++++++++
Một số kết quả đầu ra.
Bảng lương nhân viên.
---BANG LUONG CHI TIET ---
Donvitinh:1000d
-----------------------------------------------------------------------------------------------------------------------------------
|TT| Mas | HOTEN | HSL | NC | TONGL | BHXH | LTHEM | PC | TH | PH | TAN | TLINH |
-----------------------------------------------------------------------------------------------------------------------------------
| 1 | 05 | Hong Tham | 2.42 | 26 | 701.80 | 42.11 | 28.07 | 0.00 | 0.00 | 0.00 | 110 | 577.76 |
| 2 | 02 | Han Dat | 4.38 | 26 | 1270.20 | 76.21 | 25.40 | 12.70 | 0.00 | 0.00 | 110 | 1122.09 |
| 3 | 01 | Le Tam | 4.52 | 26 | 1310.80 | 78.65 | 0.00 | 13.11 | 13.11 | 0.00 | 110 | 1148.37 |
| 4 | 03 | Minh Thu | 4.60 | 26 | 1334.00 | 80.04 | 26.68 | 13.34 | 13.34 | 0.00 | 110 | 1197.32 |
| 5 | 04 | Hong Giang | 4.98 | 26 | 1444.20 | 86.65 | 0.00 | 28.88 | 0.00 | 0.00 | 110 | 1276.43 |
-----------------------------------------------------------------------------------------------------------------------------------
Bảng lương phòng ban.
---BANG LUONG TONG HOP ---
Donvitinh:1000d
----------------------------------------------------------------------------------------------------------
|TT|MaPB | MaNV | TenPB | TenNV | ChucVu | TongLuong |
----------------------------------------------------------------------------------------------------------
|1 | HC | 05 | Hanh chinh | Hong Tham | Nhan vien | 577.76 |
| 2 | HC | 02 | Hanh Chinh | Han Dat | Pho Phong | 1122.09 |
|3 | TCCB | 01 | To chuc can bo | Le Tam | Truong Phong | 1148.37 |
| 4 | HC | 03 | Hanh Chinh | Minh Thu | Truong Phong | 1197.32 |
| 5 | GD | 04 | Ban lanh dao | Hong Giang | Giam doc | 1276.43 |
----------------------------------------------------------------------------------------------------------
Chương trình lập trình
program Quanlyluong;
uses
crt;
type
PBang_luong =^Bang_luong;
Bang_luong=record
Hoten:String[20];
Manv:string[10];
CV:string[20];
PB:string[20];
MaPB:string[10];
lcb,hsluong,hsPC,PC,lamthem,HSth,hsph,Th,Ph,tongl,bhxh,tl:real;
nc,ncthem,ta:integer;
tiep,truoc:pbang_luong;
donvitinh:integer;
end;
lg=record
Hoten:String[20];
Manv:string[10];
CV:string[20];
PB:string[20];
MaPB:string[10];
lcb,hsluong,hsPC,PC,lamthem,HSth,hsph:real;
Th,tl,Ph,tongl,bhxh:real;
nc,ncthem,ta:integer;
end;
var
p,pdau,pcuoi: Pbang_luong;
D,stt,i,m,n,dong:integer;
Chon,TraLoi:char;
(*///////////////////////////////////////////////////*)
(*Chuc nang mat khau *)
FUNCTION Matkhau:boolean;
var a,b,c:char;
begin
clrscr;
repeat
gotoxy(6,6); write('Ban hay nhap mat khau:');
a:=readkey;write('*');
b:=readkey;write('*');
c:=readkey;write('*');
until (a='t') and (b='h') and (c='u');
gotoxy(6,8); writeln('Ban da nhap dung mat khau');
matkhau:=true;
readln;
end;
(*////////////////////////////////////////////////*)
(*Thu tuc tao danh sach*)
procedure taods(var Pdau:Pbang_luong);
var
stt:integer;
manv:string[23];
Pcuoi:Pbang_luong;
begin
Pdau:=nil;
clrscr;
stt:=1;
while true do
begin
clrscr;
gotoxy(15,8); writeln('nhan vien thu:',stt:4);
gotoxy(30,10); write('Ma nhan vien:');
readln(manv);
if manv='' then
exit;
if pdau=nil then
begin
new(pdau);
pcuoi:=pdau;
end
else
begin
new(pcuoi^.tiep);
pcuoi:=pcuoi^.tiep;
end;
pcuoi^.tiep:=nil;
pcuoi^.Manv:=manv;
gotoxy(30,12); write('Ho ten nhan vien:');
readln(pcuoi^.hoten);
gotoxy(30,14); write('Chuc vu:');
readln(pcuoi^.CV);
gotoxy(30,16); write('Phong ban:');
readln(pcuoi^.PB);
gotoxy(30,18); write('Ma phong ban:');
readln(pcuoi^.MaPB);
gotoxy(30,20); write('Luongcoban:');
readln(pcuoi^.lcb);
gotoxy(30,22); write('Hesoluong:');
readln(pcuoi^.hsluong);
gotoxy(30,24); write('Ngay_cong:');
readln(pcuoi^.nc);
gotoxy(30,26); write('He so phu cap:');
readln(pcuoi^.hsPC);
gotoxy(30,28); write('So ngay lam them:’);
readln(pcuoi^.NCthem);
gotoxy(30,30); write('He so thuong:');
readln(pcuoi^.hsth);
gotoxy(30,32); write('He so phat:');
readln(pcuoi^.hsph);
gotoxy(30,34); write('Tien an:');
readln(pcuoi^.TA);
stt:=stt+1;
(****tinh luong****)
pcuoi^.tongl:=(pcuoi^.hsluong*pcuoi^.lcb/26)*pcuoi^.NC;
pcuoi^.bhxh:=pcuoi^.tongl*6/100;
pcuoi^.PC:=pcuoi^.tongl*pcuoi^.hsPC;
pcuoi^.lamthem:=0.02*pcuoi^.tongl*pcuoi^.NCthem;
pcuoi^.th:=pcuoi^.tongl*pcuoi^.hsth ;
pcuoi^.ph:=pcuoi^.tongl*pcuoi^.hsph;
pcuoi^.tl:=pcuoi^.tongl-pcuoi^.bhxh+pcuoi^.PC+pcuoi^.lamthem+pcuoi^.th- pcuoi^.ph-pcuoi^.TA;
end;
end;
(*//////////////////////////////////////////////////*)
(*Thu tuc sap xep theo thuc linh tang dan*)
procedure SapXepTL;
var sx:boolean;
pt,s,q:pBang_luong;
begin
repeat p:=pdau;
q:=nil;
sx:=true;
while p^.tiepnil do
begin
pt:=p^.tiep;
if P^.tl>Pt^.tl then
begin
sx:=false;
if Pt^.tiepnil then
begin
S:=pt^.tiep;
S^.truoc:=P;
end
else
S:=nil;
if p^.truoc=nil then
begin
pdau:=pt;q:=nil
end
else
begin
q:=p^.truoc;
q^.tiep:=pt
end;
p^.tiep:=S;
P^.truoc:=pt;
pt^.tiep:=p;
pt^.truoc:=q;
p:=pdau;
end
else p:=p^.tiep;
end;
until sx;
pcuoi:=p;
end;
(*//////////////////////////////////////////////////*)
(**Thu tuc duyet danh sach **)
procedure Duyet;
var stt:integer;
begin
p:=pdau;
stt:=0;
while pnil do
begin
inc(stt);
CLRSCR;
textbackground(5);
textcolor(11);
gotoxy(20,3); writeln('---BANG LUONG NHAN VIEN ---');
gotoxy(45,5);writeln('Donvitinh:1000d');
gotoxy(1,7); writeln('-------------');
gotoxy(1,8 );write('|');
gotoxy(2,8); write('TT');
gotoxy(4,8 );write('|');
gotoxy(5,8);write('Maso');
gotoxy(8,8 );write('|');
gotoxy(9,8); write('HOTEN');
gotoxy(19,8 );write('|');
gotoxy(20,8); write('HSL');
gotoxy(24,8 );write('|');
GOTOXY(25,8); WRITE('NC');
gotoxy(27,8 );write('|');
gotoxy(28,8); Write('TONGL');
gotoxy(36,8 );write('|');
GOTOXY(37,8);write('BHXH');
gotoxy(42,8 );write('|');
GOTOXY(43,8);WRITE('THEM');
gotoxy(48,8 );write('|');
gotoxy(49,8); write('PC');
gotoxy(54,8 );write('|');
gotoxy(55,8); write('TH');
gotoxy(60,8 );write('|');
gotoxy(61,8); write('PH');
gotoxy(66,8 );write('|');
gotoxy(67,8); Write('TAN');
gotoxy(70,8 );write('|');
gotoxy(71,8);write('TLINH');
gotoxy(80,8);write('|');
gotoxy(3,77); Write('----------');
gotoxy(1,dong);write('|');
dong:=10;
textbackground(5);
textcolor(11);
GOTOXY(2,DONG);writeln(stt:2);
gotoxy(4,dong );writeln('|');
gotoxy(5,dong);writeln(p^.manv:3);
gotoxy(8,dong ); writeln('|');
gotoxy(9,dong); writeln(P^.hoten);
gotoxy(19,dong );writeln('|');
gotoxy(20,dong);writeln(p^.hsluong:4:2);
gotoxy(24,dong );writeln('|');
gotoxy(25,dong); writeln(p^.NC);
gotoxy(27,dong );writeln('|');
gotoxy(28,dong);writeLN(p^.tongl:8:2);
gotoxy(36,dong );writeln('|');
gotoxy(37,dong); writeLN(P^.BHXH:5:2);
gotoxy(42,dong );writeln('|');
gotoxy(43,dong); writeln(p^.lamthem:5:2);
gotoxy(48,dong ); writeln('|');
gotoxy(49,dong); write(p^.PC:5:2);
gotoxy(54,dong ); writeln('|');
gotoxy(55,dong); writeln(p^.TH:5:2);
gotoxy(60,dong ); writeln('|');
gotoxy(61,dong);writeln(p^.Ph:5:2);
gotoxy(66,dong ); writeln('|');
gotoxy(67,dong);writeLN(p^.TA);
gotoxy(70,dong ); writeln('|');
gotoxy(71,dong);writeLN(p^.tl:8:2);
gotoxy(80,dong ); writeln('|');
inc(dong);
p:=p^.tiep;
readln;
gotoxy(1,dong);writeln('----------------');
end;
gotoxy(10,34);Writeln('An phim bat ky de ket thuc xem');
readln;
end;
(*///////////////////////////////////////////////*)
(**Thu tuc in**)
procedure Inchitiet(p:pbang_luong);
var
pcuoi:pBang_luong;
stt:integer;
begin
sapxepTL;
CLRSCR;
gotoxy(20,3); writeln('---BANG LUONG CHI TIET ---');
gotoxy(50,5);writeln('Donvitinh:1000d');
gotoxy(1,7); writeln('----------------');
gotoxy(1,8 );write('|');
gotoxy(2,8); write('TT');
gotoxy(4,8 );write('|');
gotoxy(5,8);write('Maso');
gotoxy(8,8 );write('|');
gotoxy(9,8); write('HOTEN');
gotoxy(19,8 );write('|');
gotoxy(20,8); write('HSL');
gotoxy(24,8 );write('|');
GOTOXY(25,8); WRITE('NC');
gotoxy(27,8 );write('|');
gotoxy(28,8); Write('TONGL');
gotoxy(36,8 );write('|');
GOTOXY(37,8);write('BHXH');
gotoxy(42,8 );write('|');
GOTOXY(43,8);WRITE('LTHEM');
gotoxy(48,8 );write('|');
gotoxy(49,8); write('PC');
gotoxy(54,8 );write('|');
gotoxy(55,8); write('TH');
gotoxy(60,8 );write('|');
gotoxy(61,8); write('PH');
gotoxy(66,8 );write('|');
gotoxy(67,8); Write('TAN');
gotoxy(70,8 );write('|');
gotoxy(71,8);write('TLINH');
gotoxy(80,8);write('|');
gotoxy(1,9); Write('------------------------');
dong:=10;
stt:=1;
p:=pdau;
while pnil do
begin
gotoxy(1,dong);write('|');
GOTOXY(2,DONG);writeln(stt:2);
gotoxy(4,dong );writeln('|');
gotoxy(5,dong);writeln(p^.manv:3);
gotoxy(8,dong ); writeln('|');
gotoxy(9,dong); writeln(P^.hoten);
gotoxy(19,dong );writeln('|');
gotoxy(20,dong);writeln(p^.hsluong:4:2);
gotoxy(24,dong );writeln('|');
gotoxy(25,dong); writeln(p^.NC);
gotoxy(27,dong );writeln('|');
gotoxy(28,dong);writeLN(p^.tongl:8:2);
gotoxy(36,dong );writeln('|');
gotoxy(37,dong); writeLN(P^.BHXH:5:2);
gotoxy(42,dong );writeln('|');
gotoxy(43,dong); writeln(p^.lamthem:5:2);
gotoxy(48,dong ); writeln('|');
gotoxy(49,dong); write(p^.PC:5:2);
gotoxy(54,dong ); writeln('|');
gotoxy(55,dong); writeln(p^.TH:5:2);
gotoxy(60,dong ); writeln('|');
gotoxy(61,dong);writeln(p^.Ph:5:2);
gotoxy(66,dong ); writeln('|');
gotoxy(67,dong);writeLN(p^.TA);
gotoxy(70,dong ); writeln('|');
gotoxy(71,dong);writeLN(p^.tl:8:2);
gotoxy(80,dong);writeln('|');
p:=p^.tiep;
dong:=dong+1;stt:=stt+1;
end;
gotoxy(1,dong);writeln('----------------');
readln;
end;
(*//////////////////////////////////////////////////*)
(*Thu tuc in bang luong tong hop*)
procedure InTongHop(p:pbang_luong);
var
pcuoi:pBang_luong;
stt:integer;
begin
p:=pdau;
sapxepTL;
CLRSCR;
gotoxy(20,3); writeln('-BANG LUONG TONG HOP -');
gotoxy(50,5);writeln('Donvitinh:1000d');
gotoxy(1,7); writeln('-----------------');
gotoxy(1,8 );write('|');
gotoxy(2,8); write('TT');
gotoxy(4,8 );write('|');
gotoxy(5,8);write('MaPB');
gotoxy(10,8 );write('|');
gotoxy(11,8); write('MaNV');
gotoxy(17,8 );write('|');
gotoxy(18,8); write('TenPB');
gotoxy(35,8 );write('|');
GOTOXY(36,8); WRITE('TenNV');
gotoxy(46,8 );write('|');
gotoxy(47,8); Write('ChucVu');
gotoxy(65,8 );write('|');
GOTOXY(66,8);write('TongLuong');
gotoxy(80,8 );write('|');
gotoxy(1,9); Write('------------------');
dong:=10;
stt:=1;
while pnil do
begin
gotoxy(1,dong);write('|');
GOTOXY(2,DONG);writeln(stt:2);
gotoxy(4,dong );writeln('|');
gotoxy(5,dong);writeln(p^.MaPB:5);
gotoxy(10,dong ); writeln('|');
gotoxy(11,dong); writeln(P^.MaNV);
gotoxy(17,dong );writeln('|');
gotoxy(18,dong);writeln(p^.PB);
gotoxy(35,dong );writeln('|');
gotoxy(36,dong); writeln(p^.hoten);
gotoxy(46,dong );writeln('|');
gotoxy(47,dong);writeLN(p^.CV);
gotoxy(65,dong );writeln('|');
gotoxy(66,dong); writeLN(P^.tongl:14:2);
gotoxy(80,dong );writeln('|');
p:=p^.tiep;
dong:=dong+1;stt:=stt+1;
end;
gotoxy(1,dong);writeln('------------‘);
readln;
end;
(*///////////////////////////////////////////*)
(**Chuc nang tim dia chi ban ghi**)
function dc(p:pbang_luong;stt:integer):pbang_luong;
var
i:integer;
begin
i:=1;dc:=nil;
while pnil do
begin
if stt=i then
begin
dc:=p;
exit;
end;
p:=p^.tiep;
i:=i+1;
end;
end;
(*//////////////////////////////////////////////////*)
(**Thu tuc tim kiem theo ma nhan vien**)
procedure timkiemMaNV;
var mas:string[6];
Timthay:boolean;
p,q:pbang_luong;
begin
gotoxy(10,34);write('ma so nhan vien can tim:');
gotoxy(40,36); readln(mas);
p:=pdau;
if Pnil then
begin Timthay:=false;
while(p nil) and(not timthay) do
if P^.manv=mas then
begin
Timthay:=true;
break;
end
else
begin
p:=P^.tiep;
end;
if timthay then
begin
clrscr;
gotoxy(20,3);writeln('-THONG TIN VE NHAN VIEN DANG TIM-');
gotoxy(3,6); writeln('---------');
gotoxy(4,8 );write('|');
gotoxy(5,8);write('Maso');
gotoxy(8,8 );write('|');
gotoxy(9,8); write('HOTEN');
gotoxy(19,8 );write('|');
gotoxy(20,8); write('HSL');
gotoxy(24,8 );write('|');
GOTOXY(25,8); WRITE('NC');
gotoxy(27,8 );write('|');
gotoxy(28,8); Write('TONGL');
gotoxy(36,8 );write('|');
gotoxy(37,8);write('BHXH');
gotoxy(42,8 );write('|');
gotoxy(43,8);write('LTHEM');
gotoxy(48,8 );write('|');
gotoxy(49,8); write('PC');
gotoxy(54,8 );write('|');
gotoxy(55,8); write('TH');
gotoxy(60,8 );write('|');
gotoxy(61,8); write('PH');
gotoxy(66,8 );write('|');
gotoxy(67,8); Write('TAN');
gotoxy(70,8 );write('|');
gotoxy(71,8);write('TLINH');
gotoxy(80,8);write('|');
gotoxy(3,100); Write('---------');
dong:=10;
gotoxy(4,dong ); writeln('|');
gotoxy(5,dong);writeln(p^.manv:3);
gotoxy(8,dong ); writeln('|');
gotoxy(9,dong); writeln(p^.hoten);
gotoxy(19,dong );writeln('|');
gotoxy(20,dong); writeln(p^.hsluong:4:2);
gotoxy(24,dong );writeln('|');
gotoxy(25,dong); writeln(p^.NC);
gotoxy(27,dong );writeln('|');
gotoxy(28,dong); writeLN(p^.tongl:8:2);
gotoxy(36,dong );writeln('|');
gotoxy(37,dong); writeLN(p^.BHXH:5:2);
gotoxy(42,dong );writeln('|');
gotoxy(43,dong); writeln(p^.lamthem:5:2);
gotoxy(48,dong );writeln('|');
gotoxy(49,dong); write(p^.PC:5:2);
gotoxy(54,dong );writeln('|');
gotoxy(55,dong); writeln(p^.TH:5:2);
gotoxy(60,dong );writeln('|');
gotoxy(61,dong); writeln(p^.Ph:5:2);
gotoxy(66,dong );writeln('|');
gotoxy(67,dong); writeLN(P^.TA);
gotoxy(70,dong );writeln('|');
gotoxy(71,dong); writeLN(p^.tl:8:2);
gotoxy(80,dong); writeln('|');
dong:=dong+1;
gotoxy(3,dong);writeln('-----‘) end
else
gotoxy(10,38);
Writeln('Khong tim thay nhan vien nao co ma nay ');
readln;
end;
end;
(*////////////////////////////////////////*)
(*Thu tuc sua nhan vien*)
procedure suaNV;
var mas:string[6];
k:integer;
X:lg;
f:file of lg;
tf:string[30];
Timthay:boolean;
begin
gotoxy(10,34); Write('Vao ten tep de tim kiem');
gotoxy(40,34);readln(tf);
assign(f,tf);
reset(f);
gotoxy(10,36); write('ma so nhan vien can tim:');
gotoxy(40,36); readln(mas);
k:=0;timthay:=false;
while not EOF(f) do
begin
read(f,X);
if X.manv=mas then
begin
timthay:=true;break;
end;
inc(k);
end;
if timthay then
begin
clrscr;
gotoxy(20,3); writeln('---THONG TIN VE NHAN VIEN DANG TIM VA SUA ---');
gotoxy(3,6); writeln('---------');
gotoxy(4,8 );write('|');
gotoxy(5,8);write('Maso');
gotoxy(8,8 );write('|');
gotoxy(9,8); write('HOTEN');
gotoxy(19,8 );write('|');
gotoxy(20,8); write('HSL');
gotoxy(24,8 );write('|');
GOTOXY(25,8); WRITE('NC');
gotoxy(27,8 );write('|');
gotoxy(28,8); Write('TONGL');
gotoxy(36,8 );write('|');
gotoxy(37,8);write('BHXH');
gotoxy(42,8 );write('|');
gotoxy(43,8);write('LTHEM');
gotoxy(48,8 );write('|');
gotoxy(49,8); write('PC');
gotoxy(54,8 );write('|');
gotoxy(55,8); write('TH');
gotoxy(60,8 );write('|');
gotoxy(61,8); write('PH');
gotoxy(66,8 );write('|');
gotoxy(67,8); Write('TAN');
gotoxy(70,8 );write('|');
gotoxy(71,8);write('TLINH');
gotoxy(80,8);write('|');
gotoxy(3,100); Write('---------');
dong:=10;
gotoxy(4,dong ); writeln('|');
gotoxy(5,dong); writeln(X.manv:3);
gotoxy(8,dong ); writeln('|');
gotoxy(9,dong); writeln(X.hoten);
gotoxy(19,dong );writeln('|');
gotoxy(20,dong); writeln(X.hsluong:4:2);
gotoxy(24,dong );writeln('|');
gotoxy(25,dong); writeln(X.NC);
gotoxy(27,dong );writeln('|');
gotoxy(28,dong); writeLN(X.tongl:8:2);
gotoxy(36,dong );writeln('|');
gotoxy(37,dong); writeLN(X.BHXH:5:2);
gotoxy(42,dong );writeln('|');
gotoxy(43,dong); writeln(X.lamthem:5:2);
gotoxy(48,dong );writeln('|');
gotoxy(49,dong); write(X.PC:5:2);
gotoxy(54,dong );writeln('|');
gotoxy(55,dong); writeln(X.TH:5:2);
gotoxy(60,dong );writeln('|');
gotoxy(61,dong); writeln(X.Ph:5:2);
gotoxy(66,dong );writeln('|');
gotoxy(67,dong); writeLN(X.TA);
gotoxy(70,dong );writeln('|');
gotoxy(71,dong); writeLN(X.tl:8:2);
gotoxy(80,dong); writeln('|');
dong:=dong+1;
gotoxy(3,dong);writeln('------------------------');
Writeln;
gotoxy(20,3); writeln('---THONG TIN VE NHAN VIEN SAU KHI SUA ---');
gotoxy(3,6); writeln('-------------------------');
gotoxy(4,8 );write('|');
gotoxy(5,8);write('Maso');
gotoxy(8,8 );write('|');
gotoxy(9,8); write('HOTEN');
gotoxy(19,8 );write('|');
gotoxy(20,8); write('HSL');
gotoxy(24,8 );write('|');
GOTOXY(25,8); WRITE('NC');
gotoxy(27,8 );write('|');
gotoxy(28,8); Write('TONGL');
gotoxy(36,8 );write('|');
gotoxy(37,8);write('BHXH');
gotoxy(42,8 );write('|');
gotoxy(43,8);write('LTHEM');
gotoxy(48,8 );write('|');
gotoxy(49,8); write('PC');
gotoxy(54,8 );write('|');
gotoxy(55,8); write('TH');
gotoxy(60,8 );write('|');
gotoxy(61,8); write('PH');
gotoxy(66,8 );write('|');
gotoxy(67,8); Write('TAN');
gotoxy(70,8 );write('|');
gotoxy(71,8);write('TLINH');
gotoxy(80,8);write('|');
gotoxy(3,100); Write('---------');
dong:=10;
gotoxy(4,dong ); writeln('|');
gotoxy(5,dong); readln(X.manv);
gotoxy(8,dong ); writeln('|');
gotoxy(9,dong); readln(X.hoten);
gotoxy(19,dong ); writeln('|');
gotoxy(20,dong); readln(X.hsluong);
gotoxy(24,dong ); writeln('|');
gotoxy(25,dong); readln(X.NC);
gotoxy(27,dong ); writeln('|');
gotoxy(28,dong); readLN(X.tongl);
gotoxy(36,dong ); writeln('|');
gotoxy(37,dong); readLN(X.BHXH);
gotoxy(42,dong ); writeln('|');
gotoxy(43,dong); readln(X.lamthem);
gotoxy(48,dong ); writeln('|');
gotoxy(49,dong); read(X.PC);
gotoxy(54,dong ); writeln('|');
gotoxy(55,dong); readln(X.TH);
gotoxy(60,dong ); writeln('|');
gotoxy(61,dong); readln(X.Ph);
gotoxy(66,dong ); writeln('|');
gotoxy(67,dong); readLN(X.TA);
gotoxy(70,dong ); writeln('|');
gotoxy(71,dong); readLN(X.tl);
gotoxy(80,dong); writeln('|');
gotoxy(5,12);Writeln('maPhongban:');
gotoxy(17,12);readln(X.maPB);
gotoxy(5,14);Writeln('Phongban:');
gotoxy(15,14);readln(X.PB);
gotoxy(5,16);Writeln('Chucvu:');
gotoxy(15,16);readln(X.CV);
dong:=dong+1;
gotoxy(3,dong);writeln('---------------------');
seek(f,k);
write(f,X);
gotoxy(15,30);writeln('Ban co muon tiep tuc sua khong?:');
gotoxy(50,30);readln(traloi);
end
else
Writeln('Khong tim thay nhan vien nao co ma nay ');readln;
close(f);
end;
(*//////////////////////////////////////////////*)
(* Thu tuc bo sung vao cuoi danh sach nhan vien moi*)
procedure bosung(var p:pbang_luong);
var
pd,pc:pBang_luong;
begin
taods(pd);
if pd=nil then exit;
if p=nil then
begin
p:=pd;
exit;
end;
pc:=p;
while pc^.tiepnil do
pc:=pc^.tiep;
pc^.tiep:=pd;
end;
(********)
procedure XoaNV;
var maso:string[6];
timthay:boolean;
p,q:pBang_luong;
begin
write('Ma so nhan vien can xoa:');
readln(maso);
p:=pdau;
if p nil then
begin
timthay:=False;
while(pnil) and(not timthay) do
if p^.manv=maso then timthay:=true
else
begin
q:=p;p:=p^.tiep
end;
if timthay then
begin
if p=pdau then
pdau:=p^.tiep
else
q^.tiep:=p^.tiep;
if p^.tiep=nil then
pcuoi:=q;
dispose(p);
end;
end;
end;
(*////////////////////////////////////////////*)
(*Thu tuc chen vao vi tri bat ky*)
procedure chenthem(var pdau:pbang_luong;k:integer);
var
s:integer;
p,pd,pc:pbang_luong;
begin
if pdau=nil then
begin
taods(pdau);exit;
end;
s:=0;
p:=pdau;
while pnil do
begin
s:=s+1;
p:=p^.tiep;
end;
if k>s then
begin
bosung(pdau);
exit;
end;
taods(pd);
if pd=nil then exit;
pc:=pd;
while pc^.tiepnil do
pc:=pc^.tiep;
if k=1 then
begin
p:=pdau;
pdau:=pd;
pc^.tiep:=p;
end
else
begin
p:=dc(pdau,k-1);
p^.tiep:=dc(pdau,k);
end;
End;
(*////////////////////////////////////////////////////*)
(**Thu tuc ghi danh sach ra tep**)
procedure Ghiratep;
var X:lg;f:file of
lg;tf:string[30];
begin
gotoxy(10,34); write('Dat ten tep de ghi du lieu:');
gotoxy(38,34); readln(tf);
assign(f,tf);
rewrite(f);
p:=pdau;
while pnil do
begin
X.manv:=p^.MaNV;
X.Hoten:=p^.Hoten;
X.maPB:=p^.MaPB;
X.PB:=p^.PB;
X.CV:=p^.CV;
X.lcb:=p^.lcb;
X.hsluong:=p^.hsluong;
X.nc:=p^.nc;
X.hspc:=p^.hsPC;
X.pc:=p^.PC;
X.hsth:=p^.HSth;
X.hsph:=p^.hsph;
X.lamthem:=p^.lamthem;
X.ncthem:=p^.NCthem;
X.tongl:=p^.tongl;
X.bhxh:=p^.bhxh;
X.ta:=p^.ta;
X.tl:=p^.tl ;
X.th:=p^.th;
X.ph:=p^.ph;
write(f,X);
p:=P^.tiep;
end;
close(f);
gotoxy(10,36); write('Da ghi xong danh sach');
readln;
end;
(*////////////////////////////////////////////////*)
(**Thu tuc doc danh sach tu tep ra dia**)
procedure DocTep;
var q:pBang_luong;
X:lg;
f:file of lg;
tf:string[30];
begin
gotoxy(10,34); write('Nhap ten tep:');
gotoxy(37,34); readln(tf);
assign(f,tf);
reset(f);
pdau:=nil;
pcuoi:=nil;
while not EOF(f) do
begin
read(f,X);
new(P);
p^.MaNV:=X.manv;
p^.Hoten:= X.Hoten;
p^.MaPB:=X.maPB;
p^.PB:=X.PB;
p^.CV:=X.CV;
p^.lcb:=X.lcb;
p^.hsluong:=X.hsluong;
p^.nc:=X.nc;
p^.hsPC:=X.hsPC;
p^.PC:=X.pc;
p^.HSth:=x.hsth;
p^.hsph:=X.hsph;
p^.lamthem:=X.lamthem;
p^.NCthem:=X.ncthem;
p^.tongl:=X.tongl;
p^.bhxh:=X.bhxh;
p^.ta:=X.ta;
p^.tl:=X.tl ;
p^.th:=X.th;
p^.ph:=X.ph;
if pdau=nil then
begin
p^.tiep:=nil;
p^.truoc:=nil;
pdau:=p;
pcuoi:=p;
end
else
begin
q:=Pcuoi;
q^.tiep:=p;
p^.tiep:=nil;
p^.truoc:=q;
pcuoi:=p;
end;
end;
close(f);
gotoxy(10,36);write('Doc xong du lieu tu tep');
readln;
end;
(*/////////////////////////////////////////*)
(**Thu tuc tao thuc don cap nhat**)
procedure tdcapnhat;
var chon:char;
begin
repeat
clrscr;
gotoxy(25,5); writeln('PHAN MEM QUAN LY LUONG');
gotoxy(15,6); writeln('+++++++++++++++++++++++++++++++++++++++' );
gotoxy(20,8);writeln('THUC DON CHUONG TRINH CAP NHAT ');
gotoxy(20,12);writeln('1.Cap nhat danh sach nhan vien');
gotoxy(20,14); writeln('2.Duyet danh sach ');
gotoxy(20,16); Writeln('3.Bo sung vao cuoi danh sach');
gotoxy(20,18); writeln('4.Bo sung vao vi tri bat ky');
gotoxy(20,20); writeln('5.Loai bo nhan vien');
gotoxy(20,22); writeln('6.Sua du lieu nhan vien');
gotoxy(20,24); writeln('7.Ghi danh sach');
gotoxy(20,26); writeln('8.Doc danh sach')
gotoxy(20,28); writeln('9.Ket thuc cap nhat');
gotoxy(15,30); writeln('+++++++++++++++++++++++++++++++++++++' );
gotoxy(20,32); Writeln('Hay chon mot chuc nang de cap nhat:');
gotoxy(60,32); Readln(chon);
Case chon of
'1': taods(pdau);
'2': Duyet;
'3': bosung(pdau);
'4':
begin
clrscr;
writeln('chen truoc ban ghi thu:');
readln(n);
chenthem(pdau,n);
end;
'5':
begin
clrscr;
repeat XoaNV;
Write('Co tiep tuc xoa khong(C/K)');
readln(traloi);
until upcase(traloi)='K';
end;
'6':Suanv;
'7':Ghiratep;
'8':Doctep;
'9':exit;
end;
gotoxy(10,44); Write('Ban co tiep tuc cap nhat nua khong? C/K:');
gotoxy(55,44); readln(TraLoi);
Until Traloi='K';
end;
(*////////////////////////////////////////////////*)
(*Thu tuc tao thuc don tim kiem*)
procedure TDTK;
var chon:char;
begin
repeat
clrscr;
gotoxy(25,5); writeln('PHAN MEM QUAN LY LUONG ');
gotoxy(15,8); writeln('++++++++++++++++++++++++++++++++++++++++');
gotoxy(20,12);writeln('THUC DON CHUONG TRINH TIM KIEM ');
gotoxy(20,15);writeln(' 1.Tim kiem theo so thu tu');
gotoxy(20,17);writeln(' 2.Tim kiem theo ma nhan vien');
gotoxy(20,19);Writeln(' 3.Ket thuc');
gotoxy(15,22);writeln('+++++++++++++++++++++++++++++' );
gotoxy(20,25);Writeln(' phuong an toi lua chon la :');
gotoxy(48,25);readln(chon);
case chon of
'1':
begin
clrscr;
gotoxy(15,15); write('So thu tu nhan vien can tim:');
gotoxy(45,15); readln(i);
p:=dc(pdau,i);
if p=nil then
begin
gotoxy(15,15); write('Khong co nhan vien thu:',i)
end
else
begin
clrscr;
gotoxy(20,3); writeln('---BANG LUONG CHI TIET ---'); gotoxy(50,5);writeln('Donvitinh:1000');
gotoxy(1,7); writeln('-----------------------------');
gotoxy(1,8 );write('|');
gotoxy(2,8); write('TT');
gotoxy(4,8 );write('|');
gotoxy(5,8);write('Maso');
gotoxy(8,8 );write('|');
gotoxy(9,8); write('HOTEN');
gotoxy(19,8 );write('|');
gotoxy(20,8); write('HSL');
gotoxy(24,8 );write('|');
gotoxy(25,8); WRITE('NC');
gotoxy(27,8 );write('|');
gotoxy(28,8); Write('TONGL');
gotoxy(36,8 );write('|');
gotoxy(37,8);write('BHXH');
gotoxy(42,8 );write('|');
gotoxy(43,8);WRITE('LTHEM');
gotoxy(48,8 );write('|');
gotoxy(49,8); write('PC');
gotoxy(54,8 );write('|');
gotoxy(55,8); write('TH');
gotoxy(60,8 );write('|');
gotoxy(61,8); write('PH');
gotoxy(66,8 );write('|');
gotoxy(67,8); Write('TAN');
gotoxy(70,8 );write('|');
gotoxy(71,8);write('TLINH');
gotoxy(80,8);write('|');
gotoxy(1,9); Write('-----');
dong:=10;
stt:=1;
gotoxy(1,dong);write('|');
GOTOXY(2,DONG);writeln(stt:2);
gotoxy(4,dong );writeln('|');
gotoxy(5,dong);writeln(p^.manv:3);
gotoxy(8,dong ); writeln('|');
gotoxy(9,dong); writeln(P^.hoten);
gotoxy(19,dong );writeln('|');
gotoxy(20,dong);writeln(p^.hsluong:4:2);
gotoxy(24,dong );writeln('|');
gotoxy(25,dong); writeln(p^.NC);
gotoxy(27,dong );writeln('|');
gotoxy(28,dong);writeLN(p^.tongl:8:2);
gotoxy(36,dong );writeln('|');
gotoxy(37,dong); writeLN(P^.BHXH);
gotoxy(42,dong );writeln('|');
gotoxy(43,dong); writeln(p^.lamthem:5:2);
gotoxy(48,dong ); writeln('|');
gotoxy(49,dong); write(p^.PC:5:2);
gotoxy(54,dong ); writeln('|');
gotoxy(55,dong); writeln(p^.TH:5:2);
gotoxy(60,dong ); writeln('|');
gotoxy(61,dong);writeln(p^.Ph:5:2);
gotoxy(66,dong ); writeln('|');
gotoxy(67,dong);writeLN(p^.TA);
gotoxy(70,dong ); writeln('|');
gotoxy(71,dong);writeLN(p^.tl:8:2);
gotoxy(80,dong);writeln('|');
p:=p^.tiep;
dong:=dong+1;stt:=stt+1;
gotoxy(1,dong);writeln('----------------------');
end;
END;
'2': TimkiemMaNV;
'3': Exit;
end;
gotoxy(10,33); Write('Ban co tiep tuc tim kiem nua khong? C/K');
gotoxy(50,33); readln(TraLoi);
Until Traloi='K';
end;
(*/////////////////////////////////////////////*)
(*Thuc don Bao cao*)
procedure TDBC;
var chon:char;
begin
repeat
clrscr;
gotoxy(25,5); writeln('PHAN MEM QUAN LY LUONG');
gotoxy(15,8); writeln('++++++++++++++++++++++++++++++' );
gotoxy(20,12); writeln('THUC DON CHUONG TRINH BAO CAO ');
gotoxy(20,16);writeln('1. Bao cao chi tiet luong');
gotoxy(20,18);writeln('2.Bao cao tong hop luong');
gotoxy(20,20);writeln('3.Ket thuc');
gotoxy(15,22);writeln('+++++++++++++++++++++++' );
gotoxy(20,25);Writeln('Phuong an toi lua chon la :');
gotoxy(52,25); readln(chon);
case chon of
'1': Inchitiet(pdau);
'2': Intonghop(pdau);
'3': Exit;
end;
gotoxy(10,40);Write('Ban co tiep tuc in nua khong?C\K:');
gotoxy(55,40);readln(TraLoi);
Until Traloi='K';
end;
(*///////////////////////////////////////////*)
(*Thuc don chinh cua chuong trinh quan ly luong*)
procedure TDChinh;
var chon:char;
begin
clrscr;
gotoxy(25,5); writeln('PHAN MEM QUAN LY LUONG');
gotoxy(15,8); writeln('********************* ');
gotoxy(20,10); writeln('THUC DON CHUONG TRINH QUAN LY LUONG');
gotoxy(24,15); writeln('1.Thuc Don Cap Nhat');
gotoxy(24,17); writeln('2.Tim Kiem');
gotoxy(24,19); Writeln('3. Bao Cao');
gotoxy(24,21); writeln('4.Thoat');
gotoxy(15,23); writeln('******************************** ');
gotoxy(5,30); Writeln('phuong an toi lua chon la :');
gotoxy(35,30); readln(chon);
case chon of
'1': TDCAPNHAT;
'2': TDTK;
'3': TDBC;
'4': halt;
end;
end;
(*///////////////////////////////////////*)
(**Chuong trinh chinh**)
begin
clrscr;
if MATKHAU then
begin
clrscr;
textbackground(5);
textcolor(11);
pdau:=nil;
p:=nil;
repeat
writeln;
begin
clrscr;
tdchinh;
gotoxy(10,40);Write('Ban co tiep tuc nua khong? Y/N');
gotoxy(42,40);readln(TraLoi);
end;
Until Traloi='N';
end
else
writeln('Ban hay nhap lai mat khau');
readln;
end.
Kết luận.
Từ thực tế cho thấy tiền lương lao động biểu hiện rõ ràng nhất lợi ích kinh tế của người lao động, trở thành đòn bẩy kinh tế mạnh mẽ nhất để kích thích người lao động do đó công việc tính lương trong cho người lao động là rất quan trọng và trước sự mong muốn của bộ phận tính lương nên em đã thực hiện đề tài:”Chương trình hỗ trợ hệ thống tính lương theo thời gian”. Với mục đích: giảm bớt được khối lượng nhân sự cũng như khối lượng công việc thủ công trong quản lý lương và tiền lương, việc lưu trữ dữ liệu không còn cồng khềnh như trước nữa cũng như việc tính toán được chính xác và kịp thời hơn.
Với sự hướng dẫn nhiệt tình của PGS.TS Hàn Viết Thuận và qua nghiên cứu tài liệu em đã cố gắng nghiên cứu đề tài này với một số giải pháp và chức năng sau:
Chương trình đã căn bản xây dựng được việc tính lương cho nhân viên.
Tự động hoá các khâu cập nhật, lưu trữ, xử lý thông tin, và lên báo cáo về lương.
Chương trình đã phần nào khắc phục được những nhược điểm về thực hiện tự động hoá phần dữ liệu đầu vào, đầu ra cũng như việc tính toán lương. Song do thời gian hạn chế và khả năng của em còn nhiều thiếu sót nên hệ thống chưa thực sự được hoàn chỉnh. Em mong được sự chỉ bảo và đóng góp của thầy cô và các bạn để hệ thống hoàn chỉnh hơn.
Em xin chân thành cảm ơn PGS.TS Hàn Viết Thuận, người đã nhiệt tình chỉ bảo và dẫn dắt cụ thể cho em trong quá trình làm đề tài này và em hi vọng được thầy hướng dẫn trong những đề tài sau này.
Các file đính kèm theo tài liệu này:
- P0151.doc