日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++图书馆管理系统 详细代码

發布時間:2024/3/12 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++图书馆管理系统 详细代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用容器做的,這個是我的弱項,但大體功能都實現。

圖書館信息系統,是一個單用戶系統,所以不用考慮有多少種角色。
實現要點:

1、對 圖書:
顯示圖書館里的全部書籍
按書名查詢
按作者查詢
按分類查詢
對圖書的增刪改
從文件讀入全部圖書
把容器里的全部圖書寫回文件中

2、對 讀者:(與圖書類似)
對 借書、還書:
借書:唯一編號,讀者id,書籍id,借書時間,標志
還書:唯一編號,讀者id,書籍id,還書時間,標志
查詢某用戶的全部借書還書記錄
查詢某用戶 在某時間段 的全部借書還書記錄
查詢某用戶全部未還書籍
查詢某本書被哪些人借閱過

框架樣例:
class Book {
private:
unsigned int id; /// 書籍編號
string name; /// 書名
… 等等屬性,請自行補充完善

public:
Book() {
… 請自行補充完善
}

Book( 有參數的構造函數 ) {.... 請自行補充完善

}

增、刪(標記刪除、不實際刪除)、改, operator << operator >> 查詢:按書名、按作者、按分類、...

等等等等成員函數
}

class Reader {
private:
unsigned int id; /// 讀者編號
string name; /// 姓名
… 等等屬性,請自行補充完善

public:
Reader() {
… 請自行補充完善
}

Reader( 有參數的構造函數 ) {.... 請自行補充完善

}

增、刪(標記刪除、不實際刪除)、改 operator << operator >> 查詢:按姓名、按電話號碼、按身份、...等等等等成員函數

}

/// 借書、還書
class borrowReturn {
private:
unsigned int id; /// 唯一編號、主鍵
unsigned int readerId; /// 讀者編號
unsigned int BookId; /// 書籍編號
日期時間類型 datetime; /// 借書 或 還書 的時間

... 等等屬性,請自行補充完善

public:
borrowReturn () {
… 請自行補充完善
}

borrowReturn ( 有參數的構造函數 ) {.... 請自行補充完善 }增、刪(標記刪除、不實際刪除)、改 operator << operator >> 查詢:按時間查、按書籍編號查、按讀者編號查、...等等等等成員函數

}

分別定義容器,存放:
全部書籍
全部讀者
全部借還書記錄

int main() {
在進入程序后,首先:
1. 讀入 書籍文件 里的全部記錄,存入 書籍容器
2. 讀入 讀者文件 里的全部記錄,存入 讀者容器
3. 讀入 全部借還書文件 里的全部記錄,存入 借還書容器

開始你的循環:{菜單-動作 }在退出程序前: 1. 書籍容器 里的全部記錄,寫回 書籍文件 2. 讀者容器 里的全部記錄,寫回 讀者文件 3. 借還書容器 的全部記錄,寫回 借還書文件 return 0;

}

/***項目名稱:圖書管理系統*語言:C++**/#include <iostream> #include <fstream> #include <string> #include <iomanip> #include <vector> #include <stdlib.h> #include <string.h> using namespace std;//構建圖書類類 class Book { public:int b_sum=0; //圖書數string key; //管理員密碼vector<Book> b_array; //記錄圖書類void B_clear(); //清理已有圖書信息void B_Read_file(); //讀取圖書文件void B_Save_file(); //保存圖書文件bool Book_add(); //添加圖書信息bool Book_mod(); //修改圖書信息bool Book_del(); //刪除圖書信息bool Personnel_System(); //登錄char b_num[15]; //編號char b_name[30]; //書名char author[20]; //作者char ISBN[30]; //ISBNint b_quantity; //圖書數量bool B_SetInto(); //設置圖書信息friend istream& operator>>(istream& in, Book& cp); //提取運算符重載friend ostream& operator<<(ostream& out, Book& cp); //插入運算符重載bool B_If_match(char p[30]);void b_display(); //圖書信息顯示bool Book_search();void Deletenum();};//設置圖書信息 bool Book::B_SetInto() {char temp[15];cout << "請輸入圖書號:(輸入+退出)";cin >> temp;if (temp[0] == '+')return false;strcpy(b_num, temp);cout << "書名:";cin >> b_name;cout << "作者:";cin >> author;cout << "ISBN";cin >> ISBN;cout << "數量:";cin >> b_quantity;return true; }//提取運算符重載 istream& operator>>(istream& in, Book& cp) {in >> cp.b_num >> cp.b_name >> cp.author >> cp.ISBN >> cp.b_quantity;return in; }//插入運算符重載 ostream& operator<<(ostream& out, Book& cp) {out << cp.b_num <<' '<< cp.b_name <<' '<< cp.author <<' '<< cp.ISBN <<' '<< cp.b_quantity<<'\n';return out; }//判斷圖書號是否匹配 bool Book::B_If_match(char p[30]) {return (!strcmp(b_num, p)|| !strcmp(b_name, p)); }//顯示函數 void Book:: b_display() {cout << setiosflags(ios::left) << setw(12) << b_num << " " << setw(30) << b_name << " " << setw(10) << author << endl<< setw(20) << ISBN << " " <<"剩余數量:"<< setw(3) << b_quantity << endl; }//清理已有圖書信息 void Book::B_clear() {b_array.clear();b_sum = 0; }//讀取圖書文件 void Book::B_Read_file() {ifstream b_file;b_file.open("Book_Information.txt");if (!b_file.is_open()){cerr << "文件\"Book_Information.txt\"無法打開\n";exit(1);}while (!b_file.eof()){Book _book;b_file >> _book;b_array.push_back(_book);b_sum++;};b_sum--;b_file.close(); }//保存圖書文件 void Book::B_Save_file() {ofstream b_file("Book_Information.txt");if (!b_file){cerr << "文件\"Book_Information.txt\"無法打開!\n";exit(1);}int i = -1;while (++i < b_sum){b_file << b_array[i];}b_file.close(); }//添加圖書信息 bool Book::Book_add() {B_Read_file();Book _book;cout << "請進行信息錄入。按“+”結束!\n";do{b_array.push_back(_book);} while (b_array[b_sum++].B_SetInto());b_sum--;b_array.pop_back();return true; }//修改圖書信息 bool Book::Book_mod() {char _b_num[30];B_Read_file();cout << "請輸入您要修改的圖書信息的圖書號或書名:";cin >> _b_num;for (int i = 0; i < b_sum; i++){if (b_array[i].B_If_match(_b_num)){cout << "該圖書的原信息為:\n";b_array[i].b_display();cout << "請輸入正確信息! \n";b_array[i].B_SetInto();b_sum++; //保持總航線數不變return true;}if (i == b_sum){cout << "抱歉!您要修改的信息不存在! " << endl;return false;}break;}B_Save_file(); }void Book::Deletenum(){int n;cout<<"請輸入刪除的數量:";cin>>n;b_quantity -=n;}//刪除圖書信息 bool Book::Book_del() {char _b_num[15];B_Read_file();cout << "請輸入您要刪除的圖書信息的圖書號:";cin >> _b_num;for (int i = 0; i < b_sum; i++){if (b_array[i].B_If_match(_b_num)){cout << "該圖書的原信息為:\n";b_array[i].b_display();b_array[i].Deletenum(); b_sum--;return true;}if (i == b_sum){cout << "抱歉!您要刪除的信息不存在! " << endl;return false;}}B_Save_file(); }//查詢圖書信息 bool Book::Book_search() {char _b_num[30];B_Read_file();cout << "請輸入您要查詢的圖書信息的圖書號或書名:";cin >> _b_num;for (int i = 0; i < b_sum; i++){if (b_array[i].B_If_match(_b_num)){cout << "該圖書的信息為:\n";b_array[i].b_display();return true;}if (i == b_sum){cout << "抱歉!您要查詢的信息不存在! " << endl;return false;}break;}B_Save_file(); }//圖書管理系統 bool Book::Personnel_System() {while (1){int menu_options;cout << "請輸入登錄密碼:";cin >> key;if (key == "123456") //登錄密碼while (1){cout << endl<< "***** 主菜單: **********" << endl<< "***** 工作人員 " << endl<< "***** 1——添加圖書信息 "<< "2——修改圖書信息" << endl<< "***** 3——刪除圖書信息 "<< "4——查詢圖書信息" << endl<< "***** 5——退出登錄"<<endl<< "你需要做什么?(1-5)" << endl;cin >> menu_options;switch (menu_options){case 1:Book_add(); break;case 2:Book_mod(); break;case 3:Book_del(); break;case 4:Book_search(); break;case 5:return false;default:cout << "輸入錯誤,請重新選擇" << endl; break;}if (!(menu_options == 4)){cout << "是否確認? 《確認/(Y/y)》 《取消/(N/n)》" << endl;char yn;do{cin >> yn;} while (!(yn == 'Y' || yn == 'y' || yn == 'N' || yn == 'n'));if (yn == 'Y' || yn == 'y'){if (menu_options == 1|| menu_options == 2 || menu_options == 3){B_Save_file();}cout << "操作成功";}}B_clear();}else{cout << "密碼錯誤!" << endl;continue;}}return true; }//界面初始化函數 void login_init() {system("cls");cout << "\n>>>>>>>>>>歡迎進入圖書管理系統<<<<<<<<<<" << endl<< "請輸入您的登錄方式" << endl<< "1——讀者管理 2——圖書管理 3——借閱管理 4--退出系統" << endl; }//構建讀者類 class Student { public:int s_sum=0; //學生數string key; //管理員密碼vector<Student> s_array; //記錄學生類void S_clear(); //清理已有學生信息void S_Read_file(); //讀取學生文件void S_Save_file(); //保存學生文件bool Student_add(); //添加學生信息bool Student_mod(); //修改學生信息bool Student_del(); //刪除學生信息bool Student_search();bool Student_System(); //學生登錄bool Personnel_System(); //工作人員登錄void login_init(); //登錄界面初始化Student(){memset(s_num, 0, sizeof(s_num));memset(s_name,0, sizeof(s_name));memset(tell, 0, sizeof(tell, 0, sizeof(tell)));borrow_max = 0;borrow_quantity = 0;memset(borrow_books, 0, sizeof(borrow_books));}char s_num[15]; //讀者編號char s_name[10]; //姓名char tell[30]; //電話號碼 int borrow_max; //最大借閱數量int borrow_quantity; //借閱數量char borrow_books[10][30]; //借閱圖書bool S_SetInto(); //設置學生信息friend istream& operator>>(istream& in, Student& cp); //提取運算符重載friend ostream& operator<<(ostream& out, Student& cp); //插入運算符重載bool S_If_match(char p[30]); //判斷學號是否匹配void s_display(); //顯示學生信息void Deletenum();};void Student::Deletenum(){borrow_quantity -=0;}//設置學生信息 bool Student::S_SetInto() {char temp[15];cout << "請輸入學號:(輸入+退出)";cin >> temp;if (temp[0] == '+'){return false;}strcpy(s_num, temp);cout << "學生姓名:";cin >> s_name;cout << "電話號碼:";cin >> tell;do{cout << "最大借閱數量(1-10):";cin >> borrow_max;}while (borrow_max <= 0 || borrow_max > 10);return true; }//提取運算符重載 istream& operator>>(istream& in, Student& cp) {in >> cp.s_num >> cp.s_name >> cp.tell >> cp.borrow_max >> cp.borrow_quantity;for (int i = 0; i < cp.borrow_quantity; i++){in >> cp.borrow_books[i];}return in; }//插入運算符重載 ostream& operator<<(ostream& out, Student& cp) {out << cp.s_num << ' ' << cp.s_name << ' ' << cp.tell << ' ' << cp.borrow_max << ' ' << cp.borrow_quantity << ' ';for (int i = 0; i < 10; i++){out << cp.borrow_books[i] << ' ';if (i == 9){out << '\n';}}return out; }//判斷學號是否匹配 bool Student::S_If_match(char p[30]) {return (!strcmp(s_num, p)||!strcmp(s_name, p)); }//顯示學生信息 void Student::s_display() //顯示 {cout << setiosflags(ios::left) << "學號:" << setw(12) << s_num << " " << setw(10) << s_name << " " << setw(25) << tell << endl<< "最大借閱量" << borrow_max << endl; }//清理已有學生信息 void Student::S_clear() {s_array.clear();s_sum = 0; }//讀取學生文件 void Student::S_Read_file() {ifstream s_file;s_file.open("Student_Information.txt");if (!s_file.is_open()){cerr << "文件\"Student_Information.txt\"無法打開\n";exit(1);}while (!s_file.eof()){Student stu;s_file >> stu;s_array.push_back(stu);s_sum++;}s_sum--;s_file.close(); }//保存學生文件 void Student::S_Save_file() {ofstream s_file("Student_Information.txt");if (!s_file){cerr << "文件\"Student_Information.txt\"無法打開!\n";exit(1);}int i = -1;while (++i < s_sum){s_file << s_array[i];}s_file.close(); }//添加學生信息 bool Student::Student_add() {S_Read_file();Student _stu;cout << "請進行信息錄入。按“+”結束!\n";do{s_array.push_back(_stu);}while (s_array[s_sum++].S_SetInto());s_sum--;s_array.pop_back();return true; }//修改學生信息 bool Student::Student_mod() {char _s_num[15];S_Read_file();cout << "請輸入您要修改的學生信息的學號或名字:";cin >> _s_num;int i = 0;for (; i < s_sum; i++){if (s_array[i].S_If_match(_s_num)){cout << "該同學的原信息為:\n";s_array[i].s_display();cout << "請輸入正確信息! \n";s_array[i].S_SetInto();s_sum++; //保持學生數return true;}if (i == s_sum){cout << "抱歉!您要修改的信息不存在! " << endl;return false;}break;}S_Save_file(); }//刪除學生信息 bool Student::Student_del() {char _s_num[15];S_Read_file();cout << "請輸入您要刪除的學生信息的學號:";cin >> _s_num;for (int i = 0; i < s_sum; i++){if (s_array[i].S_If_match(_s_num)){cout << "該同學的原信息為:\n";s_array[i].s_display();s_array[i].Deletenum(); s_sum--;return true;}if (i == s_sum){cout << "抱歉!您要刪除的信息不存在! " << endl;return false;}}S_Save_file(); }//查詢學生信息 bool Student::Student_search() {char _s_num[15];S_Read_file();cout << "請輸入您要查詢的學生信息的學號或名字:";cin >> _s_num;int i = 0;for (; i < s_sum; i++){if (s_array[i].S_If_match(_s_num)){cout << "該同學的原信息為:\n";s_array[i].s_display();return true;}if (i == s_sum){cout << "抱歉!您要修改的信息不存在! " << endl;return false;}break;}S_Save_file(); }//讀者管理系統 bool Student::Personnel_System() {while (1){int menu_options;cout << "請輸入登錄密碼:";cin >> key;if (key == "123456") //登錄密碼while (1){cout << endl<< "***** 主菜單: **********" << endl<< "***** 工作人員 " << endl<< "***** 1——添加學生信息 "<< "2——修改學生信息" << endl<< "***** 3——刪除學生信息 "<< "4——查詢學生信息" << endl<< "***** 5——退出登錄"<<endl<< "你需要做什么?(1-9)" << endl;cin >> menu_options;switch (menu_options){case 1:Student_add(); break;case 2:Student_mod(); break;case 3:Student_del(); break;case 4:Student_search(); break;case 5:return false;default:cout << "輸入錯誤,請重新選擇" << endl; break;}if (!(menu_options == 4)){cout << "是否確認? 《確認/(Y/y)》 《取消/(N/n)》" << endl;char yn;do{cin >> yn;} while (!(yn == 'Y' || yn == 'y' || yn == 'N' || yn == 'n'));if (yn == 'Y' || yn == 'y'){if (menu_options == 1 || menu_options == 2 || menu_options == 3){S_Save_file();}cout << "操作成功";}}S_clear();}else{cout << "密碼錯誤!" << endl;continue;}}return true; }class management:public Student,public Book { public:string key; bool borrow_book(Student& cp);bool return_book(Student& cp);bool Student_System();bool s_login(Student& cp);char book[30];//書籍編號 char stu[30];//學生編號 char da[30];//日期 friend istream& operator>>(istream& in, management& cp);friend ostream& operator<<(ostream& out, management& cp);vector<management> c_array;//信息類 void c_Read_file();void c_Save_file();bool c_SetInto(); bool c_add();int c_sum=0;bool c_If_match(char p[30]);void c_display();int a;//標記借出為0,還為1 bool c_search();};istream& operator>>(istream& in, management& cp) {in >> cp.book >> cp.stu >> cp.da >>cp.a;return in; }//插入運算符重載 ostream& operator<<(ostream& out, management& cp) {out << cp.book <<' '<< cp.stu <<' '<< cp.da <<' '<<cp.a<<'\n';return out; }//讀取圖書文件 void management::c_Read_file() {ifstream c_file;c_file.open("S_Information.txt");if (!c_file.is_open()){cerr << "文件\"S_Information.txt\"無法打開\n";exit(1);}while (!c_file.eof()){management _book;c_file >> _book;c_array.push_back(_book);c_sum++;};c_sum--;c_file.close(); }//保存圖書文件 void management::c_Save_file() {ofstream c_file("S_Information.txt");if (!c_file){cerr << "文件\"S_Information.txt\"無法打開!\n";exit(1);}int i = -1;while (++i < c_sum){c_file << c_array[i];}c_file.close(); }//學生憑學號登錄 bool management::s_login(Student& cp) {char _s_num[15];S_Read_file();cout << "請輸入您的學號:";cin >> _s_num;for (int i = 0; i < s_sum; i++){if (s_array[i].S_If_match(_s_num)){cp=s_array[i];cout << "歡迎您," << cp.s_name << "同學!" << endl;S_clear();return true;}}S_clear();return false; }//設置圖書信息 bool management::c_SetInto() {char temp[15];cout << "請輸入書籍編號:(輸入+退出)";cin >> temp;if (temp[0] == '+')return false;strcpy(book, temp);cout << "讀者編號:";cin >> stu;cout << "日期:";cin >> da;cout<<"0借1還";cin>>a;return true; }bool management::c_add() {c_Read_file();management _book;cout << "請進行信息錄入。按“+”結束!\n";do{c_array.push_back(_book);} while (c_array[c_sum++].c_SetInto());c_sum--;c_array.pop_back();return true; }//判斷圖書號是否匹配 bool management::c_If_match(char p[30]) {return (!strcmp(book, p)); }//顯示函數 void management:: c_display() {cout << setiosflags(ios::left) << setw(12) << book<< " " << setw(30) << stu << " " << setw(10) << da << endl<< setw(20) << a<< endl;}//查詢jieyue信息 bool management::c_search() {char _s_num[15];c_Read_file();cout << "請輸入您要查的書籍編號:";cin >> _s_num;int i = 0;for (; i < c_sum; i++){if (c_array[i].c_If_match(_s_num)){cout << "借閱記錄:\n";c_array[i].c_display();return true;}if (i == c_sum){cout << "抱歉!您要修改的信息不存在! " << endl;return false;}break;}c_Save_file(); }//借書 bool management::borrow_book(Student& cp) {S_Read_file();B_Read_file();c_Read_file();char _b_num[30];cout << "請輸入想借圖書的圖書號或書名:";cin >> _b_num;for (int i = 0; i < b_sum; i++){if (b_array[i].B_If_match(_b_num)){cout << "該圖書的信息為:\n";b_array[i].b_display();b_array[i].b_quantity--;c_add();c_Save_file(); if (cp.borrow_quantity > cp.borrow_max - 1){cout << "抱歉,您已達借書最大上限!" << endl;return false;}strcpy(cp.borrow_books[cp.borrow_quantity++],b_array[i].b_name);for (int j = 0; j < s_sum; j++){if (s_array[j].S_If_match(cp.s_num)){s_array[j]=cp;return true;}}}if (i == b_sum - 1){cout << "抱歉!您想借的圖書未收錄! " << endl;return false;}}}//還書 bool management::return_book(Student& cp) {S_Read_file();B_Read_file();char _b_num[30];cout << "請輸入想還圖書的圖書號或書名:";cin >> _b_num;for (int i = 0; i < b_sum; i++){if (b_array[i].B_If_match(_b_num)){cout << "該圖書的信息為:\n";b_array[i].b_display();b_array[i].b_quantity++;c_add();c_Save_file(); for (int k = 0; k < cp.borrow_quantity; k++){if (!strcmp(cp.borrow_books[k],b_array[i].b_name)){for (int m = k; m < cp.borrow_quantity-1; m++){strcpy(cp.borrow_books[m], cp.borrow_books[m+1]);}strcpy(cp.borrow_books[--cp.borrow_quantity], ""); // cp.borrow_quantity--;break;}}for (int j = 0; j < s_sum; j++){if (s_array[j].S_If_match(cp.s_num)){s_array[j] = cp;return true;}}}if (i == b_sum){cout << "抱歉!您想還的圖書未收錄! " << endl;return false;}} }//學生登錄 bool management::Student_System() {while (1){ Student cp;bool key = s_login(cp);while (key){int menu_options;cout << "***** 主菜單: **********" << endl<< "***** 學生: " << endl<< "***** 1——借閱圖書" << endl<< "***** 2——歸還圖書" << endl<< "***** 3——按學號查詢書籍信息" << endl<< "***** 4——退出登錄" << endl<< "你需要做什么?(選擇1-4)" << endl;cin >> menu_options;switch (menu_options){case 1:borrow_book(cp); break;case 2:return_book(cp); break;case 3:c_search();break;case 4:return false;}if (menu_options == 1 || menu_options == 2){cout << "是否確認? 《確認/(Y/y)》 《取消/(N/n)》" << endl;char yn;do{cin >> yn;} while (!(yn == 'Y' || yn == 'y' || yn == 'N' || yn == 'n'));if (yn == 'Y' || yn == 'y'){cout << "操作成功!" << endl;S_Save_file();B_Save_file();}}S_clear();B_clear();}cout << "未找到您的信息!" << endl;}return true; }//主函數 int main() {Book xiangnan;Student duzhe; management mag;//若文件不存在,則新建文件//存放學生信息ofstream Student_Information("Student_Information.txt", ios::app);if (!Student_Information){cerr << "文件\"flight information.dat\"無法打開!\n";exit(1);}Student_Information.close();//存放圖書信息ofstream Book_Information("Book_Information.txt", ios::app);if (!Book_Information){cerr << "文件\"flight information.dat\"無法打開!\n";exit(1);}Book_Information.close();ofstream S_Information("S_Information.txt", ios::app);if (!S_Information){cerr << "文件\"flight information.dat\"無法打開!\n";exit(1);}S_Information.close();int dlry; //登陸人員while (1){login_init(); //界面初始化cin >> dlry;if (dlry == 1){duzhe.Personnel_System();}else if (dlry == 2){xiangnan.Personnel_System();}else if (dlry == 3){mag.Student_System();}else if (dlry == 4){return 0;}else{cout << "輸入錯誤,請重新選擇!" << endl;}}return 0; }

總結

以上是生活随笔為你收集整理的C++图书馆管理系统 详细代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。