📄 sdt.h
字号:
#ifndef SDT_H
#define SDT_H
#include<map>
#include<utility>
#include<vector>
#include<cstdlib>
void main_menu();
class student{
friend std::istream& operator>>(std::istream&,student&);
friend std::ostream& operator<<(std::ostream&,const student&);
public:
student():s_name("*"),s_num("*"),s_class("*"){}
operator std::string() const
{
return s_class;
}
std::string s_name; //姓名
std::string s_num; //学号
std::string s_class; //班级
std::map<std::string,double> s_score;//课程得分
};
extern std::vector<student> svec; //申明全局vector存放文件内容
inline bool operator<(const student &lhs,const student &rhs) //重载小于操作符,供按班级排序
{
return lhs.s_class<rhs.s_class;
}
inline std::istream& operator>>(std::istream &in,student &rhs)
{
in>>rhs.s_name>>rhs.s_num>>rhs.s_class;
std::string kc; //课程名字
double score=0.0; //课程得分
while(in>>kc>>score)
rhs.s_score.insert(make_pair(kc,score));
return in;
}
inline std::ostream& operator<<(std::ostream &os,const student &rhs)
{
os<<rhs.s_name<<"\t"<<rhs.s_num<<"\t"<<rhs.s_class
<<"\t";
std::map<std::string,double>::const_iterator map_it=rhs.s_score.begin();
while(map_it!=rhs.s_score.end())
{
os<<map_it->first<<" "<<map_it->second<<"\t";
++map_it;
}
return os;
}
inline void select_menu()
{
std::cout<<"请输入数字键进行选择!"<<std::endl;
}
inline void come_back()
{
system("cls");
main_menu();
}
class GT_cls //函数对象,做find_if的谓词函数,找出第1个不相等的
{
public:
GT_cls(std::string new_val="*"):val(new_val){}
bool operator()(const std::string &s)
{
return s!=val;
}
private:
std::string val;
};
inline void back_main()
{
std::cout<<std::endl<<std::endl;
char y;
std::cout<<"操作完毕,是否返回主菜单(Y/N)"<<std::endl;
std::cin>>y;
if(y=='Y'||y=='y')
{
system("cls");
main_menu();
}
else exit(0);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -