mF 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
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 -= SSS > LS Đề 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
Phẩm Ý Thương : 1351020110
uyễn Thị : 1351020099 PhiƯơng Thanh
Vũ Ngọc Đan : 1351020019
2 OSS OO —
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
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
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ự
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
Trang 7CHU'ONG 2 : PHAN TICH
I Giới thiệu đề bài
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
II Phân tích
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
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:
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,
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;
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:
Trang 12KiemKe(); ~KiemKe();
void nhapTTKK(); void xuatTTKK();
};
// Ham tao KiemKe::KiemKe()
{
nguoiKK = ""; chucVu = ""; ngayKK = 0; phongKK = ""; maPhongKK = "";
}
// Ham huy KiemKe::~KiemKe()
{
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:
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();
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() { cout <<" "<< 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;
}
Trang 16void nhapDSPKK(PhieuKK p[], int n, TaiSan t[][100], int &m, int arrSLTSP[][100], int &sl, int tong[][100], int &x) {
int sum = 0; // Bién dé tính tổng số lượng của tất cả các
tài sản được kiểm kê trong 1 phiếu for (int i = 0; i < n; i++)
{
pli] nhapTTPKK(); // Nnap thong tin cho phieu thu i Cout << " Nhap so luong tai san can nhap TT: "; cin >> m;
// Them so luong tai san cua tung phieu vao mang co cac phan tu la so luong tai san duoc kiem ke trong 1 phieu
arrSLTSP[i][sl] = m;
sl++;
cin.ignore();
for (int j = 0;j <m;j++) {
t[i][j].nhapTTTSQ; // Dánh sách các tài sản được
kiểm kê
// Tính tổng số lượng của tất cả tài sản được kiểm
kê trong 1 phiếu
sum += t[i]lj].traVeGTQ;
}
// Them cac gia tri cua Sum vao mang gom cac gia tri la tong so luong cua tat ca tai san duoc kiem ke trong 1 phieu
tong[i][x] = sum; x++;
sum = 0;
} }
/¡ Xuất thông tin của các phiếu đã nhập
Trang 17for (int j = 0; j < sl; j++)
{
for (int k = 0; k < arrSLTSPT[i][j]; k++)
{
t[i][k].xuatTTTSQ); //Xuất thông tin các tài sản
được kiểm kê của phiếu thứ i
} if (i == j) {
// Xuat ra s6 théng ké so S6 tài sản được kiểm
kê va tổng số lượng các tài sản của phiếu thứ i
cout << " So tai san kiem ke: " << arrSLTSP[i]Uj] << setw(12) << " Tong so: " << tong[i][j] << endl;
} }
cout << endl;
} }
int main()
{
PhieuKK p[100]; // Mảng để nhập danh sách các
phiếu kiểm kê
TaiSan t[100][100]; // Mảng để nhập danh sách tài sản // Bien de truyen vao ham nhap danh sach phieu kiem ke, trong ham do tham so nay se dụng de nhap so luong tai san can kiem ke cua 1 phieu
int m = 0;
int soLuongPhieu = 0; // Biên số lượng phiếu cần nhập thông tin
int tong[100][100]; 7/ Mảng gồm các giá trị là tổng số
lượng của tất cả tài sản được kiểm kê trong 1 phiếu
int x = 0; // biến để đếm số lượng các giá trị được thêm vào mảng tổng
int arrSLTSP[100][100]; // Mảng chứa số lượng tài sản của từng phiếu vào mảng có các phần tử là số lượng tài
sản được kiểm kê trong 1 phiếu