// 顯示會員資料
void MEMBER::show() {
if (index == 0) {
cout << "EMPTY!" << endl;
} else {
cout << "編號\t會員名稱" << endl;
for (int i = 0; i < index; i++) {
if (DataBase[i] == "") continue;
cout << i << "\t" << DataBase[i] << endl;
}
}
return;
}
// 顯示書籍資料
void BOOK::show(MEMBER m) {
if (index == 0) {
cout << "EMPTY!" << endl;
} else {
cout << "編號\t書籍名\t借出者" << endl;
for (int i = 0; i < index; i++) {
if (DataBase[i].i == -1) continue;
cout << DataBase[i].i << "\t" << DataBase[i].name;
if (DataBase[i].rentBy != -1) {
cout << "\t" << m.DataBase[DataBase[i].rentBy];
}
cout << endl;
}
}
return;
}
// 新增DVD資料
bool DVD::addDVD(string s, int r, int l) {
if (add(s, r)) {
level[index - 1] = l;
return true;
}
return false;
}
// 儲存會員資料
void MEMBER::writeFile() {
ofstream my_read_file("MemberList.txt"); // 開啟檔案
for (int count = 0; count < index; count++) {
my_read_file << DataBase[count] << endl;
}
my_read_file.close();
return;
}
// 儲存書籍資料
void BOOK::writeFile() {
ofstream my_read_file("BookList.txt"); // 開啟檔案
for (int count = 0; count < index; count++) {
if (DataBase[count].i == -1) continue;
my_read_file << DataBase[count].name << " " << DataBase[count].rentBy << endl;
}
my_read_file.close();
return;
}
// 顯示DVD資料
void DVD::showDVD(MEMBER m) {
if (index == 0) {
cout << "EMPTY!" << endl;
} else {
cout << "編號\tDVD名稱\t借出者\t分級" << endl;
for (int i = 0; i < index; i++) {
if (DataBase[i].i == -1) continue;
cout << DataBase[i].i << "\t" << DataBase[i].name;
if (DataBase[i].rentBy != -1) {
cout << "\t" << m.DataBase[DataBase[i].rentBy];
} else {
cout << "\t";
}
if (level[i] == 0) {
cout << "\t非限制級" << endl;
} else if (level[i] == 1) {
cout << "\t限制級" << endl;
}
}
}
return;
}
// 檢查會員是否存在
bool MEMBER::exist(int m) {
if (m >= index || DataBase[m] == "") {
cout << "無此會員" << endl;
return false;
}
return true;
}
// 新增會員
bool MEMBER::add(string s) {
if (index == MaxNum) return false;
DataBase[index] = s;
index++;
cout << "新增會員" << endl << "編號:" << index - 1 << endl;
return true;
}
// 刪除會員
bool MEMBER::remove(int m) {
if (!exist(m)) return false;
DataBase[m] = "";
writeFile();
return true;
}
// 檢查書籍是否存在
bool BOOK::exist(int book) {
if (book >= index || DataBase[book].i == -1) {
cout << "查無此書" << endl;
return false;
}
return true;
}
// 新增書籍資料
bool BOOK::add(string s, int r) {
if (index == MaxNum) return false;
DataBase[index].i = index;
DataBase[index].name = s;
DataBase[index].rentBy = r;
index++;
cout << "新增書籍" << endl << "編號:" << index - 1 << endl;
return true;
}
// 刪除書籍
bool BOOK::remove(int book) {
if (!exist(book)) return false;
DataBase[book].i = -1;
return true;
}
// 借出書籍
bool BOOK::rent(int man, int book) {
if (!exist(book)) return false;
if (DataBase[book].rentBy != -1) {
cout << "此書已外借!" << endl;
return false;
} else {
DataBase[book].rentBy = man;
return true;
}
}
// 歸還書籍
bool BOOK::back(int man, int book) {
if (!exist(book)) return false;
if (DataBase[book].rentBy != man) {
cout << "此會員並未借此書!" << endl;
return false;
} else {
DataBase[book].rentBy = -1;
return true;
}
}
說明:
這段程式碼管理會員、書籍和DVD的資訊。MEMBER
類別負責會員的新增、刪除、顯示及檢查功能,並能將會員資料寫入檔案;BOOK
類別管理書籍的新增、刪除、借還書籍,且能將書籍資訊儲存到檔案;DVD
類別則擴展書籍管理功能,並加入 DVD 的分級功能。每個類別都提供顯示資料的方法,且支援檢查是否存在相關物件(會員或書籍)。
!!以上內容是跟著第一次學C++第二版這本書一起跟著實作!!
今天完成了這一個專題小實作,利用三天的時間來撰寫執行完畢,蠻有成就感的,希望接下來天可以繼續順利完成!