oj 图书管理(list)

来源:互联网 发布:网络机顶盒 会员 编辑:程序博客网 时间:2024/06/14 13:04
#include <iostream>#include <string>#include <list>#include <sstream> using namespace std;float stringToNum(const string& str) {      istringstream iss(str);      float num;      iss >> num;      return num;      }  struct Book{ public:string name;string author;float price;};void AddBook(Book book,list<Book> &list){int flag=0;std::list<Book>::iterator iter=list.begin();for(;iter!=list.end();iter++){if(iter->name==book.name&&iter->author==book.author){flag=1;cout<<"FAIL"<<endl;break;}}if(flag==0){list.push_back(book);cout<<"SUCCESS"<<endl;}}void RemoveBook(string name,string author,list<Book> &list){int flag=0;std::list<Book>::iterator iter=list.begin();for(;iter!=list.end();iter++){if(iter->name==name&&iter->author==author){list.erase(iter);flag=1;cout<<"SUCCESS"<<endl;break;}}if(flag==0) cout<<"FAIL"<<endl;}void FindBook(string name,list<Book> &list){int count=0;std::list<Book>::iterator iter=list.begin();for(;iter!=list.end();iter++){if(iter->name==name) count++;}cout<<count<<endl;}int main(){    list<Book> list;int n=0;cin>>n;string com;for(int i=0;i<n;i++){cin>>com;if(com=="ADD"){char Name[50];char Author[50];char Price[50];cin.getline(Name,50,')');string name(Name);name.erase(0,2);cin.getline(Author,50,')');string author(Author);author.erase(0,2);cin.getline(Price,50,')');string price(Price);price.erase(0,2);float prices=stringToNum(price);Book book;book.name=name;book.author=author;book.price=prices;    AddBook(book,list);}if(com=="REMOVE"){char Name[50];char Author[50];cin.getline(Name,50,')');string name(Name);name.erase(0,2);cin.getline(Author,50,')');string author(Author);author.erase(0,2);RemoveBook(name,author,list);}if(com=="FIND"){char Name[50];cin.getline(Name,50,')');string name(Name);name.erase(0,2);FindBook(name,list);}}return 0;}

原创粉丝点击