Phân tích và thiết kế hệ thống thông tin quản lý lương

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.

doc57 trang | Chia sẻ: haianh_nguyen | Lượt xem: 1999 | Lượt tải: 0download
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:

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