#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{
char number[20];
char name[20];
int grade;
int score[6];
}STU;
void addnew(STU* p,int* NUM)
{
system("cls");
printf("请输入新增学生学号\n");
scanf("%s",&p[*NUM].number);
printf("请输入新增学生姓名\n");
scanf("%s",&p[*NUM].name);
printf("请输入新增学生年级\n");
scanf("%d",&p[*NUM].grade);
printf("请输入新增学生语文成绩\n");
scanf("%d",&p[*NUM].score[0]);
printf("请输入新增学生数学成绩\n");
scanf("%d",&p[*NUM].score[1]);
printf("请输入新增学生英语成绩\n");
scanf("%d",&p[*NUM].score[2]);
printf("请输入新增学生政治成绩\n");
scanf("%d",&p[*NUM].score[3]);
printf("请输入新增学生C语言成绩\n");
scanf("%d",&p[*NUM].score[4]);
p[*NUM].score[5]=p[*NUM].score[0]+p[*NUM].score[1]+p[*NUM].score[2]+p[*NUM].score[3]+p[*NUM].score[4];
(*NUM)++;
printf("新增学生成绩成功!\n");
system("pause");
}
void sort(STU* p,int NUM)
{
struct student temp;
int i,j;
for(i=0;i<NUM;i++)
{
for(j=i+1;j<NUM;j++)
{
if(p[i].score[5]==p[j].score[5] )
{
temp=p[j];
p[j]=p[i];
p[i]=temp;
}
}
}
}
void Show(STU *p,int NUM)
{
int i=0;
printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","学号","姓名","语文","数学","英语","政治","C语言","平均分");
for(i=0;i<NUM;i++)
{
printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10d%-10g\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].score[4],p[i].score[5]/5.0);
}
system("pause");
}
void find_num(STU* p,int NUM)
{
int i;
char n[20];
printf("请输入查找学生学号\n");
scanf("%s",n);
for(i=0;i<NUM;i++)
{
if(!strcmp(n,p[i].number))
{
printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","学号","姓名","语文","数学","英语","政治","C语言","平均分");
printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10d%-10g\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].score[4],p[i].score[5]/5.0);
break;
}
}
if(i==NUM)
printf("无此学生信息!\n");
system("pause");
}
void sum(STU* p,int NUM)
{
int i;
system("cls");
if(NUM==0)
{
printf("无学生信息!\n");
}
else
{
printf("%-10s%-10s%-10s%-10s%\n","学号","姓名","总分","平均分");
}
for(i=0;i<NUM;i++)
{
printf("%-10s%-10s%-10d%-10g\n",p[i].number,p[i].name,p[i].score[5],p[i].score[5]/5.0);
}
system("pause");
}
void avg(STU* p,int NUM)
{
int i,j,sum[5]={0};
system("cls");
if(NUM==0)
{
printf("无课程信息!\n");
system("pause");
return ;
}
printf("%-10s%-10s%-10s%-10s%-10s\n","语文","数学","英语","政治","C语言");
for(i=0;i<NUM;i++)
{
for(j=0;j<5;j++)
{
sum[j]+=p[i].score[j];
}
}
printf("%-10g%-10g%-10g%-10g%-10g\n",sum[0]*1.0/NUM,sum[1]*1.0/NUM,sum[2]*1.0/NUM,sum[3]*1.0/NUM,sum[4]*1.0/NUM);
system("pause");
}
void menu(STU* p,int NUM)
{
int n;
do
{
system("cls");
printf("1:学生总分及平均分\n");
printf("2:课程平均分\n");
printf("0:退出\n");
printf("请输入编号进行操作!\n");
scanf("%d",&n);
while(n<0||n>2)
{
printf("输入范围错误!请重新输入!\n");
scanf("%d",&n);
}
switch(n)
{
case 1:
sum(p,NUM);
break;
case 2:
avg(p,NUM);
break;
}
}while(n!=0);
}
int main()
{
int n;
STU p[100];
int NUM=0;
do
{
system("cls");
printf("1:学生信息录入\n");
printf("2:学生信息统计\n");
printf("3:按姓名排序\n");
printf("4:查找学生信息\n");
printf("0:退出\n");
printf("请输入编号进行操作!\n");
scanf("%d",&n);
while(n<0||n>4)
{
printf("输入范围错误!请重新输入!\n");
scanf("%d",&n);
}
switch(n)
{
case 1:
addnew(p,&NUM);
break;
case 2:
menu(p,NUM);
break;
case 3:
sort(p,NUM);
Show(p,NUM);
break;
case 4:
find_num(p,NUM);
break;
}
}while(n!=0);
return 0;
}