#pragma once
#include <iostream>
#include <string>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
using namespace std;
class Student
{
public:
Student(void)
{
}
Student(int id,string name,double score):_id(id),_name(name),_score(score)
{
}
virtual ~Student(void)
{
}
int GetId()
{
return _id;
}
string GetName()
{
return _name;
}
double GetScore()
{
return _score;
}
void SetId(int id)
{
_id=id;
}
void SetName(string name)
{
_name=name;
}
void SetScore(double score)
{
_score=score;
}
private:
int _id;
string _name;
double _score;
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & _id;
ar & _name;
ar & _score;
}
};
#pragma once
#include <deque>
#include <string>
#include "Student.h"
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/deque.hpp>
using namespace std;
typedef deque<Student> STU_LIST;
typedef STU_LIST::iterator STU_LIST_ITER;
class StudentManager
{
friend class boost::serialization::access;
public:
StudentManager(void);
virtual ~StudentManager(void);
void AddStu(const Student&);
void DelStu(int);
Student& FindStu(int);
void PrintStuByLikeName(string);
void Display();
void SaveFile( );
StudentManager& ReadFile();
Student& FindByIndex(int);
void EditByIndex(int,int,string,double);
private:
STU_LIST _stuList;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & _stuList;
}
};
//———————————————————————————————
#include "StudentManager.h"
#include "Student.h"
#include <string>
#include <deque>
#include <iostream>
#include <sstream>
#include <fstream>
#include <iterator>
#include <boost\archive\text_oarchive.hpp>
#include <boost\archive\text_iarchive.hpp>
using namespace std;
StudentManager::StudentManager(void)
{
}
void StudentManager::AddStu(const Student& s)
{
_stuList.push_back(s);
}
void StudentManager:: Display()
{
STU_LIST_ITER iter;
Student stu;
for(iter=this->_stuList.begin();iter!=this->_stuList.end();++iter)
{
stu=(*iter);
cout<<stu.GetId()<<" "<<stu.GetName()<<" "<<stu.GetScore()<<endl;
}
}
void StudentManager::DelStu(int id)
{
STU_LIST_ITER it;
for(it=this->_stuList.begin(); it!=_stuList.end(); )
{
Student stu=(* it);
if(stu.GetId() == id)
{
it = _stuList.erase(it);
}
else
{
++it;
}
}
}
void StudentManager::PrintStuByLikeName(string likename)
{
STU_LIST_ITER it;
string::size_type position;
for(it=this->_stuList.begin(); it!=_stuList.end(); )
{
Student stu=(* it);
position= stu.GetName().find(likename);
if(stu.GetName().npos != position )
{
cout<<stu.GetId()<<" "<<stu.GetName()<<" "<<stu.GetScore()<<endl;
++it;
}
else
{
++it;
}
}
}
void StudentManager::SaveFile( )
{
ofstream file("c:\\123.txt");
boost::archive::text_oarchive oa(file);
oa<<(*this);
}
StudentManager& StudentManager::ReadFile()
{
StudentManager* sm=new StudentManager;
std::ifstream file("c:\\123.txt");
boost::archive::text_iarchive ia(file);
ia>>(*sm);
return (*sm);
}
StudentManager::~StudentManager(void)
{
_stuList.clear();
}
Student& StudentManager::FindByIndex(int index)
{
return this->_stuList.at(index);
}
void StudentManager::EditByIndex(int index,int id,string name,double score)
{
Student& stu=_stuList.at(index);
stu.SetId(id);
stu.SetName(name);
stu.SetScore(score);
}
#include <boost\serialization\base_object.hpp>
#include <boost\serialization\utility.hpp>
#include <boost\serialization\list.hpp>
#include <boost\serialization\assume_abstract.hpp>
#include <boost\archive\text_oarchive.hpp>
#include <boost\archive\text_iarchive.hpp>
#include "Student.h"
#include "StudentManager.h"
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
StudentManager stum;
cout<<"新增了三个学生"<<endl;
Student stu(1,"sss",129);
Student stu1(2,"aas",119);
Student stu2(3,"dds",125.5);
stum.AddStu(stu);//增
stum.AddStu(stu2);
stum.AddStu(stu1);
stum.Display();//遍历
cout<<"删了1个学生"<<endl;
stum.DelStu(1);//删
stum.Display();//遍历
cout<<"查找名字中含有s的学生"<<endl;
stum.PrintStuByLikeName("s");//模糊查找
stum.SaveFile();//保存到文件中
cout<<"保存文件后,load出来"<<endl;
StudentManager stum2= stum.ReadFile();//从文件中载入内存
stum2.Display();
cout<<"修改下标为零的student后"<<endl;
stum2.EditByIndex(0,999,"nyh",150.55);
stum2.Display();
}