程序中的排序功能不能实现,请高手们指教,谢谢!
就是一个管理学生成绩的小程序,想输出排名信息,但不能实现,请高手指教.
程序如下:(可能是哪个排序的STL函数用的不太对)
#include<iostream>
#include<string>
#include<conio.h>
#include<algorithm>
#include<vector>
using namespace std;
class Student
{
private:
char name[80];
double score[3];
double summary;
public:
int id;
Student(){}
void input()
{
double sum=0;
cout<<"请输入学号:";
cin>>id;
cout<<"请输入姓名:";
cin>>name;
cout<<"请输入成绩(数学,英语,C++):"<<endl;
for(int i=0;i!=3;++i){
cin>>score[i];
sum+=score[i];}
summary=sum;
}
bool operator <(const Student&rhs){
return this->summary<rhs.summary;
} void print(){
cout<<"学号:"<<id<<'\t'<<"姓名:"<<name<<'\t'<<"数学"<<score[0]<<" 英语"<<score[1]<<" C++"<<score[2]<<'\t'<<"总分"<<summary<<endl;
}
};
vector<Student> v;
Student s[100];
void found(int d,int i)
{
while((s[i].id-d)!=0&&i!=v.size())
i++;
if(i==v.size())
cout<<"对不起,没有所需信息"<<endl;
else s[i].print();
}
int main()
{
int x;
while(true)
{
system("cls");
cout<<"请选择操作类型:"<<'\n'
<<"1.输入学生信息\n"<<"2.查询学生信息\n"<<"3.排名信息\n"<<"0.退出系统"<<endl;
cin>>x;
system("cls");
switch(x)
{
case 1:{
char p='y';
int n=0;
while(p=='y'){
s[n].input();
s[n].print();
v.push_back(*s);
n++;
cout<<"是否继续?(y/n)"<<endl;
cin>>p;
}
if(p=='n'){
cout<<"任意键返回"<<endl;
_getch();
continue;}
break;
}
case 2:{
int d,i=0;
char q='y';
while(q=='y'){
cout<<"输入所查学生的学号:";
cin>>d;
found(d,i);
cout<<"是否继续?(y/n)"<<endl;
cin>>q;
}
if(q=='n'){
cout<<"任意键返回"<<endl;
_getch();
continue;}
break;
}
case 3:{
system("cls");
sort(v.begin(),v.end());
for(int i=0;i<=v.size();i++)
s[i].print();
cout<<"任意键返回"<<endl;
_getch();
continue;
break;
} case 0:{
cout<<"谢谢使用学生管理系统"<<endl;
break;
}
}
}
}