学生信息管理boost版

#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(); 
}
 




 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值