C语言实习

图书管理系统

 

 

 

 

#include "iostream"
#include "string"
#include "list"
#include "cassert"
using namespace std;
struct employee{
    string m_num;                   //编号
    string m_name;                  //书名
    string m_author;                //作者
    string m_type;                  //类型
    int m_store;                    //状态
    double m_insurance;             //出版时间
    double m_tax;};                 //价格
struct student{
double s_num;
string s_name;
string s_book;};
list<employee> emps;
list<student> stus;
int main()                           //___________________主函数
{void print1(const employee &e);     //打印图书信息
void print2(const student &s);      //打印读者信息
void input();                       //录入图书信息
void del();                         //删除图书或读者的信息
void correct();                     //修改图书或读者的信息
void show_all();                    //输出所有图书信息
void show_name();                   //按书名查询图书信息
void show_reader();                 //按读者姓名查询读者信息
void b_borrow();                    //借书
void b_return();                    //还书
printf("/n/n/t    ☆☆☆☆欢迎使用【 万 芳 】图书管理系统☆☆☆☆/n/n/n");
printf("            =>>   设计组:龙思灿  钱庆彪   <<=/n /t/t/t 石邦凯  唐飞宇/n/n/n");
printf("/n/tMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM/n");
printf("/tMMM  1.录入   2.删除           3.修改   MMM/n");
printf("/tMMM/t/t/t/t/tMMM/n");
printf("/tMMM  4.查询   5.显示所有图书   6.借书   MMM/n");
printf("/tMMM/t/t/t/t/tMMM/n");
printf("/tMMM  7.还书   8.退出                    MMM/n");
printf("/tMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM/n");
printf("/t请选择操作:=> ");
int choice=0;
cin>>choice;
while (choice!=8)
{ if (choice==1) input();
  if (choice==2) del();
  if (choice==3) correct();
  if (choice==4)
  {
   int ch=0;
   printf("/n/t###  1.图书查询  2.读者查询  3.退出  ###/n/n/t请选择查询对象:=> ");
   cin>>ch;
   if (ch==1)
   show_name();
   if (ch==2)
   show_reader();
   if (ch==3)
   {
printf("/n/tMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM/n");
printf("/tMMM  1.录入   2.删除           3.修改   MMM/n");
printf("/tMMM/t/t/t/t/tMMM/n");
printf("/tMMM  4.查询   5.显示所有图书   6.借书   MMM/n");
printf("/tMMM/t/t/t/t/tMMM/n");
printf("/tMMM  7.还书   8.退出                    MMM/n");
printf("/tMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM/n");
printf("/t请选择操作:=> ");
  cin>>choice;
    continue;
}
}
  if (choice==5) show_all();
  if (choice==6) b_borrow();
  if (choice==7) b_return();
printf("/n/tMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM/n");
printf("/tMMM  1.录入   2.删除           3.修改   MMM/n");
printf("/tMMM/t/t/t/t/tMMM/n");
printf("/tMMM  4.查询   5.显示所有图书   6.借书   MMM/n");
printf("/tMMM/t/t/t/t/tMMM/n");
printf("/tMMM  7.还书   8.退出                    MMM/n");
printf("/tMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM/n");
printf("/t请选择操作:=> ");
  cin>>choice;
}
printf("按任意键退出系统.../n");
return 0;
}
void print1(const employee &e)         //_____________图书信息输出函数
{
cout<<"/t编号:    "<<e.m_num<<endl;
cout<<"/t书名:    "<<e.m_name<<endl;
cout<<"/t作者:    "<<e.m_author<<endl;
cout<<"/t类型:    "<<e.m_type<<endl;
cout<<"/t出版时间(年):"<<e.m_insurance<<endl;
cout<<"/t价格(元):    "<<e.m_tax<<endl;
cout<<"/t状态(1.在馆2.借出): "<<e.m_store<<endl;
}
void print2(const student &s)          //_____________读者信息输出函数
{
cout<<"/t学号:    "<<s.s_num<<endl;
cout<<"/t姓名:    "<<s.s_name<<endl;
cout<<"/t所借书书名:    "<<s.s_book<<endl;
}
void input()                           //_____________录入图书信息函数
{
{string num,name,author,type;
int store;
double ins,tax;
cout<<"/n  请输入图书的.../n"<<endl;
printf("/t编号:=> ");
cin>>num;
printf("/t书名:=> ");
cin>>name;
printf("/t作者:=> ");
cin>>author;
printf("/t类型:=> ");
cin>>type;
printf("/t出版时间(年):=> ");
cin>>ins;
printf("/t价格(元):=> ");
assert(!cin.fail());
cin>>tax;
printf("/t状态(1.在馆2.借出):=> ");
cin>>store;
employee temp;
temp.m_author=author;
temp.m_type=type;
temp.m_insurance=ins;
temp.m_name=name;
temp.m_num=num;
temp.m_store=store;
temp.m_tax=tax;
emps.push_back(temp);
cout<<"/n  图书录入操作完毕且已成功保存.../n"<<endl;
char next;
printf("是否继续录入图书信息(Y/N)?  ");
scanf("%s",&next);
if(next=='Y'||next=='y')
  input();
};
}
void b_return()                        //______________还书函数
{
if (stus.size()==0)
{
  cout<<"/n  Sorry,当前没有图书被借出..."<<endl;
  return;
}
string name,reader_name;
printf("  请输入读者名字:=> ");
cin>>reader_name;
printf("  请输入要归还的图书名称:=> ");
cin>>name;
bool isfind=false;
list<student>::iterator ater;
for (ater=stus.begin();ater!=stus.end();ater++)
{
  if (ater->s_name==reader_name)
  {
   isfind=true;
   stus.erase(ater);
list<employee>::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
  if (iter->m_name==name)
   iter->m_store=1;
  break;
}
cout<<"  书名为"<<name<<"的图书已归还..." <<endl;
   return;
  }
}
}
void del()                              //___________删除图书记录或读者信息函数
{
int choice=0;
printf("/n/t###  1.图书删除  2.读者信息删除  3.退出  ###/n/n/t请选择录入对象:=> ");
    cin>>choice;
if (choice==1)
{
if (emps.size()==0)
{
  cout<<"/n  Sorry,当前图书记录为空..."<<endl;
  return;
}
string name;
bool isfind=false;
cout<<"  请输入要删除的图书名称:=> "<<endl;
cin>>name;
list<employee>::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
  if (iter->m_name==name)
  {
   isfind=true;
   emps.erase(iter);
   cout<<"  书名为"<<name<<"的图书记录已删除..."<<endl;
   return;
  }
}
if (!isfind)
{
  cout<<"没有找到书名为"<<name<<"的图书."<<endl;
  return;
}
}
    if (choice==2)
{
if (stus.size()==0)
{
  cout<<"/n  Sorry,当前读者信息为空..."<<endl;
  return;
}
string reader_name;
bool isfind=false;
cout<<"  请输入要删除的读者信息姓名:=> "<<endl;
cin>>reader_name;
list<student>::iterator ater;
for (ater=stus.begin();ater!=stus.end();ater++)
{
  if (ater->s_name==reader_name)
  {
   isfind=true;
   stus.erase(ater);
   cout<<"  姓名为"<<reader_name<<"的读者信息已删除..."<<endl;
   return;
  }
}
if (!isfind)
{
  cout<<"没有找到姓名为"<<reader_name<<"的读者."<<endl;
  return;
}
}
}
void correct()                            //___________修改图书记录或读者信息函数
{
    int choice=0;
printf("/n/t###  1.图书记录修改  2.读者信息修改  3.退出  ###/n/n/t请选择修改对象:=> ");
    cin>>choice;
if (choice==1)
{
if (emps.size()==0)
{
  cout<<"/n  Sorry,当前图书记录为空..."<<endl;
  return;
}
bool isfind=false;
string name;
printf("/n/t请输入要修改的图书名称:=> ");
cin>>name;
list<employee>::iterator iter;
for (iter=emps.begin();iter!=emps.end();iter++)
{
  if (iter->m_name==name)
  {
   isfind=true;
   cout<<"/n  书名为"<<name<<"的图书记录已找到..."<<endl;
   break;
  }
}
if (isfind)
{
  string num,name,author,type;
  int store;
  double tax,ins;
  print1(*iter);
  cout<<endl;
  printf("  请输入图书的.../n");
  printf("/t新编号:=> ");
  cin>>num;
  printf("/t新书名:=> ");
  cin>>name;
  printf("/t新作者:=> ");
  cin>>author;
  printf("/t新类型:=> ");
  cin>>type;
  printf("/t新出版时间(年):=> ");
  cin>>ins;
  printf("/t新价格(元):=> ");
  cin>>tax;
  printf("/t新状态(1.在馆2.借出):=> ");
  cin>>store;
  iter->m_author=author;
  iter->m_insurance=ins;
  iter->m_name=name;
  iter->m_num=num;
  iter->m_store=store;
  iter->m_tax=tax;
  cout<<"/n  图书"<<name<<"记录已被成功修改..."<<endl;
}
else
{
  cout<<"  抱歉,没有找到书名为"<<name<<"的图书记录..."<<endl;
}
}
    if (choice==2)
{
if (stus.size()==0)
{
  cout<<"/n  Sorry,当前读者信息为空..."<<endl;
  return;
}
bool isfind=false;
string name;
printf("/n/t请输入要修改的读者姓名:=> ");
cin>>name;
list<student>::iterator ater;
for (ater=stus.begin();ater!=stus.end();ater++)
{
  if (ater->s_name==name)
  {
   isfind=true;
   cout<<"/n  姓名为"<<name<<"的读者信息已找到..."<<endl;
   break;
  }
}
if (isfind)
{
  string name,book;
  double num;
  print2(*ater);
  cout<<endl;
  printf("  请输入读者的.../n");
  printf("/t新编号:=> ");
  cin>>num;
  printf("/t新姓名:=> ");
  cin>>name;
  printf("/t新图书书名:=> ");
  cin>>book;
  ater->s_name=name;
  ater->s_num=num;
  ater->s_book;
  cout<<"/n  读者"<<name<<"的信息已被成功修改..."<<endl;
}
else
{
  cout<<"  抱歉,没有找到姓名为"<<name<<"的读者信息..."<<endl;
}
}
}
void show_all()                     //___________显示所有图书信息函数
{
if (emps.size()==0)
{
  cout<<"/n  Sorry,图书记录为空..."<<endl;
  return;
}
cout<<"/n  全体图书数据:"<<endl;
cout<<"--------------------"<<endl;
list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
  cout<<endl;
  print1(*iter);
  cout<<endl;
}
cout<<"--------------------"<<endl;
}
void show_name()                    //____________按书名查询图书信息函数
{
if (emps.size()==0)
{
  cout<<"/n  Sorry,当前的图书记录为空..."<<endl;
  return;
}
bool isfind=false;
string name;
printf("/n/t请输入要查询的图书名称:=> ");
cin>>name;
list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
  if (iter->m_name==name)
  {
   isfind=true;
   cout<<"/n  书名为"<<name<<"的图书记录已找到..."<<endl;
   print1(*iter);
   break;
  }
}
if (!isfind)
{
  cout<<"/n  抱歉,没有找到书名为"<<name<<"的图书..."<<endl;
  return;
}
}
void show_reader()                  //____________按读者姓名查询读者信息函数
{
if (stus.size()==0)
{
  cout<<"/n  Sorry,读者信息为空..."<<endl;
  return;
}
double isfind=0;
string name;
printf("/t请输入要查询的读者姓名:=> ");
cin>>name;
cout<<"/n  读者["<<name<<"]的信息:"<<endl;
cout<<"--------------------"<<endl;
list<student>::iterator ater;
for(ater=stus.begin();ater!=stus.end();ater++)
{
  if (ater->s_name==name)
  {
   isfind++;
   print2(*ater);
   cout<<endl;
   continue;
  }
}
cout<<"--------------------"<<endl;
if (isfind==0)
{
  cout<<"/n  抱歉,没有找到名为["<<name<<"]的读者..."<<endl;
}
}
void b_borrow()                      //________________借书函数
{
if (emps.size()==0)
{
  cout<<"/n  Sorry,当前的图书记录为空..."<<endl;
  return;
}
{string name,book;
double num;
    bool isfind=false;
printf("/t请输入所借书书名:=> ");
cin>>name;
    list<employee>::iterator iter;
for(iter=emps.begin();iter!=emps.end();iter++)
{
  if (iter->m_name==name&&iter->m_store==1)
  {
   isfind=true;
   break;
  }
}

if (!isfind)
{
  cout<<"/n  抱歉,没有找到书名为"<<name<<"的图书或已借出..."<<endl;
  return;
}
cout<<"/n  请输入读者的.../n"<<endl;
printf("/t编号:=>       ");
cin>>num;
printf("/t姓名:=>       ");
cin>>name;
student semp;
employee temp;
semp.s_num=num;
semp.s_name=name;
semp.s_book=name;
    iter->m_store=2;
    stus.push_back(semp);
    cout<<"/n  借书手续完毕;请妥善保管该书.../n"<<endl;
}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值