簡易圖書館借還書系統(核心部分)
【第一題】
源程式:
/*假設圖書館的圖書包含書名、編號和作者屬性,讀者包含姓名和借書證號屬性,每個讀者最多可借5本書。設計一個類object,從它派生出圖書類Book和讀者類Reader,在Reader類中有一個
rentbook()成員函式用於借閱圖書。主函式進行測試。說明:這是一個簡單的借閱過程。借閱時,假設要借閱的圖書是存在的。提示:
(1)在基類object中定義字元陣列(或string型別)的name和整型資料no,這兩個資料成員被Book類繼承後,用於表示書名和編號,這兩個資料成員被Reader類繼承後,
用於表示讀者姓名和借書證號;(2)Book類新增資料成員:作者(字元陣列或string型別);Reader類新增資料成員:目前借書的數量(整型)、所借圖書的資訊
(可定義成Book類物件陣列,Book rent[5]);(3)Reader類中的成員函式rentbook()的形參可以設定為Book類物件的引用,主函式中每呼叫一次rentbook(),表示借
閱一本書,所以rentbook()函式體程式碼:{rent[top]=b; top++;}。
*/
#include<iostream> #include<string> using namespace std; class object { protected: string name; int no; public: object(){} object(string ch,int a):name(ch),no(a) {} }; class Book:public object { private: string author; public: friend ostream &operator<<(ostream& out,Book &book) { out<<"書名:"<<book.name<<"\t編號:"<<book.no<<"\t作者:"<<book.author<<endl; return out; } Book():object(){} Book(string ch,int a,string ch1):object(ch,a) { author=ch1; ch="《"+ch; ch=ch+"》"; cout<<"恭喜您,借閱成功!\n該書資訊為:"<<endl <<"------------------------------------------\n" <<"書名:"<<ch<<endl <<"編號為:"<<a<<endl <<"作者:"<<ch1<<endl <<"------------------------------------------\n"; } }; class Reader:public object { int num; Book rent[5]; static int top; public: Reader():object(),num(){} Reader(string ch,int a,int c):object(ch,a),num(c) { cout<<"讀者為:"<<ch<<endl; cout<<"借書證號為:"<<a<<endl; cout<<"想要借書的數量為:"<<c<<endl; cout<<"請輸入這"<<c<<"本書的書名、編號、作者:"<<endl; } void rentbook(Book &b) { this->rent[top]=b; top++; } void show() { cout<<"讀者目前持有的圖書:\n" <<"------------------------------------------\n"; for(int i=0;i<top;i++) cout<<this->rent[i]; cout<<"------------------------------------------\n"; } }; int Reader::top=0; int main() { Reader database[10]; int top=0; string a,c,key("123456"),keyin; char in_choose,system_choose='Y'; int b,d; do{ int Reader::top=0; printf("請輸入您的姓名和借書證號:\n"); cin>>a>>b; printf("輸入您的密碼:(預設密碼123456)\n"); while(1) { cin>>keyin; if(key!=keyin) cout<<"密碼錯誤,請重試"<<endl; else { cout<<"密碼正確\n"<<endl; break; } } cout<<"請輸入想要借書的數量:"<<endl; cin>>d; Reader reader(a,b,d); database[top++]=reader; for(int i=0;i<d;i++) { cout<<"請輸入書名和編號和作者:"<<endl; cin>>a>>b>>c; Book temp(a,b,c); reader.rentbook(temp); } reader.show(); cout<<"--->下一個讀者請按請按Y\n--->任意鍵退出系統\t"<<endl; cin>>in_choose; }while (in_choose==system_choose); cout<<"系統已經退出!"<<endl; return 0; }
執行結果:
請輸入您的姓名和借書證號:
于衡 20175962
輸入您的密碼:(預設密碼123456)
337
密碼錯誤,請重試
123456
密碼正確
請輸入想要借書的數量:
2
讀者為:于衡
借書證號為:20175962
想要借書的數量為:2
請輸入這2本書的書名、編號、作者:
請輸入書名和編號和作者:
活著 1 餘華
恭喜您,借閱成功!
該書資訊為:
------------------------------------------
書名:《活著》
編號為:1
作者:餘華
------------------------------------------
請輸入書名和編號和作者:
感性的蝴蝶 2 林清玄
恭喜您,借閱成功!
該書資訊為:
------------------------------------------
書名:《感性的蝴蝶》
編號為:2
作者:林清玄
------------------------------------------
讀者目前持有的圖書:
------------------------------------------
書名:活著 編號:1 作者:餘華
書名:感性的蝴蝶 編號:2 作者:林清玄
------------------------------------------
下一個讀者請按請按Y
任意鍵退出系統
Y
請輸入您的姓名和借書證號:
李雨 337
輸入您的密碼:(預設密碼123456)
123456
密碼正確
請輸入想要借書的數量:
1
讀者為:李雨
借書證號為:337
想要借書的數量為:1
請輸入這1本書的書名、編號、作者:
請輸入書名和編號和作者:
量子史話 4 曹天元
恭喜您,借閱成功!
該書資訊為:
------------------------------------------
書名:《量子史話》
編號為:4
作者:曹天元
------------------------------------------
讀者目前持有的圖書:
------------------------------------------
書名:量子史話 編號:4 作者:曹天元
------------------------------------------
--->下一個讀者請按請按Y
--->任意鍵退出系統
3
系統已經退出!
請按任意鍵繼續. . .