求一个学生成绩管理系统的C++源代码,要有注释的,~!以为是期末作业,老师会提问的~! 20

 我来答
百度网友d7cef73
2011-07-06 · TA获得超过624个赞
知道小有建树答主
回答量:346
采纳率:0%
帮助的人:281万
展开全部
容器实现!
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <iterator>
#include <iomanip>
using namespace std;
class student{ //构造学生类
private:
double language; //学生信息
double math;
double english;
double number;
double sumsocos;
double avesocos;
int place;
string name;

public:
student(double lenguagevalue=0,double mathvalue=0,double englishvalue=0,double numbervalue=0,double sumsocosvalue=0,double avesocos=0,int placevalue=0,string namevalue="lilei"); //构造函数
double getlanguage(){return language;}; //获取学生信息
double getmath(){return math;};
double getenglish(){return english;};
double getnumber(){return number;};
double getsumsocos(){return sumsocos;};
double getplace(){return place;};
double getavesocos(){return avesocos;};
string getname(){return name;};
void setsumsocos(double digit){sumsocos=digit;}; //设置总成绩
void setave(double digit){avesocos=digit;}; //设置平均成绩
void setplace(int placevalue){place=placevalue;};
double sum(){return language+math+english;}; //计算总成绩
double average(){return sum()/3;}; //计算平均成绩
};
student::student(double lenguagevalue,double mathvalue,double englishvalue,double numbervalue,double sumsocosvalue,double avesocosvalue,int placevalue,string namevalue):language(lenguagevalue),math(mathvalue),english(englishvalue),number(numbervalue),sumsocos(sumsocosvalue),avesocos(avesocosvalue),place(placevalue){
name=namevalue;

};
void searchstudent(vector< student >::iterator beg,vector< student >::iterator end,double number) //查找学生
{
bool isfind=false;
for(size_t i=0;i<=number;)
{
if((*beg).getnumber()!=number)
{
beg++;
if(beg==end)
{
break;
}
}
else
{
cout<<"您查询的学生信息为 :"<<endl;
cout<<"姓名:"<<(*beg).getname()<<" 学号:"<<(*beg).getnumber()<<" 语文:"<<(*beg).getlanguage()<<" 数学:"<<(*beg).getmath()<<" 英语:"<<(*beg).getenglish()<<endl;
isfind=true;
break;
}
}
if(isfind==false)
{
cout<<"对不起,没有找到你需要的学生信息!"<<endl;
return;
}
};
double sumavesoco(vector<student>::iterator beg,vector<student>::iterator end){ //计算学生总成绩
vector<student>::iterator begin=beg;
vector<student>::iterator ended=end;
while(begin!=ended)
{
int sum=0;
int ave=0;
sum+=(*begin).getenglish();
sum+=(*begin).getlanguage();
sum+=(*begin).getmath();
ave=sum/3;
(*begin).setsumsocos(sum);
(*begin).setave(ave);
begin++;
}
vector<student>::iterator begin1=beg;
vector<student>::iterator ended1=end;
int sumave=0;
int sumsoco=0;
int count=0;
while(begin1!=ended1)
{
sumsoco+=(*begin1).getsumsocos();
count++;
begin1++;
}
sumave=sumsoco/count;
cout<<"学生总分与平均分为:"<<endl;
while(beg!=end)
{
cout<<"姓名:"<<setw(5)<<(*beg).getname()<<"总分:"<<setw(5)<<(*beg).getsumsocos()<<"平均分:"<<setw(5)<<(*beg).getavesocos()<<endl;
beg++;
}
return sumave;
};
void place(vector<student>::iterator beg,vector<student>::iterator end){ //计算排名
vector<student> a(beg,end);
vector<student>::iterator begin=a.begin();
for(int i=0;i<a.size();i++)
{
for(int j=i+1;j<a.size();j++)
{
if(a[i].getsumsocos()<a[j].getsumsocos())
{
student astudent;
astudent=a[i];
a[i]=a[j];
a[j]=astudent;
}
}
}
cout<<"完成排名,按总分大小排名后的次序为:"<<endl;
vector<student>::iterator begin1=a.begin();
while(begin1!=a.end())
{
cout<<setw(5)<<"姓名:"<<setw(5)<<(*begin1).getname()<<setw(5)<<"学号:"<<setw(5)<<(*begin1).getnumber()<<setw(5)<<"语文:"<<setw(5)<<(*begin1).getlanguage()<<"数学:"<<setw(5)<<(*begin1).getmath()<<"英语:"<<setw(5)<<(*begin1).getenglish()<<endl;
begin1++;
}
};
void searchupstudent(vector<student>::iterator beg,vector<student>::iterator end,double avesocos){ //计算平均成绩以上学生
cout<<"总成绩在全班平均成绩以上的学生信息为:"<<endl;
while(beg!=end)
{
if((*beg).getsumsocos()>=avesocos)
{
cout<<"姓名:"<<setw(5)<<(*beg).getname()<<"学号:"<<setw(5)<<(*beg).getnumber()<<"总分:"<<setw(5)<<(*beg).getsumsocos()<<"平均分:"<<setw(5)<<(*beg).getavesocos()<<"语文:"<<setw(5)<<(*beg).getlanguage()<<"数学:"<<setw(5)<<(*beg).getmath()<<"英语:"<<setw(5)<<(*beg).getenglish()<<endl;

}
beg++;
}
};
int main()
{
vector< student > stuarray;
loop: cout<<"********************************************************************************"<<endl
<<"1.输入信息 2.计算总分与平均分 3.查询学生信息 4.按总分排名 5.查询平均分以上的学生" <<endl
<<"********************************************************************************"<<endl;
int chose=0;
cout<<"请输入您的选择!"<<endl;
cin.clear();
cin.sync();
cin>>chose;
if(chose<=0||chose>5)
{
cout<<"输入错误,请重新输入!"<<endl;
goto loop;
}
char ch=0;
int count=0;
double sumave;
switch(chose)
{
case 1:
{
do{
cout<<"请输入学生信息!"<<endl;
double lan,math,english,number,socos,avesocos,place;
string name,sex;
cout<<"语文:";
cin>>lan;
cout<<endl<<"数学:";
cin>>math;
cout<<endl<<"英语:";
cin>>english;
cout<<endl<<"学号:";
cin>>number;
cin.sync();
cout<<endl<<"姓名:";
getline(cin,name);
cout<<endl;
student* astudent=new student(lan,math,english,number,socos=0,avesocos=0,place=0,name);
stuarray.push_back(*astudent);
cout<<"是否继续输入?"<<endl;
cin.clear();
cin.sync();
cin>>ch;
}while(tolower(ch)=='y');
cout<<endl;
goto loop;
}
case 2:
{
vector<student>::iterator beg=stuarray.begin();
vector<student>::iterator end=stuarray.end();

sumave=sumavesoco(beg,end);
cout<<"全班平均分为:"<<sumave<<endl;
goto loop;
}

case 3:
{ cout<<"请输入需要查询的学生学号!"<<endl;
int number2=0;
cin>>number2;
searchstudent(stuarray.begin(),stuarray.end(),number2);
goto loop;
}

case 4:
{

vector<student>::iterator beg=stuarray.begin();
vector<student>::iterator end=stuarray.end();
place(beg,end);
goto loop;
}
case 5:
{
vector<student>::iterator beg=stuarray.begin();
vector<student>::iterator end=stuarray.end();
searchupstudent(beg,end,sumave);
goto loop;
}
}
return 0;
}
我是Talentbdd
2011-07-06 · TA获得超过566个赞
知道小有建树答主
回答量:548
采纳率:0%
帮助的人:331万
展开全部
C语言可以吗?刚写完一个。
如果写C++是不是一定要用类?那样的话程序得改不少。
追问
你的这程序好多地方看不懂啊~!到时候老师要提问题的,能够把你的程序的每条语句翻译一下让我懂么?我是新手,上课就是听不明白,然后这个又是学期的期末大作业,所以呢.........如果能够详细地注释一下,让我明白,我立刻采纳的你的回答~!O(∩_∩)O谢谢,例如private:
double language; //学生信息
double math;是声明公有成员什么的~!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式