giải bài tập lập trình hướng đối tượng đối với ngôn ngữ CC++, file gồm phần đề và phần giải cơ bản, có thể tham khảo nhưng đúng thì không hoàn toàn, để làm được đề, cần yêu cầu hiểu biết cơ bản về ngôn ngữ lập trình, cách hoạt động và môi trường lập trình
Trang 1**** ĐỀ TÀI: sử dụng các kiểu dữ liệu như ảnh, dữ liệu thuộc tính, dữ liệu text + Tối đa 1 nhóm làm báo cáo gồm: 2-3 thành viên + Thuật toán: 2 người cùng làm 1 thuật toán, nhưng khác
nhau về dữ liệu Marketing căn bản (Đại học Điện lực)
**** ĐỀ TÀI: sử dụng các kiểu dữ liệu như ảnh, dữ liệu thuộc tính, dữ liệu text + Tối đa 1 nhóm làm báo cáo gồm: 2-3 thành viên + Thuật toán: 2 người cùng làm 1 thuật toán, nhưng khác
nhau về dữ liệuMarketing căn bản (Đại học Điện lực)
Trang 2ĐỀ CƯƠNG ÔN TẬP MÔN
Nguyên lý lập trình hướng đối tượng
Kỳ 1 năm 2020-2021, Khoa Công nghệ thông tin, Đại học Điện lực
Bài 1,
Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau:
- Xây dựng lớp PhuongTienGiaoThong (phương tiện giao thông):
+) Thuộc tính: Hãng sản xuất (chuỗi ký tự), Tên phương tiện (chuỗi ký tự), Năm sản xuất
(số nguyên), Vận tốc tối đa (float)
+) Phương thức: Hàm thiết lập, hàm nhập, hàm xuất
- Xây dựng lớp OTo (ô tô) kế thừa lớp PhuongTienGiaoThong bổ sung thêm:
Thuộc tính: Số chỗ ngồi (int), Kiểu động cơ (chuỗi ký tự),Số bánh xe(kiểu nguyên).
Phương thức:
- Hàm thiết lập, hàm huỷ bỏ, hàm nhập, hàm xuất
- Vận tốc cơ sở: được tính bằng vận tốc tối đa chia cho số bánh
- Nạp chồng toán tử < (phương tiện giao thông có “Vận tốc cơ sở” nhỏ hơn thì nhỏ hơn)
Chương trình chính:
1) Nhập từ bàn phím thông tin của một phương tiện giao thôngPhuongTienGiaoThong
2) Hiển thị thông tin của phương tiện giao thông vừa nhập ra màn hình
3) Nhập thông tin cho n đối tượng OTO bao gồm: Hãng sản xuất, Tên phương tiện, Nămsản xuất, Vận tốc tối đa, số chỗ ngồi, kiểu động cơ
4) In ra màn hình thông tin của n đối tượng OTO cùng với vận tốc cơ sở
5) Sắp xếp danh sách các đối tượng OTO theo thứ tự giảm dần của vận tốc cơ sở
Trang 6cout<<"\nnhap so cho ngoi:";cin>>this->sochongoi;
cout<<"\nNhap kieu dong co:";fflush(stdin);
Trang 7t[i]=t[j];
t[j]=tg;
}}
}
cout<<"\nDanh sach doi tuong sau khi sap xep la:";
Trang 8Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau:
Xây dựng lớp đối tượng NGUOI gồm:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): mã định danh, họ tên
người
- Phương thức:
o Hàm khởi tạo, hàm huỷ, hàm nhập, hàm xuất
- Xây dựng lớp đối tượng NHANVIEN kế thừa từ lớp NGUOI có thêm o Thuộc tính
thêm: năm sinh, hệ số lương o Thuộc tính tĩnh: tiền phụ cấp
o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính lương (=hệ số lương x 1550 + tiền phụ cấp)
o Hàm nạp chồng toán tử > để so sánh hai Nhân viên theo hệ số lương (nhân viên có hệ số lương cao hơn sẽ lớn hơn)
Chương trình chính:
1) Nhập từ bàn phím thông tin của một người bao gồm: mã định danh, họ tên người
2) Hiển thị thông tin người đó ra màn hình
3) Nhập thông tin cho n đối tượng NHANVIEN bao gồm: mã định danh, họ tên nhân viên,
năm sinh, hệ số lương
4) In ra màn hình thông tin của n đối tượng NHANVIEN cùng với lương
5) Sắp xếp danh sách nhân viên theo thứ tự giảm dần theo hệ số lương Hiển thị danh sách sau khi sắp
Trang 10string madd;
string hoten;
public:
nguoi(){
this->madd ="";
this->hoten="";
}
~nguoi(){
this->madd;
this->hoten;
}void nhap(){
cout<<"\nNhap ma dinh danh:";fflush(stdin);getline(cin,this->madd);cout<<"\nNhap ho ten:";fflush(stdin);getline(cin,this->hoten);
}void xuat(){
cout<<"\nMa dinh danh:"<<madd<<"\nHo ten:"<<hoten;
}};
class nhanvien:public nguoi
{
protected:
int namsinh;
Trang 13tg=v[i];
v[i]=v[j];
v[j]=tg;
}}
Trang 14Bài 3,
Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau:
Xây dựng lớp đối tượng NGUOI gồm:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): mã định danh, họ
tên người
- Phương thức:
o Hàm khởi tạo, hàm nhập, hàm xuất
- Xây dựng lớp đối tượng NHANVIEN kế thừa từ lớp NGUOI có thêm o Thuộc
tính thêm: năm sinh, hệ số lương o Thuộc tính tĩnh: tiền phụ cấp o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính lương (=hệ số
lương x 1550 + tiền phụ cấp) Chương trình chính:
1) Nhập từ bàn phím thông tin của một người bao gồm: mã định danh, họ tên người
2) Hiển thị thông tin người đó ra màn hình
3) Nhập thông tin cho n đối tượng NHANVIEN bao gồm: mã định danh, họ tên nhân
viên, năm sinh, hệ số lương
4) In ra màn hình thông tin của n đối tượng NHANVIEN cùng với lương
5) In ra màn hình họ tên các nhân viên có lương cao nhất
Trang 18cout<<"\n nam sinh: "<<namsinh<<"\n he so luong: "<<hsluong; }
Trang 19Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau:
Xây dựng lớp đối tượng DATE gồm:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): ngày, tháng, năm -
Phương thức:
o Hàm khởi tạo, hàm nhập, hàm xuất
- Xây dựng lớp đối tượng CANBO kế thừa từ lớp DATE có thêm
o Thuộc tính: mã cán bộ, tên cán bộ, ngày tháng năm sinh(kế thừa từ lớp DATE), lương cơ bản
o Thuộc tính tĩnh: tiền phụ cấp chức vụ
o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính lương (=lương cơ bản + tiền phụ cấp chức vụ)
Trang 20Chương trình chính:
1) Nhập từ bàn phím thông tin của một ngày tháng năm,
2) Hiển thị thông tin ngày tháng năm đó ra màn hình 3)
Nhập thông tin cho n đối tượng CANBO
4) In ra màn hình thông tin của n đối tượng CANBO
5) Hiển thị ra màn hình lương của n cán bộ
Trang 24cout<<"\nNhap thong tin cua tung can bo:";
Trang 25Bài 5,
Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau:
Xây dựng lớp đối tượng HANGHOA gồm:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): mã hàng, tên hàng
-Phương thức:
o Hàm khởi tạo, hàm nhập, hàm xuất
- Xây dựng lớp đối tượng MAYTINH kế thừa từ lớp HANGHOA có thêm o
Thuộc tính: nhà sản xuất, năm sản xuất, giá bán niêm yết
o Thuộc tính tĩnh: tỷ lệ khuyến mại o Phương thức: hàm tạo đặt thông tin mặcđịnh, hàm nhập, hàm xuất, hàm tính giá bán thực tế (=giá bán niêm yết - giá bán niêm yết* tỷ
lệ khuyến mại ) Chương trình chính:
1) Nhập từ bàn phím thông tin của một hàng hóa
2) Hiển thị thông tin hàng hóa đó ra màn hình
3) Nhập thông tin cho n đối tượng MAYTINH
4) In ra màn hình thông tin của n đối tượng MAYTINH
5) Hiển thị ra màn hình các máy tính của nhà sản xuất SAMSUNG
6) In ra màn hình tên các máy tính có giá bán thực tế thấp nhất
Trang 26this->tenh=" ";
}
~hanghoa(){
this->mahang;
Trang 27}void nhap(){
cout<<"\nMa hang la:"<<mahang<<"\nTen hang la:"<<tenh;}
this->nsx=" ";
Trang 28this->giabanny=0;
}
~maytinh(){
this->nsx;
this->namsx;
this->giabanny;
}void nhap1(){
hanghoa::xuat();
cout<<"\nNha san xuat:"<<nsx<<"\nNam san xuat:"<<namsx<<"\nGiaban niem yet:"<<giabanny;
}float giabanthucte(){
Trang 29}string ten(){
return nsx="samsung";
}};
cout<<"\nXuat thong tin may tinh vua nhap:";
for(int i=0;i<n;i++){
mt[i].xuat1();
Trang 30//cout<<"\nmay tinh co hang samsung la:"<<mt[i].ten();
Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các công việc sau:
Xây dựng lớp đối tượng HANGHOA gồm:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): mã hàng, tên hàng
-Phương thức:
o Hàm khởi tạo, hàm huỷ, hàm nhập, hàm xuất
Xây dựng lớp đối tượng MAYTINH kế thừa từ lớp HANGHOA có thêm o
Thuộc tính: nhà sản xuất, năm sản xuất, giá bán niêm yết
o Thuộc tính tĩnh: tỷ lệ khuyến mại o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính giá bán thực tế (=giá bán niêm yết - giá bán niêm yết* tỷ lệ khuyến mại)
Hàm nạp chồng toán tử > để so sánh hai đối tượng MAYTINH theo giá bán thực tế
Chương trình chính:
1) Nhập từ bàn phím thông tin của một đối tượng HANGHOA
2) Hiển thị thông tin của đối tượng HANGHOA đó ra màn hình
3) Nhập thông tin cho n đối tượng MAYTINH
4) In ra màn hình thông tin của n đối tượng MAYTINH
5) Sắp xếp danh sách các đối tượng MAYTINH theo giá trị giảm dần của gía bán thực tế
Trang 33class MAYTINH:public HANGHOA
Trang 34cout<<"\nNhap gia ban niem yet:";
Trang 35mt[i]=mt[j];
mt[j]=tg;
}}
}
Trang 36cout<<"\nDanh sach doi tuong sau khi sap xep la:";
Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau:
Xây dựng lớp đối tượng SACH gồm:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): mã sách, tên sách -
Phương thức:
o Hàm khởi tạo, hàm nhập, hàm xuất
- Xây dựng lớp đối tượng MUONTRA kế thừa từ lớp SACH có thêm o Thuộc tính:
mã độc giả, mã sách (kế thừa từ lớp SACH), số lượng
o Thuộc tính tĩnh: phí cược mượn trả o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính số tiền cược mượn trả (=số lượng*phí cược mượn trả)
Chương trình chính:
1) Nhập từ bàn phím thông tin của một cuốn sách 2)
Hiển thị thông tin cuốn sách đó ra màn hình
3) Nhập thông tin cho n đối tượng MUONTRA
4) In ra màn hình thông tin của n đối tượng MUONTRA
5) Hiển thị ra màn hình các độc giả có số lượng mượn >10 cuốn
6) In ra màn hình mã các độc giả có số tiền cược nhiều nhất
Trang 39this->madocgia="";
this->soluong=0;
}void nhap1(){
sach::xuat();
cout<<"\n Ma doc gia:"<<madocgia<<"\n So luong:"<<soluong;
}float tiencuocmuontra(){
return (soluong*phicuocmuontra);
}string madg(){
return madocgia;
}int sl(){
Trang 40if(soluong>10)return 1;
else return 0;
}};
cout<<"\nXuat thong tin muon tra:";
for(i=0;i<n;i++){
mtr[i].xuat1();
}cout<<"\nMa doc gia co so luong lon hon 10 la:";
Trang 41Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau:
Xây dựng lớp đối tượng DATE gồm:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): ngày, tháng, năm -
Phương thức:
o Hàm khởi tạo, hàm nhập, hàm xuất
- Xây dựng lớp đối tượng MUONTRA kế thừa từ lớp DATE có thêm o Thuộc tính:
mã độc giả, mã sách, ngày tháng năm mượn sách(kế thừa từ lớp DATE), số lượng
o Thuộc tính tĩnh: phí cược mượn trả o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính số tiền cược mượn trả (=số lượng*phí cược mượn trả)
Chương trình chính:
1) Nhập từ bàn phím thông tin của một ngày tháng năm
2) Hiển thị thông tin ngày tháng năm đó ra màn hình
3) Nhập thông tin cho n đối tượng MUONTRA
4) In ra màn hình thông tin của n đối tượng MUONTRA
Trang 425) Hiển thị ra màn hình các độc giả mượn trước ngày 1/1/2020
6) In ra màn hình mã các độc giả có số tiền cược nhiều nhất
Trang 43cout<<"\n Nhap ngay";cin>>this->d;
cout<<"\n Nhap thang:";cin>>this->m;
cout<<"\n Nhap nam:";cin>>this->y;
Trang 44cout<<"\n nhap so luong:";cin>>this->soluong;
Trang 45Xây dựng lớp DichVu có các thành phần sau:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): mã DV, tên DV, giá cước
- Phương thức:
o Hàm khởi tạo o Nhap() o Xuat() o
Laygiacuoc(): để lấy giá cước của dịch vụ Xây dựng
Xây dựng lớp KhachHang kế thừa lớp Nguoi và bổ sung thêm:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): int SoLuongDichVu,
DichVu dv[100] (là mảng lưu các dịch vụ do khách hàng đã sử dụng, tối đa là 100 dịch
1) Nhập từ bàn phím thông tin của một người
2) Hiển thị thông tin người đó ra màn hình
3) Nhập thông tin của một khách hàng
4) Hiển thị thông tin của khách hàng và dịch vụ khách hàng đã sử dụng lên màn hình
5) Tính và hiển thị tổng gía cước khách hàng đã sử dụng
Trang 47cout<<"\n Nhap ma dich vu:";fflush(stdin);getline(cin,this->madv);cout<<"\n Nhap ten dich vu:";fflush(stdin);getline(cin,this->tendv);cout<<"\n Nhap gia cuoc:";cin>>this->giacuoc;
Trang 49cout<<"\n Nhap so luong dich vu da su
Trang 50Xây dựng lớp CanBo kế thừa lớp NhanVien có thêm:
- Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): Hệ số lương,Phụ cấp, Trình độ - Phương thức: o Nhap() o Xuat()
o TinhLuong(): Nếu cán bộ chưa về hưu, Luong = hệ số lương* 1550 +phụ cấp; ngược lại, cán bộ nhận lương hưu = 70% Lương Chương trình chính:
1) Nhập từ bàn phím thông tin của một nhân viên
2) Hiển thị thông tin của nhân viên đó ra màn hình
3) Nhập thông tin của n đối tượng CanBo
4) Hiển thị thông tin của n đối tượng CanBo cùng với lương ra màn hình
5) In ra màn hình những đối tượng CanBo chưa về hưu cùng với lương
Trang 52string hoten;
int tuoi;
public:
nhanvien(){
this->manv="";
this->hoten="";
this->tuoi=0;
}void nhap(){
cout<<"\n Nhap ma nhan
vien:";fflush(stdin);getline(cin,this->manv);
cout<<"\n Nhap ho ten:";fflush(stdin);getline(cin,this->hoten);cout<<"\n Nhap tuoi:";cin>>this->tuoi;
}void xuat(){
cout<<"\n Ma nhan vien:"<<manv<<"\n Ho ten:"<<hoten<<"\nTuoi:"<<tuoi;
}int vehuu(){
if(tuoi>60)return true;
else return false;
}
Trang 53string ten(){
return hoten;
}};
class canbo:public nhanvien
this->hesoluong=0;
this->phucap=0;
this->trinhdo="";
}void nhap1(){
Trang 54void xuat1(){
nhanvien::xuat();
cout<<"\n He so luong:"<<hesoluong<<"\n Phu cap:"<<phucap<<"\n Trinh do:"<<trinhdo;
}float luongchuavehuu(){
return(hesoluong*1550+phucap);
}float canbonhanluonghuu(){
return luongchuavehuu()*0.7;
}};
Trang 55cb=new canbo[n];
cout<<"\n Nhap thong tin can bo:";
for(i=0;i<n;i++)cb[i].nhap1();
cout<<"\n Xuat thong tin can bo vua nhap:";
for(i=0;i<n;i++){
cb[i].xuat1();cout<<"\tLuong: "<<cb[i].luongchuavehuu();}
cout<<"\n doi tuong can bo nhan luong huu la:";
Xây dựng lớp môn học MonHoc gồm
Thành phần dữ liệu (không cho phép truy cập từ ngoài lớp): MaMH, TenMH, DTB, SoTC
Trang 56(Điểm tổng kết bằng tổng của DTB*SoTC của tất cả các môn / tổng số tín chỉ của tất cả các môn)
Chương trình chính:
1) Nhập từ bàn phím thông tin của một đối tượng MonHoc
2) Hiển thị thông tin của đối tượng MonHoc đó ra màn hình
3) Nhập từ bàn phím thông tin của n đối tượng SinhVien
4) Hiển thị thông tin của n đối tượng SinhVien đó lên màn hình cùng với điểm tổng kết của sinh viên đó
5) Liệt kê ra màn hình thông tin đầy đủ của những sinh viên được cấp học bổng (sinh viên được cấp học bổng nếu có DTK >= 8.5)
Trang 58cout<<"\n Nhap so tin chi:";cin>>this->sotc;
}
void xuat()
{
Trang 59cout<<"\n Ma mon hoc:"<<mamh<<"\n Ten mon hoc:"<<tenmh<<"\n Diem trung binh:"<<dtb<<"\n So tin chi:"<<sotc;
Trang 61cout<<"\n Xuat thong tin vua nhap:";
for(i=0;i<n;i++){
sv[i].xuat1();
}cout<"\n Diem tong ket:";
Định nghĩa lớp NhanVien kế thừa lớp Nguoi, có thêm các thuộc tính:
-Thành phần dữ liệu (không cho phép truy cập từ ngoài lớp): hệ số thâm niên HSThamNien
Trang 62(kiểu số thực), mức lương MucLuong (kiểu số thực), tiền ăn ca AnCa ( kiểu số thực)
-Phương thức:
+) Thiết lập, hủy bỏ, nhập, xuất
+) NghiHuu: nhân viên nghỉ hưu khi tuổi >=60
+) Luong: Tính lương cho nhân viên:
+ Đối với nhân viên đã nghỉ hưu:
Lương = 0.75*MucLuong* HSThamNien; + Đối với nhân viên chưa nghỉ hưu:
Lương = MucLuong* HSThamNien + AnCa; Chương trình chính:
1) Nhập từ bàn phím thông tin của một người
2) Hiển thị thông tin của người vừa nhập cùng với tuổi
3) Nhập thông tin cho n đối tượng nhân viên
4) In ra màn hình thông tin của n đối tượng nhân viên cùng với lương tương ứng
5) In ra màn hình thông tin của tất cả những nhân viên đã đến tuổi nghỉ hưu