📄 library.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 + -