欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++圖書管理系統(tǒng)程序源代碼

 更新時間:2022年03月12日 11:55:32   作者:CN2696  
這篇文章主要為大家詳細介紹了C++圖書管理系統(tǒng)程序源代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++圖書管理系統(tǒng)程序的具體代碼,供大家參考,具體內(nèi)容如下

大一期末c++綜合實驗,功能基本都實現(xiàn)了,但是代碼寫的有些繁瑣,還有很大的優(yōu)化空間,僅供參考。

實驗要求

實驗目的:

1、能夠綜合運用面向對象程序設計方法,設計實現(xiàn)一個相對完整信息管理應用程序。
2、能夠適當進行題目分析、實驗設計、核心代碼描述、實驗結果分析等。

實驗:設計并編寫一個C++風格應用程序,模擬一個圖書管理系統(tǒng)應用程序,支持系統(tǒng)用戶的圖書借閱、圖書管理、用戶管理等功能。圖書借閱管理主要包括圖書借閱、圖書歸還、借閱信息查看等功能。圖書管理主要包括圖書的增加、刪除、修改、查看、統(tǒng)計等功能。用戶管理主要包括用戶注冊、登錄、修改密碼、修改個人信息、設置用戶類型等功能。

具體要求:

1、定義圖書管理系統(tǒng)中的Book書目類(還可以定義User用戶類、Log圖書借還日志類等)。

2、合理應用類的繼承性進行館藏資源的繼承性定義,可分為書、碟片、電子資源等(或將系統(tǒng)用戶分為讀者、圖書管理員、系統(tǒng)管理員)。

3、根據(jù)不同類型用戶,登錄系統(tǒng)顯示不同的用戶功能菜單,實現(xiàn)不同的操作處理,如學生與教師所借閱書的數(shù)量和天數(shù)均不相同(或考慮圖書館中多種館藏資源支持的用戶操作有所區(qū)別)。

4、增加異常處理,在借閱圖書時,已到所能借閱圖書數(shù)量的最大數(shù)量給予提示;歸還圖書時,圖書已超期需要繳納罰款。

5、通過重載運算符“<<”和“>>”方便圖書信息、讀者信息錄入等操作,并實現(xiàn)將館藏圖書信息、借閱記錄等保存到磁盤,形成圖書借還日志文件。

6、擴展實驗:可嘗試使用MFC可視化界面提高用戶操作方便性和友好性。

程序源代碼

#include<iostream>
#include<cstring>
#include<ctime>
#include<fstream>//文件輸入輸出
#include<iomanip>//控制輸入輸出格式
#pragma warning(disable:4996)//消除strcpy不安全的錯誤提示
#define kouling2 "654321"
using namespace std;
class tt{//系統(tǒng)當前時間
public:
? ? int year;
? ? int month;
? ? int day;
? ? int hours;
? ? int minutes;
? ? int seconds;
? ? tt() {}
};
tt system_time()//獲取當前時間
{
? ? tt pp;
? ? time_t nowtime;
? ? struct tm* p;
? ? time(&nowtime);
? ? p = localtime(&nowtime);
? ? pp.year = p->tm_year + 1900;
? ? pp.month = p->tm_mon + 1;
? ? pp.day = p->tm_mday;
? ? pp.hours = p->tm_hour;
? ? pp.minutes = p->tm_min;
? ? pp.seconds = p->tm_sec;
? ? return pp;
}
class Log;
class Book {//書目類
protected:
? ? char leixing[50];//書的類型,分為紙質圖書,碟片,電子書
? ? int no;//編號
? ? char name[50];//書名
? ? char author[50];//作者
? ? char press[50];//出版社
? ? char price[50];//價格
? ? int state;//圖書是否在架,1為在架,0為借出
public:
? ? Book(){}
? ? friend Log;
? ? void set_name(char a[])//設置書名
? ? {
? ? ? ? strcpy(name, a);
? ? }
? ? void set_author(char a[])//設置作者
? ? {
? ? ? ? strcpy(author, a);
? ? }
? ? void set_press(char a[])//設置出版社
? ? {
? ? ? ? strcpy(press, a);
? ? }
? ? void set_price(char a[])//設置價格
? ? {
? ? ? ? strcpy(price, a);
? ? }
? ? void set_no(int a)//設置編號
? ? {
? ? ? ? no = a;
? ? }
? ? void set_state(int a)//設置圖書狀態(tài)
? ? {
? ? ? ? state = a;
? ? }
? ? char *get_name()//獲取書名
? ? {
? ? ? ? return name;
? ? }
? ? char *get_author()//獲取作者
? ? {
? ? ? ? return author;
? ? }
? ? char* get_press()//獲取出版社
? ? {
? ? ? ? return press;
? ? }
? ? char* get_price()//獲取價格
? ? {
? ? ? ? return price;
? ? }
? ? int get_no()//獲取編號
? ? {
? ? ? ? return no;
? ? }
? ? int get_state()//獲取圖書狀態(tài)
? ? {
? ? ? ? return state;
? ? }
? ? int chongfu_no(int no1)//判斷編號是否重復,返回1為重復,0為不重復
? ? {
? ? ? ? char leixing[100][50];//圖書類型
? ? ? ? int x[100];//圖書編號
? ? ? ? char c[100][50];//圖書書名
? ? ? ? char d[100][50];//圖書作者
? ? ? ? char e[100][50];//圖書出版社
? ? ? ? char f[100][20];//價格
? ? ? ? int yy[100];//狀態(tài)
? ? ? ? int i;
? ? ? ? fstream in;
? ? ? ? in.open("Book.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())//判斷是否到文件末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> leixing[i] >> x[i] >> c[i] >> d[i] >> e[i] >> f[i] >> yy[i];//讀入圖書信息
? ? ? ? ? ? if (no1 == x[i])//編號已存在
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "增加圖書失敗,該編號已存在!" << endl;
? ? ? ? ? ? ? ? return 1;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? in.close();
? ? ? ? return 0;
? ? }
};
class User {//用戶類
protected:
? ? char name[20];//用戶名
? ? char password[20];//密碼
public:
? ? User(){}
? ? friend Log;
? ? void set_name(char a[])//設置用戶名
? ? {
? ? ? ? strcpy(name, a);
? ? }
? ? void set_password(char a[])//設置密碼
? ? {
? ? ? ? strcpy(password, a);
? ? }
? ? int chongfu_name(char a[])//檢查用戶名是否已存在,返回1為已存在
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//已注冊的用戶量
? ? ? ? char d[100][50];//已注冊的用戶類型
? ? ? ? char e[100][50];//已注冊的用戶名
? ? ? ? char f[100][50];//已注冊的密碼
? ? ? ? fstream in;
? ? ? ? in.open("User.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())//判斷是否到文件末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> d[i];
? ? ? ? ? ? in >> e[i];
? ? ? ? ? ? in >> f[i];
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? in.close();
? ? ? ? for (i = 0;i<num; i++)
? ? ? ? {
? ? ? ? ? ? if (strcmp(a, e[i]) == 0)//用戶名已存在
? ? ? ? ? ? ? ? return 1;
? ? ? ? }
? ? ? ? return 0;
? ? }
? ? void change_information(char a[],int n)//修改用戶名,n為1是改用戶名,2是改密碼
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//已注冊的用戶量
? ? ? ? char d[100][20];//已注冊的用戶類型
? ? ? ? char e[100][20];//已注冊的用戶名
? ? ? ? char f[100][20];//已注冊的密碼
? ? ? ? fstream in;
? ? ? ? in.open("User.text", ios::in);
? ? ? ? for (i = 0;; i++)//獲取已注冊的用戶信息
? ? ? ? {
? ? ? ? ? ? if (in.eof())//判斷是否到文件末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> d[i];
? ? ? ? ? ? in >> e[i];
? ? ? ? ? ? in >> f[i]; ??
? ? ? ? ? ? if (strcmp(e[i], name) == 0)//找到要修改的用戶
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (n == 1)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? memset(name, '\0', sizeof(name));//清空數(shù)組
? ? ? ? ? ? ? ? ? ? strcpy(name, a);
? ? ? ? ? ? ? ? ? ? memset(e[i], '\0', sizeof(e[i]));//清空數(shù)組
? ? ? ? ? ? ? ? ? ? strcpy(e[i], a);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (n == 2)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? memset(password, '\0', sizeof(password));//清空數(shù)組
? ? ? ? ? ? ? ? ? ? strcpy(password, a);
? ? ? ? ? ? ? ? ? ? memset(f[i], '\0', sizeof(f[i]));//清空數(shù)組
? ? ? ? ? ? ? ? ? ? strcpy(f[i], a);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? in.close();
? ? ? ? fstream out;
? ? ? ? out.open("User.text", ios::out|ios::trunc);
? ? ? ? for (i = 0;i<num; i++)//將修改后的用戶信息寫入文件
? ? ? ? {
? ? ? ? ? ? if(strcmp(d[i],"讀者"))//讀者
? ? ? ? ? ? ? ? out << setiosflags(ios::left) << setw(20) << d[i] << setw(20) << e[i] << setw(20) << f[i] << endl;
? ? ? ? ? ? else//圖書管理員或系統(tǒng)管理員
? ? ? ? ? ? ? ? out << setiosflags(ios::left) << setw(14) << d[i] << setw(20) << e[i] << setw(20) << f[i] << endl;
? ? ? ? }
? ? ? ? out.close();
? ? ? ? cout << "修改成功!" << endl;
? ? }
? ? int denglu(const char p[])//用戶登錄,返回1為登陸成功,0為登陸失敗
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//已注冊的用戶量
? ? ? ? char d[100][20];//已注冊的用戶類型
? ? ? ? char e[100][20];//已注冊的用戶名
? ? ? ? char f[100][20];//已注冊的密碼
? ? ? ? fstream in;
? ? ? ? in.open("User.text", ios::in);
? ? ? ? for (i = 0;; i++)//獲取已注冊的用戶信息
? ? ? ? {
? ? ? ? ? ? if (in.eof())//判斷文件是否到末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> d[i];
? ? ? ? ? ? in >> e[i];
? ? ? ? ? ? in >> f[i];
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? in.close();
? ? ? ? int flag = 0;//0為登錄失敗,1為登錄成功
? ? ? ? char a[20];//登錄用戶名
?? ??? ?char b[20];//登錄密碼
?? ??? ?cout << "請輸入用戶名:" << endl;
?? ??? ?cin >> a;
?? ??? ?cout << "請輸入密碼:" << endl;
?? ??? ?cin >> b;
?? ??? ?for (i = 0; i < num; i++)
?? ??? ?{
?? ??? ??? ?if (strcmp(p,d[i])==0&&strcmp(a, e[i]) == 0 && strcmp(b, f[i]) == 0)//登錄成功
?? ??? ??? ?{
?? ??? ??? ??? ?flag = 1;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if (flag == 1)//登錄成功
?? ??? ?{
?? ??? ??? ?cout << "您好!尊敬的"<<p << e[i] << endl;
? ? ? ? ? ? strcpy(name, a);
? ? ? ? ? ? strcpy(password, b);
? ? ? ? ? ? return 1;
?? ??? ?}
?? ??? ?if(flag==0)//登錄失敗
?? ??? ?{
?? ??? ??? ?cout << "登錄失敗,用戶名或密碼錯誤" << endl;
? ? ? ? ? ? return 0;
?? ??? ?}
?? ?}
};
class Reader : public User {//讀者類
public:
? ? Reader():User()
? ? {
?
? ? }
? ? void zhuce()//注冊讀者
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//已注冊的用戶量
? ? ? ? char d[100][50];//已注冊的用戶類型
? ? ? ? char e[100][50];//已注冊的用戶名
? ? ? ? char f[100][50];//已注冊的密碼
? ? ? ? fstream in;
? ? ? ? in.open("User.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())//判斷是否到文件末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> d[i];
? ? ? ? ? ? in >> e[i];
? ? ? ? ? ? in >> f[i];
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? in.close();
? ? ? ? char a[20];//所要注冊的用戶名
? ? ? ? cout << "請輸入用戶名:" << endl;
? ? ? ? int flag = 1;//0為用戶名已注冊,1為未注冊
? ? ? ? for (;;)//輸入用戶名
? ? ? ? {
? ? ? ? ? ? char aa[20];//暫時存儲所要注冊的用戶名
? ? ? ? ? ? cin >> aa;
? ? ? ? ? ? for (i = 0; i < num; i++)//判斷用戶名是否已注冊
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (strcmp(e[i], aa) == 0)//用戶名已被注冊
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? cout << "該用戶名已存在,請重新輸入:" << endl;
? ? ? ? ? ? ? ? ? ? flag = 0;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? flag = 1;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? if (flag == 1)//用戶名未被注冊
? ? ? ? ? ? {
? ? ? ? ? ? ? ? strcpy(a, aa);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? for (;;)
? ? ? ? {
? ? ? ? ? ? char b[20];//密碼
? ? ? ? ? ? char c[20];//第二次輸入的密碼
? ? ? ? ? ? cout << "請設置密碼:" << endl;
? ? ? ? ? ? cin >> b;
? ? ? ? ? ? cout << "請再次輸入密碼:" << endl;
? ? ? ? ? ? cin >> c;
? ? ? ? ? ? if (strcmp(b, c) == 0)//兩次密碼輸入一致
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "注冊成功!" << endl;
? ? ? ? ? ? ? ? set_name(a);
? ? ? ? ? ? ? ? set_password(b);
? ? ? ? ? ? ? ? fstream out;
? ? ? ? ? ? ? ? out.open("User.text", ios::app);
? ? ? ? ? ? ? ? out <<setiosflags(ios::left)<<setw(18)<< "讀者" <<setw(20)<< a <<setw(20)<< b << endl;//將用戶信息寫入文件
? ? ? ? ? ? ? ? out.close();
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "兩次密碼不一致,請重新輸入" << endl;
? ? ? ? ? ? }
? ? ? ? }
? ? }
?
};
class Librarian :public User {//圖書管理員類
public:
? ? void zhuce()//注冊圖書管理員
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//已注冊的用戶量
? ? ? ? char d[100][10];//已注冊的用戶類型
? ? ? ? char e[100][20];//已注冊的用戶名
? ? ? ? char f[100][20];//已注冊的密碼
? ? ? ? fstream in;
? ? ? ? in.open("User.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())//判斷文件是否到末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> d[i];
? ? ? ? ? ? in >> e[i];
? ? ? ? ? ? in >> f[i];
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? in.close();
? ? ? ? char a[20];//所要注冊的用戶名
? ? ? ? cout << "請輸入用戶名:" << endl;
? ? ? ? int flag = 1;//0為用戶名已注冊,1為未注冊
? ? ? ? for (;;)//輸入用戶名
? ? ? ? {
? ? ? ? ? ? char aa[20];//暫時存儲所要注冊的用戶名
? ? ? ? ? ? cin >> aa;
? ? ? ? ? ? for (i = 0; i < num; i++)//判斷用戶名是否已注冊
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (strcmp(e[i], aa) == 0)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? cout << "該用戶名已存在,請重新輸入:" << endl;
? ? ? ? ? ? ? ? ? ? flag = 0;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? flag = 1;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? if (flag == 1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? strcpy(a, aa);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? for (;;)
? ? ? ? {
? ? ? ? ? ? char b[20];//密碼
? ? ? ? ? ? char c[20];//第二次輸入的密碼
? ? ? ? ? ? cout << "請設置密碼:" << endl;
? ? ? ? ? ? cin >> b;
? ? ? ? ? ? cout << "請再次輸入密碼:" << endl;
? ? ? ? ? ? cin >> c;
? ? ? ? ? ? if (strcmp(b, c) == 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "注冊成功!" << endl;
? ? ? ? ? ? ? ? set_name(a);
? ? ? ? ? ? ? ? set_password(b);
? ? ? ? ? ? ? ? fstream out;
? ? ? ? ? ? ? ? out.open("User.text", ios::app);
? ? ? ? ? ? ? ? out << setiosflags(ios::left) << setw(14) << "圖書管理員" << setw(20) << a << setw(20) << b << endl;
? ? ? ? ? ? ? ? out.close();
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "兩次密碼不一致,請重新輸入" << endl;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? void add_book(int no1, char name1[], char author1[], char press1[], char price1[],int y)//增加圖書
? ? {
? ? ? ? fstream out;
? ? ? ? out.open("Book.text", ios::app);
? ? ? ? if (y == 1)//紙質圖書
? ? ? ? ? ? out << "紙質圖書 ?";
? ? ? ? if (y == 2)//碟片
? ? ? ? ? ? out << "碟片 ?";
? ? ? ? if (y == 3)//電子書
? ? ? ? ? ? out << "電子書 ?";
? ? ? ? out << setiosflags(ios::left) << setw(15) << no1 << setw(20) << name1 << setw(20) << author1 << setw(20) << press1 << setw(20) << price1 <<setw(5)<<1 <<endl;//最后一個左對齊能否去掉
? ? ? ? out.close();
? ? ? ? cout << "增加圖書成功!" << endl;
? ? }
? ? void delete_book(int n)//刪除圖書信息
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;
? ? ? ? char leixing[100][50];//圖書類型
? ? ? ? int x[100];//圖書編號
? ? ? ? char c[100][50];//圖書書名
? ? ? ? char d[100][50];//圖書作者
? ? ? ? char e[100][50];//圖書出版社
? ? ? ? char f[100][20];//價格
? ? ? ? int y[100];//狀態(tài)
? ? ? ? int flag=0;//1為存在該書,0為不存在
? ? ? ? fstream in;
? ? ? ? in.open("Book.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())//判斷文件是否到末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;//
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> leixing[i] >> x[i] >> c[i] >> d[i] >> e[i] >> f[i] >> y[i];
? ? ? ? ? ? num++;//
?? ??? ?}
?? ??? ?in.close();
?? ??? ?fstream out;
?? ??? ?out.open("Book.text", ios::out);
?? ??? ?for (i = 0; i < num; i++)//將刪除圖書后的的圖書信息寫入文件
?? ??? ?{
? ? ? ? ? ? if (x[i] != n)
? ? ? ? ? ? ? ? out << setiosflags(ios::left) << setw(20) << leixing[i] << setw(15) << x[i] << setw(20) << c[i] << setw(20) << d[i] << setw(20) << e[i] << setw(20) << f[i] << setw(5) << y[i] << endl;//最后一個左對齊能否去掉
? ? ? ? ? ? else
? ? ? ? ? ? ? ? flag = 1;
?? ??? ?}
?? ??? ?out.close();
? ? ? ? if(flag==1)
? ? ? ? cout << "刪除成功!" << endl;
? ? ? ? if (flag == 0)
? ? ? ? ? ? cout << "刪除失敗,未查找到該書!" << endl;
? ? }
? ? void change_book(int n)//修改圖書信息
? ? {
? ? ? ? int i;
?? ??? ?int num = 0;
?? ??? ?char leixing[100][50];//圖書類型
?? ??? ?int x[100];//圖書編號
?? ??? ?char c[100][50];//圖書書名
?? ??? ?char d[100][50];//圖書作者
?? ??? ?char e[100][50];//圖書出版社
?? ??? ?char f[100][20];//價格
?? ??? ?int y[100];//狀態(tài)
?? ??? ?fstream in;
?? ??? ?in.open("Book.text", ios::in);
?? ??? ?for (i = 0;; i++)
?? ??? ?{
?? ??? ??? ?if (in.eof())
?? ??? ??? ?{
?? ??? ??? ??? ?num--;//
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?in >> leixing[i] >> x[i] >> c[i] >> d[i] >> e[i] >> f[i] >> y[i];
?? ??? ??? ?num++;//
?? ??? ?}
?? ??? ?in.close();
?? ??? ?for (i = 0; i < num; i++)
?? ??? ?{
?? ??? ??? ?if (n == x[i])//找到要修改的圖書
?? ??? ??? ?{
?? ??? ??? ??? ?memset(leixing[i], '\0', sizeof(leixing[i]));
?? ??? ??? ??? ?x[i] = 0;
?? ??? ??? ??? ?memset(c[i], '\0', sizeof(c[i]));
?? ??? ??? ??? ?memset(d[i], '\0', sizeof(d[i]));
?? ??? ??? ??? ?memset(e[i], '\0', sizeof(e[i]));
?? ??? ??? ??? ?memset(f[i], '\0', sizeof(f[i]));
?? ??? ??? ??? ?y[i] = 0;
?? ??? ??? ??? ?cout << "請輸入修改后的圖書類型:" << endl;
?? ??? ??? ??? ?cin >> leixing[i];
?? ??? ??? ??? ?cout << "請輸入修改后的圖書編號:" << endl;
?? ??? ??? ??? ?cin >> x[i];
?? ??? ??? ??? ?cout << "請輸入修改后的圖書書名:" << endl;
?? ??? ??? ??? ?cin >> c[i];
?? ??? ??? ??? ?cout << "請輸入修改后的圖書作者:" << endl;
?? ??? ??? ??? ?cin >> d[i];
?? ??? ??? ??? ?cout << "請輸入修改后的圖書出版社:" << endl;
?? ??? ??? ??? ?cin >> e[i];
?? ??? ??? ??? ?cout << "請輸入修改后的圖書價格:" << endl;
?? ??? ??? ??? ?cin >> f[i];
?? ??? ??? ??? ?cout << "請輸入修改后的圖書狀態(tài):(1為在架,0為已借出)" << endl;
?? ??? ??? ??? ?cin >> y[i];
?? ??? ??? ??? ?cout << "修改成功!" << endl;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if (i == num)//未查找到圖書
?? ??? ??? ?cout << "抱歉,未查到此書!" << endl;
? ? ? ? fstream out;
? ? ? ? out.open("Book.text", ios::out);
? ? ? ? for (i = 0; i < num; i++)//將修改后的圖書信息寫入文件
? ? ? ? {
? ? ? ? ? ? out << setiosflags(ios::left) << setw(20) << leixing[i] << setw(15) << x[i] << setw(20) << c[i] << setw(20) << d[i];
? ? ? ? ? ? out<< setw(20) << e[i]<< setw(20) << f[i] << setw(5) << y[i] << endl;
? ? ? ? }
? ? ? ? out.close();
? ? }
? ? void see_all()//查看所有用戶的借閱信息
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;
? ? ? ? char a[100][20];//圖書類型
? ? ? ? char b[100][20];//編號
? ? ? ? char c[100][20];//書名
? ? ? ? char d[100][20];//作者
? ? ? ? char e[100][20];//出版社
? ? ? ? char f[100][20];//價格
? ? ? ? char people[100][20];//借書人
? ? ? ? tt p;//借書時間
? ? ? ? fstream out2;
? ? ? ? out2.open("Log.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (out2.eof())//判斷是否到文件末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? out2 >> a[i] >> b[i] >> c[i] >> d[i] >> e[i] >> f[i];
? ? ? ? ? ? out2 >> people[i];
? ? ? ? ? ? out2 >> p.year >> p.month >> p.day >> p.hours >> p.minutes >> p.seconds;
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? out2.close();
? ? ? ? cout << "以下為所有用戶借閱信息:" << endl;
? ? ? ? for (i = 0; i < num; i++)
? ? ? ? {
? ? ? ? ? ? cout << a[i] << " ?" << b[i] << " ?" << c[i] << " ?" << d[i] << " ?" << e[i] << " ?" << f[i] << " ?" <<"借閱人:"<<people[i]<<" ?" << p.year << "年" << p.month << "月" << p.day << "日" << p.hours << ":" << p.minutes << endl;
? ? ? ? }
? ? }
};
class System_Admin:public User{//系統(tǒng)管理員類
public:
? ? void zhuce()//注冊系統(tǒng)管理員
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//已注冊的用戶量
? ? ? ? char d[100][10];//已注冊的用戶類型
? ? ? ? char e[100][20];//已注冊的用戶名
? ? ? ? char f[100][20];//已注冊的密碼
? ? ? ? fstream in;
? ? ? ? in.open("User.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> d[i];
? ? ? ? ? ? in >> e[i];
? ? ? ? ? ? in >> f[i];
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? in.close();
? ? ? ? char a[20];//所要注冊的用戶名
? ? ? ? cout << "請輸入用戶名:" << endl;
? ? ? ? int flag = 1;//0為用戶名已注冊,1為未注冊
? ? ? ? for (;;)//輸入用戶名
? ? ? ? {
? ? ? ? ? ? char aa[20];//暫時存儲所要注冊的用戶名
? ? ? ? ? ? cin >> aa;
? ? ? ? ? ? for (i = 0; i < num; i++)//判斷用戶名是否已注冊
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (strcmp(e[i], aa) == 0)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? cout << "該用戶名已存在,請重新輸入:" << endl;
? ? ? ? ? ? ? ? ? ? flag = 0;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? flag = 1;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? if (flag == 1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? strcpy(a, aa);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? for (;;)
? ? ? ? {
? ? ? ? ? ? char b[20];//密碼
? ? ? ? ? ? char c[20];//第二次輸入的密碼
? ? ? ? ? ? cout << "請設置密碼:" << endl;
? ? ? ? ? ? cin >> b;
? ? ? ? ? ? cout << "請再次輸入密碼:" << endl;
? ? ? ? ? ? cin >> c;
? ? ? ? ? ? if (strcmp(b, c) == 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "注冊成功!" << endl;
? ? ? ? ? ? ? ? set_name(a);
? ? ? ? ? ? ? ? set_password(b);
? ? ? ? ? ? ? ? fstream out;
? ? ? ? ? ? ? ? out.open("User.text", ios::app);
? ? ? ? ? ? ? ? out << setiosflags(ios::left) << setw(14) << "系統(tǒng)管理員" << setw(20) << a << setw(20) << b << endl;
? ? ? ? ? ? ? ? out.close();
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "兩次密碼不一致,請重新輸入" << endl;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? void add_User(char name[],char password[],int y)//增加用戶
? ? {
? ? ? ? if (chongfu_name(name) == 1)//用戶名已注冊
? ? ? ? ? ? cout << "增加用戶失敗,該用戶名已存在!" << endl;
? ? ? ? if (chongfu_name(name) == 0)//用戶名未注冊
? ? ? ? {
? ? ? ? ? ? fstream out;
? ? ? ? ? ? out.open("User.text", ios::app);
? ? ? ? ? ? if (y == 1)
? ? ? ? ? ? ? ? out << setiosflags(ios::left) << setw(18) << "讀者" << setw(20) << name << setw(20) << password << endl;
? ? ? ? ? ? if (y == 2)
? ? ? ? ? ? ? ? out << setiosflags(ios::left) << setw(14) << "圖書管理員" << setw(20) << name << setw(20) << password << endl;
? ? ? ? ? ? out.close();
? ? ? ? ? ? cout << "增加成功!" << endl;
? ? ? ? }
? ? }
? ? void delete_user(char name[])//刪除用戶
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//已注冊的用戶量
? ? ? ? char d[100][50];//已注冊的用戶類型
? ? ? ? char e[100][50];//已注冊的用戶名
? ? ? ? char f[100][50];//已注冊的密碼
? ? ? ? int del;//要刪除的用戶的序號
? ? ? ? fstream in;
? ? ? ? in.open("User.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())//判斷是否到文件末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> d[i];
? ? ? ? ? ? in >> e[i];
? ? ? ? ? ? in >> f[i];
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? in.close();
? ? ? ? for (i = 0;i<num; i++)
? ? ? ? {
? ? ? ? ? ? if (strcmp(name, e[i]) == 0)//找到該用戶
? ? ? ? ? ? {
? ? ? ? ? ? ? ? del = i;//記錄i
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (i == num)//未查找到該用戶名
? ? ? ? {
? ? ? ? ? ? cout << "未查找到該用戶!" << endl;
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? fstream out;
? ? ? ? out.open("User.text", ios::out);
? ? ? ? for (i = 0;i<num; i++)//將刪除后的全部用戶信息寫入文件
? ? ? ? {
? ? ? ? ? ? if(i!=del)
? ? ? ? ? ? out << setiosflags(ios::left) << setw(20) << d[i]<< setw(20) << e[i] << setw(20) << f[i] << endl;
? ? ? ? }
? ? ? ? out.close();
? ? ? ? cout << "刪除成功!" << endl;
? ? }
? ? void change_user(char name[],int y)//修改用戶信息,y=1為用戶類型,y=2為用戶名,y=3為用戶密碼
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//已注冊的用戶量
? ? ? ? char d[100][50];//已注冊的用戶類型
? ? ? ? char e[100][50];//已注冊的用戶名
? ? ? ? char f[100][50];//已注冊的密碼
? ? ? ? fstream in;
? ? ? ? in.open("User.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())//判斷文件是否到末尾
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> d[i];
? ? ? ? ? ? in >> e[i];
? ? ? ? ? ? in >> f[i];
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? in.close();
? ? ? ? if (y == 1)//修改用戶類型
? ? ? ? {
? ? ? ? ? ? for (i = 0;i<num; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (strcmp(name, e[i]) == 0)//找到該用戶
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if (strcmp(d[i], "讀者") == 0)//該用戶為讀者
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? memset(d[i], '\0', sizeof(d[i]));//清空用戶類型數(shù)組
? ? ? ? ? ? ? ? ? ? ? ? strcpy(d[i], "圖書管理員");
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? else//該用戶為圖書管理員
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? memset(d[i], '\0', sizeof(d[i]));//清空用戶類型數(shù)組
? ? ? ? ? ? ? ? ? ? ? ? strcpy(d[i], "讀者");
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? if (i == num)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "未查找到該用戶!" << endl;
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (y == 2)//修改用戶名
? ? ? ? {
? ? ? ? ? ? char name2[50];//修改后的用戶名
? ? ? ? ? ? for (;;)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? char name1[50];//暫時存儲修改后的用戶名
? ? ? ? ? ? ? ? cout << "請輸入修改后的用戶名:" << endl;
? ? ? ? ? ? ? ? cin >> name1;
? ? ? ? ? ? ? ? if (chongfu_name(name1) == 1)//用戶名已存在
? ? ? ? ? ? ? ? ? ? cout << "該用戶名已存在,請重新輸入" << endl;
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? strcpy(name2, name1);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? for (i = 0;; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (strcmp(name, e[i]) == 0)//找到要修改的用戶
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? memset(e[i], '\0', sizeof(e[i]));//清空用戶名
? ? ? ? ? ? ? ? ? ? strcpy(e[i], name2);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (y == 3)//修改密碼
? ? ? ? {
? ? ? ? ? ? char password2[50];
? ? ? ? ? ? cout << "請輸入修改后的密碼:" << endl;
? ? ? ? ? ? cin >> password2;
? ? ? ? ? ? for (i = 0;; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (strcmp(name, e[i]) == 0)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? memset(f[i], '\0', sizeof(f[i]));
? ? ? ? ? ? ? ? ? ? strcpy(f[i], password2);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? fstream out;
? ? ? ? out.open("User.text", ios::out);
? ? ? ? for (i = 0;i<num; i++)
? ? ? ? {
? ? ? ? ? ? out << setiosflags(ios::left) << setw(20) << d[i] << setw(20) << e[i] << setw(20) << f[i] << endl;
? ? ? ? }
? ? ? ? out.close();
? ? ? ? cout << "修改成功!" << endl;
? ? }
? ? void see_user()//查看所有用戶信息
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//已注冊的用戶量
? ? ? ? char d[100][50];//已注冊的用戶類型
? ? ? ? char e[100][50];//已注冊的用戶名
? ? ? ? char f[100][50];//已注冊的密碼
? ? ? ? fstream in;
? ? ? ? in.open("User.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> d[i];
? ? ? ? ? ? in >> e[i];
? ? ? ? ? ? in >> f[i];
? ? ? ? ? ? num++;
? ? ? ? }
? ? ? ? in.close();
? ? ? ? cout << "——————————用戶信息——————————" << endl;
? ? ? ? for (i = 0; i < num; i++)
? ? ? ? {
? ? ? ? ? ? cout <<"用戶類型:"<<d[i]<<" ?用戶名:" << e[i]<<" ?用戶密碼:" << f[i] << endl;
? ? ? ? }
? ? }
};
class Log {//借還日志類
private:
? ? int lend_date;//借書日期
? ? int return_date;//還書日期
public:
? ? Log(){}
? ? void see(User yonghu)//查看本人借閱信息
? ? {
? ? ? ? int i;
? ? ? ? int num=0;
? ? ? ? char a[100][20];//圖書類型
? ? ? ? char b[100][20];//編號
? ? ? ? char c[100][20];//書名
? ? ? ? char d[100][20];//作者
? ? ? ? char e[100][20];//出版社
? ? ? ? char f[100][20];//價格
? ? ? ? char people[100][20];//借書人
? ? ? ? tt p;//借書時間
? ? ? ? fstream in;
? ? ? ? in.open("Log.text", ios::in);
? ? ? ? for (i = 0;; i++)
? ? ? ? {
? ? ? ? ? ? if (in.eof())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
?? ??? ??? ?in >> a[i] >> b[i] >> c[i] >> d[i] >> e[i] >> f[i];
?? ??? ??? ?in >> people[i];
?? ??? ??? ?in >> p.year >> p.month >> p.day >> p.hours >> p.minutes >> p.seconds;
? ? ? ? ? ? num++;
?? ??? ?}
? ? ? ? in.close();
? ? ? ? int flag=0;//0為沒有借書,1為有借書
? ? ? ? cout << "以下為您的借閱信息:" << endl;
? ? ? ? for (i = 0; i < num; i++)
? ? ? ? {
? ? ? ? ? ? if (strcmp(people[i],yonghu.name) == 0)//檢索到借閱人
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << a[i] << " ?" << b[i] << " ?" << c[i] << " ?" << d[i] << " ?" << e[i] << " ?" << f[i] << " ?" << p.year << "年" << p.month << "月" << p.day << "日" << p.hours << ":" << p.minutes << endl;
? ? ? ? ? ? ? ? flag = 1;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (flag==0)
? ? ? ? ? ? cout << " ?無" << endl;
? ? }
?? ?void lend_book(User yonghu)//借閱圖書
?? ?{
?? ??? ?int i;
?? ??? ?char a[50];//書名
?? ??? ?char b[50];//作者
?? ??? ?int num = 0;//書的數(shù)目
?? ??? ?int x[100];//在架的圖書編號
?? ??? ?char leixing[100][50];//圖書類型
?? ??? ?char c[100][50];//在架的圖書書名
?? ??? ?char d[100][50];//在架的圖書作者
?? ??? ?char e[100][50];//在架的圖書出版社
?? ??? ?char f[100][20];//價格
?? ??? ?int y[100];//狀態(tài)
?? ??? ?cout << "請輸入您要借閱的圖書書名:" << endl;
?? ??? ?cin >> a;
?? ??? ?cout << "請輸入您要借閱的圖書作者:" << endl;
?? ??? ?cin >> b;
?? ??? ?fstream in;
?? ??? ?in.open("Book.text", ios::in);
?? ??? ?for (i = 0;; i++)//找要借閱的書
?? ??? ?{
?? ??? ??? ?if (in.eof())
?? ??? ??? ?{
?? ??? ??? ??? ?num--;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?in >> leixing[i] >> x[i] >> c[i] >> d[i] >> e[i] >> f[i] >> y[i];
?? ??? ??? ?num++;
?? ??? ?}
?? ??? ?in.close();
?? ??? ?cout << "查詢到以下圖書:" << endl;
?? ??? ?int flag = 0;//0為未查到書,1為查到書
?? ??? ?for (i = 0; i < num; i++)
?? ??? ?{
?? ??? ??? ?if (strcmp(a, c[i]) == 0 && strcmp(b, d[i]) == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?cout << " ? " << leixing[i] << " ?編號:" << x[i] << " ?" << c[i] << " ?" << d[i] << " ?" << e[i] << " ?" << f[i] << " ?";
?? ??? ??? ??? ?if (y[i] == 1)
?? ??? ??? ??? ??? ?cout << "在架可借" << endl;
?? ??? ??? ??? ?if (y[i] == 0)
?? ??? ??? ??? ??? ?cout << "已借出" << endl;
?? ??? ??? ??? ?flag = 1;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if (flag == 0)//未檢索到書
?? ??? ?{
?? ??? ??? ?cout << " ? 無" << endl;
?? ??? ??? ?cout << "未查詢到此書!" << endl;
?? ??? ?}
?? ??? ?if (flag == 1)//檢索到書
?? ??? ?{
? ? ? ? ? ? int flag2=1;//0借閱失敗,1為借閱成功
?? ??? ??? ?int bianhao;
?? ??? ??? ?cout << "請輸入您要借閱的圖書編號:" << endl;
?? ??? ??? ?cin >> bianhao;
?? ??? ??? ?for (i = 0; i < num; i++)
?? ??? ??? ?{
?? ??? ??? ??? ?if (bianhao == x[i]&&y[i]==1)//找到書且書可借
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?y[i]=0;
? ? ? ? ? ? ? ? ? ? break;
?? ??? ??? ??? ?}
? ? ? ? ? ? ? ? if (bianhao == x[i] && y[i] == 0)//找到書且書已借出
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? cout << "無法借閱,該書已被借出!" << endl;
? ? ? ? ? ? ? ? ? ? flag2 = 0;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
?? ??? ??? ?}
? ? ? ? ? ? if (i == num)//未檢索到圖書
? ? ? ? ? ? {
? ? ? ? ? ? ? ? flag2 = 0;
? ? ? ? ? ? ? ? cout << "未查詢到該圖書!" << endl;
? ? ? ? ? ? }
? ? ? ? ? ? if(flag2==1)//借閱成功
? ? ? ? ? ? {
? ? ? ? ? ? ? ? fstream out;
? ? ? ? ? ? ? ? out.open("Book.text", ios::out);
? ? ? ? ? ? ? ? for (i = 0; i < num; i++)
? ? ? ? ? ? ? ? ? ? out << setiosflags(ios::left) << setw(15) << leixing[i] << setw(15) << x[i] << setw(20) << c[i] << setw(20) << d[i] << setw(20) << e[i] << setw(20) << f[i] << setw(5) << y[i] << endl;
? ? ? ? ? ? ? ? out.close();
? ? ? ? ? ? ? ? tt p;
? ? ? ? ? ? ? ? p = system_time();//p存儲了當前系統(tǒng)時間
? ? ? ? ? ? ? ? fstream out2;
? ? ? ? ? ? ? ? out2.open("Log.text", ios::app);
? ? ? ? ? ? ? ? for (i = 0; i < num; i++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if (bianhao == x[i])
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? out2 << setiosflags(ios::left) << setw(15) << leixing[i] << setw(15) << x[i] << setw(20) << c[i] << setw(20) << d[i] << setw(20) << e[i] << setw(20) << f[i];
? ? ? ? ? ? ? ? ? ? ? ? out2 << yonghu.name << " ?";
? ? ? ? ? ? ? ? ? ? ? ? out2 << p.year << " " << p.month << " " << p.day << " " << p.hours << " " << p.minutes << " " << p.seconds << endl;
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? out2.close();
? ? ? ? ? ? ? ? cout << "借閱成功!" << endl;
? ? ? ? ? ? }
?? ??? ?}
?? ?}
? ? void return_book(int n,User yonghu)//n:1為讀者,2為圖書管理員,3為系統(tǒng)管理員
? ? {
? ? ? ? int i;
? ? ? ? int num = 0;//圖書數(shù)量
? ? ? ? int x[100];//圖書編號
? ? ? ? char leixing[100][50];//圖書類型
? ? ? ? char c[100][50];//圖書書名
? ? ? ? char d[100][50];//圖書作者
? ? ? ? char e[100][50];//圖書出版社
? ? ? ? char f[100][20];//價格
? ? ? ? int y[100];//狀態(tài)
? ? ? ? fstream in;
? ? ? ? in.open("Book.text", ios::in);
? ? ? ? for (i = 0;; i++)//找要還的書
? ? ? ? {
? ? ? ? ? ? if (in.eof())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? num--;//
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? in >> leixing[i] >> x[i] >> c[i] >> d[i] >> e[i] >> f[i] >> y[i];
? ? ? ? ? ? num++;//
? ? ? ? }
? ? ? ? in.close();
? ? ? ? see(yonghu);//輸出該用戶借閱圖書信息
? ? ? ? int bianhao;
? ? ? ? cout << "請輸入您要返還圖書的編號:" << endl;
? ? ? ? cin >> bianhao;
? ? ? ? for (i = 0; i < num; i++)//改變圖書狀態(tài)
? ? ? ? {
? ? ? ? ? ? if (bianhao == x[i])//找到圖書
? ? ? ? ? ? {
? ? ? ? ? ? ? ? y[i] = 1;//改變圖書狀態(tài)為在架可借
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (i == num)//未查詢到圖書
? ? ? ? {
? ? ? ? ? ? cout << "未查詢到該圖書!" << endl;
? ? ? ? }
? ? ? ? else//查詢到圖書
? ? ? ? {
? ? ? ? ? ? fstream out;
? ? ? ? ? ? out.open("Book.text", ios::out);
? ? ? ? ? ? for (i = 0; i < num; i++)//更新book文件
? ? ? ? ? ? {
? ? ? ? ? ? ? ? out << setiosflags(ios::left) << setw(15) << leixing[i] << setw(15) << x[i] << setw(20) << c[i];
? ? ? ? ? ? ? ? out << setw(20) << d[i] << setw(20) << e[i] << setw(20) << f[i] << setw(5) << y[i] << endl;
? ? ? ? ? ? }
? ? ? ? ? ? out.close();
?
? ? ? ? ? ? //更改Log.text
? ? ? ? ? ? int x2[100];//已借閱的的圖書編號
? ? ? ? ? ? char leixing2[100][50];//已借閱圖書的圖書類型
? ? ? ? ? ? char c2[100][50];//已借閱圖書的圖書書名
? ? ? ? ? ? char d2[100][50];//已借閱圖書的圖書作者
? ? ? ? ? ? char e2[100][50];//已借閱圖書的圖書出版社
? ? ? ? ? ? char f2[100][50];//已借閱圖書的價格
? ? ? ? ? ? char person[50];//借書者用戶名
? ? ? ? ? ? tt time1[100];//借書時間
? ? ? ? ? ? tt time2 = system_time();//還書時間
? ? ? ? ? ? int log_num = 0;
? ? ? ? ? ? fstream in2;
? ? ? ? ? ? in2.open("Log.text", ios::in);
? ? ? ? ? ? for (i = 0;; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (in2.eof())
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? log_num--;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? in2 >> leixing2[i] >> x2[i] >> c2[i] >> d2[i] >> e2[i] >> f2[i] >> person;
? ? ? ? ? ? ? ? in2>> time1[i].year >> time1[i].month >> time1[i].day >> time1[i].hours >> time1[i].minutes >> time1[i].seconds;
? ? ? ? ? ? ? ? log_num++;//
? ? ? ? ? ? }
? ? ? ? ? ? in2.close();
? ? ? ? ? ? int del;//還的書的序號
? ? ? ? ? ? for (i = 0; i < log_num; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (bianhao == x2[i])
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? del = i;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? fstream out2;
? ? ? ? ? ? out2.open("Log.text", ios::out);
? ? ? ? ? ? for (i = 0; i < log_num; i++)//向文件輸出新的Log
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (i == del)
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? out2 << setiosflags(ios::left) << setw(15) << leixing2[i] << setw(15) << x2[i];
? ? ? ? ? ? ? ? out2<< setw(20) << c2[i] << setw(20) << d2[i] << setw(20) << e2[i] << setw(20) << f2[i];
? ? ? ? ? ? ? ? out2 << yonghu.name << " ?";
? ? ? ? ? ? ? ? out2 << time1[i].year << " " << time1[i].month << " " << time1[i].day << " ";
? ? ? ? ? ? ? ? out2<< time1[i].hours << " " << time1[i].minutes << " " << time1[i].seconds << endl;
? ? ? ? ? ? }
? ? ? ? ? ? out2.close();
? ? ? ? ? ? //判斷是否超出還書時間
? ? ? ? ? ? int deadline;
? ? ? ? ? ? if (n == 1)//讀者
? ? ? ? ? ? ? ? deadline = 14;//讀者借書期限為14天
? ? ? ? ? ? if (n == 2 || n == 3)//圖書管理員或系統(tǒng)管理員
? ? ? ? ? ? ? ? deadline = 21;//管理員借書期限為21天
? ? ? ? ? ? if (time2.year - time1[del].year > 0 || time2.month - time1[del].month > 0 || time2.day - time1[del].day > deadline)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "您已超出圖書歸還日期,請到辦公室繳納罰款" << endl;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? cout << "還書成功!" << endl;
? ? ? ? }
?? ?}
};
int main()
{
? ? char kouling1[50] = "123456";
? ? cout << "——————圖書管理系統(tǒng)——————" << endl;
? ? int i,j;
? ? Book shu[100];//圖書
? ? Reader duzhe[100];//讀者
? ? Librarian tushu[100];//圖書管理員
? ? System_Admin xitong[100];//系統(tǒng)管理員
? ? Log rizhi[100];//借還書日志
? ? int flag;//0為沒有用戶登錄,1為已有用戶登錄
? ? for (i = 0;; i++)
? ? {
? ? ? ? if(i!=0)
? ? ? ? ? ? cout << "————主界面————" << endl;
? ? ? ? cout << "1.注冊" << endl;
? ? ? ? cout << "2.登錄" << endl;
? ? ? ? cout << "3.退出" << endl;
? ? ? ? int n;//1為注冊,2為登錄,3為退出系統(tǒng)
? ? ? ? cin >> n;
? ? ? ? if (n == 1)//注冊
? ? ? ? {
? ? ? ? ? ? cout << "請選擇您要注冊的用戶類型" << endl;
? ? ? ? ? ? cout << "1.讀者" << endl;
? ? ? ? ? ? cout << "2.圖書管理員" << endl;
? ? ? ? ? ? cout << "3.系統(tǒng)管理員" << endl;
? ? ? ? ? ? cout << "4.返回上一層菜單" << endl;
? ? ? ? ? ? int m;//1為注冊讀者,2為注冊圖書管理員,3為注冊系統(tǒng)管理員
? ? ? ? ? ? cin >> m;
? ? ? ? ? ? if (m == 1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? duzhe[i].zhuce();//注冊讀者
? ? ? ? ? ? }
? ? ? ? ? ? if (m == 2)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? for (;;)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? char kl[20];//圖書管理員口令
? ? ? ? ? ? ? ? ? ? cout << "請輸入圖書管理員口令:" << endl;
? ? ? ? ? ? ? ? ? ? cin >> kl;//接收口令
? ? ? ? ? ? ? ? ? ? if (strcmp(kl,kouling1) == 0)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? tushu[i].zhuce();//注冊圖書管理員
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? cout << "口令錯誤,請輸入正確口令!" << endl;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? if (m == 3)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? for (;;)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? char k2[20];//系統(tǒng)管理員口令
? ? ? ? ? ? ? ? ? ? cout << "請輸入系統(tǒng)管理員口令:" << endl;
? ? ? ? ? ? ? ? ? ? cin >> k2;//接收口令
? ? ? ? ? ? ? ? ? ? if (strcmp(k2, kouling2) == 0)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? xitong[i].zhuce();//注冊系統(tǒng)管理員
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? cout << "口令錯誤,請輸入正確口令!" << endl;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? if (m == 4)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (n == 2)//登錄界面
? ? ? ? {
? ? ? ? ? ? cout << "請選擇您要登錄的用戶類型" << endl;
? ? ? ? ? ? cout << "1.讀者" << endl;
? ? ? ? ? ? cout << "2.圖書管理員" << endl;
? ? ? ? ? ? cout << "3.系統(tǒng)管理員" << endl;
? ? ? ? ? ? cout << "4.返回上一層菜單" << endl;
? ? ? ? ? ? int m;
? ? ? ? ? ? cin >> m;
? ? ? ? ? ? if (m == 1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? flag=duzhe[i].denglu("讀者");
? ? ? ? ? ? }
? ? ? ? ? ? if (m == 2)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? flag=tushu[i].denglu("圖書管理員");
? ? ? ? ? ? }
? ? ? ? ? ? if (m == 3)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? flag=xitong[i].denglu("系統(tǒng)管理員");
? ? ? ? ? ? }
? ? ? ? ? ? if (m == 4)
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? if (flag == 1)//登錄成功
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (m == 1)//讀者登錄
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? for (;;)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? int x;
? ? ? ? ? ? ? ? ? ? ? ? cout << "————讀者界面————" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "1.修改用戶名" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "2.修改密碼" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "3.借閱圖書" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "4.還書" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "5.本人借閱信息查看" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "6.退出賬號" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cin >> x;
? ? ? ? ? ? ? ? ? ? ? ? if (x == 1)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? char after_name[20];//改后的用戶名
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入新的用戶名:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> after_name;
? ? ? ? ? ? ? ? ? ? ? ? ? ? duzhe[i].change_information(after_name,1);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 2)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? char after_password[20];//改后的密碼
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入新的密碼" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> after_password;
? ? ? ? ? ? ? ? ? ? ? ? ? ? duzhe[i].change_information(after_password,2);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 3)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? rizhi[i].lend_book(duzhe[i]);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 4)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? rizhi[i].return_book(1,duzhe[i]);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 5)
? ? ? ? ? ? ? ? ? ? ? ? ? ? rizhi[i].see(duzhe[i]);
? ? ? ? ? ? ? ? ? ? ? ? if (x == 6)
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (m == 2)//登錄的為圖書管理員
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? for (;;)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? int x;
? ? ? ? ? ? ? ? ? ? ? ? cout << "————圖書管理員界面————" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "1.修改用戶名" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "2.修改密碼" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "3.借閱圖書" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "4.還書" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "5.本人借閱信息查看" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "6.增加圖書" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "7.修改圖書信息" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "8.刪除圖書" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "9.查看用戶借閱信息" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "10.退出賬號" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cin >> x;
? ? ? ? ? ? ? ? ? ? ? ? if (x == 1)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? char after_name[20];//改后的用戶名
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入新的用戶名:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> after_name;
? ? ? ? ? ? ? ? ? ? ? ? ? ? tushu[i].change_information(after_name, 1);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 2)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? char after_password[20];//改后的密碼
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入新的密碼" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> after_password;
? ? ? ? ? ? ? ? ? ? ? ? ? ? tushu[i].change_information(after_password, 2);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 3)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? rizhi[i].lend_book(tushu[i]);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 4)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? rizhi[i].return_book(2, tushu[i]);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 5)
? ? ? ? ? ? ? ? ? ? ? ? ? ? rizhi[i].see(tushu[i]);
? ? ? ? ? ? ? ? ? ? ? ? if (x == 6)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? int y;//1為紙質圖書,2為碟片,3為電子資源
? ? ? ? ? ? ? ? ? ? ? ? ? ? int no1;//編號
? ? ? ? ? ? ? ? ? ? ? ? ? ? char name1[20];//書名
? ? ? ? ? ? ? ? ? ? ? ? ? ? char author1[20];//作者
? ? ? ? ? ? ? ? ? ? ? ? ? ? char press1[20];//出版社
? ? ? ? ? ? ? ? ? ? ? ? ? ? char price1[10];//價格
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入您要增加的圖書類型:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "1.紙質圖書" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "2.碟片" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "3.電子資源" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入圖書編號:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> no1;
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (shu[i].chongfu_no(no1) == 1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入書名:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> name1;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入作者:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> author1;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入出版社:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> press1;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入圖書價格" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> price1;
?? ??? ??? ??? ??? ??? ??? ?if (y == 1)
?? ??? ??? ??? ??? ??? ??? ??? ?tushu[i].add_book(no1, name1, author1, press1, price1, 1);
?? ??? ??? ??? ??? ??? ??? ?if (y == 2)
?? ??? ??? ??? ??? ??? ??? ??? ?tushu[i].add_book(no1, name1, author1, press1, price1, 2);
?? ??? ??? ??? ??? ??? ??? ?if (y == 3)
?? ??? ??? ??? ??? ??? ??? ??? ?tushu[i].add_book(no1, name1, author1, press1, price1, 3);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 7)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? int y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入您要修改圖書的編號:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? tushu[i].change_book(y);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 8)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? int y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入您要刪除圖書的編號:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? tushu[i].delete_book(y);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 9)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? tushu[i].see_all();
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 10)
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (m == 3)//登錄的為系統(tǒng)管理員
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? for (;;)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? int x;
? ? ? ? ? ? ? ? ? ? ? ? cout << "————系統(tǒng)管理員界面————" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "1.修改用戶名" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "2.修改密碼" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "3.借閱圖書" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "4.還書" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "5.本人借閱信息查看" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "6.修改圖書管理員口令" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "7.增加用戶" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "8.刪除用戶" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "9.修改用戶信息" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "10.查看用戶信息" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cout << "11.退出賬號" << endl;
? ? ? ? ? ? ? ? ? ? ? ? cin >> x;
? ? ? ? ? ? ? ? ? ? ? ? if (x == 1)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? char after_name[20];//改后的用戶名
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入新的用戶名:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> after_name;
? ? ? ? ? ? ? ? ? ? ? ? ? ? xitong[i].change_information(after_name, 1);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 2)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? char after_password[20];//改后的密碼
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入新的密碼" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> after_password;
? ? ? ? ? ? ? ? ? ? ? ? ? ? xitong[i].change_information(after_password, 2);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 3)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? rizhi[i].lend_book(xitong[i]);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 4)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? rizhi[i].return_book(3,xitong[i]);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 5)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? rizhi[i].see(xitong[i]);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 6)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? char kouling3[50];
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入修改后的圖書管理員口令:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> kouling3;
? ? ? ? ? ? ? ? ? ? ? ? ? ? memset(kouling1, '\0', sizeof(kouling1));
? ? ? ? ? ? ? ? ? ? ? ? ? ? strcmp(kouling1, kouling3);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 7)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? int y;//1為讀者,2為圖書管理員
? ? ? ? ? ? ? ? ? ? ? ? ? ? char name[50];
? ? ? ? ? ? ? ? ? ? ? ? ? ? char password[50];
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入您要增加的用戶類型:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "1.讀者" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "2.圖書管理員" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入用戶名:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> name;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入密碼:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> password;
? ? ? ? ? ? ? ? ? ? ? ? ? ? xitong[i].add_User(name,password,y);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 8)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? char name[50];
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入您要刪除用戶的用戶名:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> name;
? ? ? ? ? ? ? ? ? ? ? ? ? ? xitong[i].delete_user(name);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 9)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? char name[50];
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入您要修改用戶的用戶名:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> name;
? ? ? ? ? ? ? ? ? ? ? ? ? ? int y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "請輸入您要修改用戶的哪個信息:" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "1.用戶類型" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "2.用戶名" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cout << "3.用戶密碼" << endl;
? ? ? ? ? ? ? ? ? ? ? ? ? ? cin >> y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? xitong[i].change_user(name,y);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 10)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? xitong[i].see_user();
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? if (x == 11)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (n == 3)
? ? ? ? ? ? return 0;
? ? }
? ? return 0;
}

實驗結果展示

注冊成功后用戶信息會寫入文件中,這樣關閉程序后用戶信息不會丟失

用戶信息

三個text文件分別保存書籍信息(Book)、借閱信息(Log)、用戶信息(User)

書籍信息

借閱信息

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 使用C語言實現(xiàn)12種排序方法

    使用C語言實現(xiàn)12種排序方法

    這篇文章主要介紹了用C語言完整實現(xiàn)12種排序方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 淺談C++類型轉化(運算符重載函數(shù))和基本運算符重載(自增自減)

    淺談C++類型轉化(運算符重載函數(shù))和基本運算符重載(自增自減)

    下面小編就為大家?guī)硪黄獪\談C++類型轉化(運算符重載函數(shù))和基本運算符重載(自增自減)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • C語言編程C++旋轉字符操作串示例詳解

    C語言編程C++旋轉字符操作串示例詳解

    這篇文章主要為大家介紹了C語言編程中C++旋轉字符操作串示例詳解,文中附含詳細圖文示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • Windows 環(huán)境下使用 Qt 連接 MySQL

    Windows 環(huán)境下使用 Qt 連接 MySQL

    這篇文章主要介紹了Windows 環(huán)境下使用 Qt 連接 MySQL的相關資料,需要的朋友可以參考下
    2017-07-07
  • C++超詳細分析順序表

    C++超詳細分析順序表

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關系由它們的存儲順序自然表示
    2022-03-03
  • C/C++實現(xiàn)圖形學掃描線填充算法

    C/C++實現(xiàn)圖形學掃描線填充算法

    這篇文章主要介紹了C/C++實現(xiàn)圖形學掃描線填充算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 用c語言實現(xiàn)2000內(nèi)既能被3整除又能被7整除的個數(shù)

    用c語言實現(xiàn)2000內(nèi)既能被3整除又能被7整除的個數(shù)

    本篇文章是對使用c語言實現(xiàn)2000內(nèi)既能被3整除又能被7整除的個數(shù),用實例進行了分析說明,需要的朋友參考下
    2013-05-05
  • Windows配置VSCode+CMake+Ninja+Boost.Test的C++開發(fā)環(huán)境(教程詳解)

    Windows配置VSCode+CMake+Ninja+Boost.Test的C++開發(fā)環(huán)境(教程詳解)

    這篇文章主要介紹了Windows配置VSCode+CMake+Ninja+Boost.Test的C++開發(fā)環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • C語言 存儲類詳解及示例代碼

    C語言 存儲類詳解及示例代碼

    本篇文章主要介紹C語言 存儲類,這里幫大家整理了存儲類的基礎資料,并提供示例代碼和詳細介紹,有興趣的小伙伴可以參考下
    2016-08-08
  • OpenCV選擇圖像中矩形區(qū)域并保存

    OpenCV選擇圖像中矩形區(qū)域并保存

    這篇文章主要為大家詳細介紹了OpenCV選擇圖像中矩形區(qū)域并保存的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評論