`
heglase
  • 浏览: 3323 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

学生信息管理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(); 
}
 




 

 

 

  • 大小: 7.5 KB
分享到:
评论

相关推荐

    C++实现学生信息管理系统

    《C++实现学生信息管理系统详解》 在信息技术领域,学生信息管理系统是一种常见的应用,它用于高效、有序地管理和处理学校中的学生数据。本系统利用C++编程语言进行开发,涵盖了学生基本信息管理、学生成绩管理以及...

    基于C++的命令行学生信息管理系统

    **基于C++的命令行学生信息管理系统** 在计算机科学领域,C++是一种强大的、面向对象的编程语言,常用于开发高效、稳定且可扩展的软件系统。本项目“基于C++的命令行学生信息管理系统”是针对大一学生在学习C++时的...

    C++的学生管理系统

    首先,学生管理系统的核心功能包括学生信息管理、课程管理、成绩管理等。在C++中,我们可以利用类(class)来封装这些功能,每个类代表一个实体,如“学生”类、“课程”类和“成绩”类。通过类的实例化,我们可以...

    基于C++的水闸信息管理系统源码.zip

    【标题】基于C++的水闸信息管理系统源码 该标题揭示了这是一个使用C++编程语言编写的水闸信息管理系统的源代码。C++是一种通用的、面向对象的编程语言,以其高效性、灵活性和丰富的库支持而闻名,是开发系统软件、...

    C++ 面向对象 学生管理系统(带有文件操作)

    在本项目中,"C++ 面向对象 学生管理系统(带有文件操作)" 是一个使用 C++ 编程语言实现的学生信息管理程序,它利用面向对象编程的特性来设计和组织代码,同时具备文件操作功能,可以持久保存和读取学生数据。...

    boost.asio.ssl示例的证书

    Boost.Asio是一个功能强大的C++库,它为编写高性能网络应用程序提供了便利。在Boost.Asio中,SSL(Secure Sockets Layer)支持允许开发人员实现加密的网络连接,以确保数据在客户端和服务器之间传输时的安全性。在您...

    vc++学生信息和课程信息序列化

    在本“vc++学生信息和课程信息序列化”作业中,学生可能需要实现一个系统,能够有效地保存和加载学生和课程的相关信息。 首先,我们需要理解C++中的数据结构和类设计。在处理学生信息和课程信息时,我们通常会定义...

    C++学生通讯系统

    "C++学生通讯系统"是一个基于C++设计的软件应用,旨在实现对大量学生信息的有效管理和通信功能。这个系统能够帮助教育机构或学校管理学生的个人信息,以及方便学生之间的交流。 1. **C++基础** C++是C语言的扩展,...

    boost_closed_loop.zip

    这种转换器在电源管理、电池供电设备和分布式电源系统中广泛应用。Boost电路通常由电感器、电容器、开关元件(如MOSFET)和控制器组成。 2. 闭环控制系统:闭环控制系统是基于反馈机制的控制系统,其核心是将系统...

    c&c++课程设计KTV歌曲系统,学生档案管理系统,个人收支系统,职工管理系统等.rar

    系统可能包括员工信息管理、考勤记录、工资计算等功能。涉及的知识点有: - 类的设计:创建员工类,包含姓名、职位、工资等属性,以及请假、加班等行为。 - 权限控制:根据员工角色分配不同操作权限,涉及访问...

    学生管理系统

    在这个系统中,我们可以通过C++编程语言来实现学生信息的增删改查功能,从而实现对学生的录入、修改、删除以及查询操作。下面我们将详细探讨如何使用C++来构建这样一个系统。 首先,我们需要理解C++的基础知识。C++...

    c&c++课程设计KTV歌曲系统,学生档案管理系统,个人收支系统,职工管理系统等.zip

    这个项目可能涉及到类的设计,比如“Student”类,包含姓名、学号、成绩等属性,以及相关的操作如添加、删除、查询学生信息。C++的面向对象特性,如封装、继承和多态,会在这里得到体现。同时,可能需要使用STL容器...

    电力电子:升压转换器_ boost变换器的MATLAB仿真文件

    电力电子技术是现代电子工程领域中的重要组成部分,它涉及到电能的转换、控制和管理。在众多电力电子变换器中,升压转换器(Boost Converter)是一种广泛应用的直流-直流变换器,它能够将较低的直流电压提升到较高的...

    毕业设计基于django的智能教室管理系统源码

    模块介绍 1、user:学生基础信息 2、managements:学生信息管理 3、statistic:教室人流管理 4、reserve:教室预约 安装教程 0.pip换源(清华): pip config set global.index-url ...

    毕业设计《BUCK-BOOST架构的数控电源项目》+C语言项目源码+文档说明

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    宿舍管理系统源代码+论文.zip

    2. **学生信息管理**:录入和管理学生的个人信息,如学号、姓名、班级等。 3. **宿舍分配**:根据学生需求和宿舍空余情况自动或手动分配宿舍。 4. **入住退宿管理**:处理学生的入住申请、退宿手续,更新宿舍状态。 ...

    职工管理系统_C#管理系统_管理系统_课程管理系统_C++_职工管理系统_

    3. **课程管理系统**:在教育领域,职工管理系统可能与其他课程管理系统相结合,帮助教师、教务人员管理教学计划、学生信息和成绩。这类系统可以自动化课程安排、出勤记录、作业提交和成绩录入等过程,减轻了教师的...

    matlab开发-BuckBoostConverter

    同时,Simulink模型也可以作为教学工具,帮助学生理解Buck-Boost转换器的工作原理。总的来说,利用MATLAB进行Buck-Boost转换器的开发,不仅能够提高设计效率,还能提供深入的理论和实践学习体验。

    std_db.zip_DB_library

    这通常涉及到学生信息管理、书籍库存管理、借阅记录跟踪等功能。 基于“db_library”这个标签,我们可以推测这个项目可能包含了一个数据库库(library),用于存储和操作数据。这可能是一个自定义的数据库管理系统...

    教务管理系统(封装优化版本).zip

    7. **算法与数据结构**:在处理学生信息、课程调度等问题时,可能会用到排序、查找等算法,以及链表、树、集合等数据结构。 8. **编译与调试**:开发过程中,开发者可能使用了GCC、Clang或Visual Studio等编译器,...

Global site tag (gtag.js) - Google Analytics