⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 library.cpp

📁 学习用
💻 CPP
字号:
// Library.cpp: implementation of the Library class.
//
//////////////////////////////////////////////////////////////////////

#include "Library.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

//构造函数
Library::Library()
{
	book_num=0;
	man_num=0;
	reader_num=0;
	all_book_num=0;

	//读取文件中的信息到内存
	ifstream fin1,fin2,fin3,fin4;
	//读取图书信息
	fin1.open("Book.txt");
	while(fin1){
		fin1>>lib[book_num].bookid>>lib[book_num].bookname>>lib[book_num].author>>lib[book_num].count;
		all_book_num+=lib[book_num].count;
		book_num++;	
	}
	fin1.close();
	//读取读者信息
	fin2.open("Reader.txt");
	while(fin2){
		fin2>>reader[reader_num].name>>reader[reader_num].zhiwei>>reader[reader_num].islend
			>>reader[reader_num].lended_book_id>>reader[reader_num].lended_book_name
			>>reader[reader_num].month>>reader[reader_num].day;
		reader_num++;
	}
	fin2.close();
	//读取管理者信息
	fin3.open("Manager.txt");
	while(fin3){
		fin3>>man[man_num].name>>man[man_num].password>>man[man_num].workdays>>man[man_num].pay;
		man_num++;
	}
	fin3.close();
	//附加操作
	book_num--;
	man_num--;
	reader_num--;

	fin4.open("all_book_num.txt");
	fin4>>all_book_num;

}

Library::~Library()
{

}

//查询图书馆的总信息
void Library::search_lib_info()
{
	cout<<"   **图书馆"<<endl;
	cout<<" **地区最大的图书馆,现有藏书**万册"<<endl;
	cout<<" 始建于**年,占地**亩。"<<endl;
}

//查询图书管理员及信息
void Library::search_man_info()
{
	cout<<"本图书馆现有"<<man_num<<"名管理员,他们是:"<<endl;
	for(int i=0;i<man_num;i++){
		cout<<man[i].get_name()<<endl;
	}
	cout<<endl;
}

//查询藏书信息
void Library::search_book_info()
{
	cout<<"本图书馆现有藏书 "<<all_book_num<<" 本"<<endl;
}

//查询读者借阅信息
void Library::search_lend_info()
{
	cout<<"本图书馆现借阅信息如下:"<<endl;
	int i;
	int flag=0;
	for(i=0;i<reader_num;i++){
		if(reader[i].islend==true){
			cout<<reader[i].name<<"  借阅了  "<<reader[i].lended_book_name<<endl;
			flag=1;
		}
	}
	if(flag==0)
		cout<<"现在没有人借阅图书。"<<endl;
	cout<<endl;
}

//查询读者信息
void Library::search_reader_info()
{
	cout<<"请输入读者的姓名:";
	string n;
	cin>>n;
	int flag=0;
	for(int i=0;i<reader_num;i++)
	{
		if(reader[i].name==n){
			cout<<"以下是读者"<<n<<"的信息:"<<endl;
			cout<<"该读者是一名"<<reader[i].zhiwei<<endl;
			if(reader[i].islend==false)
				cout<<"该读者目前在图书馆没有借书"<<endl;
			else{
				 cout<<"该读者目前借的书是:"<<reader[i].lended_book_name<<endl;
				 if(reader[i].zhiwei=="teacher")
					 cout<<"到期时间是"<<(reader[i].month+2)%12<<"月"<<reader[i].day<<"日"<<endl;
				 else
					 cout<<"到期时间是"<<(reader[i].month+1)%12<<"月"<<reader[i].day<<"日"<<endl;
			}
			flag=1;
			break;
		}
	}
	if(flag==0)
		cout<<"对不起,没有这个读者。"<<endl;
}

//根据书名检索书刊信息
void Library::search_book(string s)
{
	int flag=0;
	for(int i=0;i<book_num;i++){
		if(lib[i].bookname==s){
			cout<<"你要找的这本书的信息是:"<<endl;
			cout<<"书名:"<<s<<endl;
			cout<<"作者:"<<lib[i].author<<endl;
			cout<<"id:"<<lib[i].bookid<<endl;
			cout<<"现有藏书量为:"<<lib[i].count<<"本"<<endl;
		}
		cout<<endl;
		flag=1;
	}
	if(flag==0)
		cout<<"没有找到相匹配的书名。"<<endl;
}

//存入新书
void Library::store_newbook()
{
	string s;
	int n;
	cout<<"请输入管理员姓名:";
	cin>>s;
	cout<<"请输入密码(必须是数字):";
	cin>>n;
	int flag=0;
	//验证管理员身份
	for(int i=0;i<man_num;i++){
		if(man[i].get_name()==s){
			if(man[i].get_password()==n){
				flag=1;
				break;
			}
		}
	}
	if(flag==0){
		cout<<"对不起,管理员姓名或密码错误!"<<endl;
		return;
	}
	//管理员身份通过,输入要存入的新书
	int a;
	string name;
	string au;
	cout<<"请输入要存入的新书的id:";
	cin>>a;
	int flag2=0;
	//此书已存在,只需count+1
	for(int d=0;d<book_num;d++){
		if(lib[d].bookid==a){
			lib[d].count++;
			cout<<"书已成功存入。"<<endl;
			flag2=1;
			break;
		}
	}
	//此书以前图书馆没有,新加入
	if(flag2==0){
		cout<<"请输入新书的名字:";
		cin>>name;
		cout<<"请输入新书的作者:";
		cin>>au;
		lib[book_num].author=au;
		lib[book_num].bookid=a;
		lib[book_num].bookname=name;
		lib[book_num].count=1;
		book_num++;
		cout<<"书已成功存入。"<<endl;
	}
	all_book_num++;

	//将更新后的图书信息存入文件
	ofstream fout;
	fout.open ("Book.txt");
	fout.clear();
	for(int u=0;u<book_num;u++){
		fout<<lib[u].bookid<<"  "<<lib[u].bookname<<"  "<<lib[u].author<<"  "<<lib[u].count<<endl;
	}

	//将更新后的图书总数量信息存入文件
	ofstream fou;
	fou.open("all_book_num.txt");
	fou.clear ();
	fou<<all_book_num;
}

//存入新的管理员信息
void Library::store_newman()
{
	string s;
	cout<<"请输入管理员的名字:";
	cin>>s;
	//判断此管理员是否已存在
	for(int i=0;i<man_num;i++){
		if(man[i].get_name()==s){
			cout<<"此管理员已存在。"<<endl;
			return;
		}
	}
	int p,a,b;
	cout<<"请输入密码(必须是数字):";
	cin>>p;
	cout<<"请输入工龄:";
	cin>>a;
	cout<<"请输入工薪:";
	cin>>b;
	man[man_num].set_name(s);
	man[man_num].set_password(p);
	man[man_num].set_pay(b);
	man[man_num].set_workdays(a);
	man_num++;
	cout<<"恭喜,您已经成为了本图书馆的管理员!"<<endl;

	//将更新后的管理员信息存入文件
	ofstream fout;
	fout.open("Manager.txt");
	fout.clear();
	for(int u=0;u<man_num;u++){
		fout<<man[u].name<<"  "<<man[u].password<<"  "<<man[u].workdays<<"  "<<man[u].pay<<endl;
	}
}

//修改管理员的信息
void Library::modify_man()
{
	cout<<"请输入要修改的管理员的姓名:"<<endl;
	string s;
	cin>>s;
	int flag=0;
	for(int i=0;i<man_num;i++){
		if(man[i].get_name()==s){
			cout<<"要把工龄修改为:";
			int a;
			cin>>a;
			man[i].set_workdays(a);
			cout<<"要把工薪修改为:";
			cin>>a;
			man[i].set_pay(a);
			cout<<"修改成功!"<<endl;
			flag=1;
			break;
		}
	}
	if(flag==0)
		cout<<"对不起,没有这个管理员。"<<endl;

	//将更新后的管理员信息存入文件
	ofstream fout;
	fout.open("Manager.txt");
	fout.clear();
	for(int u=0;u<man_num;u++){
		fout<<man[u].name<<"  "<<man[u].password<<"  "<<man[u].workdays<<"  "<<man[u].pay<<endl;
	}
}

//注册新的读者
void Library::store_reader()
{
	cout<<"请输入您的姓名:";
	string s;
	cin>>s;
	//检查是由此读者已存在
	for(int i=0;i<reader_num;i++){
		if(reader[i].name==s){
			cout<<"您已经注册过了。"<<endl;
			return;
		}
	}
	reader[reader_num].name=s;
	cout<<"请输入您的职业:1.学生  2.教师"<<endl;
	int y;
	cin>>y;
	if(y==1)
		reader[reader_num].zhiwei="student";
	else
		reader[reader_num].zhiwei="teacher";
	reader[reader_num].lended_book_name="null";
	reader[reader_num].lended_book_id=0;
	reader_num++;
	cout<<"恭喜,您已经成为本图书馆的读者了!"<<endl;

	//将更新后的读者信息存入文件
	ofstream fout;
	fout.open("Reader.txt");
	fout.clear ();
	for(int u=0;u<reader_num;u++){
		fout<<reader[u].name<<"  "<<reader[u].zhiwei<<"  "<<reader[u].islend<<"  "<<reader[u].lended_book_id
			<<"  "<<reader[u].lended_book_name<<"  "<<reader[u].month<<"  "<<reader[u].day<<endl;
	}
}

//借书
void Library::lend_book()
{
	cout<<"如果你还没有注册,请先注册为我们的读者。"<<endl;
	cout<<"如果你已经注册,请输入您的姓名:";
	string s;
	cin>>s;
	int i;
	for(i=0;i<reader_num;i++){
		if(reader[i].name==s){
			break;
		}
	}
	if(i==reader_num){
		cout<<"对不起,您还不是我们的读者,请先注册。"<<endl;
		return ;
	}
	if(reader[i].islend==true){
		cout<<"对不起,您上次借的书还没有还,请先还了以后再借,谢谢合作。"<<endl;
		return ;
	}
	cout<<"请输入您要借的书的id:";
	int j;
	cin>>j;
	for(int v=0;v<book_num;v++){
		if(lib[v].bookid==j){
			if(lib[v].count>0){
				reader[i].lended_book_name=lib[v].bookname;
				reader[i].lended_book_id=lib[v].bookid;
				reader[i].islend=true;
				cout<<"请输入今天是几月:";
				int a;
				cin>>a;
				reader[i].month=a;
				cout<<"请输入今天是几号:";
				cin>>a;
				reader[i].day=a;
				lib[v].count--;
				cout<<"借书成功!"<<endl;
			}
			else
				cout<<"对不起,此书已被借完。"<<endl;
			break;
		}
	}
	if(v==book_num)
		cout<<"对不起,图书馆里没有这本书。"<<endl;

	//将更新后的读者信息存入文件
	ofstream fout1;
	fout1.open("Reader.txt");
	fout1.clear ();
	for(int u=0;u<reader_num;u++){
		fout1<<reader[u].name<<"  "<<reader[u].zhiwei<<"  "<<reader[u].islend<<"  "<<reader[u].lended_book_id
			<<"  "<<reader[u].lended_book_name<<"  "<<reader[u].month<<"  "<<reader[u].day<<endl;
	}
	//将更新后的图书信息存入文件
	ofstream fout2;
	fout2.open ("Book.txt");
	fout2.clear();
	for(int t=0;t<book_num;t++){
		fout2<<lib[t].bookid<<"  "<<lib[t].bookname<<"  "<<lib[t].author<<"  "<<lib[t].count<<endl;
	}

	//将更新后的图书总数量信息存入文件
	ofstream fou;
	fou.open("all_book_num.txt");
	fou.clear ();
	fou<<all_book_num;
}

//还书
void Library::return_book()
{
	cout<<"请输入您的姓名:";
	string s;
	cin>>s;
	for(int i=0;i<reader_num;i++){
		if(reader[i].name==s){
			if(reader[i].islend==false){
				cout<<"对不起,您没有借书。"<<endl;
				return;
			}
			for(int j=0;j<book_num;j++){
				if(lib[j].bookid==reader[i].lended_book_id){
					lib[j].count++;
					break;
				}
			}
			reader[i].islend=false;
			cout<<"您借的书已经还了。"<<endl;
			break;
		}
	}
	if(i==reader_num)
		cout<<"对不起,没有这个读者。"<<endl;

	//将更新后的读者信息存入文件
	ofstream fout1;
	fout1.open("Reader.txt");
	fout1.clear ();
	for(int u=0;u<reader_num;u++){
		fout1<<reader[u].name<<"  "<<reader[u].zhiwei<<"  "<<reader[u].islend<<"  "<<reader[u].lended_book_id
			<<"  "<<reader[u].lended_book_name<<"  "<<reader[u].month<<"  "<<reader[u].day<<endl;
	}
	//将更新后的图书信息存入文件
	ofstream fout2;
	fout2.open ("Book.txt");
	fout2.clear();
	for(int t=0;t<book_num;t++){
		fout2<<lib[t].bookid<<"  "<<lib[t].bookname<<"  "<<lib[t].author<<"  "<<lib[t].count<<endl;
	}

	//将更新后的图书总数量信息存入文件
	ofstream fou;
	fou.open("all_book_num.txt");
	fou.clear ();
	fou<<all_book_num;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -