/*学生成绩管理系统V3.0(链表版)
某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。使用链表编程成实现如下菜单驱动的学生成绩管理系统。
1.从文件读入每个学生个人信息和成绩信息,可以由键盘输入文件名。读入成功提示读入学生记录的个数,不成功提示相应出错信息。
2.增量式手动录入每个学生的学号(8位数字)、姓名和各科考试成绩。不考虑中文姓名,不考虑重名情况下的处理,学生的学号是唯一的。
3.计算每门课程的总分和平均分; 
4.计算每个学生的总分和平均分;
5.按每个学生的总分由高到低排出名次表; 
6.按每个学生的总分由低到高排出名次表; 
7.按学号由小到大排出成绩表; 
8.按姓名的字典顺序排出成绩表; 
9.按学号查询学生排名及其考试成绩; 
10.按姓名查询学生排名及其考试成绩;需要考虑学生重名的情况。
11.按优秀(100-90)、良好(89-80)、中等(79-70)、及格(69-60)、不及格(59-0)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比;并将计算结果输出到文件,文件名可由键盘输入。
12.输出每个学生的学号、姓名、各科考试成绩、总分和平均分;
13.将每个学生的个人信息和成绩写入文件,可由键盘输入文件名;
要求程序运行后先显示如下菜单,并提示用户输入选项(菜单式循环显示,直到选择0.exit 整个程序退出):*/
#include<stdio.h> 
#include<windows.h>
#include<conio.h>
#include<string.h> 
#include<stdlib.h>
#include "StudentLogin.h"
#include "StudentRegister.h"
/*************************************************************
*************************声明函数*****************************
**************************************************************/
void Help();										//帮助 
void Regard();										//关于 
int main();											//主函数 
void Login();										//总登录页面  
int RegisterS(int );								//学生注册 
void RegisterA();									//管理员注册 
void LoginA();										//管理员登录 
void LoginS();										//学生登录 
void Register();									//总注册页面
void Set();
void L1();
void L2();
void L3();
void L4();
void L5();
void L6();
void L7();
void L8();
void L9();
/*******************全局变量************************/
int  Sn=0; 										//第Sn个注册的学生
void Set(){
	int choice;
		system("cls");
		printf("\t\t┏━━━━━━━━━━━━━━━━━━┓\n");
		printf("\t\t┃    学生成绩管理系统V3.0(管理)      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        1.每门课程总分与平均分      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        2.学生总分排名(高->低)    ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        3.学生总分排名(低->高)    ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        4.学生学号排名              ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        5.学生姓名排名(字典)      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        6.查询学生信息(学号)      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        7.查询学生信息(姓名)      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        8.成绩类别分析      	      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        9.全部学生信息      	      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        0.返回上一级                ┃\n");
		printf("\t\t┗━━━━━━━━━━━━━━━━━━┛\n");	
	scanf("%d",&choice); 
	switch(choice){ 
	case 1:			L1();						break;
	case 2:			L2();						break;
	case 3:			L3();						break;
	case 4:			L4();						break;
	case 5:			L5();						break;
	case 6:			L6();						break;
	case 7:			L7();						break;
	case 8:			L8();						break;
	case 9:			L9();						break;
	case 0:			Login(); 					break;	
	default:		printf("输入错误,请重新输入!\n");		system("pause");	Login();	break;		
	}
	system("pause"); 
	Set();	
}
void Login()													//总登录页面 
{
		int choice;
		system("cls");
		printf("\t\t┏━━━━━━━━━━━━━━━━━━┓\n");
		printf("\t\t┃    学生成绩管理系统V3.0(登录)      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        请选择:                    ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        1.管理学生信息              ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        2.录入新的学生信息	      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        0.返回上一级                ┃\n");
		printf("\t\t┗━━━━━━━━━━━━━━━━━━┛\n");
	scanf("%d",&choice); 
	switch(choice){ 
	case 1:			Set();						break;
	case 2:			Register();					break;
	case 0:			main(); 					break;	
	default:		printf("输入错误,请重新输入!\n");		system("pause");	Login();	break;		
	}
	
}
void Register()													//总注册页面 
{
	int i;	
	system("cls");
	RegisterS(Sn);printf("\n恭喜,录入成功!\n");	system("pause");
}
int main()							
{
	int choice;		//选择操作
	do{
		system("cls");
		printf("\t\t┏━━━━━━━━━━━━━━━━━━┓\n");
		printf("\t\t┃    学生成绩管理系统V3.0(链表版)    ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        1.登录管理系统              ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        2.帮助                      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        3.关于                      ┃\n");
		printf("\t\t┃                                    ┃\n");
		printf("\t\t┃        0.退出系统                  ┃\n");
		printf("\t\t┗━━━━━━━━━━━━━━━━━━┛\n");
		printf("请输入您的选择:\n");
		scanf("%d",&choice);
		switch(choice)
		{
			case 1:
				Login();
				break;
			case 2:
				Help();
				break;
			case 3:
				Regard();
				break;
			case 0:
				printf("信息保存中");
				for(int i=0;i<6;i++)
				{
					printf(".");
					Sleep(1000);
				}
				exit(0);
				break;
			default:
				printf("输入错误,请重新输入!\n");
				system("pause");
				break;
		}
		
	}while(choice>0);
	
	return 0;
}										
void Help()														//帮助 
{
	system("cls");	
	printf("首页->帮助\n\n");
	printf("	本系统操作简单,功能强大,但是任何试图输入不规范格式的行为可能会带来意想不到的后果,\n");
	printf("为了您自身的的信息安全,请不要随意操作!\n");
	printf("\n\n请按任意键继续!\n");
	system("pause");
}
void Regard()													//关于 
{                
	system("cls");
	printf("首页->关于\n\n"); 
	printf("	本系统由制作者呕心泣血通宵达旦写成,请尊重我们的劳动成果,严禁盗版,翻录必究!\n");
	printf("\n\n请按任意键继续!\n");
	system("pause");
}
#include<stdio.h> 
#include<windows.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define LEN sizeof(struct students)	
#ifndef STUDENT
#define STUDENT
struct students{
	int Number;
	char Name[10];
	char Sex[5];
	int Age;
	float Chinese;
	float math;
	float English;
	float Sum;
	float Average;
	struct students  *Next;
}z[30];
struct students *p1,*p2,*head,*p;
FILE *fp;
#endif
#include<stdio.h> 
#include<windows.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include"STUDENT.h"
struct students *qq,*q,*headq;
void L9(){		
	system("cls");
	qq=q=(struct students*)malloc(LEN);
	if((fp=fopen("student.txt","r"))==NULL){
		printf("打开文件失败!按任意键退出!\n");system("pause");exit(0);
	}
	printf("学号\t\t姓名\t\t性别\t年龄\t语文成绩\t数学成绩\t英语成绩\t总分\t\t平均分\n");
	while(EOF!=fscanf(fp,"%d\t%s\t%s\t%d\t%f\t%f\t%f\t%f\t%f\n",&qq->Number,qq->Name,qq->Sex,&qq->Age,&qq->Chinese,&qq->math,&qq->English,&qq->Sum,&qq->Average)) {	
		printf("%d\t%s\t\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",qq->Number,qq->Name,qq->Sex,qq->Age,qq->Chinese,qq->math,qq->English,qq->Sum,qq->Average);
		q=(struct students*)malloc(LEN);
		qq->Next=q;
		qq=q;
					
	}
	fclose(fp);
	
 
}
void L1(){
	float c=0.0,m=0.0,e=0.0,s=0.0;
	int k=0;
	system("cls");
	qq=(struct students*)malloc(LEN);
	if((fp=fopen("student.txt","r"))==NULL){
		printf("打开文件失败!按任意键退出!\n");system("pause");exit(0);
	}
	printf("\t\t语文成绩\t数学成绩\t英语成绩\n");
	while(EOF!=fscanf(fp,"%d\t%s\t%s\t%d\t%f\t%f\t%f\t%f\t%f\n",&qq->Number,qq->Name,qq->Sex,&qq->Age,&qq->Chinese,&qq->math,&qq->English,&qq->Sum,&qq->Average)) {		//	printf("%s\t%s\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",qq->Number,qq->Name,qq->Sex,qq->Age,qq->Chinese,qq->math,qq->English,qq->Sum,qq->Average);
	c+=qq->Chinese;m+=qq->math;e+=qq->English;s+=qq->Sum;
		q=(struct students*)malloc(LEN);
		qq->Next=q;
		qq=q;
		k++;
	}
	printf("总分:\t\t%.2f\t\t%.2f\t\t%.2f\t\t\n",c,m,e);
	printf("平均分:\t%.2f\t\t%.2f\t\t%.2f\t\t\n",c/k,m/k,e/k);
	fclose(fp);
}
void L2(){
	system("cls");
	float t,max[30];
	int i,k=0,j;
	qq=(struct students*)malloc(LEN);
	headq=qq;
	if((fp=fopen("student.txt","r"))==NULL){
		printf("打开文件失败!按任意键退出!\n");system("pause");exit(0);
	}
	printf("学号\t\t姓名\t\t性别\t年龄\t语文成绩\t数学成绩\t英语成绩\t总分\t\t平均分\n");
	while(1) {	
		if(EOF!=fscanf(fp,"%d\t%s\t%s\t%d\t%f\t%f\t%f\t%f\t%f\n",&qq->Number,qq->Name,qq->Sex,&qq->Age,&qq->Chinese,&qq->math,&qq->English,&qq->Sum,&qq->Average)){
		max[k]=qq->Sum;
		q=(struct students*)malloc(LEN);
		qq->Next=q;
		qq=q;
		k++;			
		}
		else{
		qq->Next=NULL;
		break;	
		}
	}
	fclose(fp);
	for(i=0;i<k-1;i++)
	for(j=i+1;j<k;j++)
	if(max[i]<max[j])
	{
		t=max[i];
		max[i]=max[j];
		max[j]=t;
	}
			for(i=0;i<k;i++){ 
				qq=headq;
				for(j=0;j<k;j++)
				if(qq->Sum==max[i]){
				printf("%d\t%s\t\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",qq->Number,qq->Name,qq->Sex,qq->Age,qq->Chinese,qq->math,qq->English,qq->Sum,qq->Average);
				break;
				}	
				else qq=qq->Next;
			}
	
}
void L3(){
	system("cls");
	float t,max[30];
	int i,k=0,j;
	qq=(struct students*)malloc(LEN);
	headq=qq;
	if((fp=fopen("student.txt","r"))==NULL){
		printf("打开文件失败!按任意键退出!\n");system("pause");exit(0);
	}
	printf("学号\t\t姓名\t\t性别\t年龄\t语文成绩\t数学成绩\t英语成绩\t总分\t\t平均分\n");
	while(1) {	
		if(EOF!=fscanf(fp,"%d\t%s\t%s\t%d\t%f\t%f\t%f\t%f\t%f\n",&qq->Number,qq->Name,qq->Sex,&qq->Age,&qq->Chinese,&qq->math,&qq->English,&qq->Sum,&qq->Average)){
		max[k]=qq->Sum;
		q=(struct students*)malloc(LEN);
		qq->Next=q;
		qq=q;
		k++;			
		}
		else{
		qq->Next=NULL;
		break;	
		}
	}
	fclose(fp);
	for(i=0;i<k-1;i++)
	for(j=i+1;j<k;j++)
	if(max[i]>max[j])
	{
		t=max[i];
		max[i]=max[j];
		max[j]=t;
	}
			for(i=0;i<k;i++){ 
				qq=headq;
				for(j=0;j<k;j++)
				if(qq->Sum==max[i]){
				printf("%d\t%s\t\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",qq->Number,qq->Name,qq->Sex,qq->Age,qq->Chinese,qq->math,qq->English,qq->Sum,qq->Average);
				break;
				}	
				else qq=qq->Next;
			}
}
void L4(){
	system("cls");
	int t,max[30];
	int i,k=0,j;
	qq=(struct students*)malloc(LEN);
	headq=qq;
	if((fp=fopen("student.txt","r"))==NULL){
		printf("打开文件失败!按任意键退出!\n");system("pause");exit(0);
	}
	printf("学号\t\t姓名\t\t性别\t年龄\t语文成绩\t数学成绩\t英语成绩\t总分\t\t平均分\n");
	while(1) {	
		if(EOF!=fscanf(fp,"%d\t%s\t%s\t%d\t%f\t%f\t%f\t%f\t%f\n",&qq->Number,qq->Name,qq->Sex,&qq->Age,&qq->Chinese,&qq->math,&qq->English,&qq->Sum,&qq->Average)){
		max[k]=qq->Number;
		q=(struct students*)malloc(LEN);
		qq->Next=q;
		qq=q;
		k++;			
		}
		else{
		qq->Next=NULL;
		break;	
		}
	}
	fclose(fp);
	for(i=0;i<k-1;i++)
	for(j=i+1;j<k;j++)
	if(max[i]>max[j])
	{
		t=max[i];
		max[i]=max[j];
		max[j]=t;
	}
			for(i=0;i<k;i++){ 
				qq=headq;
				for(j=0;j<k;j++)
				if(qq->Number==max[i]){
				printf("%d\t%s\t\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",qq->Number,qq->Name,qq->Sex,qq->Age,qq->Chinese,qq->math,qq->English,qq->Sum,qq->Average);
				break;
				}	
				else qq=qq->Next;
			}
}
void L5(){
	system("cls");
	char max[30][10],t[10];
	int i,k=0,j;
	qq=(struct students*)malloc(LEN);
	headq=qq;
	if((fp=fopen("student.txt","r"))==NULL){
		printf("打开文件失败!按任意键退出!\n");system("pause");exit(0);
	}
	printf("学号\t\t姓名\t\t性别\t年龄\t语文成绩\t数学成绩\t英语成绩\t总分\t\t平均分\n");
	while(1) {	
		if(EOF!=fscanf(fp,"%d\t%s\t%s\t%d\t%f\t%f\t%f\t%f\t%f\n",&qq->Number,qq->Name,qq->Sex,&qq->Age,&qq->Chinese,&qq->math,&qq->English,&qq->Sum,&qq->Average)){
		strcpy(max[k],qq->Name);
		q=(struct students*)malloc(LEN);
		qq->Next=q;
		qq=q;
		k++;			
		}
		else{
		qq->Next=NULL;
		break;	
		}
	}
	fclose(fp);
	for(i=0;i<k-1;i++)
	for(j=i+1;j<k;j++)
	if(strcmp(max[i],max[j])==1)
	{
		strcpy(t,max[i]);
		strcpy(max[i],max[j]);
		strcpy(max[j],t);
	}
			for(i=0;i<k;i++){ 
				qq=headq;
				for(j=0;j<k;j++)
				if(strcmp(qq->Name,max[i])==0){
				printf("%d\t%s\t\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",qq->Number,qq->Name,qq->Sex,qq->Age,qq->Chinese,qq->math,qq->English,qq->Sum,qq->Average);
				break;
				}	
				else qq=qq->Next;
			}
}
void L6(){
	system("cls");
	int a,t=0,i,k=0;
	printf("请输入您想搜索的学生学号:\n");
	scanf("%d",&a);
	system("cls");
	qq=(struct students*)malloc(LEN);
	headq=qq;
	if((fp=fopen("student.txt","r"))==NULL){
		printf("打开文件失败!按任意键退出!\n");system("pause");exit(0);
	}
	printf("学号\t\t姓名\t\t性别\t年龄\t语文成绩\t数学成绩\t英语成绩\t总分\t\t平均分\n");
	while(1) {	
		if(EOF!=fscanf(fp,"%d\t%s\t%s\t%d\t%f\t%f\t%f\t%f\t%f\n",&qq->Number,qq->Name,qq->Sex,&qq->Age,&qq->Chinese,&qq->math,&qq->English,&qq->Sum,&qq->Average)){
		q=(struct students*)malloc(LEN);
		qq->Next=q;
		qq=q;
		k++;			
		}
		else{
		qq->Next=NULL;
		break;	
		}
	}
	fclose(fp);
	qq=headq;
	for(i=0;i<k;i++){ 
				if(a==qq->Number){
				printf("%d\t%s\t\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",qq->Number,qq->Name,qq->Sex,qq->Age,qq->Chinese,qq->math,qq->English,qq->Sum,qq->Average);
				t=1;
				break;
				}	
				else qq=qq->Next;
			}
	if(t!=1)printf("没有该生信息!\n");
}
void L7(){
	system("cls");
	char a[10];
	int k=0,t,i;
	printf("请输入您想搜索的学生姓名:\n");
	scanf("%s",a);
	system("cls");
	qq=(struct students*)malloc(LEN);
	headq=qq;
	if((fp=fopen("student.txt","r"))==NULL){
		printf("打开文件失败!按任意键退出!\n");system("pause");exit(0);
	}
	printf("学号\t\t姓名\t\t性别\t年龄\t语文成绩\t数学成绩\t英语成绩\t总分\t\t平均分\n");
	while(1) {	
		if(EOF!=fscanf(fp,"%d\t%s\t%s\t%d\t%f\t%f\t%f\t%f\t%f\n",&qq->Number,qq->Name,qq->Sex,&qq->Age,&qq->Chinese,&qq->math,&qq->English,&qq->Sum,&qq->Average)){
		q=(struct students*)malloc(LEN);
		qq->Next=q;
		qq=q;
		k++;			
		}
		else{
		qq->Next=NULL;
		break;	
		}
	}
	fclose(fp);
	qq=headq;
	for(i=0;i<k;i++){ 
				if(strcmp(a,qq->Name)==0){
				printf("%d\t%s\t\t%s\t%d\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",qq->Number,qq->Name,qq->Sex,qq->Age,qq->Chinese,qq->math,qq->English,qq->Sum,qq->Average);
				t=1;
				break;
				}	
				else qq=qq->Next;
			}
	if(t!=1)printf("没有该生信息!\n");
}
void L8(){
	system("cls");
	int c[5],m[5],e[5],s[5];
	int i,k=0;
	for(i=0;i<5;i++){
		c[i]=0;
		e[i]=0;
		m[i]=0;
	}
	system("cls");
	qq=(struct students*)malloc(LEN);
	headq=qq;
	if((fp=fopen("student.txt","r"))==NULL){
		printf("打开文件失败!按任意键退出!\n");system("pause");exit(0);
	}
	while(1) {	
		if(EOF!=fscanf(fp,"%d\t%s\t%s\t%d\t%f\t%f\t%f\t%f\t%f\n",&qq->Number,qq->Name,qq->Sex,&qq->Age,&qq->Chinese,&qq->math,&qq->English,&qq->Sum,&qq->Average)){
		if(qq->Chinese>=90)c[0]++;
		else if(qq->Chinese>=80)c[1]++;
		else if(qq->Chinese>=70)c[2]++;
		else if(qq->Chinese>=60)c[3]++;
		else if(qq->Chinese<60)c[4]++;
		if(qq->math>=90)m[0]++;
		else if(qq->math>=80)m[1]++;
		else if(qq->math>=70)m[2]++;
		else if(qq->math>=60)m[3]++;
		else if(qq->math<60)m[4]++;
		if(qq->English>=90)e[0]++;
		else if(qq->English>=80)e[1]++;
		else if(qq->English>=70)e[2]++;
		else if(qq->English>=60)e[3]++;
		else if(qq->English<60)e[4]++;
		q=(struct students*)malloc(LEN);
		qq->Next=q;
		qq=q;
		k++;			
		}
		else{
		qq->Next=NULL;
		break;	
		}
	}
	fclose(fp);
	printf("\t\t语文成绩\t数学成绩\t英语成绩\n");
		printf("优秀人数\t%d\t\t%d\t\t%d\n",c[0],m[0],e[0]);
		printf("优秀率\t\t%.2f\t\t%.2f\t\t%.2f\n",c[0]/1.0/k,m[0]/1.0/k,e[0]/1.0/k);
		printf("良好人数\t%d\t\t%d\t\t%d\n",c[1],m[1],e[1]);
		printf("良好率\t\t%.2f\t\t%.2f\t\t%.2f\n",c[1]/1.0/k,m[1]/1.0/k,e[1]/1.0/k);
		printf("中等人数\t%d\t\t%d\t\t%d\n",c[2],m[2],e[2]);
		printf("中等率\t\t%.2f\t\t%.2f\t\t%.2f\n",c[2]/1.0/k,m[2]/1.0/k,e[2]/1.0/k);
		printf("及格人数\t%d\t\t%d\t\t%d\n",c[3],m[3],e[3]);
		printf("及格率\t\t%.2f\t\t%.2f\t\t%.2f\n",c[3]/1.0/k,m[3]/1.0/k,e[3]/1.0/k);
		printf("挂科人数\t%d\t\t%d\t\t%d\n",c[4],m[4],e[4]);
		printf("挂科率\t\t%.2f\t\t%.2f\t\t%.2f\n",c[4]/1.0/k,m[4]/1.0/k,e[4]/1.0/k);
}
#include<stdio.h> 
#include<windows.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include"STUDENT.h"
#define LEN sizeof(struct students)			
int RegisterS(int k)
{
	if(k==0)
	{	
		p2=p1=(struct students*)malloc(LEN);
		head=p1;
		printf("请输入学号:\n");
		scanf("%d",&p2->Number);
		printf("请输入姓名:\n");
		scanf("%s",p2->Name); 
		printf("请输入性别:\n");
		scanf("%s",p2->Sex);
		printf("请输入年龄:\n");
		scanf("%d",&p2->Age);
		printf("请输入语文成绩:\n");
		scanf("%f",&p2->Chinese); 
		printf("请输入数学成绩:\n");
		scanf("%f",&p2->math); 	
		printf("请输入英语成绩:\n");
		scanf("%f",&p2->English); 
		p2->Sum=p2->Chinese+p2->math+p2->English;
		p2->Average=p2->Sum/3;
		fp=fopen("student.txt","a");
		fprintf(fp,"%d\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",p2->Number,p2->Name,p2->Sex,p2->Age,p2->Chinese,p2->math,p2->English,p2->Sum,p2->Average);
		fclose(fp); 
	}
	else{
		p1=(struct students*)malloc(LEN);
		p2->Next=p1;
		p2=p1;
		printf("请输入学号:\n");
		scanf("%d",&p1->Number);
		printf("请输入姓名:\n");
		scanf("%s",p2->Name); 
		printf("请输入性别:\n");
		scanf("%s",p2->Sex);
		printf("请输入年龄:\n");
		scanf("%d",&p2->Age);
		printf("请输入语文成绩:\n");
		scanf("%f",&p1->Chinese); 
		printf("请输入数学成绩:\n");
		scanf("%f",&p1->math); 	
		printf("请输入英语成绩:\n");
		scanf("%f",&p1->English); 
		p1->Sum=p1->Chinese+p1->math+p1->English;
		p1->Average=p1->Sum/3;
		p1->Average=p1->Sum/3;
		fp=fopen("student.txt","a");
		fprintf(fp,"%d\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",p2->Number,p2->Name,p2->Sex,p2->Age,p2->Chinese,p2->math,p2->English,p2->Sum,p2->Average);
		fclose(fp);  
	}
	return k+1;	
}
学生信息管理系统(自己辛辛苦苦做了几天,虽然简陋,也凑合吧,bug不算太严重,主要是格式不太很完美)
原文:http://www.cnblogs.com/pkpk/p/5014435.html