當前位置:編程學習大全網 - 編程語言 - 求助:實現圖書館借書系統

求助:實現圖書館借書系統

#include <iostream>

#include <string>

using namespace std;

class Book //設置圖書館藏書類,用以封存圖書信息

{

public:

Book (string n, int N, string p) //圖書類構造函數

{

name = n; //設置圖書書名

NO = N; //設置圖書庫存量

publisher = p; //設置圖書出版社

}

void display() //display函數,以顯示圖書信息

{

cout << "書名:" << name << endl;

cout << "目前庫存:" << NO << endl;

cout << "圖書出版社:" << publisher << endl;

cout << endl;

}

//為方便調用,以下數據全部定義為公用

string name; //圖書書名

int NO; //圖書庫存量

string publisher; //圖書出版社

};

//創建圖書館藏書小數據庫,圖書序號等於該對象數組的下標

Book book[6] =

{

Book ("C++ primer", 3, "人民郵電出版社") ,

Book ("Python核心編程", 3, "人民郵電出版社") ,

Book ("Writing clean code", 3, "電子工業出版社") ,

Book ("簡體中文Solaris 10用戶指南", 3, "Sun Microsystems, Inc") ,

Book ("《The C Programming Language》第二版", 3, "機械工業出版社") ,

Book ("計算機程序設計藝術第三版第壹卷:基本算法", 3, "國防工業出版社")

};

void display_all() //顯示圖書館所有圖書,方便讀者借閱

{

int i;

cout << "這是圖書館的所有圖書" << endl;

for (i = 0; i<6; i++)

{

cout << "圖書序號:" << i << endl;

cout << "書名:" << book[i].name << endl;

cout << "目前庫存:" << book[i].NO << endl;

cout << "圖書出版社:" << book[i].publisher << endl;

cout << endl;

}

}

class people

{

public:

people(string nam, int num) //student構造函數

{

name = nam;

number = num;

}

void borrow(int); //定義借書成員函數

void back(int); //定義還書成員函數

private:

string name; //性名

int number; //在圖書館已借圖書數量

};

// student類,用以定義學生信息

class student : public people

{

public:

student(string nam, int num, int gra) : people (nam, num) //student構造函數

{

grade = gra;

}

private:

int grade; //學生年級

};

//teacher類,teacher是student的派生類

class teacher : public people

{

public:

teacher(string nam, int num, string t) : people(nam , num) //派生類構造函數

{

title = t; //教師職稱

}

private:

string title; //教師職稱

};

void people :: borrow (int a) //借書成員函數

{

int i, j; //定義兩個整型變量,以便需要shirt使用

char k; //定義字符型變量以便進行Y/N的判斷

void service() ; //聲明service函數

if (number >= a) //首先進行權限判斷,如果讀者已借書數量不小於他的權限,則提示進行其他操作

{

cout << "根據您的權限,妳最多能借" << a << "本書!您現在不能借書歡迎下次再來" << endl;

cout << "您是否想進行其他操作? (是請輸入y, 退出請輸入n) " << endl;

cin >> k;

if (k == 121)

service ();

if (k == 121)

return;

else if (k = 110)

return;

cout << endl;

}

else

{

display_all() ; //調用display_all函數,輸出所有圖書顯示,方便讀者借閱

cout << "您想借哪本書? 請輸入圖書序號0-5" << endl;

cin >> i;

while (book[i].NO == 0 || i>5 || i<0) //判斷所要借圖書的庫存及輸入的合法性

{

cout << "您輸入的圖書序號錯誤或者所借書庫存不足,請重新輸入.圖書序號是0-5" << endl;

cin >> i;

//提示讀者是否進行其他操作

cout << "您是否想進行其他操作? (是請輸入y, 繼續借書請輸入n) " << endl;

cin >> k;

if (k == 121)

service (); //如果讀者要進行其他操作,則引用service函數,對讀者進行重新引導

if (k == 121)

return; //進行其他操作完畢,直接跳出borrow函數

else

continue; //若讀者選擇繼續借書,則跳出本次循環,進行下壹次循環

}

cout << endl; //此處還行是為了人機界面的美觀

cout << "以下是您要借的書籍的信息" << endl;

book[i].display();

cout << "您想借幾本書?" << endl;

cin>>j;

//判斷讀者的權限、圖書館庫存及輸入的合法性

while ((a-number)<j || book[i].NO<j || j<0 || j>3)

{

cout << "因為妳的權限不夠、數量輸入有誤或者圖書館庫存不足,";

cout << "妳目前不能借這麽多書!請輸入壹個合適的數目." << endl;

cin>>j;

//提示讀者是否進行其他操作

cout << "您是否想進行其他操作? (是請輸入y, 繼續借書請輸入n) " << endl;

cin>>k;

if (k == 121)

service();

if (k == 121)

return;

else

continue;

cout << endl;

}

book[i].NO = book[i].NO - j; //借書完畢,對圖書館的小數據庫從新調整壹下

number = number + j; //借書完畢,讀者已借書籍數量要加上現在借的書數量

cout << endl;

cout << "您在圖書館還可以借 " << a - number << " 本書" << endl;

cout << "《" << book[i].name << "》" << "目前剩余" << book[i].NO << "本" << endl;

}

} //borrow函數結束

void people::back (int a) //還書成員函數

{

int n, m;

char k;

void service() ;

cout << "您要還哪本書" << endl;

cin >> n;

while (book[n].NO = 3) //判斷圖書館庫存,庫存是滿的,那就沒人從這借過這種書而且沒還

{

cout << "您借過這本書嗎?請重新輸入圖書序號. " << endl;

cin>>n;

cout << "您是否想進行其他操作? (是請輸入y, 繼續還書請輸入n) " << endl;

cin>>k;

if (k == 121)

service();

if (k == 121)

return;

else

continue;

cout << endl;

}

while (n>5 || n<0) //判斷讀者所要借的書是否存在

{

cout << "您輸入的圖書序號錯誤,請重新輸入.圖書序號是0-5. " << endl;

cin>>n;

cout << "您是否想進行其他操作? (是請輸入y, 繼續還書請輸入n) " << endl;

cin >> k;

if (k == 121)

service () ;

if (k == 121)

return;

else

continue;

cout << endl;

}

cout << endl; //此處換行是為了人機界面的美觀

cout << "以下是您要借的書籍的信息" << endl;

book[n].display () ;

cout << "妳要還幾本書" << endl;

cin >> m;

//判斷圖書館這種書的庫存是否小於讀者要還的書的數量,及讀者輸入的合法性

while ((3-book[n].NO) <m || m>3)

{

cout << "您有借過這麽多書嗎?請重新輸入." << endl;

cin >> m;

cout << "您是否想進行其他操作? (是請輸入y, 繼續借書請輸入n) " << endl;

cin >> k;

if (k == 121)

service ();

if (k == 121)

return;

else if (k = 110)

continue;

cout << endl;

}

book[n].NO += m; //還書完畢,及時對圖書館的數據庫進行整理

number -= m; //讀者已借書籍數減輕現在所還書籍數量

//以下是壹些給讀者的提示信息

cout << "恭喜!您還書成功!" << endl;

cout << "妳還可以借 " << a-number << " 本書!" << endl;

} //back函數結束

void service () //service函數,完成對讀者的服務、詢問功能

{

int a;

int b;

student stud("ming", 0, 2007); //定義student類的對象stu,並初始化

teacher tea("li", 0, "assistant"); //定義teacher類的對象tea,並初始化

//詢問讀者身份,給出選項

cout << "歡迎來到圖書館,請問您的身份是: (請輸入首數字) " << endl;

cout << "1.教師" << endl;

cout << "2.學生" << endl;

cin >> a;

while (a != 1 && a != 2) //對讀者的錯誤輸入進行提醒

{

cout << "請輸入正確的選項:" << endl;

cin >> a;

}

cout << endl;

cout << "請問您想要: (請輸入首數字) " << endl; //詢問讀者所希望進行的工作,給出選項

cout << "1.借書" << endl;

cout << "2.還書" << endl;

cout << "3.離開借書臺" << endl;

cin >> b;

while (b != 1 && b != 2 && b != 3) //對讀者的錯誤輸入進行提醒

{

cout << "請輸入正確的選項" << endl;

cin >> b;

}

cout << endl;

if (a == 1) //如果讀者是老師,則進行以下操作

{

if (b == 1)

{

tea.borrow(6); //調用借書函數

}

else if (b == 2)

{

tea.back(6); //調用還書函數

}

else

{

cout << " = ^_^ = 謝謝您的光臨!\n" << endl; //退出

}

}

else if (a == 2) //如果讀者是學生,則進行以下操作

{

if (b == 1)

{

stud.borrow(4);

}

else if (b == 2)

{

stud.back(4);

}

else

{

cout << " = ^_^ = 謝謝您的光臨!\n" << endl;

return;

}

}

cout << endl;

} //service函數結束

//主函數

int main()

{

char k;

service() ;

while (1) //操作完畢,提示讀者是否進行其他操作。

{

cout << "是否繼續進行其他操作?";

cout << " (進行其他操作請輸入y, 退出請輸入n) " << endl;

cin >> k;

cout << endl;

if (k == 121)

service ();

else

cout << " = ^_^ = 謝謝您的光臨!\n" << endl;

break;

}

return 0;

}

  • 上一篇:簡單易用的數據庫哪個比較好?
  • 下一篇:都市系統小說!
  • copyright 2024編程學習大全網