1. 程式人生 > >簡易圖書館借還書系統(核心部分)

簡易圖書館借還書系統(核心部分)

【第一題】
源程式:
/*假設圖書館的圖書包含書名、編號和作者屬性,讀者包含姓名和借書證號屬性,每個讀者最多可借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
系統已經退出!


請按任意鍵繼續. . .