学生成绩管理系统,排序这个功能模块求修改
程序代码:
#include<iostream> #include<vector> #include<string> #include<algorithm> #include<iomanip> #include<list> using namespace std; class person { public: string name; string tel; string adr; string ID; public: person(){}; // person(string,string,string,string); ~person(){}; }; class student:public person { public: string code; double math; double chinese; double english; public: student(){}; //student(string,string,string,string,string,double,double,double); double getsum() { return math+chinese+english; } double getaver() { return (math+chinese+english)/3; } }; class control { public: // void find(std::vector<student>&ver); void edit(vector<student>&ver); void del(vector<student>&ver); void insert(vector<student>&ver); void st(vector<student>&ver); void list(vector<student>&ver); void jiemian(); }; void control::jiemian() { cout<<endl; cout<<"*****************************************"<<endl; cout<<"* 请选择您需要的操作: *"<<endl; cout<<"* 1 增加学生 *"<<endl; cout<<"* 2 删除学生 *"<<endl; cout<<"* 3 修改数据 *"<<endl; cout<<"* 4 查询数据 *"<<endl; cout<<"* 5 输出所有数据 *"<<endl; cout<<"* 6 按成绩排序 *"<<endl; cout<<"* 0 退出 *"<<endl; cout<<"* 请输入对应数字 *"<<endl; cout<<"*****************************************"<<endl; cout<<endl; return; }; void control::insert(vector<student>&ver) { student stu; string stucode; string stuname; string stuadr; string stutel; string stuID; double math,chinese,english; cout<<"请输入学号:"; cin>>stucode; cout<<"请输入姓名:"; cin>>stuname; cout<<"请输入地址:"; cin>>stuadr; cout<<"请输入电话:"; cin>>stutel; cout<<"请输入身份证号:"; cin>>stuID; cout<<"请输入数学成绩:"; cin>>math; cout<<"请输入语文成绩:"; cin>>chinese; cout<<"请输入英语成绩:"; cin>>english; stu.code=stucode; stu.name=stuname; stu.adr=stuadr; stu.tel=stutel; stu.ID=stuID; stu.math=math; stu.chinese=chinese; stu.english=english; stu.getsum(); stu.getaver(); ver.push_back(stu); return; } void control::del(vector<student>&ver) { string stucode; string stuname; cout<<"请输入学号:"; cin>>stucode; cout<<"请输入姓名:"; cin>>stuname; vector<student>::iterator i; for(i=ver.begin();i!=ver.end();++i) { if(((*i).code==stucode)&&((*i).name==stuname)) { ver.erase(i); return; } } return; } void control::list(vector<student>&ver) { vector<student>::iterator i; for(i=ver.begin();i!=ver.end();i++) { cout<<"学员清单如下:"<<endl; cout<<"学号 姓名 电话 地址 身份证号 数学成绩 语文成绩 英语成绩 总分 平均分"<<endl; cout<<(*i).code<<setw(4)<<(*i).name<<setw(4)<<(*i).tel<<setw(4)<<(*i).adr<<setw(4)<<(*i).ID<<setw(4)<<(*i).math<<setw(4)<<(*i).chinese<<setw(4)<<(*i).english<<setw(4)<<(*i).getsum()<<setw(4)<<(*i).getaver()<<endl; } } void control::edit(vector<student>&ver) { string stucode; string stuname; cout<<"请输入学号:"; cin>>stucode; cout<<"请输入姓名:"; cin>>stuname; vector<student>::iterator i; for(i=ver.begin();i!=ver.end();++i) { if(((*i).code==stucode)&&((*i).name==stuname)) { cout<<"原来的数据:"<<endl; cout<<"学号:"<<(*i).code<<endl; cout<<"姓名:"<<(*i).name<<endl; cout<<"电话:"<<(*i).tel<<endl; cout<<"地址:"<<(*i).adr<<endl; cout<<"身份证号码:"<<(*i).ID<<endl; cout<<"数学成绩:"<<(*i).math<<endl; cout<<"语文成绩:"<<(*i).chinese<<endl; cout<<"英语成绩:"<<(*i).english<<endl; cout<<"请输入新的数据:"<<endl; cout<<"请输入姓名:"; cin>>(*i).name; cout<<"请输入地址:"; cin>>(*i).adr; cout<<"请输入电话:"; cin>>(*i).tel; cout<<"请输入身份证号:"; cin>>(*i).ID; cout<<"请输入数学成绩:"; cin>>(*i).math; cout<<"请输入语文成绩:"; cin>>(*i).chinese; cout<<"请输入英语成绩:"; cin>>(*i).english; (*i).getsum(); (*i).getaver(); return; } } } void control::st(vector<student>&ver) { char fg; cout<<"*****************************"<<endl; cout<<"* 1 按总分排序 *"<<endl; cout<<"* 2 按语文排序 *"<<endl; cout<<"* 3 按数学排序 *"<<endl; cout<<"* 4 按英语排序 *"<<endl; cout<<"* 5 按平均分排序 *"<<endl; cout<<"* 0 退出 *"<<endl; cout<<"*****************************"<<endl; cin>>fg; switch(fg) { case '0': return; case '1': std::sort(ver.begin(),ver.end(),greategetsum()); break; case '2': std::sort(ver.begin(),ver.end(),greatechinese); break; case '3': std::sort(ver.begin(),ver.end(),greatemath); break; case '4': std::sort(ver.begin(),ver.end(),greateenglish); break; case '5': std::sort(ver.begin(),ver.end(),greategetaver()); break; } return; } void main() { char key; vector<student>ver; control c1; do{ c1.jiemian(); cin>>key; switch(key) { case '1': c1.insert(ver); break; case '2': c1.del(ver); break; case '3': c1.edit(ver); break; case '4': // c1.find(ver); break; case '5': c1.list(ver); break; case '6': c1.st(ver); break; } }while(key!='0'); }