Viết chương trình quản lý nhân viên trong một công ty phần mềm | 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.
BỘ 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: VIẾT CHƯƠNG TRÌNH QUẢN LÝ NHÂN VIÊN TRONG MỘT CÔNG TY PHẦN MỀM Nhóm thực hiên Lớp: CNTT1 Khoa Giáo viên : : : Nhóm Khóa: K11 Cơng nghệ Thơng tin ThS Trần Xuân Thanh Bắc Ninh, tháng 10 năm 2021 [Date] BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐƠNG Á NHĨM TÊN BÀI TẬP LỚN: VIẾT CHƯƠNG TRÌNH QUẢN LÝ NHÂN VIÊN TRONG MỘT CƠNG TY PHẦN MỀM Khóa: K11 Lớp: CNTT1 Điểm tập lớn: CÁN BỘ CHẤM (Ký ghi rõ họ tên) Bằng số: Bằng chữ: CÁN BỘ CHẤM (Ký ghi rõ họ tên) Bắc Ninh, tháng 10 Năm 2021 [Date] DANH MỤC THÀNH VIÊN STT Họ tên thành viên Trần Thị Ngọc Anh Lê Quang Trường Bùi Thị Huyền Mã sinh viên 20200115 20200158 20200453 Điểm Giáo viên hướng dẫn xác nhận [Date] MỤC LỤC Tên Trang MỞ ĐẦU 1- NỘI DUNG 3- 16 Chương 1- TỔNG QUAN VỀ MƠN HỌC LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ NGÔN NGỮ JAVA 3- 1.1: Mơn học lập trình hướng đối tượng 3- 1.2: Ngơn ngữ lập trình Java 6- Chương 2- VIẾT CHƯƠNG TRÌNH QUẢN LÝ NHÂN VIÊN TRONG MỘT CÔNG TY PHẦN MỀM BẰNG NGÔN NGỮ JAVA 8- 15 2.1: Yêu cầu đề 8- 2.2 Bài làm 9- 15 Chương 3- TỰ ĐÁNH GIÁ 15 KẾT LUẬN 16- 17 DANH MỤC TÀI LIỆU THAM KHẢO 18 [Date] MỞ ĐẦU Hiện nay, số lượng ngơn ngữ lập trình đưa vào sử dụng vô lớn, hàng chục ngôn ngữ khác mà chúng ta có thể cân nhắc sử dụng Với quá nhiều ngơn ngữ lập trình khác ứng dụng khiến người dùng đặt câu hỏi cần sử dụng nhiều, nó có thực sự cần thiết hay không Có thể lý giải điều đó ứng dụng theo nhu cầu diễn thuận lợi, có hiệu quả cao, khả ứng dụng lý tưởng mong đợi Thực tế hiện ngành công nghệ thông tin, đặc biệt lĩnh vực lập trình tốc độ phát triển vô nhanh chóng, mỗi công ty lại có thế mạnh riêng ở từng mảng, từng lĩnh vực nhất định Lúc này, việc tiến hành lập trình có định hướng, yêu cầu riêng cần đảm bảo Việc sử dụng ngôn ngữ hỗ trợ phù hợp điều cần chú ý thực hiện Qua đó, việc có thể có hiệu quả lập trình cao ý, đảm bảo mức đợ tối ưu tới mức tối đa đảm bảo tốt nhất Mỗi mợt ngơn ngữ lập trình đưa vào sử dụng sở hữu thế mạnh riêng, có khả đem tới sự phù hợp cho một mảng nhất định, cũng đảm bảo có thể đạt hiệu suất tốt nhất khơng thể đảm bảo mức đợ hồn thiện tồn diện Vì thế, với nhiều ngơn ngữ lập trình cung cấp, đưa vào sử dụng có khả đảm bảo giúp khai thác triệt để, tận dụng thích hợp từng hoàn cảnh, từng điều kiện thực tế có sự chủ động, đạt hiệu quả cao mỗi người mong muốn Java phát triển bởi Sun Microsystems qua thời gian dài phát triển, dần trở thành mợt ngơn ngữ lập trình thơng dụng nhất Đây ngơn ngữ lập trình ứng dụng phổ biến, rộng khắp nhiều tảng khác nhau, tiêu biểu Mac, Windows, Unix,… Được biết tới ngôn ngữ đa tảng tốt nhất, chất lượng cao ứng dụng đa dạng giúp Java góp mặt nhiều phần mềm, nhiều ứng dụng nổi tiếng, đánh giá cao Citigroup, Standard Charted, Goldman Sachs, … Xét cộng đồng người dùng Java vô lớn, không thua kém bất kỳ ngôn ngữ khác hiện sử dụng Bản chất một mã nguồn mở với sự đóng góp, hồn thiện của nhiều lập trình viên khác giúp Java ngày đánh giá cao, chất lượng [Date] khẳng định với tính ứng dụng cao Chính điều đó giúp Java dần trở thành ngôn ngữ nhiều người dùng, trở nên phổ biến Theo yêu cầu của thầy giáo, tập lớn nhóm chúng em viết chương trình quản lý nhân viên một công ty phần mềm ngôn ngữ java để biết sâu vai trị của ngơn ngữ ngành Cơng nghệ Thơng tin chúng em theo học Trong chương trình, nhóm chúng em cần phải: +) Sử dụng ngôn ngữ lập trình Java cơng cụ Netbean + SQL Server +)u cầu của dự án: • Chức năng: Nhập / xuất, tính tốn, thống kế, báo cáo • 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, đã hình, lớp trừu tượng, phương thức trừu tượng linh hoạt tận dụng đặc điểm modifier cho tḥc tính phương thức • Lưu trữ liệu database • Báo cáo: Bản PDF: Tóm tắt Java, Phát biểu toán, cài đặt ứng dụng • Code phương pháp OOP (Class, Object, Method ) Vì thời gian kiến thức của nhóm chúng em khơng nhiều nên tập lớn có thiếu sót mong thầy giáo bảo thêm ạ! [Date] NỘI DUNG Chương 1- TỔNG QUAN VỀ MƠN HỌC LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ NGƠN NGỮ JAVA 1.1: Mơn học lập trình hướng đối tượng: 1.1.1: Sự tiến hố của các phương pháp lập trình: Đầu tiên lập trình khơng có cấu trúc: +) Là phương pháp x́t hiện Phương pháp đơn giản viết tất cả mã lệnh vào hàm main nhất chạy +) Ngôn ngữ sử dụng phương pháp Assembly (hợp ngữ) +) Nhược điểm của phương pháp này: • Chỉ sử dụng biến tồn cục dẫn đến rất tốn bợ nhớ • Vì có đoạn chương trình cần sử dụng lại nhiều lần nên dẫn đến lạm dụng lệnh goto • Khó hiểu, khó bảo trì, khơng thể tái sử dụng • Khó phát triển ứng dụng lớn Tiếp theo lập trình có cấu trúc (lập trình thủ tục): +) Sau thời gian tồn tại người ta dần nhận nhược điểm của phương pháp đưa giải pháp đó chia chương trình lớn thành chức năng, mỗi chức đưa vào hàm Khi cần dùng đến chức ta gọi hàm tương ứng +) Mỡi chương trình lại chia nhỏ +) Hầu hết ngôn ngữ lập trình hỡ trợ phương pháp +) Ưu điểm: • Chương trình module hố, dễ hiểu, dễ bảo trì • Dễ dàng tạo các thư viện phần mềm +) Nhược điểm: • Dữ liệu xử lý tách rời • Khi cấu trúc liệu thay đởi dẫn đến thuật tốn bị thay đởi • Khơng tự đợng khởi tạo, giải phóng liệu đợng • Không mô tả đầy đủ, trung thực hệ thống thực tế [Date] Tiếp theo lập trình hướng đối tượng 1.1.2: Mợt số khái niệm bản lập trình hướng đối tượng: 1.1.2.1: Đối tượng: +) Trong lập trình hướng đối tượng, đối tượng hiểu một thực thể: người, vật hoặc một bảng liệu, +) Một đối tượng bao gồm hai thơng tin: Tḥc tính phương thức: • Tḥc tính thơng tin, đặc điểm của đối tượng Ví dụ: mợt người có họ tên, ngày sinh, màu da, kiểu tóc, • Phương thức thao tác, hành động mà đối tượng đó có thể thực hiện Ví dụ: mợt người thực hiện hành đợng nói, đi, ăn, uống, 1.1.2.2: Lớp: +) Các đối tượng có các đặc tính tương tự gom lại thành một lớp đối tượng +) Bên lớp cũng có hai thành phần chính đó thuộc tính phương thức +) Ngồi ra, lớp cịn dùng để định nghĩa kiểu liệu 1.1.2.3: Sự khác đối tượng lớp: +) Lớp một khuôn mẫu cịn đối tượng mợt thể hiện cụ thể dựa khuôn mẫu đó +) Để dễ hiểu lấy mợt ví dụ thực tế: Nói mèo lớp lồi mèo Lồi mèo có: • Các thơng tin, đặc điểm chân, mắt, có đi, có chiều cao, có cân nặng, màu lơ, • Các hành đợng như: kêu meo meo, đi, ăn, ngủ, Như đợng vật tḥc lồi mèo có đặc điểm Đối tượng mợt mèo cụ thể đó mèo nằm chân [Date] +) Mợt ví dụ khác Ví dụ dùng hình ảnh để minh hoạ: Có thể thấy, nói đến xe oto lớp khuôn mẫu của xe với các đặc trưng có bốn bánh có thiết kế tương tự hình vẽ Đối tượng chiếc xe oto cụ thể Toyota camry, Honda city, Ford ranger +) Sự xuất hiện của hai khái niệm lớp đối tượng chính đặc trưng của phương pháp lập trình hướng đối tượng Nó đã giải quyết khuyết điểm của phương pháp lập trình hướng cấu trúc để lại Ngoài khái niệm đã giúp biểu diễn tốt thế giới thực máy tính 1.1.3: Các đặc điểm của lập trình hướng đối tượng: Lập trình hướng đối tượng có đặc điểm chính: +) Tính đóng gói: • Các liệu phương thức có liên quan với đóng gói thành các lớp để tiện cho việc quản lý sử dụng [Date] • Ngồi ra, đóng gói cịn để che giấu một số thông tin chi tiết cài đặt nợi bợ để bên ngồi khơng thể nhìn thấy +) Tính trừu tượng: Khi viết chương trình theo phong cách hướng đối tượng, việc thiết kế các đối tượng ta cần rút tỉa đặc trưng chung của chúng rồi trừu tượng thành interface thiết kế xem chúng tương tác với thế +) Tính kế thừa: Lớp cha chia liệu phương thức cho lớp con, lớp khỏi phải định nghĩa lại, giúp chương trình ngắn gọn +) Tính đa hình: Là hiện tượng các đối tượng tḥc lớp khác hiểu một thông điệp theo cách khác 1.2: Ngơn ngữ lập trình Java: Ban đầu phát triển bởi Sun Microsystems James Gosling khởi xướng phát hành vào năm 1995 (Java 1.0 [J2SE]) Tính đến thời điểm (tháng năm 2015) phiên bản nhất của Java Standard Edition (JSE) Với ưu thế đa tảng (multi platform) Java lúc ứng dụng rộng rãi nhiều thiết bị từ máy tính đến mobile nhiều thiết bị phần cứng khác Java ngơn ngữ lập trình hướng đối tượng nên nó cũng có đặc điểm chung của các ngơn ngữ hướng đối tượng: • Tính trừu tượng (Abstraction): tiến trình xác định nhóm các tḥc tính, các hành động liên quan đến một thực thể đặc thù, xét mối tương quan với ứng dụng phát triển • Tính đa hình (Polymorphism): cho phép một phương thức có các tác động khác nhiều loại đối tượng khác Với tính đa hình, nếu một phương thức ứng dụng cho các đối tượng tḥc các lớp khác nó đưa đến kết quả khác Bản chất của sự việc chính phương thức bao gồm một số lượng các tham số • Tính kế thừa (Inheritance): Điều cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại • Tính đóng gói (Encapsulation): tiến trình che giấu việc thực thi chi tiết của một đối tượng người sử dụng đối tượng ấy Bên cạnh đó Java cịn có mợt số đặc tính khác: [Date] • Độc lập (Write Once, Run Anywhere): Không giống nhiều ngôn ngữ lập trình khác C C ++, Java biên dịch, nó không biên dịch sang mã máy cụ thể, mà thay vào đó mã byte code chạy máy ảo Java (JVM) Điều đồng nghĩa với việc bất cứ thiết bị có cài đặt JVM có thể thực thi các chương trình Java • Đơn giản: Học Java thật sự dễ nhiều so với C/C++, nếu bạn đã quen với các ngơn ngữ lập trình hướng đối tượng việc học Java dễ dàng Java trở nên đơn giản so với C/C++ đã loại bỏ tính đa kế thừa phép toán trỏ từ C/C++ • Bảo mật: Java hỗ trợ bảo mật rất tốt bởi các thuật toán mã hóa mã hóa một chiều (one way hashing) hoặc mã hóa công cộng (public key) • Đa luồng: Với tính đa l̀ng Java có thể viết chương trình có thể thực thi nhiều task một lúc Tính thường xử dụng rất nhiều lập trình game • Hiệu suất cao: Nhờ vào trình thu gom rác (garbage collection), giải phóng bộ nhớ các đối tượng không dùng đến • Linh hoạt: Java xem linh hoạt C/C ++ nó thiết kế để thích ứng với nhiều môi trường phát triển 1.2.1: Java sử dụng để làm gì? • Viết ứng dụng web (J2EE): Java thường sử dụng để xây dựng các hệ thống web lớn địi hỏi đợ bảo mật cao, số lượng người dùng lớn ngân hàng, phần mềm [Date] quản lý bệnh viện, CRM, HRM Đối với các website nhỏ thông thường rất ít viết Java • Viết ứng dụng mobile (J2ME): Trước tảng J2ME thường sử dụng để viết game app cho di động feature phone (file jar) smartphone Android lên Java lại tiếp tục sử dụng để viết app game cho tảng Android (file apk) • Viết ứng dụng desktop (J2SE): Các ứng dụng desktop viết Java thật sự không nhiều có thể kể đến một số phần mềm JMeter hoặc Designer Vista Lợi thế lớn nhất của ứng dụng Java bạn viết một lần sau đó có thể đem chương trình lên Windows, Linux hay Mac để chạy mà không cần phải viết lại Tuy nhiên chạy JVM nên performance của ứng dụng thấp một chút so với các ngôn ngữ C/C++, C# 1.2.2: Sử dụng để lập trình Java? Để lập trình Java bạn cần đến: • JDK (Java Development KIT): Bao gồm JRE (Java Runtime Enviroment) thư viện để phát triển • IDE (Integrated Development Environment): Là ứng dụng giúp lập trình viên phát triển dễ dàng nhanh chóng Bạn có thể sử dụng Netbeans, Eclipse hoặc IntellịIDEA để phát triển Chương 2- VIẾT CHƯƠNG TRÌNH QUẢN LÝ NHÂN VIÊN TRONG MỘT CƠNG TY PHẦN MỀM BẰNG NGÔN NGỮ JAVA 2.1: Yêu cầu đề bài: Cơng ty phần mềm Hồn Cầu thành lập từ năm 2007, chuyên nhận thực hiện dự án phần mềm từ các đơn vị khác, cũng phát triển phần mềm chính công ty đề xuất Giả sử cơng ty có loại nhân viên: Lập trình viên người viết mã nguồn cho ứng dụng, Kiểm chứng viên có nhiệm vụ kiểm tra mã ng̀n chương trình mà lập trình viên viết để tìm lỡi trước giao sản phẩm cho khách hàng Hiện tại, công ty lưu trữ thông tin của loại nhân viên sau: [Date] • Lập trình viên: Mã nhân viên, họ tên, t̉i, số điện thoại, email, lương bản, số overtime • Kiểm chứng viên: Mã nhân viên, họ tên, tuổi, số điện thoại, email, lương bản, số lỗi phát hiện Do tính chất cơng việc khác nên lương bản của lập trình viên kiểm chứng viên cũng khác Cụ thể: • Lương (lập trình viên) = lương bản + số làm thêm * 200.000 • Lương (kiểm chứng viên) = lương bản + số lỗi * 50.000 Bạn hãy đề xuất thiết kế lớp đối tượng cần thiết để quản lý danh sách nhân viên của công ty hỗ trợ tính lương cho nhân viên theo tiêu chí đặt Hãy viết chương trình thực hiện yêu cầu sau: • Nhập vào danh sách nhân viên • Tính lương cho nhân viên • In kết quả thiết kế form đề nhập/xuất 2.2 Bài làm: 2.2.1: Phát biểu tốn: Nhân viên Lập trình viên Kiểm chứng viên Lương Input: Nhân viên (bao gồm lập trình viên kiểm chứng viên) Output: Lương của nhân viên 2.2.2: Tạo project: [Date] 2.2.3: Code: 2.2.3.1: Nhanvien.java: [Date] 10 2.2.3.2: Laptrinhvien.java: [Date] 11 2.2.3.3: Kiemchungvien.java: [Date] 12 2.2.3.4: Main.java: 2.2.3.5: Show.java: [Date] 13 2.2.3: Kết quả: 2.2.3.1: Lương lập trình viên: 2.2.3.2: Lương kiểm chứng viên: [Date] 14 Chương 3- TỰ ĐÁNH GIÁ: 3.1: Những điều đạt được: +) Đã hoàn thành các yêu cầu của dự án thầy đề +) Hiểu làm việc với môi trường phát triển ngôn ngữ Java +) Cơ hợi tìm hiểu thực tế toán +) Xây dựng mợt chương trình cụ thể 3.2: Những điều chưa đạt được: +) Chưa thực hiện tính lương rõ ràng hai loại nhân viên +) Chưa có chức thông báo lỗi một cách rõ ràng Video demo: https://youtu.be/hVsPCV5lghI [Date] 15 KẾT LUẬN Sẽ khơng có tuyệt vời có thể hoàn thành mười tác vụ mà cần làm một lần? Đó yếu tố bản Với câu hiệu là, “viết một lần, chạy nơi”, cũng khơng có khó hiểu Java đã trở thành ngơn ngữ lập trình phở biến nhất sử dụng bởi các lập trình viên giỏi, người muốn dành nhiều thời gian của để thư giãn các quán cà phê phải ngời hì hục viết dịng code lặp lặp lại một cách tẻ nhạt Câu hiệu đó có nghĩa Java một ngôn ngữ có đặc điểm “độc lập tảng” Nói cách khác, code Java làm việc “lý tưởng” bất kỳ thiết bị chạy hệ điều hành nào, miễn nó đã cài đặt Java Runtime Environment (JRE) Chỉ cần tưởng tượng bạn phải viết một phiên bản của một ứng dụng cho tất cả các loại thiết bị, hệ điều hành hiện có thị trường bạn hiểu tại Java có sức hấp dẫn các lập trình viên giống sự quyến rũ của một tách cà phê nóng một ngày lạnh lẽo băng giá vậy.ản để phân biệt Java với ngơn ngữ lập trình khác Sự tiến hóa của Java bắt đầu vào năm 1991 nó có tên Oak Đã khái niệm hóa bởi James Gosling các nhà khoa học máy tính khác tại Sun Microsystems, Oak đáp ứng nhu cầu cấp thiết cho một ngôn ngữ độc lập tảng mà có thể sử dụng các thiết bị điện tử lò vi sóng các điều khiển từ xa Nó có thể đã trở nên yên tĩnh Oak một ngôn ngữ tuyệt vời không sử dụng phổ biến nếu không có sự xuất hiện của Internet Nhưng chính Internet đã tạo cho các lập trình viên vấn đề với tính di động của Web bao gồm sự đa dạng của các loại máy tính, hệ điều hành, trình duyệt CPU Thách thức đã mang lại cho Oak – sau đó đổi tên thành Java vào năm 1995 – một hội để phát triển bùng nở mợt siêu lân tinh Vì Java thiết kế cho tính di đợng, nó đóng mợt vai trị quan trọng sự thành công vĩ đại của Internet, việc đẩy mạnh an ninh xử lý trực tuyến thơng qua các chương trình máy tính gọi applet servlet Hơn hai thập kỷ sau phát hành, Java giữ vị thế siêu của nó các ngơn ngữ lập trình, ln đứng ở vị trí top đầu các kỹ IT mong muốn nhất Java cũng tiếp tục di sản của nó bất kỳ thiết bị điện tử hoặc hệ thống [Date] 16