学生成绩管理

学生成绩管理

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void menu();			/*主菜单,显示各种功能界面*/
void addnew();			/*添加新学生成绩*/
void disp();			/*查看所有学生成绩*/
void fname();			/*按学号查找*/
void delname();			/*按学号删除*/
void Open_File();		//打开文件
void Save_File();		//保存文件
void init();			//初始化界面
void modfi();			//修改学生信息
void find();
void fmax();
void sort();

/*结构体 姓名 学号 成绩 人数*/
struct student
{
	char number[20];
	char name[20];
	int score[4];
}p[100];
int NUM=0;

/*主函数*/
int main()
{
	int n;
	init();
	Open_File();
	do
	{
		system("cls");
		menu();
		scanf("%d",&n);
		switch(n)
		{
			case 0:
				break;
			case 1:
				system("cls");
				addnew();
				Save_File();
				system("cls");
				break;
			case 2:
				system("cls");
				disp();
				system("cls");
				break;
			case 3:
				system("cls");
				delname();
				Save_File();
				system("cls");
				break;
			case 4:
				system("cls");
				find();
				system("cls");
				break;
			case 5:
				system("cls");
				modfi();
				Save_File();
				system("cls");
				break;
			case 6:
				system("cls");
				sort();
				Save_File();
				system("cls");
				break;
		}
	}while(n!=0);
	return 0;
}



/*初始化界面*/
void init()
{
	printf("**********************************\n");
	printf("*******欢迎使用学生管理系统*******\n");
	printf("**********************************\n");
	system("pause");
	system("cls");
}

/*主菜单*/
void menu()
{
	printf("------------------------------\n");
	printf("1:学生信息录入\n");
	printf("2:学生信息浏览\n");
	printf("3:信息删除\n");
	printf("4:信息查询\n");
	printf("5:信息修改\n");
	printf("6:信息排序\n");
	printf("0:退出\n");
	printf("------------------------------\n");
	printf("请输入编号进行操作!\n");
}


/*新增*/
void addnew()
{
	printf("请输入新增学生学号\n");
	scanf("%s",&p[NUM].number);
	printf("请输入新增学生姓名\n");
	scanf("%s",&p[NUM].name);

	printf("请输入新增学生语文成绩\n");
	scanf("%d",&p[NUM].score[0]);
	printf("请输入新增学生数学成绩\n");
	scanf("%d",&p[NUM].score[1]);
	printf("请输入新增学生英语成绩\n");
	scanf("%d",&p[NUM].score[2]);
	p[NUM].score[3]=p[NUM].score[0]+p[NUM].score[1]+p[NUM].score[2];
	NUM++;//学生人数+1
	printf("新增学生成绩成功!\n");
	system("pause");
}


/*显示全部联系人*/
void disp()
{
	int i=0;
	printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
	for(i=0;i<NUM;i++)
	{
		printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3]);
	}
	system("pause");
}




/*按学号查找*/
void fname()
{
	int i;
	char n[20];
	printf("请输入查找学生学号\n");
	scanf("%s",n);
	for(i=0;i<NUM;i++)
	{
		if(!strcmp(n,p[i].number))
		{
				printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
				printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3]);
				break;
		}
	}
	if(i==NUM)
		printf("无此学生信息!\n");
	system("pause");
}





/*按学号删除*/
void delname()
{
	int i,j;
	char number[20];
	printf("请输入要删除的学生学号\n");
	scanf("%s",number);

	for(i=0;i<NUM;i++)
	{
		if(!strcmp(number,p[i].number))
		{
				for(j=i;j<NUM-1;j++)
				{
					p[j]=p[j+1];
				}
				break;
		}
	}
	if(i==NUM)
	{
		printf("无此学生信息!删除失败!\n");
		system("pause");
		system("cls");
	}
	else
	{
		NUM--;	
		printf("删除成功!\n");
		system("pause");
		system("cls");
	}
}


/*保存文件*/
void Save_File()
{
	FILE *fp;
	int i;
	if((fp=fopen("student.txt","wb"))==NULL)
	{
		printf("文件打开失败!");
		system("pause");
		return;
	}
	for(i=0;i<NUM;i++)
	{
		fwrite(&p[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
}

/*读取文件*/
void Open_File()
{
	int i=0;
	FILE *fp;
	if((fp=fopen("student.txt","rb"))==NULL)
	{
		;
	}
	else
	{
		while(fread(&p[i],sizeof(struct student),1,fp))
		{	
			i++;
			NUM++;
		}
		fclose(fp);
		printf("文件数据读取成功!\n");
		system("pause");
	}	
}


void modfi()
{
	int i;
	char n[20];
	printf("请输入查找学生学号\n");
	scanf("%s",n);
	for(i=0;i<NUM;i++)
	{
		if(!strcmp(n,p[i].number))
		{
				printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
				printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3]);

				printf("请输入新语文成绩\n");
				scanf("%d",&p[i].score[0]);
				printf("请输入新数学成绩\n");
				scanf("%d",&p[i].score[1]);
				printf("请输入新英语成绩\n");
				scanf("%d",&p[i].score[2]);
				p[i].score[3]=p[i].score[0]+p[i].score[1]+p[i].score[2];
				printf("修改成功\n");
				printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
				printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3]);
				break;
		}
	}
	if(i==NUM)
		printf("无此学生信息!\n");
	system("pause");
}


void find()
{
	int n;
	printf("请选择查找方式:\n");
	printf("1:按学号查\n");
	printf("2:按最高分查\n");
	scanf("%d",&n);

	switch(n)
	{
	case 1:
		fname();
		break;
	case 2:
		fmax();
		break;
	}
}

void fmax()
{
	int n,i,j;
	printf("请选择查找科目:\n");
	printf("1:语文\n");
	printf("2:数学\n");
	printf("3:英语\n");
	printf("4:总分\n");
	scanf("%d",&n);
	switch(n)
	{
	case 1:
		j=0;
		for(i=0;i<NUM;i++)
		{
			if(p[j].score[0]<p[i].score[0])
				j=i;
		}
		printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
		printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[3]);
		system("pause");
		break;

	case 2:
		j=0;
		for(i=0;i<NUM;i++)
		{
			if(p[j].score[1]<p[i].score[1])
				j=i;
		}
		printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
		printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[3]);
		system("pause");
		break;

	case 3:
		j=0;
		for(i=0;i<NUM;i++)
		{
			if(p[j].score[2]<p[i].score[2])
				j=i;
		}
		printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
		printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[3]);
		system("pause");
		break;
	case 4:
		j=0;
		for(i=0;i<NUM;i++)
		{
			if(p[j].score[3]<p[i].score[3])
				j=i;
		}
		printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
		printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[3]);
		system("pause");
		break;
	}


}




void sort()
{
	struct student temp;
	int i,j;
		for(i=0;i<NUM;i++)
		{
			for(j=i;j<=NUM;j++)
			{
				if(p[i].score[3]<p[j].score[3])
				{
					temp=p[j];
					p[j]=p[i];
					p[i]=temp;
				}

			}
		}
		printf("排序成功!\n");
		system("pause");
}