⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1号文件.cpp

📁 一份功能详细的图书馆管理系统的软件(包含各种头文件和CPP文件,以及相关的文档).
💻 CPP
字号:
#include<iostream>
#include<vector>
using namespace std;
int  NUM_SUBJECT=5;
struct Record 
{    
	string number;						// 学号(中间不能有空格)	
	string name;						// 姓名(中间可以有空格)	
	string gender;						// 性别(中间无空格)	
	float score[NUM_SUBJECT];	    // 分别为该学生5门课的成绩	
	float sum;						// 总分	
	float average;						// 平均分	
	int index;							// 名次	
	bool toBeDeleted;					// 做是否删除的标记	
	Record() {toBeDeleted = false;}
};
class RecordVec : public vector<Record*>
{
	friend ostream& operator<< (ostream& out , const RecordVec& rec )
	{
	for(RecordVec::iterator iter=rec.begin();iter!=rec.end();++iter)//iter++指向下一个结构
	out<<(*iter)->number;
	out<<(*iter)->name;
	out<<(*iter)->gender
	for(int ix=0;ix<NUM_SUBJECT;ix++)
	out<<(*iter)->score[ix];
    out<<(*iter)->sum;
    out<<(*iter)->average;
    out<<(*iter)->index;
	out<<(*iter)->toBeDeleted;
	return out;
};	
	friend istream& operator>> (istream& in,const RecordVec& rec)
	{   for(RecordVec::iterator iter=rec.begin();iter!=rec.end();++iter)
        in>>(*iter)->number;
     	in>>(*iter)->name;
	    in>>(*iter)->gender
     	for(int ix=0;ix<NUM_SUBJECT;ix++)
    	in>>(*iter)->score[ix];
    	(*iter)->sum=0;
    	for(int ix=0;ix<NUM_SUBJECT;ix++)
        (*iter)->sum=(*iter)->sum+(*iter)->score[ix];
    	in>>(*iter)->sum;
        (*iter)->average=(*iter)->sum/NUM_SUBJECT;
        in>>(*iter)->average;
        in>>(*iter)->index;
      	in>>(*iter)->toBeDeleted;
     	return in;
};  
	//RecordVec可以直接使用vector中定义的所有函数,
	//但重写了clear()函数、erase()函数和增加了析构函数;
	//并重载了输入、输出操作符。
	//这是因为vector的删除元素的操作只会释放存储元素的空间;
	//对于本程序来说,就是只释放Record指针,却并不会释放该指针所指向的对象。
	//因此RecordVec覆盖了基类中的clear()函数和erase()函数,使得在删除元素时首先释放该元素,
	//即Record指针所指向的Record对象,然后再调用基类中被覆盖的同名函数以实现删除元素的功能。
	//增加了析构函数是为了将指针销毁的同时,也将其所记录的所有对象销毁。
	//重载了输入、输出操作符是为了便于从输入、输出流中还原或保存记录的对象。
    public:	
		// 销毁数组中记录的所有Record所占用的内存空间,
		    //并且清空数组存储的记录
	    	// 该函数覆盖了基类中的同名函数	
			void clear(){
                    for(RecordVec::iterator it=this->end();
	         it!=this->begin();it--)
	     	erase(it);
			};	//销毁指定的记录,然后从数组中将其删除	
	            // 该函数覆盖了基类中的同名函数
        RecordVec::iterator erase(RecordVec::iterator where)
		{
	       RecordVec::iterator wh=where-1;
	 	   delete *where;
		   this->erase(where);}         ////////	erase(it);
		
	~RecordVec();
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -