Xây dựng phần mềm quản lý tiền lương với Java | Học phần lập trình hướng đối tượng với Java giúp sinh viên năm được phương pháp lập trình hướng đối tượng (OOP) và ngôn ngữ lập trình Java cơ bản. Bài tập lớn môn học là tổng hợp kiến thức, kỹ năng về phương pháp lập trình hướng đối tượng và ngôn ngữ lập trình Java. Nội dung bài tập lớn gồm: Phân tích bài toán, giới thiệu tông quan về phương pháp lập trình hướng đối tượng, đặc trưng của ngôn ngữ lập trình Java, cài đặt phần mềm với ngôn ngữ Java trong đó sử dụng các lớp kế thừa, lớp trừu tượng vào giao diện (interface) của lập trình hướng đối tượng. Bài tập lớn là tài liệu tham khảo hữu ích cho SV ngành CNTT.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
BÀI TẬP LỚN
HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
TÊN BÀI TẬP LỚN: XÂY DỰNG PHẦN MỀM QUẢN LÝ TIỀN LƯƠNG
Nhóm sinh viên thực hiện: Nhóm 13
Lớp: CNTT 3
Khóa: K11
Khoa: Công nghệ thông tin
Giảng viên: Trần Xuân Thanh
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
Tỉ lệ đóng góp
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
Bắc Ninh, ngày 15 tháng 10 năm 2021
Trang 3KẾ HOẠCH THỰC HIỆN
STT Nội dung công việc Ngày hoàn thành dự
kiến
Ngày hoàn thành
Trang 4MỤC LỤC
DANH MỤC HÌNH VẼ, DỒ THỊ I LỜI NÓI ĐẦU 1
I Nội Dung 2
1 Tổng quan về lập trình hướng đối tượng 2
2 Phát biểu bài toán 6
3 Phân tích bài toán 7
4 Thiết kế mô hình lớp,mô hình dữ liệu 8
5 Cài đặt 9
6 Kiểm thử và đánh giá kết quả 14
II Kết Luận 15
III Tài Liệu Tham Khảo 16
Trang 5I
DANH MỤC HÌNH VẼ, DỒ THỊ
Hình 1: Các đặc điểm cơ bản của lập trình hướng đối tượng 3
Hình 2: Ví dụ về tính đóng gói 4
Hình 3: Sơ đồ phân cấp chức năng bài toán quản lý tiền lương 7
Hình 4: Mô hình lớp (Class) 8
Hình 5: Bảng QUANLYTIENLUONG 8
Hình 6: Project Demo 9
Hình 7: Class Main 9
Hình 8: Class cha (Supper Class) NhanVien 10
Hình 9: Class con NVFT (Nhân viên Full Time) 11
Hình 10: Class con NVPT (Nhân viên Part Time) 12
Hình 11: Connect to Database 13
Hình 12: Giao diện GUI (Form) 13
Trang 61
LỜI NÓI ĐẦU
Trong bất kỳ quốc gia nào, ở các doanh nghiệp, các tổ chức kinh tế…kế toán bao giờ cũng có một vị trí đặc biệt quan trọng Công tác kế toán ở các doanh nghiệp Việt Nam là một bộ phận không thể thiếu ở tất cả các đơn vị tổ chức Trong
đó kế toán tiền lương nhân viên là một bộ phận quan trọng trong doanh nghiệp, tổ chức kinh tế Nó góp phần quyết định sự tồn tại và phát triển của doanh nghiệp và
tổ chức kinh tế đó Quản lý lương là một công việc phức tạp, đòi hỏi sự tỉ mỉ, chi tiết và độ chính xác cao Quản lý lương một cách có hiệu quả không đơn giản nếu chỉ sử dụng những phương pháp quản lý lương truyền thống như trước đây Đối với một doanh nghiệp, tổ chức kinh tế thì việc xây dựng được một hệ thống quản lý lương sao cho có hiệu quả, đảm bảo sự công bằng, chính xác, thuận tiện
là một trong những công tác được đặt lên hàng đầu nhằm ổn định nhân lực, phục
vụ cho hoạt động của doanh nghiệp, tổ chức kinh tế Ngày nay, với sự phát triển của khoa học kỹ thuật thì việc áp dụng công nghệ thông tin vào công tác quản lý
đã không còn xa lạ nữa Do tính chất quan trọng của việc quản lý tiền lương, một loạt các phần mềm quản lý lương, các dạng máy chấm công được ra đời Tuy nhiên, giá thành của các sản phẩm này là không nhỏ và để áp dụng cho một tổ chức kinh doanh nào đó thì đôi khi lại không đáp ứng được các nhu cầu cụ thể hoặc các chức năng của chúng quá rộng lớn mà tổ chức kinh doanh đó không sử dụng hết thì rất lãng phí
Xuất phát từ vấn đề đó nên nhóm chúng em xin chọn đề tài “XÂY DỰNG PHẦN
MỀM QUẢN LÝ TIỀN LƯƠNG “ Nhóm chúng em nghiên cứu đề tài này với mong
muốn phục vụ cho việc quản lý lương của các doanh nghiệp, tổ chức kinh tế được thuận tiện hơn và tránh những sai sót trong công tác quản lý tiền lương
Tuy đã cố gắng hết sức để có thể hoàn thiện bài báo cáo nhưng chắc hẳn rằng bài báo cáo chúng em vẫn còn nhiều hạn chế và thiếu sót, nhóm chúng em rất mong nhận được sự đóng góp ý kiến của thầy và các bạn để bài báo cáo của nhóm chúng em được hoàn thiện hơn, chúng em xin chân thành cảm ơn!
Trang 72
I Nội Dung
1 Tổng quan về lập trình hướng đối tượng
Lập trình hướng đối tượng có những gì?
Lập trình hướng đối tượng (Object Oriented Programming, viết tắt: OOP) là một
kỹ thuật lập trình cho phép lập trình viên tạo ra các đối tượng trong code trừu tượng hóa các đối tượng thực tế trong cuộc sống Nói đến đây có thể các bạn chưa hiểu
để mình giải thích rõ hơn:
Đối tượng (Object) có thể là con người, điện thoại, máy tính, yasuo, leesin và điểm chung là đều gồm 2 thành phần chính là:
- Thuộc tính (Attribute): là những thông tin, đặc điểm của đối tượng
- Phương thức (Method): là những hành động mà đối tượng có thể thực hiện
- Mình lấy một ví dụ là máy vi tính cho các bạn dễ hiểu nha:
- Máy tính sẽ có các thuộc tính như: màu sắc, kích thước, bộ nhớ,
- Và các phương thức như: quét virus, tắt máy, khởi động máy, mở LoL Khi một đối tượng có những đặc tính như nhau sẽ được gom lại thành một lớp đối tượng (class) và cũng sẽ có 2 thành phần là thuộc tính và phương thức Lớp (class) cũng có thể được dùng để định nghĩa một kiểu dữ liệu mới
Với ví dụ máy vi tính trên ta hiểu lớp (class) máy vi tính có:
- Các thuộc tính như: màu sắc, kích thước, bộ nhớ,
- Và các phương thức như: quét virus, tắt máy, khởi động máy, mở LoL
- Và đối tượng (object) có thể là các dòng máy như Asus, Acer, Lenovo, Thinkpad, đều mang đặc tính của lớp máy vi tính
Vậy tại sao lại cần đến cái "Lập trình hướng đối tượng" rối rắm này?
Nếu như trước đây chúng ta lập trình với hướng thủ tục thì sẽ chia thành các hàm để xử lý, thì giờ đây khi sử dụng hướng đối tượng thì chúng ta sẽ chia thành các đối tượng để xử lý
Vì lập trình hướng đối tượng ra đời sau nên nó khắc phục được tất cả các điểm yếu của các phương pháp lập trình trước đó Cụ thể nó có các ưu điểm sau:
- Dễ dàng quản lý code khi có sự thay đổi chương trình
- Dễ mở rộng dự án
- Có tính bảo mật cao
Trang 83
- Có thể sử dụng mã nguồn, tiết kiệm tài nguyên
Các đặc điểm cơ bản của lập trình hướng đối tượng:
Hình 1: Các đặc điểm cơ bản của lập trình hướng đối tượng
Tính đóng gói (Encapsulation): Tính chất này không cho phép người dùng trực
tiếp tác động đến dữ liệu bên trong đối tượng mà phải thông qua các phương thức
mà đối tượng cung cấp Tính chất này đảm bảo tính toàn vẹn của đối tượng
Trang 9getline(cin, this->mausac);
cout << "Nhap chieu dai may: ";
cin >> this->chieudai;
cout << "Nhap chieu rong may: ";
cin >> this->chieurong;
}
void output()
{
cout << "Mau sac may: " << this->mausac << endl;
cout << "Chieu dai may: " << this->chieudai << endl;
cout << "Chieu rong may: " << this->chieurong << endl;
Tính kế thừa (Inheritance): Kế thừa, tái sử dụng phương thức, thuộc tính của
lớp cơ sở và lớp kế thừa được gọi là lớp con, nó sẽ thừa hưởng những gì lớp cha
có và cho phép
Trang 105
Cũng với ví dụ là class mayvitinh, class này sẽ có các thuộc tính: mausac, chieudai, chieurong Một class mayAsus, mayAcer sẽ kế thừa class mayvitinh do mayAsus cũng có các thuộc tính: mausac, chieudai, chieurong Thay vì sao chép
những thuộc tính này, ta nên đặt chúng vào một lớp chung gọi là lớp cha – trong
trường hợp này là mayvitinh và có những lớp con mayAsus, mayAcer kế thừa từ
nó, tạo ra một mối quan hệ cha/con
Tính đa hình (Polymorphism): Tính đa hình cho phép các chức năng (method)
khác nhau được thực thi khác nhau trên các đối tượng khác nhau
Ví dụ như class mayvitinh ở trên, mỗi một dòng máy đều kế thừa từ lớp cha mayvitinh nhưng được chạy với một hệ điều hành khác nhau, mayAsus thì được chạy với hệ điều hành Windows, còn mayMacbook sẽ được chạy với hệ diều hành MacOs
Tính trừu tượng(Abstraction): Tập trung vào cốt lõi của đối tượng, bỏ qua những
thứ không liên quan và không quan trọng
Ví dụ: Bài toán quản lý sinh viên chúng ta chỉ cần quản lý các thông tin như:
Tại vì chúng thực sự không cần thiết
Đây chỉ là những khái niệm cơ bản các bạn cần nắm đề chuẩn bị cho học phần này Đi vào cụ thể sẽ tìm hiểu rõ hơn về từng tính chất trong học phần lập trình hướng đối tượng
Trang 116
2 Phát biểu bài toán
Hiện nay việc quản lý tiền lương trên sổ sách là vô cùng khó khăn Vì quản lý lương cho hàng nghìn công nhân (trung bình trong một công ty) bằng phương pháp thủ công là bất khả thi Các nhà quản lý cần một phần mềm quản lý tiền lương thuận lợi Chỉ với việc thao tác các câu lệnh và nhập thông tin đơn giản còn việc thống kê, xử lý tính toán, lưu trữ, tìm kiếm và kết xuất báo cáo hoàn toàn được thực hiện tự động bằng máy tính có thể xử lý một khối lượng lớn và đảm bảo tính chính xác của thông tin Do đó phần mềm quản lý tiền lương ra đời phù hợp với mong muốn cấp thiết đó của các nhà quản lý
Lựa chọn ngôn ngữ lập trình: Ngôn ngữ lập trình Java
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) Khác với phần lớn các
ngôn ngữ lập trình thông thường, Java thường chạy nhanh hơn Ngoài ra Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch, viết một lần chạy mọi nơi Hướng đối tượng trong Java tương tự như C++ đồng thời Java hỗ trợ lập trình đa nhiệm, đa luồng, hỗ trợ mạnh cho việc phát triển ứng dụng Đây chính là ưu điểm của Java khiến nhóm chúng em chọn ngôn ngữ lập trình này!
Lựa chọn SQL Sever để liên kết database
Do SQL Sever quen thuộc với nhóm chúng em khi đã được sử dụng trong học
phần Cơ Sở Dữ Liệu cùng với một số những ưu điểm sau khiến chúng em chọn
SQL Sever để thực hiện trong bài tập lớn lần này:
Với phiên bản miễn phí dành cho người dùng mới có tên là SQL Express Phiên bản của SQL Server này có gần như đầy đủ các tính năng của phiên bản tiêu chuẩn của MS SQL Server
Microsoft SQL Server bao gồm phần mềm quản lý cơ sở dữ liệu cho người dùng chuyên nghiệp và cho doanh nghiệp dễ sử dụng hơn và có nhiều tính năng hơn Nó cũng hỗ trợ đầy đủ các trình kích hoạt SQL Server luôn là hệ quản trị cơ
sở dữ liệu hàng đầu được lựa chọn trong các dự án lớn
MS SQL Server đi kèm với một bộ công cụ ấn tượng Các thành phần như SQL Server Profiler, SQL Server Management Studio, công cụ BI và Trình tư vấn điều chỉnh cơ sở dữ liệu có thể giúp bạn tiết kiệm rất nhiều thời gian khắc phục sự cố, phát triển và quản trị Ngoài ra, là một sản phẩm cốt lõi trong kho công nghệ của Microsoft, MS SQL Server có các tài liệu hướng dẫn và hỗ trợ rất phong phú
Trang 127
3 Phân tích bài toán
Yêu cầu, chức năng của bài toán:
Chức năng: Nhập / xuất thông tin nhân viên, tính toán tiền lương cho từng nhân viên, thống kê, báo cáo danh sách nhân viên kèm theo bảng lương
+ Phi chức năng: Giao diện GUI (giao diện đồ hoạ - form), đơn giản, dễ sử dụng
+ Yêu cầu khác: Sử dụng kế thừa, đa hình, lớp trừu tượng, phương thức trừu tượng và linh hoạt trong tận dụng đặc điểm modifier cho thuộc tính và phương thức
Sơ đồ phân cấp chức năng:
Hình 3: Sơ đồ phân cấp chức năng bài toán quản lý tiền lương
Trang 138
4 Thiết kế mô hình lớp,mô hình dữ liệu
Mô hình lớp( Class ): Gồm 3 lớp với lớp Nhan Vien là lớp cha và hai lớp con
là NVFT( Nhân viên Full Time ) và NVTV (Nhân viên thời vụ)
Hình 4: Mô hình lớp (Class)
Mô hình dữ liệu:
Cơ sở dữ liệu gồm 1 bảng duy nhất:
QUANLYTIENLUONG( MaNV, TenNV, NamSinh, SDT, SoNC, Luong)
Hình 5: Bảng QUANLYTIENLUONG
Trang 1510
Super class NhanVien:
Hình 8: Class cha (Supper Class) NhanVien
Trang 1611
Class NVFT:
Hình 9: Class con NVFT (Nhân viên Full Time)
Trang 1813
Class Connect to Database:
Hình 11: Conect to Database
Giao diện GUI
Hình 12: Giao diện GUI (Form)
Trang 1914
6 Kiểm thử và đánh giá kết quả
Sau khi cài đặt và chạy thì kết quả cho thấy chương trình chạy bình thường và không gặp phải lỗi gì Chương trình đạt yêu cầu.!
( Phần kết luận phía dưới )
Trang 2015
II.Kết Luận
Chương trình cơ bản đã hoàn thành được nhiệm vụ đề ra là quản lý tiền lương cho nhân viên!
Chương trình đã hoàn thành yêu cầu đặt ra đó là:
Nhập/Xuất thông tin nhân viên Tính được lương của 2 loại nhân viên và Thống
kê dưới dạng bảng Có thể cập nhật ( thêm, sửa, xóa) được thông tin cho nhân viên Sử dụng giao diện GUI đơn giản Đã có thể kết nối, lưu trữ và truy vấn được
dữ liệu từ Database (SQL Server)
Có sử dụng kế thừa, đa hình, lớp trừu tượng, phương thức trừu tượng và modifier cho thuộc tính và phương thức
Tuy nhiên chương trình còn có nhiều thiếu xót như:
Có sử dụng nhưng chưa tận dụng được sự linh hoạt các đăc điểm của Modifier cho thuộc tính và phương thức Phần giao diện còn khá sơ sài, không đẹp mắt, còn thiếu một số chức năng phụ như Log In
Chưa hoàn thiện được phần tìm kiếm thông tin Phần tính lương cũng chưa được tối ưu hóa khi vẫn phải sử dụng 2 nút riêng biệt
Lời kết:
Do chưa có kinh nghiệm trong việc xây dựng một bài toán quản lý xong chúng em cũng đã làm hết khả năng của mình Tuy còn nhiều sai xót nhưng bọn em sẽ cố gắng hoàn thiện bản demo sớm nhất có thể để có một bài báo cáo trong phần thi thật hoàn hảo Em xin trân thành cám ơn Thầy/Cô đã dành thời gian để xem hết bài báo cáo của chúng em !!
Trang 2116
III.Tài Liệu Tham Khảo
• Wikipedia: Lập trình hướng đối tượng
Link:
https://vi.wikipedia.org/wiki/L%E1%BA%ADp_tr%C3%ACnh_h%C6%B0%E1%BB%9Bng_%C4%91%E1%BB%91i_t%C6%B0%E1%BB%A3ng