室友找到一个很牛的代码,记录下。抽空自己写一个。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 3
#define M 3
struct student
{
int num;
char name[20];
int score[3];
float average;
}stu[N];
void input();
void select();
void menu();
void input()
{
int i,j;
printf("\t\t1成绩录入\n\n");
for(i=0;i<N;i++)
{
printf("请输入学号:");
scanf("%d",&stu[i].num);
printf("请输入姓名:");
scanf("%s",&stu[i].name);
for(j=0;j<M;j++)
{
printf("第%d门成绩的分数:",j+1);
scanf("%d",&stu[i].score[j]);
}
printf("\n\n");
}
printf("\n\n");
printf("输入完毕!按任意键返回主菜单!");
getch();
}
void select(int no)
{
int i;
printf("学生%d号:\n",no);
printf("学号: %d\n",stu[no-1].num);
printf("姓名: %s\n",stu[no-1].name);
for (i=0;i<M;i++)
{
printf("第%d门课程的成绩为: ",i+1);
printf("%d\n",stu[no-1].score[i]);
}
printf("\n按任意键返回主菜单!");
getch();
}
void statistics()
{
float temp=0;
int i=0;
int j=0;
temp=0;
printf("\t\t3成绩统计\n\n");
for(j=0;j<N;j++)
{
for(i=0;i<M;i++)
{
temp=temp+stu[j].score[i];
}
stu[j].average=temp/N;
printf("\n学生%s的成绩平均成绩为:",stu[j].name);
printf("%0.2f分",stu[j].average);
temp=0;
}
for (j=0;j<N;j++)
for(i=0;i<N-j-1;i++)
if(stu[i].average<stu[i+1].average)
{
temp=stu[i].average;
stu[i].average=stu[i+1].average;
stu[i+1].average=temp;
}
printf("\n\n学生平均成绩前三名:");
for(i=0;i<3;i++)
{
printf("\n第%d名:%0.2f分",i+1,stu[i].average);
}
printf("\n\n按任意键返回主菜单!");
getch();
}
void menu()
{
int num=0;
int n=0;
printf("\n\t\t\t学生成绩管理系统\n\n");
printf("\n\t\t\t1成绩录入\n\t\t\t2成绩查询\n\t\t\t3成绩统计\n\t\t\t4退出系统\n");
printf("\t\t\tchoose:");
scanf("%d",&num);
switch(num)
{
case 1: system("cls");
input();
break;
case 2: system("cls");
printf("\t\t2成绩查询\n\n");
printf("请输入要查询的学生号(1~3):");
scanf("%d",&n);
select(n);
break;
case 3:
system("cls");
statistics();
break;
case 4: exit(0);
default:;
}
}
int main()
{
while(1)
{
system("cls");
menu();
}
return 0;
}