学生成绩管理

学生成绩管理

#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;
}