2007年5月20日星期日

学生成绩管理系统


/*
文件 学生成绩管理系统
作者 lee
时间 2007年4月26日晚
*/
#include <iostream>
#include <iomanip>
using namespace std;
#define N 3
struct student{//定义学生结构体
char name[10];
int no;
float grade;
} stu[N];
void GetInput(struct student *stu){//输入学生信息
for(int i=0;i<N;i++){
cout<<"请输入第"<<i+1<<"个学生的"<<endl<<"学号:";
cin>>stu[i].no;
while (stu[i].no<0stu[i].no>10000){
cout<<"范围出错,请重新输入"<<endl;
cin>>stu[i].no;}

cout<<"姓名:"<<endl;
cin>>stu[i].name;
cout<<"成绩"<<endl;
cin>>stu[i].grade;
while (stu[i].grade<0stu[i].grade>100){
cout<<"成绩必须在0-100之间!请重新输入"<<endl;
cin>>stu[i].grade;}
}

}
void swap(struct student *p1,struct student *p2){//交换函数
struct student temp;
temp=*p1;*p1=*p2;*p2=temp;
}
void SortByNo(struct student *a,int n){
//使用插入法按学生学号排序
int i,j,min;
for (i=0;i<n;i++){
min=i;
for(j=i+1;j<n;j++)
if (a[i].no>a[j].no) swap(a[i],a[j]);
}
}

void SortByGrade(struct student *a,int n){
//使用插入法按学生成绩排序
int i,j,min;
for (i=0;i<n;i++){
min=i;
for(j=i+1;j<n;j++)
if (a[i].grade<a[j].grade) swap(a[i],a[j]);
}
}
void ShowBoard(){//成绩管理控制界面
cout<<"*********************************************"<<endl;
cout<<"欢迎使用学生成绩管理系统"<<endl;
cout<<"作者:lee 计算机学院"<<endl<<endl;
cout<<"*************菜单管理********************"<<endl;
cout<<"输入学生成绩?Y/N"<<endl;
cout<<endl;
}
void ShowTable(struct student *stu){//输出学生表格

int i;
cout<<endl;
cout<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"成绩"<<endl;
for(i=0;i<N;i++)
cout<<"\t"<<stu[i].no<<"\t"<<stu[i].name<<"\t"<<stu[i].grade<<endl;
cout<<endl;
}
void AveGrade(struct student *stu){//计算输出学生成绩
float sum=0,ave;
for(int i=0;i<N;i++)
sum=stu[i].grade+sum;
ave=sum/N;
cout<<"总成绩是:"<<sum<<endl;
cout<<"平均成绩:是"<<ave<<endl;
}

void main(){
char c;
int n;
ShowBoard();
cin>>c;

if(c=='Y'c=='y') {
GetInput(stu);
cout<<"您输入的学生表是"<<endl;
ShowTable(stu);
AveGrade(stu);//计算并输出学生总成绩、平均成绩
cout<<"请选择您需要的排序方式"<<endl;
cout<<"1->按学号;2->按成绩"<<endl;
cin>>n;
if(n==1)
SortByNo(stu,N);
else SortByGrade(stu,N);
ShowTable(stu);
}
else exit(0);

}


相关文章