#include<iostream>#include<fstream>#include<vector>#include<sstream>#include<string>#include<iomanip>#include<algorithm>using namespace std;//-----------------------------------------------------------------------------------------class Student //定义学生类{ string id,name, age, department; public: Student(string i="0",string n="0", string a="0",string d="0") :id(i),name(n),age(a),department(d){} int idget() {return atoi(id.c_str() );} string idstringget() { return id; } string nameget() {return name; } string ageget() {return age;} string departmentget() {return department; } void print() { cout<<"学号: "<<left<<setw(8)<<id<<"姓名: "<<setw(10)<<name<<"年龄: "<<setw(10)<<age <<"院系: "<<setw(10)<<department<<endl; }};//----------------------------------------------------------------------------------------------------void ftov(vector<Student> &v); //从文件中读到对象向量里void function(); //功能介绍函数bool lessThanBitSum(Student& a,Student& b){ return a.idget()<b.idget();}//==========================================================================================================void insert(vector<Student> &v) //输入函数{ system("cls");//清屏Loop: string id, name, age, department; cout<<"输入学生信息:\n"; cout<<"请输入该生的学号: "<<endl; cin>>id; for(int i=0;i<v.size();i++) { if(v[i].idstringget()==id) { cout<<"已有该学号;请重新输入"<<endl; goto Loop; } } cout<<"请输入该生的姓名:\n "; cin>>name; cout<<"请输入该生的年龄:\n "; cin>>age; cout<<"请输入该生的院系: \n"; cin>>department; Student s(id,name,age,department); v.push_back(s); cout<<"信息输入成功!"<<endl<<string(70,'-')<<endl; function();}//===========================================================================================void find( vector<Student> &v) //查询函数{ system("cls");//清屏 cout<<"查询学生信息:\n"; cout<<"请输入该生的学号: \n"; string id; cin>>id; int k=0; for(int i=0;i<v.size();i++) { if(v[i].idstringget()==id) { k=k+1; cout<<"该学生信息如下:\n"; v[i].print(); cout<<endl; } } if(k==0) { cout<<"没有该生相关信息\n"; cout<<string(70,'-')<<endl; function(); } else { cout<<string(70,'-')<<endl; function(); }}//==========================================================================================void del(vector<Student> &v) //删除函数{ system("cls");//清屏 cout<<"删除学生信息:\n"; cout<<"\n请输入该生的学号:\n "; int id;cin>>id; int k=0; for(int i=0;i<v.size();i++) { if(v[i].idget()==id) { k++; cout<<"信息:";v[i].print(); cout<<"信息已成功删除!\n"<<endl; v.erase(&v[i]); } } if(k==0) { cout<<"对不起,没有找到您所要删除的学生的信息!\n"<<string(70,'-')<<endl; function(); } else { cout<<string(70,'-')<<endl; function(); }}//============================================================================================= void sort(vector<Student> &v) //排序函数{ system("cls");//清屏 cout<<"排序:\n"; sort(v.begin(),v.end() ,lessThanBitSum); for(int i=0;i<v.size();i++) v[i].print(); cout<<string(70,'-')<<endl; function();}//============================================================================================void save( vector<Student> &v) //把类向量保存到文件中的函数{ system("cls");//清屏 cout<<endl; ofstream out("D://student.txt"); for(int i=0; i<v.size(); i++) out<<v[i].idget()<<" "<<v[i].nameget()<<" "<<v[i].ageget()<<" "<<v[i].departmentget()<<endl; cout<<"信息已保存到D://student.txt中!\n"<<endl; function();}//===========================================================================================void function() //功能介绍{ system("color 0E");//改变环境颜色 cout<<" 功能说明:\n\n" <<"\t\t1、输入功能\t\t\t2、查询功能\n" <<"\t\t3、删除功能\t\t\t4、排序功能\n" <<"\t\t5、保存功能\t\t\t6、退出程序\n" <<"\n请输入1-6进行操作\n";}//=======================================================================================void ftov(vector<Student> &v) //将文件中的数据读到类向量中的函数{ ifstream in("D://student.txt"); string id,name, age, department; for( ;in>>id>>name>>age>>department; ) { Student s(id,name,age,department); v.push_back(s); }}//===================================================================================== int main(){ function(); vector<Student> v; ftov(v); for(int a;cin>>a;) { if(a==1) insert(v); else if(a==2) find(v); else if(a==3) del(v); else if(a==4) sort(v); else if(a==5) save(v); else if(a==6) { system("cls"); cout<<"\t\t\t你已成功退出,感谢你的使用!欢迎交流!QQ:1020945306\n\n"; goto End; } else cout<<"您输入的指令有误,请重新输入!\n"; }End: return 0; }//========================================================================================

评论