#include <iostream.h>
#include <string.h>
#include <iomanip.h>
#define N 20
struct student
{
char code[N];
char name[N];
int mathmark; // 数学课程成绩
int englishmark; // 英语课程成绩
int compmark;//计算机课程成绩
};
student stu[N];
void input()
{
cout<<"请输入学生信息"<<endl;
for (int i=0; i<N; i++)
{
cout<<"学号:";
cin>>stu[i].code;
}
for (i=0; i<N; i++)
{
cout<<"姓名:";
cin>>stu[i].name;
}
for (i=0; i<N; i++)
{
cout<<"数学:";
cin>>stu[i].mathmark;
}
for (i=0; i<N; i++)
{
cout<<"英语:";
cin>>stu[i].englishmark;
}
for (i=0; i<N; i++)
{
cout<<"计算机:";
cin>>stu[i].compmark;
}
cout<<"输入完毕!"<<endl;
}
void search()//查找
{
int op;
char names[N];
char codes[N];
char choice;
cout<<"1.以学号查找"<<endl;
cout<<"2.以姓名查找"<<endl;
cin>>op;
if (op==1)
{
int n=0;
cout<<"请输入你要查找的学生的学号"<<endl;
cin>>codes;
for (int i=0; i<N; i++)
if (strcmp(stu[i].code,codes)==0)
cout<<"学号:"<<stu[i].code<<" 姓名:"<<stu[i].name<<" 数学:"<<stu[i].mathmark<<"英语:"<<stu[i].englishmark<<"计算机:"<<stu[i].compmark<<endl;
n++;
if (n==0)
cout<<"没有该人的数据"<<endl;
cout<<"是否继续查找(是(y)/否(n))"<<endl;
cin>>choice;
if (choice=='y')
search();
else
cout<<"请输入您的操作"<<endl;
}
if (op==2)
{
int n=0;
cout<<"请输入你要查找的学生的姓名"<<endl;
cin>>names;
for (int i=0; i<N; i++)
if (strcmp(stu[i].name,names)==0)
cout<<"学号:"<<stu[i].code<<" 姓名:"<<stu[i].name<<" 数学:"<<stu[i].mathmark<<"英语:"<<stu[i].englishmark<<"stu[i].compmark"<<endl;
n++;
if (n==0)
cout<<"没有该人的数据"<<endl;
cout<<"是否继续查找(是(y)/否(n))"<<endl;
cin>>choice;
if (choice=='y')
search();
else
cout<<"请输入您的操作"<<endl;
}
}
void sort()//总分排序
{
int total[N];//总分
student temp;
for(int i=0; i<N; i++)
{
total[i] = stu[i].compmark+stu[i].englishmark+stu[i].mathmark;//求出总分
}
for (i=1; i<=N-1; i++)
for (int j=0; j<=N-i-1; j++)
if (total[j] < total[j+1])//冒泡排序
{
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
for (i=0; i<N; i++)
{
cout<<"学号"<<" "<<"姓名"<<" "<<"总分"<<endl;
cout<<stu[i].code<<" "<<stu[i].name<<" "<<total[i]<<endl;
}
}
void averagescore()
{
double mathaverages=0;//平均分
double englishaverages=0;
double compaverages=0;
int mathaverage=0;//平均分
int englishaverage=0;
int compaverage=0;
for (int i=0; i<N; i++)
{
mathaverage += (stu[i].mathmark);
englishaverage += (stu[i].englishmark);
compaverage += (stu[i].compmark);
}
mathaverages=mathaverage/N;
englishaverages=englishaverage/N;
compaverages=compaverage/N;
cout<<"数学:"<<mathaverages<<"英语:"<<englishaverages<<"计算机:"<<compaverages<<endl;
}
void show()//显示
{
for (int i=0; i<N; i++)
{
cout<<"学号:";
cout<<stu[i].code<<endl;
}
for (i=0; i<N; i++)
{
cout<<"姓名:";
cout<<stu[i].name<<endl;
}
for (i=0; i<N; i++)
{
cout<<"数学:";
cout<<stu[i].mathmark<<endl;
}
for (i=0; i<N; i++)
{
cout<<"英语:";
cout<<stu[i].englishmark<<endl;
}
for (i=0; i<N; i++)
{
cout<<"计算机:";
cout<<stu[i].compmark<<endl;
}
}
void menu()
{
cout<<"**学生管理系统**"<<endl;
cout<<"1.输入学生成绩"<<endl;
cout<<"2.显示学生成绩"<<endl;
cout<<"3.排序学生成绩"<<endl;
cout<<"4.查找学生成绩"<<endl;
cout<<"5.显示各科平均分"<<endl;
cout<<"0.退出系统"<<endl;
}
void main()
{
int op;
menu();
cout<<"请输入您的操作:"<<endl;
do
{
cin>>op;
switch (op)
{
case 1: input();break;
case 2: show();break;
case 3: sort();break;
case 4: search();break;
case 5: averagescore();break;
case 0: break;
}
}while (op);
}
//差不多了,大致的意思是这样的,你看还有什么不完善的地方可以自己看着加工一下。OK.....
//这代码敲的....多敲敲代码,不要ctrl+c,ctrl+v
追问那个总成绩排序的地方好像出错了,附上图文
不过还是非常感谢了,交个朋友吧,你的思路好清晰额,以后有什么问题希望还能交个朋友!
分奉上
本回答被提问者采纳