【STL-map的简单应用】借还书系统

#include<iostream>
#include<map>
#include<string>
using namespace std;
map<string,int> book;
class Book
{
private:
	static int number;//借出书数量
	static int all_price;//借出总价值
public:
	void show()
	{
		if(book.empty()) cout<<"\n当前没有任何借出的书"<<endl;
		else 
		{
			cout<<"\n当前图书借出量为  "<<number<<endl
				<<"输出借出的所有图书的名字和价格"<<endl;
			map<string,int>::iterator p=book.begin();
			for(p;p!=book.end();p++) cout<<p->first<<' '<<p->second<<endl;
			cout<<"当前图书借出总价值为  "<<all_price<<endl;
		}
	}
	void borrow()
	{
		cout<<"输入借出的书名和价格"<<endl;
		string name;int price;
		cin>>name>>price;
		book.insert(pair<string,int>(name,price));
		all_price+=price;
		number++;
	}
	void restore()
	{
		while(true)
		{
			cout<<"输入归还的书名"<<endl;
			string name;
			cin>>name;
			map<string,int>::iterator i=book.find(name);
			if(i==book.end())
			{
				cout<<"查无此书,检查书名是否正确"<<endl;
				continue;
			}
			else 
			{
				cout<<"书名:   "<<i->first<<"   归还成功"<<endl;
				number--;
				all_price-=i->second;
				book.erase(i);
				break;
			}
			
		}
	
	}
};
int Book::number=0;
int Book::all_price=0;
int main()
  {
	  Book test;
	  cout<<"借出几本书?"<<endl;
	  int t=0;
	  cin>>t;
	  while(t--){test.borrow();}
	  test.show();
	  cout<<"\n归还几本书?"<<endl;
	  cin>>t;
	  while(t--){test.restore();}
	  test.show();
}

运行结果:

借出几本书?
3
输入借出的书名和价格
三体 58
输入借出的书名和价格
细胞生命的礼赞 30
输入借出的书名和价格
百年孤独 20


当前图书借出量为  3
输出借出的所有图书的名字和价格
百年孤独 20
三体 58
细胞生命的礼赞 30
当前图书借出总价值为  108


归还几本书?
1
输入归还的书名
三体
书名:   三体   归还成功


当前图书借出量为  2
输出借出的所有图书的名字和价格
百年孤独 20
细胞生命的礼赞 30
当前图书借出总价值为  50
请按任意键继续. . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值