新增加计算平均分,修改了一个bug,暂时无大的改动。 / // 基本功能: // // 可以输入几名学生姓名 学号 语数英三门课程分数 // // 能根据学生姓名,输出其各科成绩,计算三门平均分// / #include <iostream> #include <iomanip> #include <string> using namespace std; int welcome(); //welcome函数用来打印最开始的欢迎词及指导词 class student { private: string name; int num; double mark[3]; double average; static int population; //population用于存放学生个数 public: char judge; //judge用于存放y/n student * next; void input(); //输入学生的信息 void cal_average(); 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(); stu[i].cal_average(); 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::cal_average() { average=(mark[0]+mark[1]+mark[2])/3.0; } void student::output(student *stu) { int sign=0; //sign用于标志是否有符合的学生 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]<<" "; cout<<"平均分: "<<stu[i].average<<endl; sign=1; } } if(sign==0) cout<<"查无此人"<<endl; }