今天看到了静态数据成员和静态成员函数,觉得对于我这个学生成绩系统的优化有帮助,就现学现用了一下 // 基本功能: // 可以输入几名学生姓名 学号 语数英三门课程分数 //能根据学生姓名,输出其各科成绩 #include <iostream> #include <iomanip> #include <string> using namespace std; int welcome(); //welcome函数用来打印最开始的欢迎词及指导词 class student { private: string name; int num; int mark[3]; static int population; //population用于存放学生个数 public: char judge; //judge用于存放y/n student * next; void input(); //输入学生的信息 static void output(student *); //输出学生信息 }; int student::population=0; int main() { const int N=1000; student stu[N]; student *p=&stu[0]; if(welcome()==1) //如果用户输入1,则开始输入数据 { for(int i=0;i<N;i++) { stu[i].next=&stu[i+1]; stu[i].input(); if(stu[i].judge=='n') break; p=p->next; } student::output(stu); } return 0; } int welcome() { int n; cout<<" 欢迎来到学生信息系统"<<endl; //前面有三十个空格 cout<<"********************************************************************************"<<endl; cout<<" 请先输入学生的姓名及其信息,默认为1位学生。按1开始输入学生信息"<<endl; cin>>n; return n; } void student::input() { while(cout<<"是否要输入学生信息(y/n)"&&cin>>student::judge&&judge=='y') { cout<<"姓名"<<endl; cin>>name; cout<<"学号"<<endl; cin>>num; cout<<"语文"<<endl; cin>>mark[0]; cout<<"数学"<<endl; cin>>mark[1]; cout<<"英语"<<endl; cin>>mark[2]; population++; } } void student::output(student *stu) { string search_name; cout<<"请输入要查找的学生姓名: "; cin>>search_name; for(int i=0;i<population;i++) { if(search_name==stu[i].name) { cout<<"语文: "<<stu[i].mark[0]<<" "; cout<<"数学: "<<stu[i].mark[1]<<" "; cout<<"英语 "<<stu[i].mark[2]<<" "<<endl; } else { cout<<"查无此人"<<endl; break; } } }