定义一个学生信息类,存储学生信息
#include<bits/stdc++.h> using namespace std; class Student//定义一个学生信息类,存储学生信息 { string name; int no; int score[3]; float average; int order; public: Student(int id,string na,int x,int y,int z):name(na),no(id) { score[0]=x;score[1]=y;score[2]=z; order=-1;average=(score[0]+score[1]+score[2])/3.0; } Student() { score[0]=score[1]=score[2]=0; order=-1,average=0; } void display(); string getName(){return name;} void setName(string name){this->name=name;}//注意返回类型是void,同时,因为修改名字时两个都是name,所以原来的要用this 指针 int setNo(int b){no=b;}//将修改过的学号赋值给no int getNo(){return no;} int setAverage(int avg){average=avg;} int getAverage(){return average;} int setOrder(int a){order=a;}//将修改过的次序赋值给order int getOrder(){return order;} }; void Student::display() { cout<<name<<"\t"<<no<<"\t"<<score[0]<<"\t"<<score[1]<<"\t"<<score[2]<<"\t"<<average<<"\t"<<order<<endl; } bool comp1(Student stu1,Student stu2)//按成绩排序 { if(stu1.getAverage()-stu2.getAverage()>=1e-9) return 1; else return 0; } bool comp2(Student stu1,Student stu2)//按学号排序 { return stu1.getNo()<stu2.getNo(); } class Student_List//定义一个操作类,主要对学生信息进行操作,如查询 { Student List[100]; int n; public: Student_List():n(0){}//构造函数名和类名一致,对数组成员初始化,不带参数的构造函数 void ListSort()//排序,并对成绩序号更新 { sort(List,List+n,comp1); for(int i=0;i<=n;i++) { List[i].setOrder(i+1);//建立序号 } } void add()//添加一个或多个学生的信息函数 { int no; string name; int x,y,z; system("cls");//清屏 cout<<"请按照学号,姓名,数学,英语,c++,顺序输入学生信息,学号输入-1表示输入结束"<<endl; while(cin>>no&&no!=-1) { cin>>name; cin>>x>>y>>z; Student s(no,name,x,y,z);//调用学生信息类的构造函数给数据赋值 List[n++]=s;//将学生信息存入数组中,每一个数组元素代表一个学生的信息 ListSort(); } } //按自己的意愿排序输出 //flag=2,学号,flag=1,成绩, void display(int flag) { if(flag==1) sort(List,List+n,comp1);//按成绩排序输出 else sort(List,List+n,comp2);//按学号大小排序 system("cls"); cout<<"姓名\t"<<"学号\t"<<"数学\t"<<"英语\t"<<"c++\t"<<"平均成绩\t"<<"名次\t"<<endl; for(int i=0;i<=n;i++) { List[i].display(); } } int searchNo(int no) { for(int i=0;i<=n;i++) { if(List[i].getNo()==no) return i; else return -1; } } void query(int no) { int i; system("cls"); cout<<"请输入要查询的学号,输入-1结束"<<endl; while(cin>>no&&no!=-1) { i=searchNo(no); if(i!=-1) { cout<<"姓名\t"<<"学号\t"<<"数学\t"<<"英语\t"<<"c++\t"<<"平均成绩\t"<<"名次\t"<<endl; List[i].display(); } else cout<<"输入的学号有误,请重试,输入-1结束查询"<<endl; } } void changeNo(){}//修改学号 void changeName(){}//修改姓名 void changeScore(){}//修改成绩 }; int main()// { Student s(1,"lily",66,77,88); s.display(); cout<<s.getAverage()<<endl; system("pause"); /*s.setName("zhang"); s.getName(); //s.display(); s.setNo(2); s.getNo(); //s.display(); s.setAverage(90); s.getAverage(); //s.display(); s.setOrder(2); s.getOrder(); s.display();*/ Student_List c;//创建一个操作类的对象 c.add(); c.display(1); system("pause"); c.query(2); return 0; }