BÁO CÁO NGUYEN HOANG HIEP B17DCPT247 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Khoa Đa Phương Tiện BÁO CÁO MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG ĐỀ TÀI QUẢN LÝ SINH VIÊN MỤC LỤC Table of Contents 1 Class ngayTh.
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Khoa Đa Phương Tiện
Trang 21.2.1 Hàm khởi tạo không tham số 4
1.2.4 Các hàm getter các thuộc tính 51.2.5 Các hàm setter các thuộc tính 51.2.7 Các hàm bạn ( hàm Friend) 5
2.2.2 Hàm khởi tạo không có tham số 9
3.2.1 Hàm khởi tạo không tham số 10
4.2.2 Hàm xét danh hiệu được đa hình nạp chồng lại từ hàm xetdanhhieu ở
Trang 35.2.2 Hàm xét danh hiệu được đa hình nạp chồng lại từ hàm xetdanhhieu ở
6.2.2.Hàm tăng đếm số lượng sinh viên có trong danh sách 146.2.3.Hàm tạo một sinh viên mới khi có yêu cầu từ người dùng 156.2.4 Tìm sinh viên theo mã sinh viên được người dùng nhập vào 166.2.5 Xóa sinh viên theo mã sinh viên 166.2.6 Sửa thông tin sinh viên dựa vào MSSV mà người dùng nhập vào 176.2.7 Xuất danh sách sinh viên khoa công nghệ thông tin 18
7 Các tính chất hướng đối tượng được thể hiện thông qua chương trình quản lý
8.6 In danh sách sinh viên kế toán 288.7 In danh sách sinh viên công nghệ 288.8 In danh sách kèm theo danh hieu va phần thưởng 298.9 In danh sách sinh viên theo điểm gpa 30
Trang 41.2.1 Hàm khởi tạo không tham số
Hàm khởi tạo không tham số mặc định
1.2.2 Hàm khởi tạo có tham số
Khi tạo một đối tượng ngayThangNam mới ta có thể khởi tạo theo giá trị màngười dùng mong muốn bằng cach nhập vào các tham số ngay, thang, nam
1.2.3 Hàm hủy
Hủy đối tượng, trả lại bộ nhớ cho máy tính
Trang 51.2.6 Hàm lấy đối tượng ngayThangNam
- Hàm lấy ra đối tượng hiện ngayThangNam với các gái trị hiện tại
Trang 6- Năm nhuận là năm chia hết cho 4 và không chia hết cho 100 hoặc là năm chiahết cho 400
1.2.7.2 kiểm tra ngày trong tháng
Trang 7- Hàm trả về số ngày thuộc tháng được đưa vào nhằm hỗ trợ kiểm tra tính hợp lệcủa ngayThangNam nhập vào.
1.2.7.3 Kiểm tra ngày nhập vào có hợp lệ hay không.
Trang 8Nếu ngày hợp lệ thì trả về true còn sai thì trả về false năm >0, tháng >=1, tháng
<=12, ngày phải đúng theo tháng
1.2.8 Hàm nhập data cho đối tượng từ bàn phím
Nhập các giá trị cho đối tượng
1.2.9 In ngày tháng năm ra màn hình dưới dạng dd/mm/yyyy
- In ra màn hình thông tin dưới dạng dd/mm/yyyy
2 class ThongTinCaNhan
2.1 Thuộc tính
Các thuộc tính thuộc class là hoTen, queQuan, ngaysinh biểu thị cho thông tin
cơ bản của một cá nhân
Trang 92.2 Phương thức
2.2.1 Hàm khởi tạo có tham số
Khởi tạo một đối tượng ThongTinCaNhan với các thông tin được người dùngyêu cầu
2.2.2 Hàm khởi tạo không có tham số
Khỏi tạo không tham số mặc định
Trang 102.2.6 In thông tin cá nhân ra màn hình.
3 Class sinhvien : publicThongTinCaNhan (Kế thừa từ class ThongTinCaNhan )
3.1 Các thuộc tính
Các thuộc tính biểu diễn thông tin cơ bản của một sinh viên bao gồm tên khoa,lớp, mã số sinh viên và điểm GPA
3.2 Các phương thức
3.2.1 Hàm khởi tạo không tham số
Khởi tạo mặc định không tham số
3.2.2 Hàm khởi tạo có tham số
Khởi tạo đối tượng với các tham số người dùng yêu cầu Ở đây có gọi lại hàmkhởi tạo của lớp thong tin cá nhân mà lớp sinh viên kế thừa
3.2.3 Hàm hủy
Hủy đối tượng trả bộ nhớ về cho máy tính
Trang 12- Hàm ảo này tạo cơ sở cho nạp chồng đa hình cho các lớp kế thừa đa hình ởphía sau
3.2.8 Hàm ảo (Virtual function) xét phần thưởng cho sinh viên dành cho các lớp đa hình của lớp sinhvien ở phía sau.
- Hàm ảo này tạo cơ sở cho nạp chồng đa hình cho các lớp kế thừa đa hình ởphía sau
4 Class sinhvienketoan : public sinhvien
4.1 Các thuộc tính
Các thuộc tính ở đây được kế thừa từ class sinhvien
4.2 Các phương thức
Các phương thức getter/ setter được kế thừa từ lớp cơ sở class sinhvien
4.2.1 Hàm khởi tạo có tham số
Khởi tạo đối tượng sinh viên kế toán có sử dụng gọi lại phương thức khởi tạo ởlớp cha
4.2.2 Hàm xét danh hiệu được đa hình nạp chồng lại từ hàm xetdanhhieu ở lớp
cơ sở sinhvien
Trang 13Tính chất đa hình được thể hiện qua hàm này Nó nạp chồng lại hàm này ở lớpcha Nó có chung tên chung kiểu và dữ liệu đầu vào nhưng sẽ trả về kết quảkhác nhau tùy đối tượng mà nó phụ thuộc
4.2.3 Hàm phần thưởng được đa hình nạp chồng lại từ hàm phanthuong ở lớp
cơ sở sinhvien
Tính chất đa hình được thể hiện qua hàm này Nó nạp chồng lại hàm này ở lớpcha Nó có chung tên chung kiểu và dữ liệu đầu vào nhưng sẽ trả về kết quảkhác nhau tùy đối tượng mà nó phụ thuộc
5 Class sinhviencongnghe : public sinhvien
5.1 Các thuộc tính
Các thuộc tính ở đây được kế thừa từ class sinhvien
5.2 Các phương thức
Các phương thức được kế thừa từ lớp cơ sở class sinhvien
5.2.1 Hàm khởi tạo có tham số
Khởi tạo đối tượng sinh viên công nghệ có sử dụng gọi lại phương thức khởi tạo
ở lớp cha
5.2.2 Hàm xét danh hiệu được đa hình nạp chồng lại từ hàm xetdanhhieu ở lớp
cơ sở sinhvien
Trang 14Tính chất đa hình được thể hiện qua hàm này Nó nạp chồng lại hàm này ở lớpcha Nó có chung tên chung kiểu và dữ liệu đầu vào nhưng sẽ trả về kết quảkhác nhau tùy đối tượng mà nó phụ thuộc
5.2.3 Hàm phần thưởng được đa hình nạp chồng lại từ hàm phanthuong ở lớp
cơ sở sinhvien
Tính chất đa hình được thể hiện qua hàm này Nó nạp chồng lại hàm này ở lớpcha Nó có chung tên chung kiểu và dữ liệu đầu vào nhưng sẽ trả về kết quảkhác nhau tùy đối tượng mà nó phụ thuộc
6.2.1.Hàm khơi tạo danh sách
6.2.2.Hàm tăng đếm số lượng sinh viên có trong danh sách
-khởi tạo quản lý với số lượng sinhvien có trong danh sách =0
Trang 156.2.3.Hàm tạo một sinh viên mới khi có yêu cầu từ người dùng
- Hàm này thực hiện chức năng tạo một sinh viên từ dữ liệu mà ngườidùng nhập vào từ bàn phím
Trang 16- Ở đây có sử dụng con trỏ đa hình tức là cùng là con trỏ sinhvien nhưng
có thể biểu hiện cho sinhvienketoan hoặc là sinhviencongnghe
- khi nhập các thông tin của sinh viên vào nếu là sinh viên thuộc cácngành quy định thì sẽ thêm sinh viên vào ngành tương ứng nếu không thì trả vềNULL
6.2.4 Tìm sinh viên theo mã sinh viên được người dùng nhập vào.
- Duyệt lần lượt danh sách sinh viên kiểm tả nếu trùng mã thì trả về đối tượngsịnh viên đó nếu không thì trả vể NULL
6.2.5 Xóa sinh viên theo mã sinh viên
- Kiểm tra tồn tại của sinh viên có mã nhập vào nếu mà trùng thì ta tiếnhành dịch chuyển các phần tử phía sau của mảng đè lên phần tử ở phíatrước đó Đồng thời giảm số lượng sinh viên xuống 1 đơn vị
Trang 176.2.6 Sửa thông tin sinh viên dựa vào MSSV mà người dùng nhập vào
- Hàm này kiểm tra sự tồn tại của sinh viên có mã được nhập vào nếu mà
có tồn tại sinh viên đó thì ta tiến hành lựa chọn sửa các thông tin của sinhviên
Trang 186.2.7 Xuất danh sách sinh viên khoa công nghệ thông tin
- Nếu các sinh viên thuộc khoa cntt thì xuất ra màn hình
6.2.8 Xuất danh sách sinh viên khóa kế toán
- Nếu các sinh viên thuộc khoa ketoan thì xuất ra màn hình
6.2.9 Xuất toàn bộ danh sách sinh viên
- In toàn bộ sinh viên ra màn hình
6.2.10 xuất danh sách sinh viên kèm theo danh hiệu và phần thưởng
Xuất thông tin cá nhân của sinh viên và phần thưởng cộng với danh hiệu sinhviên đạt được dựa trên điểm gpa
6.2.11 Xuất sinh viên theo thứ tự điểm GPA và theo danh sách khoa
Trang 19Sắp xếp sinh viên theo điểm và in ra thông tin cá nhân của từng sinhvien
6.2.11 Sắp xếp danh sách sinh viên theo GPA
Ta duyệt lần lượt tất cả các sinh viên và di chuyển sinhvien về vị trí thích hợp
7 Các tính chất hướng đối tượng được thể hiện thông qua chương trình quản lý sinhviên
7.1 Tính chất của Hàm bạn ( friend function)
Hàm bạn trong c++ là hàm tự do, không thuộc lớp Tuy nhiên hàm bạntrong c++ cóquyền truy cập các thành viên private của lớp
Một lớp trong c++ có thể có nhiều hàm bạn, và chúng phải nằm bên ngoài class
Nó cho phép kiểm soát các truy nhập ở cấp độ lớp Nghĩa là không thể áp đặt hàm bạncho một lớp, nếu như chưa khai báo hàm bạn trong lớp
Hàm bạn giải quyết được vấn đề cần truy cập dữ liệu của lớp như trên
Các hàm bạn khai báo với cú phápĐặt từ khoá friend phía trước, sau đó khai báonhư một hàm thông thường
Trang 20ở đây các trường thuộc ngayThangNam là các trường private ta dùng hàm bạn có thểtruy cập trực tiếp để lấy dữ liệu nhằm dùng cho xử lý của người dùng thay vì phải sửdụng các phương thức trừu tượng để có thể tác động lên dữ liệu.
Hàm sắp xếp được gọi ở các hàm khác thuộc lớp quanlydanhsachsinhvien
Trang 217.3 Tính đóng gói
Tính đóng gói (Encapsulation) là cơ chế của che giấu dữ liệu (Data Hiding) bởichúng được lớp (class) che giấu đi (ở dạng private) một số dữ liệu, hàm và phươngthức để đảm bảo rằng các dữ liệu đó sẽ được truy cập và sử dụng đúng mục đích, đúngcách thông qua các hàm và phương thức ở dạng public mà class cung cấp Đó là lý dobạn không thể truy cập đến các thuộc tính private hoặc gọi đến phương thức privatecủa class từ bên ngoài class đó.Ví dụ như trong Class ngayThangNam các thuộc tínhngay tháng năm và các phương thức xử lý thuốc đối tượng ngayThangNam được đónggói vào trong class NgayThangNam
Trang 227.4 Tính kế thừa
Tính kế thừa là một trong những đặc tính quan trọng nhất của lập trình hướngđối tượng
Nó là khả năng lấy một thuộc tính, đặc tính của một lớp cha để áp dụng lên lớp
con.Lớp kế thừa các thuộc tính từ một lớp khác được gọi là Lớp con hoặc Lớp dẫnxuất
Lớp có các thuộc tính được kế thừa bởi lớp con được gọi là Lớp cha hoặc Lớp cơ sở
Trong chương trình này tính kế thừa được thể hiện qua các class sinhvien kế thừa từclass thongtincanhan Class sinhvienketoan và class sinhviencongnghe cũng kế thừa từclass sinhvien
7.5 Tính đa hình
Đa hình (polymorphism) nghĩa là có nhiều hình thái khác nhau Tiêu biểu là, đahình xuất hiện khi có một cấu trúc cấp bậc của các lớp và chúng liên quan với nhaubởi tính kế thừa
Trong chương trình này tính đa hình được biểu thị qua hoạt động xét thưởng và xétdanh hiệu ở class sinhvien, class sinhvienketoan, class sinhviencongnghe Classsinhvienketoan va sinhviencongnghe là 2 đa hình thuộc class sinhvien
Ở class sinhvien chúng ta có hàm xetdanhhieu và phanthuong như sau
Trang 23Còn ở class sinhvienketoan đa hình từ class sinhvien
Class sinhviencongnghe đa hình từ class sinhvien
Trang 248 Demo chương trình
8.1 Màn hình chức năng chính
Trang 258.2 Thêm sinh viên
Trang 268.3 Xóa sinh viên
8.4 Sửa sinh viên
Trang 288.5 In danh sách sinh viên
Trang 298.6 In danh sách sinh viên kế toán
8.7 In danh sách sinh viên công nghệ
Trang 308.8 In danh sách kèm theo danh hieu va phần thưởng
Trang 318.9 In danh sách sinh viên theo điểm gpa