用C++编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。系统功能模块如下图:

具体要求为:
1. 建立学生信息,每个学生的信息应包括:学号、姓名、性别、班级、至少3门课程的成绩;
2. 数据输入:输入学生的各项信息;
3. 数据修改:根据输入学生的学号可以选择修改该学生的信息;
4. 数据处理:可以选择处理方式为:排序、查询、统计。其中:
  a) 排序:按学号排序
  b) 查询:根据学号查询成绩
  c) 统计:可选择统计各学生平均成绩或统计存在不及格科目的学生;
5. 数据输出:输出学生的相应结果信息;
6. 退出:退出整个学生信息管理系统。

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
struct Student
{
int num;
char name[8];
float score[3],ave,sum;
};
void input(Student s[],int n);
void count(Student s[],int n);
void output(Student s[],int n);
void sort(Student s[],int n);
void rate(Student s[],int n);
void searchnum(Student s[],int n);
void searchname(Student s[],int n);

#include "lab5.h"
#include<string>
void input(Student s[],int n)
{
int i,j;
for (i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"学生成绩"<<endl;
cout<<"学号 姓名 数学 语文 英语\n";
cin>>s[i].num;
cin>>s[i].name;
for (j=0;j<3;j++)
{
cin>>s[i].score[j];
}

}
cout<<"共输入"<<i<<"个学生记录!"<<endl;
}
void count(Student s[],int n)
{
int i,j;
for (i=0;i<n;i++)
{
s[i].sum=0;
for (j=0;j<3;j++)
s[i].sum=s[i].score[j]+ s[i].sum;
s[i].ave=s[i].sum/float(3.0);

}
cout<<"数据计算完毕"<<endl;

}
void output(Student s[],int n)
{
int i,j;
cout<<n<<"个学生成绩:\n";
cout<<"\n学号 姓名 数学 语文 英语 总成绩 平均成绩\n";
for (i=0;i<n;i++)
{
cout<<s[i].num<<setw(6)<<s[i].name;
cout.precision(4);
for(j=0;j<3;j++)
cout<<setw(6)<<s[i].score[j];
cout<<setw(8)<<s[i].sum<<setw(8)<<s[i].ave;
cout<<endl;
}
}
void sort(Student s[],int n)
{
int i,j;
Student temp;
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
{
if(s[i].sum>s[i+1].sum)
{
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}

}
cout<<"按总成绩排序完毕!"<<endl;

}
void searchnum(Student s[],int n)
{
int i,j;
char flag='Y';
long x;
while(flag=='Y'||flag=='y')
{
cout<<"请输入要查找的学号"<<endl;
cin>>x;
for(i=0;i<n;i++)
{
if (s[i].num==x)
{
cout<<setw(6)<<s[i].num<<setw(6)<<s[i].name;
for(j=0;j<3;j++)

cout<<setw(6)<<s[i].score[j];
cout<<setw(8)<<s[i].sum<<setw(8)<<s[i].ave<<endl;
break;

}

else
cout<<"没有找到学号为"<<x<<"的记录"<<endl;
}
cout<<"是否继续查找(Y/N)?"<<endl;
cin>>flag;

}
}
void searchname(Student s[],int n)
{
int i,j;
char flag='Y';
char x[8];
while(flag=='y'||flag=='Y')
{
cout<<"请输入要查找的姓名"<<endl;
cin>>x;
for(i=0;i<n;i++)
{
if(strcmp(x,s[i].name)==0)
{
for(j=0;j<3;j++)
cout<<setw(6)<<s[i].score[j];
cout<<setw(8)<<s[i].sum<<setw(8)<<s[i].ave<<endl;
break;

}
else
cout<<"没有找到此学生"<<endl;
}
cout<<"继续查找?(Y/N)"<<endl;
cin>>flag;
}

}
void rate(Student s[],int n)
{
int a=0,b=0,c=0,d=0,i;
for(i=0;i<n;i++)
{
if(s[i].ave<=100&&s[i].ave>=85)
a++;
else if (s[i].ave<85&&s[i].ave>=70)
b++;
else if (s[i].ave<70&&s[i].ave>=60)
c++;
else if (s[i].ave<60)
d++;
}
cout<<"优秀人数为:"<<a<<endl;
cout<<"良好人数为:"<<b<<endl;
cout<<"及格人数为:"<<c<<endl;
cout<<"不及格人数为:"<<d<<endl;
}

#include"Lab5.h"
const int M=50;
int main()
{
Student stu[M];
int n;
cout<<"请输入班级人数(人数不超过50):";
cin>>n;
while(n<0||n>50)
{
cout<<"请重新输入(人数不超过50):";
cin>>n;
}
int i,flag=1;
while(flag)
{
cout<<endl;
cout<<"*******************************************"<<endl;
cout<<"*\t1-输入学生数据\t\t\t*"<<endl;
cout<<"*\t2-计算学生的总成绩和平均成绩\t*"<<endl;
cout<<"*\t3-输出学生数据\t\t\t*"<<endl;
cout<<"*\t4-按总成绩排序\t\t\t*"<<endl;
cout<<"*\t5-按学号查找\t\t\t*"<<endl;
cout<<"*\t6-按姓名查找\t\t\t*"<<endl;
cout<<"*\t7-统计优、良、及格、不及格的人数\t*"<<endl;
cout<<"*\t0-退出\t\t\t\t*"<<endl;
cout<<"********************************************"<<endl;
cout<<"输入你的选择(0-7):"<<endl;
cin>>i;
while(i<0||i>7)
{
cout<<"请重新输入你的选择(0—7):";
cin>>i;
}
cout<<endl;
switch(i)
{
case 1:
cout<<"输入学生数据......"<<endl;
input(stu,n);
break;
case 2:
cout<<"计算学生的总成绩和平均成绩......"<<endl;
count(stu,n);
break;
case 3:
cout<<"显示学生数据......"<<endl;
output(stu,n);
break;
case 4:
cout<<"按总成绩排序......"<<endl;
cout<<"排序完成"<<endl;
sort(stu,n);
break;
case 5:
cout<<"按学号查找......"<<endl;
searchnum(stu,n);
break;
case 6:
cout<<"按姓名查找......"<<endl;
searchname(stu,n);
break;
case 7:
cout<<"优、良、合格、不及格人数统计......"<<endl;
rate(stu,n);
break;
case 0:
cout<<"本次处理结束,再见!"<<endl;
flag=0;
}
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-15
这种管理系统是最简单的了。如果写数据库那稍微烦一点,见到你们下面说的话了,应该是写内存,那就很简答了。
首先,定义一个结构体存放学生的几个信息,通过cin>>输入你所需要的信息。定义一个结构体数组,将每个结构体放进去。
然后排序,通过for循环遍历,信息,用冒泡排序按学号排序。
查询,遍历时,if你要查找的学号,输出就OK了
修改,查询时,找到再进行修改就好了。
统计,也是类似
退出,调用exit(0);函数。
第2个回答  2011-06-15
同学 请自己写 如果不喜欢编程 建议现在就换专业追问

非专业~~~~~~

追答

- - 非专业的话 这么高深的问题.................

这个要用到数据库 既然老师提问了 应该就有将过 好好翻翻书 应该就能解决了
PS: 本人不会 ..........

本回答被网友采纳