C++图书馆管理系统

图书出租管理系统
某公司请你为租赁的图书管理开发一个书刊出租管理系统。要求实现如下功能:
(1)读者信息管理:读者信息(身份证号码、姓名、性别、电话等)的查询、添加、删除、修改
(2)书刊管理:书刊ISBN号、书刊名称、编著者、价格、出版日期等信息的管理,能够以读者身份进行实现查询,能够以管理员身份实现查询、添加、删除、修改
(3)租书管理:能够完成每个读者的租书业务,并能够以管理员的身份实现查询、添加、删除、修改
(4)利润信息管理,能够允许管理员以指定日期查看租金汇总信息,能够查看每个读者的租书情况。
(5)能够实现用户注册管理和授权
运行结果图

/Book类///
class school
{
public:
int scnt; //已录入的名称
vector A;
public:
school();
void printfc(); //输入
void reinf(); //修改
void deinf(); //删除
void getinf(); //录入
void search(); //查询
bool filesave(chartemp); //保存文本
bool fileread(char
temp); //读取文本
};
/User类///
#include"头文件t.h"

class User{
public:
char stu_number[20]; //读书号?
char stu_name[20]; //读者姓名?
public:
User()
{
strcpy(stu_number,“000”);
strcpy(stu_name,“0”);
}
friend class Mybook;
};
/Mybook类///
#include"user.h"
#include"Book.h"
class Mybook{
private:
list link_book; //保存书本信息
list link_user; //保存用户信息
public:
int main_menu(); //主菜单
void getmenu(); //获取菜单
int menu(); //图书管理菜单
int reader_menu();
int adm_menu();
void getreader_menu();
void dis_profit();
void getadm_menu(); //
void getchoice(); //输入选择
void add_book(); //添加图书
void display_book(); //显示图书信息
void del_book(); //删除图书信息
void search_book(); //搜索图书信息
void update_book(); //修改图书信息
void borrow_book(); //借书
void return_book(); //还书
int menu_user(); //管理用户菜单
void add_user(); //添加用户
void del_user(); //删除用户
void display_user(); //查看用户
void update_user(); //修改用户
void look_borrow(); //查看借阅图书情况
void get_user(); //用户管理
void recv_file(); //将数据保存到文件中
void read_file(); //将数据从文件中读取
void recv_user(); //将用户信息保存到文件
void read_user(); //将用户信息从文件读取
类的详细定义
/Book类///

#include “Book.h”
Book::Book()
{
state = 0;
strcpy(stu_number,“000”);
strcpy(stu_name,“0”);
}
//保存图书信息到文件
Mybook类///
#include"mybook.h"
#include <io.h>
void Mybook::recv_file()
{
ofstream outfile(“library.txt”,ios::out);
if(!outfile)
{
cout<<“文件打开失败”<<endl;
return ;
}
list::iterator p = link_book.begin();
while(p != link_book.end())
{
outfile<id<<endl;
outfile<book_name<<endl;
outfile<state<<endl;
outfile<place<<endl;
outfile<stu_number<<endl;
outfile<stu_name<<endl;
p++;
}
cout<<“保存完成!”<<endl;
outfile.close();
}

void Mybook::read_file()
{
ifstream infile(“library.txt”,ios::in);
Book new_book;
if(!infile)
{
cout<<“read fail”<<endl;
return ;
}
char temp[20];
while(!infile.eof())
{
infile.getline(temp,’\n’);
new_book.id = atoi(temp);
memset(temp,0,20);
infile.getline(new_book.book_name,’\n’);
infile.getline(temp,’\n’);
new_book.state = atoi(temp);
memset(temp,0,20);//地址,数值,长度
infile.getline(new_book.place,’\n’);
infile.getline(new_book.stu_number,’\n’);
infile.getline(new_book.stu_name,’\n’);
if(infile.eof())
{
break;
}
link_book.push_back(new_book);
}
infile.close();
}
//保存用户信息
void Mybook::recv_user()
{
ofstream outfile(“user.txt”,ios::out);
if(!outfile)
{
cout<<“文件打开失败”<<endl;
return ;
}
list::iterator p = link_user.begin();
while(p != link_user.end())
{
outfile<stu_number<<endl;
outfile<stu_name<<endl;
p++;
}
cout<<“保存完成!”<<endl;
outfile.close();
}
//读取数据至用户
void Mybook::read_user()
{
ifstream infile(“user.txt”,ios::in);
if(!infile)
{
cout<<“文件打开失败!”<<endl;
return ;
}
User new_user;
while(!infile.eof())
{
infile.getline(new_user.stu_number,’\n’);
infile.getline(new_user.stu_name,’\n’);
if(infile.eof())
{
break;
}
link_user.push_back(new_user);
}
infile.close();
}
int Mybook::main_menu()
{
int choice = 0;
cout<<"\t\t\t\t===================================================="<<endl;
cout<<"\t\t\t\t* 欢迎来到图书管理系统 “<<endl;
cout<<”\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
| 1、读者登录 | “<<endl;
cout<<”\t\t\t\t
| 2、管理员登录 | “<<endl;
cout<<”\t\t\t\t
| 0、退出 | “<<endl;
cout<<”\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------*"<<endl;
cout<<"\t\t\t\t\t请输入选择:";
cin>>choice;
while(!(choice >= 0 && choice <= 2))
{
cout<<“输入错误,请重新输入:”;
cin>>choice;
}
return choice;
}
int Mybook::reader_menu()
{
int choice = 0;
cout<<"\t\t\t\t===================================================="<<endl;
cout<<"\t\t\t\t* 欢迎来到读者管理系统 “<<endl;
cout<<”\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
1、借书 “<<endl;
cout<<”\t\t\t\t
2、还书 “<<endl;
cout<<”\t\t\t\t
0、退出 “<<endl;
cout<<”\t\t\t\t
__________________________________________________"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------*"<<endl;
cout<<"\t\t\t\t\t请输入选择:";
cin>>choice;
while(!(choice >= 0 && choice <= 2))
{
cout<<“输入错误,请重新输入:”;
cin>>choice;
}
return choice;
}
int Mybook::adm_menu()
{
int choice = 0;
cout<<"\t\t\t\t===================================================="<<endl;
cout<<"\t\t\t\t* 欢迎来到管理员系统 “<<endl;
cout<<”\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
1、图书管理 “<<endl;
cout<<”\t\t\t\t
2、用户管理 “<<endl;
cout<<”\t\t\t\t
3、利润查看 “<<endl;
cout<<”\t\t\t\t
0、保存并退出 “<<endl;
cout<<”\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------"<<endl;
cout<<"\t\t\t\t
--------------------------------------------------*"<<endl;
cout<<"\t\t\t\t\t请输入选择:";
cin>>choice;
while(!(choice >= 0 && choice <= 3))
{
cout<<“输入错误,请重新输入:”;
cin>>choice;
}
return choice;
}
//执行主菜单
void Mybook::getmenu()
{
int choice = 0;
read_user();
read_file();
while(1)
{
system(“cls”);
choice = main_menu();
switch(choice)
{
case 1://登陆读者系统
{ int flag2 = 0;
char id[20];
cout<<“请输入读者号:”;
cin>>id;
list::iterator it = link_user.begin();
while(it != link_user.end())
{
if(strcmp(it->stu_number,id) == 0)//matlab中函数,strcmp(s1,s2) 判断两个字符串s1和s2是否相同,相同返回true ,不同返回false
{
getreader_menu();
break;
}
it++;
}
if(flag2 == 0)
{
cout<<“你没有借书权限!”<<endl;
return ;
}
break;
}
case 2:
{
int num=0;
string a=“123456”; //磁盘中读取
string b; //用户输入
cout<<“请输入管理员密码”<<endl;
cin>>b;
if(a==b){
getadm_menu();
break;
}
else{cout<<“密码错误”<<endl;
}
}
case 0:
{
exit(0);
}
}
cout<<endl<<endl<<endl;
cout<<“按任意键返回…”;
getchar();
getchar();
}
}

void Mybook::getreader_menu()
{
int choice = 0;
read_user();
read_file();
while(1)
{
system(“cls”);
choice = reader_menu();
switch(choice)
{
case 1:
{
borrow_book();
break;
}
case 2:
{
return_book();
break;
}
case 0:
{
exit(0);
}
}
cout<<endl<<endl<<endl;
cout<<“按任意键返回…”;
getchar();
getchar();
}
}
void Mybook::borrow_book()
{
int flag = 0;
int flag1 = 0;
int flag2 = 0;
char name[20];
char id[20];
char book_name[20];
cout<<“请输入书名:”;
cin>>book_name;
list::iterator p = link_book.begin();
while(p != link_book.end())
{
if(strcmp(p->book_name,book_name) == 0)
{
cout<<"======================================="<<endl;
cout<<“书号:”<id<<endl;
cout<<“书名:”<book_name<<endl;
if(p->state == 0)
{
cout<<“图书状态:未借阅!”<<endl;
}
else
{
cout<<“图书状态:已借阅!”<<endl;
}
cout<<“所在书架”<place<<endl;
flag1 = 1;
}
p++;
}
if(flag1 == 0)
{
cout<<“你所借阅的书不存在,借书失败!”;
return ;
}
p = link_book.begin();
cout<<“已查找该图书,请输入书号进行借阅:”;
int book_id;
cin>>book_id;
while(p != link_book.end())
{
if(strcmp(p->book_name,book_name) == 0 && p->id == book_id && p->state == 0)
{
strcpy(p->stu_number,id);
strcpy(p->stu_name,name);
p->state = 1;
cout<<“借书成功!”<<endl;
flag = 1;
break;
}
p++;
}
if(flag == 0)
{
cout<<“该书已被借阅,借书失败!”;
}

}
void Mybook::return_book()
{
char stu_id[20];
cout<<“请输入读者号”;
cin>>stu_id;
int flag = 0;
int flag1 = 0;
list::iterator p = link_book.begin();
while(p != link_book.end())
{
if(strcmp(p->stu_number,stu_id) == 0)
{
cout<<"="<<endl;
cout<<“书号:”<id<<endl;
cout<<“书名:”<book_name<<endl;
flag = 1;
}
p++;
}
if(flag == 0)
{
cout<<“当前没有您没有借书”<<endl;
return ;
}
else if(flag == 1)
{
cout<<“已经查询到你借阅的图书,请输入书号进行归还:”<<endl;
}
int id;
cin>>id;
p = link_book.begin();
while(p != link_book.end())
{
if(strcmp(p->stu_number,stu_id) == 0&&p->id == id)
{
strcpy(p->stu_name ,“000”);
strcpy(p->stu_number , “0”);
p->state = 0;
cout<<“还书成功!”<<endl;
flag1 = 1;
break;
}
p++;
}
if(flag1 == 0)
{
cout<<“输入书号错误,还书失败!”<<endl;
}
}
void Mybook::getadm_menu(){
int choice = 0;
read_user();
read_file();
while(1)
{
system(“cls”);
choice = adm_menu();
switch(choice)
{
case 1:
{
getchoice();
break;
}
case 2:
{
get_user();
break;
}
case 0:
{
cout<<“正在保存,请稍后…”<<endl;
recv_file();
exit(0);
}
}
cout<<endl<<endl<<endl;
cout<<“按任意键返回…”;
getchar();
getchar();
}}
int Mybook::menu_user()
{
int choice = 0;
cout<<"\t\t\t\t
"<<endl;
cout<<"\t\t\t\t* 用户管理 “<<endl;
cout<<”\t\t\t\t
----------------------------------------"<<endl;
cout<<"\t\t\t\t
1、添加用户 “<<endl;
cout<<”\t\t\t\t
2、显示用户 “<<endl;
cout<<”\t\t\t\t
3、删除用户 “<<endl;
cout<<”\t\t\t\t
4、修改用户 “<<endl;
cout<<”\t\t\t\t
5、显示图书借用信息 “<<endl;
cout<<”\t\t\t\t
6、保存并返回上一层 “<<endl;
cout<<”\t\t\t\t
----------------------------------------*"<<endl;
cout<<"\t\t\t\t\t请输入选择:";
cin>>choice;
while(!(choice >= 1 && choice <= 6))
{
cout<<“输入错误,请重新输入:”;
cin>>choice;
}
return choice;

}
//执行用户管理
void Mybook::get_user()
{
int choice = 0;
while(1)
{
system(“cls”);
choice = menu_user();
system(“cls”);
switch(choice)
{
case 1:
{
add_user();
break;
}
case 2:
{
display_user();
break;
}
case 3:
{
del_user();
break;
}
case 4:
{
update_user();
break;
}
case 5:
{
look_borrow();
break;
}
case 6:
{
recv_user();
return ;
}
}
cout<<endl<<endl<<endl;
cout<<“按任意键返回…”;
getchar();
getchar();
}
}
//添加用户
void Mybook::add_user()
{
User new_user;
cout<<“请输入读者号:”;
cin>>new_user.stu_number;
cout<<“请输入姓名:”;
cin>>new_user.stu_name;

link_user.push_back(new_user);
cout<<“添加成功!”;
cout<<“是否继续添加(y/n)”;
char ch;
cin>>ch;
while(!(ch == ‘Y’||ch == ‘y’||ch == ‘N’||ch == ‘n’))
{
cout<<“输入有误,请重新输入:”;
cin>>ch;
}
if(ch == ‘Y’||ch == ‘y’)
{system(“cls”);
add_user();
}
}
//显示用户
void Mybook::display_user()
{
list::iterator it = link_user.begin();
while(it != link_user.end())
{
cout<<"="<<endl;
cout<<“读者号:”<stu_number<<endl;
cout<<“姓名:”<stu_name<<endl<<endl;
it++;
}
}
//删除用户
void Mybook::del_user()
{
char id[20];
cout<<“请输入你要删除的学生读者号:”;
cin>>id;
int flag = 0;
list::iterator it = link_user.begin();
while(it != link_user.end())
{
if(strcmp(it->stu_number,id) == 0)
{
link_user.erase(it);
flag = 1;
break;
}
it++;
}
if(flag == 1)
{
cout<<“删除成功!”<<endl;
}
else
{
cout<<“你删除的用户不存在,删除失败!”<<endl;
}
}
//修改用户信息
void Mybook::update_user()
{
cout<<“请输入你要修改的读者号:”<<endl;
char number[20];
cin>>number;
int flag = 0;
list::iterator it = link_user.begin();
while(it != link_user.end())
{
if(strcmp(it->stu_number,number) == 0)
{
cout<<“请更新读者号:”;
cin>>it->stu_number;
cout<<“请更新姓名:”;
cin>>it->stu_name;
flag = 1;
break;
}
it++;
}
if(flag == 1)
{
cout<<“修改成功!”<<endl;
}
else
{
cout<<“修改失败!”<<endl;
}
}
//查看已借阅图书情况
void Mybook::look_borrow()
{
int flag = 0;
list::iterator p = link_book.begin();
while(p != link_book.end())
{
if(p->state == 1)
{
cout<<"
="<<endl;
cout<<“姓名:”<stu_name<<endl;
cout<<“读者号:”<stu_number<<endl;
cout<<“书名:”<book_name<<endl;
cout<<“书架号:”<place<<endl;
flag = 1;
}
p++;
}
if(flag == 1)
{
cout<<“已查询图书相关借阅信息”<<endl;
}
else
{
cout<<“目前暂时没有相关图书借阅!”<<endl;
}
}
int Mybook::menu()
{
int choice = 0;
cout<<"\t\t\t\t\t
=============================="<<endl;
cout<<"\t\t\t\t\t* 图书管理 “<<endl;
cout<<”\t\t\t\t\t
------------------------------------------"<<endl;
cout<<"\t\t\t\t\t
1、添加图书信息 2、显示图书信息 “<<endl;
cout<<”\t\t\t\t\t
------------------------------------------"<<endl;
cout<<"\t\t\t\t\t
3、删除图书信息 4、搜索图书信息 “<<endl;
cout<<”\t\t\t\t\t
------------------------------------------"<<endl;
cout<<"\t\t\t\t\t
5、更新图书信息 6、返回上一层 “<<endl;
cout<<”\t\t\t\t\t
------------------------------------------*"<<endl;
cout<<"\t\t\t\t\t请输入选择:";
cin>>choice;
while(!(choice >= 1 && choice <= 6))
{
cout<<“输入错误,请重新输入:”;
cin>>choice;
}
return choice;

}
//实行图书管理
void Mybook::getchoice()
{
int choice = 0;
while(1)
{
system(“cls”);
choice = menu();
system(“cls”);
switch(choice)
{
case 1:
{
add_book();
break;
}
case 2:
{
display_book();
break;
}
case 3:
{
del_book();
break;
}
case 4:
{
search_book();
break;
}
case 5:
{
update_book();
break;
}
case 6:
{
return ;
}
}
cout<<endl<<endl<<endl;
cout<<“按任意键返回…”<<endl;
getchar();
getchar();
}
}
//增加书本
void Mybook::add_book()
{
Book new_book;
cout<<“请输入书号:”;
cin>>new_book.id;
cout<<“请输入书名:”;
cin>>new_book.book_name;
cout<<“请输入图书书架:”;
cin>>new_book.place;

link_book.push_back(new_book);
cout<<“添加成功!”;
cout<<“是否继续添加(y/n)”;
char ch;
cin>>ch;
while(!(ch == ‘Y’||ch == ‘y’||ch == ‘N’||ch == ‘n’))
{
cout<<“输入有误,请重新输入:”;
cin>>ch;
}
if(ch == ‘Y’||ch == ‘y’)
{
system(“cls”);
add_book();
}
}
//显示书本信息
void Mybook::display_book()
{
list::iterator p = link_book.begin();
while(p != link_book.end())
{
cout<<"="<<endl;
cout<<“书号:”<id<<endl;
cout<<“书名:”<book_name<<endl;
if(p->state == 0)
{
cout<<“图书状态:未借阅!”<<endl;
}
else
{
cout<<“图书状态:已借阅!”<<endl;
}
cout<<“所在书架”<place<<endl<<endl;
p++;
}
}
//删除书本信息
void Mybook::del_book()
{
list::iterator p = link_book.begin();
int num = 0;
int flag = 0;
cout<<“请输入你要删除的书号:”;
cin>>num;
while(p != link_book.end())
{
if(p->id == num)
{
link_book.erase§;
flag = 1;
break;
}
p++;
}
if(flag == 1)
{
cout<<"\n\n删除完成!";
}
else
{
cout<<"\n\n该书不存在,删除失败!"<<endl;
}
}
//搜索书本信息
void Mybook::search_book()
{
list::iterator p = link_book.begin();
char book_name[20];
int flag = 0;
cout<<“请输入你要查找的书名:”;
cin>>book_name;
while(p != link_book.end())
{
if(strcmp(p->book_name,book_name) == 0)
{
cout<<"
="<<endl;
cout<<“书号:”<id<<endl;
cout<<“书名:”<book_name<<endl;
if(p->state == 0)
{
cout<<“图书状态:未借阅!”<<endl;
}
else
{
cout<<“图书状态:已借阅!”<<endl;
}
cout<<“所在书架”<place<<endl;
flag = 1;
}
p++;
}
if(flag == 1)
{
cout<<"\n\n查找完成!";
}
else
{
cout<<"\n\n目前图书馆暂无此书!"<<endl;
}
}
//修改书本信息
void Mybook::update_book()
{
list::iterator p = link_book.begin();
int num = 0;
int flag = 0;
cout<<“请输入你要更新的书号:”;
cin>>num;
while(p != link_book.end())
{
if(p->id == num)
{
cout<<“请输入书名”;
cin>>p->book_name;
cout<<“请输入图书书架号:”;
cin>>p->place;
flag = 1;
}
p++;
}
if(flag == 1)
{
cout<<"\n\n更新完成!";
}
else
{
cout<<"\n\n该书不存在,更新失败!"<<endl;
}
}

main函数的流程图及具体
#include"mybook.h"

int main()
{
Mybook b;
b.getmenu();

return 0;
}

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/*****************************************************************************************/#include #include #include #include //输入/输出文件流类using namespace std;const int Maxr=100;//最多的读者const int Maxb=100;//最多的图书const int Maxbor=5;//每位读者最多借五本书//读者类,实现对读者的信息的描述class Reader { private: int tag; //删除标记 1:已删 0:未删 int no; //读者编号 char name[10]; //读者姓名 int borbook[Maxbor];//所借图书 public: Reader() {} char *getname() {return name;} //获取姓名 int gettag() {return tag;} //获取删除标记 int getno() {return no;} //获取读者编号 void setname(char na[]) //设置姓名 { strcpy(name,na); } void delbook(){ tag=1; }//设置删除标记 1:已删 0:未删 void addreader(int n,char *na)//增加读者 { tag=0; no=n; strcpy(name,na); for(int i=0;i<Maxbor;i++) borbook[i]=0; } void borrowbook(int bookid)//借书操作 { for(int i=0;i<Maxbor;i++) { if (borbook[i]==0) { borbook[i]=bookid; return; } } } int retbook(int bookid)//还书操作 { for(int i=0;i<Maxbor;i++) { if(borbook[i]==bookid) { borbook[i]=0; return 1; } } return 0; } void disp()//读出读者信息 { cout << setw(5) << no <<setw(10) << name<<"借书编号:["; for(int i=0;i<Maxbor;i++) if(borbook[i]!=0) cout << borbook[i] << "|"; cout << "]"<<endl; }};//读者类库,实现建立读者的个人资料 class RDatabase{ private: int top; //读者记录指针 Reader read[Maxr];//读者记录public: RDatabase() //构造函数,将reader.txt读到read[]中 { Reader s; top=-1; fstream file("reader.txt",ios::in);//打开一个输入文件 while (1) { file.read((char *)&s,sizeof(s)); if (!file)break; top++; read[top]=s; } file.close(); //关闭 reader.txt } void clear()//删除所有读者信息 { top=-1; } int addreader(int n,char *na)//添加读者时先查找是否存在 { Reader *p=query(n); if (p==NULL) { top++; read[top].addreader(n,na); return 1; } return 0; } Reader *query(int readerid)//按编号查找 { for (int i=0;i<=top;i++) if (read[i].getno()==readerid && read[i].gettag()==0) { return &read[i]; } return NULL; } void disp() //输出所有读者信息 { for (int i=0;i<=top;i++) read[i].disp(); } void readerdata();//读者库维护 ~RDatabase() //析构函数,将read[]写到reader.txt文件中 { fstream file("reader.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值