OOP được xem là giúp tăng năng xuất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn..
Trang 1mF
Se
a
TRUONG DAI HOC DAI NAM KHOA CONG NGHE THONG TIN
ĐẠI NAM
BÁO/CÁO BÀI TẬP LỚN MÔN LẬP TRÌNH
v HƯỚNG ĐÔI TƯỢNG
Đề số 23: Viế£ chương trình cho phép nhập, xuất các phiếu
iN có dạng như sau:
Phiếu kiểm kê
Mã phiếu: 01
Nhân viên kiể Ngày kiểm kê: 15
kê: Anh Huy Chức vụ: chuyên viên
Kiểm kê tại phãhg: Khoa học Mã phòng: 172
MT
Tên tài sản Số lượng Tình trạng
May vi tinh 01 Tốt
Máy in 01 Hong
Ban lam viéc 03 Tốt
Số tai san kié ê: 03 Tống số lượng: 05
———Ừm->«:†2»<= +©—=——————
Trang 2cu
TRƯỜNG ĐẠI HỌC ĐẠI NAM
ĐẠI NAM
Z
BÁOCÁO BÀI TẬP LỚN MÔN LẬP TRÌNH
HƯỚNG ĐÔI TƯỢNG
Đề số 23: Viết.chương trình cho phép nhập, xuất các phiếu
có dạng như sau:
Giảng viên hướng dẫn : Nguyễn Thái Sơn
Nhóm sinh viên thực hiện:
Lớp: CNTT13-01
uyễn Thị : 1351020099 PhiƯơng Thanh
Vũ Ngọc Đan : 1351020019
tháng năm 2021 —
Trang 3oo MUC LUC
LỜI MỞ ĐẦU 2 2222112222110 1021112121222 rree 1 LOL CAM ON oiiecccccccccccccccssssseeessssseessssssessssssensetssssesssseessssssiesssssenessesesssesteeees I CHƯƠNG 1 TONG QUAN ccccssssssssccssssesssssssssssssssssessssssssitiesessessasiseseeseeeseen 3
I Các khái niệm cơ bản của lập trình hướng đối tượng 3
1 Tóm tắt lý thuyết - 0S 22a 3 CHƯƠNG 2 : PHÂN TÍCH - S21 1122111111221 011012121 212121 creu 4
I Giới thiệu đề bài cccscseeescsssseesssssseesssssetsssseesesees 4
1 Mô tải yêu cầu của đề bài Q0 4
2 Mẫu 0Q SH n2 2122121211111 se 4
MW PRRAN CICK QC HH HH HH tt ng th nhat 4
CHƯƠNG 3 TRIỂN KHAI LẬP TRÌNH 222222222222225221112221211222256 5
I Tổng quan 0 2H H102 12121 ya 5
II Chương trình - 5-5: 1 121211211112112121112121101101111212112101 121 r re 8
CHUONG 4 CHAY CHUONG TRINH ccccccccccsssstscsssesssseessetsssrteseseesseees 14
1 Nhập các thông tin c1 21112 0 1110122111112 21 tan na He 14
Trang 4LOI MO DAU Lập trình hướng đối tượng (gọi tắt là OOP, viết tắt của
từ object - oriented - propraming trong tiếng anh), hay còn gọi là lập trình hướng đối tượng OOP được xem là giúp tăng năng xuất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn
Ngoái ra, nhiều người còn cho rằng OOP dễ tiếp thu hơn
cho những người mới học về lập trình hơn là các phương pháp trước đó
Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các thoa tác viết mã nguồn cho người lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tố bên
ngoài có thể tương tác với các chương trình đó giống như
tương tác với các đối tượng vật lý
Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu mà chúng được nhìn nhận như là một đơn vị duy nhất Mỗi đối tượng có một tên riêng biệt
và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu, và gửi hay trả lời đến các
đối tượng khác hay đến môi trường
Sau quá trình học tập và nghiên cứu bộ môn “Lập trình hướng đối tượng” và làm quen với ngôn ngữ lập
trình dưới sự hướng dẫn của giáo viên Nguyễn Thái
Sơn, nhóm chúng em đã đi tới nghiên cứu đề tài “số 23: Viết
chương trình cho phép nhập, xuất các phiếu có dạng như
sau” và hoàn thành báo cáo
LỜI CẢM ƠN
Trước tiên, chúng em xin gửi lời cảm ơn chân thành nhất tới thầy Nguyễn Thái Sơn - giảng viên đã trực tiếp giảng dạy, chỉ bảo chúng em trong quá trình học tập đặt biệt là trong quá trình làm bài tập lớn này Và cũng gửi lời
Trang 5cảm ơn chân thành nhất tới đội ngũ giảng viên Trường Đại học Đại Nam đã tạo điều kiện tốt nhất trong quá trình học tập của chúng em
Cũng cảm ơn các bạn sinh viên lớp CNTT13-01 đã chia sẻ tài liệu và góp ý giúp chúng mình hoàn thiệt bài tập lớn này
Trong quá trình làm đồ án, chúng em có nhiều điều sơ xuất, kính mong nhận được lòng bao dung từ thầy về những sơ xuất trên và góp ý cho chúng em để chúng em hoàn thiện hơn về bài tập lớn của mình
Thay mặt nhóm, một lân nữa chúng em xin cảm ơn sự
dãy dỗ ân cần từ thầy!
Trang 6CHU'ONG | TONG QUAN
l Các khái niệm cơ bản của lập trình hướng đối tượng
1 Tóm tắt lý thuyết
C++ là ngôn ngữ lập trình hướng đối tượng được mở
rộng từ ngôn ngữ C Do vậy, C++ có ưu điểm là kế thừa được các điểm mạnh truyền thống của ngôn ngữ C như uyển chuyển, tương thích với các thiết bị phần cứng Hiện nay, C++ là một ngôn ngữ lập trình phổ biến, được
giảng dạy tại các trường đại học trong nước và trên thế giới và đặc biệt được sử dụng rộng rãi cho nhu cầu phát triển của công nghiệp phần mềm hiện nay Tài liệu này không những nhằm giới thiệu cho sinh viên ngôn ngữ lập trình C++, mà còn mong muốn qua đó sinh viên có
thể hiểu được tư tưởng của phương pháp lập trình hướng đối tượng nói chung
Phần thứ nhất là lập trình nâng cao với C++, bao gồm
lập trình C++ với con trò và mảng, các kiểu dữ liệu có
cấu trúc cùng các thao tác vào ra trên tập
Phần thứ hai là lập trình hướng đối tượng với C++, bao gồm các định nghĩa và các thao tác trên lớp đối tượng, tính kế thừa và tương ứng bội trong C++, cách sử dụng một số lớp cơ bản trong thư viện C++.Mã phiếu, Tên người kiểm kê, Chức vụ của nhân viên kiểm kê, Ngày
kiểm kê, Phòng kiểm kê, Mã phòng kiểm kê, Tên tài sản,
Số lượng và Tình trạng sản phẩn kiểm kê
Tìm hiểu về cách tiếp cận hướng đối tượng, những ưu điểm, nhược điểm của lập trình truyền thống và các đặc
điểm của lập trình hướng đối tượng
Các khái niệm cơ sở của phương pháp hướng đối tượng: đối tượng, Lớp, Trừa tượng hóa dữ liệu và bao gói thông tin, kế thừa
Các bước cần thiết để thiết kế chương trình theo hướng đối tượng
Các ưu điểm của lập trình hướng đối tướng
Các ngôn ngữ hướng đối tượng
Trang 7CHU'ONG 2 : PHAN TICH
1 Mô tải yêu cầu của đề bài
Viết chương trình tạo ra một phiếu ( phiếu kiểm kê) Cho phép nhập dữ liệu, xuất dữ liệu
Chức năng
+ Nhập thông tin như tờ mẫu
+ Xuất các thông tin mà mình vừa nhập như tờ mẫu
Mẫu Phiếu kiểm kê
Phiếu kiểm kê
Mã phiếu: 01 Ngày kiểm kê: 15 Nhân viên kiểm kê: Anh Chức vụ: Chuyên viên Huy Mã phòng: 172
Kiểm kê tại phòng: Khoa
học MT
Tên tài sản SỐ lượng | Tình
trạng May vi tính 01 Tốt
Máy in 01 Hong Ban lam viéc 03 Tốt
Số tài sản kiểm kê: 03 Tống số lượng: 05
Danh sách nhập:
Cho phép người dùng nhập vào phiếu kiểm kê các
thông tin gồm: Mã phiếu, Tên người kiểm kê, Chức vụ của nhân viên kiểm kê, Ngày kiểm kê, Phòng kiểm kê,
Mã phòng kiểm kê, Tên tài sản, Số lượng và Tình trạng sản phẩn kiểm kê
In ra danh sách:
In ra danh sách bao gồ tất cả các thông tin vừa
nhập:Mã phiếu, Tên người kiểm kê, Chức vụ của nhân
viên kiểm kê, Ngày kiểm kê, Phòng kiểm kê, Mã phòng kiểm kê, Tên tài sản, Số lượng và Tình trạng sản phẩn kiểm kê
Trang 8, CHƯƠNG 3 TRIỂN KHAI LẬP TRÌNH
Tổng quan
Chương trình có 3 đối tượng là:
+ class KiemKe
+ class TaiSan
+ class PhieuKK
._ Class kiemke gồm các thuộc tinh như: string nguoiKK, string chucVu, int ngayKK, string phongKK, string maPhongKK Và các phương thức: void nhapTTKK(), void xuatTTKK() và các hàm: hàm tạo KiemKe(), hàm huy ~KiemKe()
+ code: class KiemKe
{
private:
string nguoiKK;
string chucVu;
int ngayKK;
string phongKK;
string maPhongkKK;
public:
KiemKe();
~KiemKe() ;
void nhapTTKK();
void xuatTTKK();
};
Class TaiSan gồm các thuộc tinh: string tenTS, int soLuong, string tinhTrang, Các phương thức: int traVeGT(), void nhapTTTS(), void xuatTTTS() và các hàm: hàm tạo TaiSan(), hàm hủy ~TaiSan()
+ code: class TaiSan
{
private:
// Thuoc tinh
string tenTS;
int soLuong;
string tinhTrang;
public:
// Ham tao, ham huy
TaiSan();
Trang 9~TaiSan();
// Cac phuong thuc
int traVeGT(); // Tra ve gia tri cua thuoc tỉnh soLuong khi
nhap vao ban phim,
void nhapTTTS(); // Nhap thong tin tai san
void xuatTTTS(); // Xuat thong tin tai san
};
Class PhiêuKK gồm có: thuộc tính: string maPhieu, các
phương thức: void nhapTTPKK(); void xuatTTPKK(); void
nhapDSPKK(PhieuKK p[], int n, TaiSan t[][100], int &m, int arrSLTSP[], int sl); void xuatDSPKK(PhieuKK p[], int n, TaiSan t[][100], int arrSLTSP[], int sl); va cach ham: ham tạo PhieuKK(), hàm hủy ~PhieuKK()
+ code: class PhieuKK : public KiemKe, public TaiSan
{
private:
string maPhieu;
public:
PhieuKK();
~PhieuKK();
void nhapTTPKK();
void xuatTTPKK();
void nhapDSPKK(PhieukK p[], int n, TaiSan t[][100], int &m,
int arrSLTSP[], int sl);
void xuatDSPKK(PhieukK p[]J, int n, TaiSan t[][100], int arrSLTSP[], int sl);
};
Nhập thông tin cho phiếu kiểm kê
Code:
void nhapDSPKK(PhieukK p[], int n, TaiSan t[][100], int &m,
int arrSLTSP[][100], int &sl, int tong[][100], int &x)
{
int sum = 0;
for (inti = 0; i < n; i++)
{
pli].nhapTTPKK();
cout << " Nhap so luong tai san can nhap TT: "; cin >> m;
Trang 10} }
arrSLTSP[i][sl] = m;
sl++;
cin.ignore();
for (int j = 0; | < m; j++)
{
t[i]UjI.nhapTTTSO;
Sum += t[i][j].traVeGT();
}
tong[il[x] = sum;
x++;
sum = 0;
5 Xuất thông tin các phiếu đã nhập
Code:
void xuatDSPKK(PhieuKK p[], int n, TaiSan t[][100], int
arrSLTSP[][100], int sl, int tong[][100], int x)
{
}
for (inti = 0; i < n; i++)
{
}
pli].xuatTTPKK();
for (int j = 0; j < sl; j++)
{
for (int k = 0; k < arrSLTSP[i][j]; k++)
{
t[i][k].xuatTTTS
}
if (i == j)
{
cout << " So tai san kiem ke: " << arrSLTSP[i][j] << setw(12) << " Tong so: " << tong[i][j] << endl;
}
}
cout << endl;
6 Ham MAIN
Code:
int main()
Trang 11x);
PhieuKK p[100];
TaiSan t[100][100]; // Mang de nhap danh sach tai san intm = 0;
int soLuongPhieu = 0
int tong[100][100];
int x = 0;
int arrSLTSP[100][100];
int sl = 0;
cout << " Nhap so luong phieu: ";
cin >> soLuongPhieu;
cin.ignore();
nhapDSPKK(p, soLuongPhieu, t, m, arrSLTSP, sl, tong, xuatDSPKK(p, soLuongPhieu, t, arrSLTSP, sl, tong, x); return 0;
}
Chuong trinh
#include <iostream>
#include <string>
#include <iomanip>
#include <ctime>
using namespace std;
#define soCotTTTS 1
class KiemKe
{
private:
string nguoiKK;
string chucVu;
int ngayKK;
string phongKK;
string maPhongKK;
public:
Trang 12KiemKe();
~KiemKe();
void nhapTTKK();
void xuatTTKK();
};
// Ham tao
KiemKe::KiemKe()
{
nguoiKK = "";
chucVu = "";
ngayKK = 0;
phongKK = "";
maPhongKK = "";
}
// Ham huy
KiemKe::~KiemKe()
{
nguoiKK = "";
chucVu = "”;
ngayKK = 0;
phongKK = "";
maPhongKK = "";
}
// Nhap thong tin can kiem ke
void KiemKe::nhapTTKK()
{
cout << " Nhap nguoi kiem ke: "; cin.ignore(0);
getline(cin, nguoiKK);
Cout << " Nhap chục vu: "; cin.ignore(0);
getline(cin, chucVu);
cout << " Nhap ngay kiem ke: "; cin >> ngayKK;
cout << " Nhap phong kiem ke: ";
cin.ignore(1);
getline(cin, phongKK);
cout << " Nhap ma phong kiem ke:
Trang 13cin.ignore(0);
getline(cin, maPhongKK);
}
/J Xuất thông tin cần kiểm kê
void KiemKe::xuatTTKK()
{
cout << setw(20) << " Ngay kiem ke: " << ngayKK << endl;
cout << " Nhan vien kiem ke: " << nguoiKK <<
setw(15) << " Chuc vu: " << chucVu << endl;
cout << " Kiem ke tai phong: "<< phongKK << setw(15) << "Ma phong: " << maPhongKK << endl;
}
class TaiSan
{
private:
string tenTS;
int soLuong;
string tinhTrang;
public:
TaiSan();
~TaiSan();
int traVeGT(); ,
void nhapTTTS();
void xuatTTTS();
};
// Ham tao
TaiSan::TaiSan()
{
tenTS = "";
soLuong = 0;
tinhTrang = "”;
}
// Ham huy
TaiSan::~TaiSan()
{
tenTS = "";
soLuong = 0;
tinhTrang = "”;
Trang 14}
// Phuong thuc nhap thong tin tai san
void TaiSan::nhapTTTS()
{
cout << " Nhap ten tai san: ";
cin.ignore(0);
getline(cin, tenTS);
Cout << " Nhap so luong: ";
cin >> soLuong;
Cout << " Nhap tinh trang: ";
cin.ignore(1);
getline(cin, tinhTrang);
cout << endl;
}
/¡ Phương thức trả về giá trị của thuộc tính soLuong int TaiSan::traVeGT()
{
return soLuong;
}
// Phương thức xuất thông tin tài sản
void TaiSan::xuatTTTS()
{
cout << setw(5) << tenTS << setw(20) << soLuong
<< setw(15) << tinhTrang << endl;
}
// Class phieu kiem ke ke thua class kiem ke va class tai san
class PhieuKK : public KiemKe, public TaiSan //ke thua
{
private:
string maPhieu; // Thuoc tinh ma so cua phieu kiem ke public:
// Ham tao ham huy
PhieuKK();
~PhieuKK();
// Cac phuong thục
void nhapTTPKK();
// Nhap thong tin cho 1 phieu kiem ke
void xuatTTPKK();
// Xuat thong tin cho 1 phieu kiem ke
Trang 1512
void nhapDSPKK(PhieuKK p[], int n, TaiSan t[][100], int
&m, int arrSLTSP[], int sl); // Nhap thong tin cho nhieu phieu kiem ke
void xuatDSPKK(PhieukK pf], int n, TaiSan t[][100], int
arrSLTSP[], int sl); // Xuat thong tin nhieu phieu kiem
ke
};
// Ham tao
PhieuKK::PhieuKK()
{
maPhieu = "";
}
// Ham huy
PhieuKK::~PhieuKK()
{
maPhieu = "";
}
//¡ Nhập thông tin cho 1 phiếu kiểm kê
void PhieuKK::nhapTTPKK()
{
cout << endl
<< " Nhap ma phieu: ";
cin.ignore(0);
getline(cin, maPhieu);
KiemKe::nhapT TKK();
}
/J Xuất thông tin cho 1 phiếu
void PhieuKK::xuatTTPKK()
{
endl;
cout << " PHIEU KIEM KE" << endl;
cout << " Ma phieu: " << maPhieu;
KiemKe::xuatT TKK();
cout << " Ten tai san” << setw(20) << " So luong" <<
setw(15) << "Tinh trang" << endl;
}
// NHap théng tin cho nhiéu phiéu kiém ké