学生成绩管理系统 核心代码

学生成绩管理系统核心代码

在这里插入代码片
```#include <stdio.h>
#include  "Student.h"
#include <string.h>

static int col;
static FORMAT format; 
void SelectALL()
{
	col=0;
}
void SelectId()
{
	col=1;
 } 
 void SelectClass()
{
	col=2;
} 
void SelectName()
{
	col=3;
}
void SelectSex()
{
	col=4;
}
void SelectMobile()
{
	col=4;
}
void SelectChinese()
{
	col=5;
}
void SelectMath()
{
	col=6;
}
void SelectEnglish()
{
	col=7;
}
void SelectScore()
{
	col=8;
}
void SelectSum()
{
	col=9;
}
int SelectPass()
{
	int  t;
	printf("\n┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄\n"); 
	printf("1-语文不及格     2-数学不及格     3-英语不及格      4-平均分低于及格线 \n\n5-语文成绩优秀   6-数学成绩优秀   7->英语成绩优秀   0-退出 >");
	scanf("%d",&t);
	while((t<1||t>7)&&(t!=0))
	{
		printf("输入错误 请您重新输入!\n");
		while(getchar()!='\n');
		scanf(" %d",&t); 
	}
	if(t>=1&&t<=7)
	{
		col=t;
	} 
 }
int PersonPass(const PERSON *x)
{
	int r;
	switch(col)
	{
		case 1:
			r=x->Chinese-60 ; 
			break;
		case 2:
			r=x->Math-60 ;
			break;
		case 3:
			r=x->English-60 ;
			break;
		case 4:
		    r=x->sum-60; 
		    break;
		case 5:
		    r=90-x->Chinese;
		    break;
		case 6:
			r=90-x->Math;
			break;
		case 7:
		    r=90-x->English; 
				
	}

	return r;

}
int  SelectOn(int y)
{
	 if(y>=1&&y<=4)
	{
		 if(y==4)
		 {
		 
		 	col=0;
		 }
		 else
		 {
		 	col=y+4;
		 }
	}
}
int SelectIn()
{
	int t;
	printf("请选择您要输入的学科   语文---1 数学---2 英语---3 添加新成绩---4 退出---0  ->  ");
	scanf(" %d",&t);
	printf("\n\n");
	while((t<1||t>4)&&(t!=0))
	{
		printf("输入错误 请您重新输入!\n");
		while(getchar()!='\n');
		scanf("%d",&t); 
	}
	if(t>=1&&t<=4)
	{
		return t;
	}
 } 
int SelectCol()
{
	int  t;
	printf("\n┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄\n"); 
	printf("1-学号 2-班级 3-姓名 4-性别 5-语文 6-数学 7- 英语 8-总分 9-平均分 0-退出 > ");
	scanf(" %d",&t);
	while((t<1||t>9)&&(t!=0))
	{
		printf("输入错误 请您重新输入!\n");
		while(getchar()!='\n');
		scanf("%d",&t); 
	}
	if(t>=1&&t<=9)
	{
		col=t;
	} 
 }
 int SelectRank()
{
	int  t;
	printf("\n┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄\n"); 
	printf("1-语文成绩 2-数学成绩 3-英语成绩 4-总成绩 5-平均分 0-退出 > ");
	scanf(" %d",&t);
	while((t<1||t>5)&&(t!=0))
	{
		printf("输入错误 请您重新输入!\n");
		while(getchar()!='\n');
		scanf("%d",&t); 
	}
	if(t>=1&&t<=5)
	{
		col=t+4;
	} 
}
void  Card()
{
	format = card;
}
void Table()
{
	format = table;
}
void Title()
{
	printf("\n\n\n");
	printf("┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━┓\n"); 
	printf("┃    学号    ┃      班级     ┃    姓名    ┃   性别  ┃  语文 ┃  数学 ┃  英语 ┃  总分┃ 平均分┃  \n");
} 
//void PersonIn(PERSON *person)
//{
//	    printf("学号: ");
//   		scanf("%d%*c",&person->id);
//   		printf("班级: ");
//		scanf(" %s",&person->Class);
//   		printf("姓名: ");
//   		scanf(" %s",&person->name);
//   		printf("性别: ");
//}
void PersonInput(PERSON *person)
{
   switch (col)
   {
   	case 0:
   	 
   		printf("学号: ");
   		scanf("%d%*c",&person->id);
   		printf("班级: ");
		scanf(" %s",&person->Class);
   		printf("姓名: ");
   		scanf(" %s",&person->name);
   		printf("性别: ");
   		scanf(" %s",&person->sex);
   		printf("语文成绩: ");
   		scanf("%d%*c",&person->Chinese );
   		while((person->Chinese>100)||(person->Chinese<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
   			printf("语文成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->Chinese );
		}
   		printf("数学成绩: ");
   		scanf("%d%*c",&person->Math );
   		while((person->Math>100)||(person->Math<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
   			printf("数学成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->Math );
		}
   		printf("英语成绩: ");
   		scanf("%d%*c",&person->English );
   		while((person->English>100)||(person->English<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
   			printf("英语成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->English);
		}
   		break;
   	case 1:
   		printf("学号: ");
   		scanf("%d%*c",&person->id);
   		break ;
   	case 2:
   		printf("班级: ");
   		gets(person->Class);
   		break;
   	case 3:
   	    printf("姓名: ");
   		gets(person->name);
   		break;
   	case 4:
   		printf("性别: ");
   		gets(person->sex );
   		break;
   	case 5:
   		printf("语文成绩: ");
   		scanf("%d%*c",&person->Chinese );
   		while((person->Chinese>100)||(person->Chinese<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
   			printf("语文成绩: ");
//			while(getchar()!='\n'); 
   			scanf("%d%*c",&person->Chinese );
		}
   		break ;
   	case 6:
   		printf("数学成绩: ");
   		scanf("%d%*c",&person->Math );
   		while((person->Math>100)||(person->Math<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
   			printf("数学成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->Math );
		}
   		break;
	case 7: 
		printf("英语成绩: ");
   		scanf("%d%*c",&person->English );
   		while((person->English>100)||(person->English<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
   			printf("英语成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->English );
		}
	    break;
   }
   person->score =person->Chinese+person->English +person->Math ;
   person->sum =person->score / 3.0;
 } 
 void PersonInput2(PERSON *person)
{
   switch (col)
   {
   	case 0:
   	
   		printf("学号: ");
   		scanf("%d%*c",&person->id);
   		printf("班级: ");
		scanf(" %s",&person->Class);
   		printf("姓名: ");
   		scanf(" %s",&person->name);
   		printf("性别: ");
   		scanf(" %s",&person->sex);
   		printf("语文成绩: ");
   		scanf("%d%*c",&person->Chinese );
   		while((person->Chinese>100)||(person->Chinese<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
   			printf("语文成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->Chinese );
		}
   		printf("数学成绩: ");
   		scanf("%d%*c",&person->Math );
   		while((person->Math>100)||(person->Math<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
   			printf("数学成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->Math );
		}
   		printf("英语成绩: ");
   		scanf("%d%*c",&person->English );
   		while((person->English>100)||(person->English<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
   			printf("英语成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->English);
		}
   		break;
   	case 1:
   		printf("学号: ");
   		scanf("%d%*c",&person->id);
   		break ;
   	case 2:
   		printf("班级: ");
   		gets(person->Class);
   		break;
   	case 3:
   	    printf("姓名: ");
   		gets(person->name);
   		break;
   	case 4:
   		printf("性别: ");
   		gets(person->sex );
   		break;
   	case 5:
//   		printf(" ");
   		scanf("%d%*c",&person->Chinese );
   		
   		while((person->Chinese>100)||(person->Chinese<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
//   			printf(" ");
//			while(getchar()!='\n'); 
   			scanf("%d%*c",&person->Chinese );
		}
		
   		break ;
   	case 6:
//   		printf("数学成绩: ");
   		scanf("%d%*c",&person->Math );
   		while((person->Math>100)||(person->Math<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
//   			printf("数学成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->Math );
		}
   		break;
	case 7: 
//		printf("英语成绩: ");
   		scanf("%d%*c",&person->English );
   		while((person->English>100)||(person->English<0))
   		{
   			printf("       -----您输入的成绩不在正确的范围内 请重新输入-----\n");
//   			printf("英语成绩: ");
//   			while(getchar()!='\n');
   			scanf("%d%*c",&person->English );
		}
	    break;
   }
   person->score =person->Chinese+person->English +person->Math ;
   person->sum =person->score / 3.0;
 }
void PersonOutput(const PERSON *person)
{
	switch (format)
	{
		case card:
			switch(col)
			{
				case 0:
					printf("┏━━━━━━━━━━━━┳━━━━━━━━━━━━┓\n"); 
					printf("┃     学号   ┃   %d ┃\n",person->id);
					printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━┫\n"); 
					printf("┃     班级   ┃  %s ┃\n",person->Class);
					printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━┫\n"); 
					printf("┃     姓名   ┃     %s   ┃\n",person->name);
					printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━┫\n"); 
					printf("┃     性别   ┃      %s    ┃\n",person->sex );
					printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━┫\n"); 
					printf("┃   语文成绩 ┃     %3d    ┃ \n",person->Chinese);
					printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━┫\n"); 
					printf("┃   数学成绩 ┃     %3d    ┃\n",person->Math);
					printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━┫\n"); 
					printf("┃   英语成绩 ┃     %3d    ┃\n",person->English);
					printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━┫\n"); 
					printf("┃     总分   ┃     %3d    ┃\n",person->score );
					printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━┫\n"); 
					printf("┃    平均分  ┃   %5.3g    ┃\n",person->sum );
					printf("┗━━━━━━━━━━━━┻━━━━━━━━━━━━┛\n"); 
					
					break;
				case 1:
					printf("学号: %d\n",person->id);
					break;
				case 2:
					printf("班级: %s\n",person->Class);
					break;
				case 3:
					printf("姓名: %s\n",person->name);
					break;
				case 4:
				    printf("性别: %s\n",person->sex );
				    break;
				case 5:
					printf("语文成绩: %d\n",person->Chinese );
					break;
				case 6:
					printf("数学成绩: %d\n",person->Math  );
					break;
				case 7: 
				    printf("英语成绩: %d\n",person->English  );
				    break;
				case 8:
					printf("总分: %d\n",person->score );
					break;
				case 9:
					printf("平均分: %g\n",person->sum);
					break;
			}
			break ;
		case  table:
//			putchar('\n');
		printf("┣━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━━━━╋━━━━━━━━━╋━━━━━━━╋━━━━━━━╋━━━━━━━╋━━━━━━╋━━━━━━━┫\n"); 
			printf("┃%12d┃   %10s  ┃%8s    ┃",person->id ,person->Class,person->name);
			printf("%6s   ",person->sex );
			printf("┃%7d┃%7d┃%7d┃%6d┃%7.2g┃\n",person->Chinese ,person->Math ,person->English,person->score,person->sum);
//			printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); 
			break ;
			
	}
}

void PersonOutput2(const PERSON *person)
{
	switch (format)
	{
		case card:
			switch(col)
			{
				case 0:
					printf("学号: %d\n",person->id);
					printf("班级: %s\n",person->Class);
					printf("姓名: %s\n",person->name);
					printf("性别: %s\n",person->sex );
					printf("语文成绩: %d\n",person->Chinese);
					printf("数学成绩: %d\n",person->Math);
					printf("英语成绩: %d\n",person->English);
					printf("总分: %d\n",person->score );
					printf("平均分: %g\n",person->sum );
					
					break;
				case 1:
					printf("%d",person->id);
					break;
				case 2:
					printf("%s",person->Class);
					break;
				case 3:
					printf("%s",person->name);
					break;
				case 4:
				    printf("%s",person->sex );
				    break;
				case 5:
					printf("语文成绩: %d\n",person->Chinese );
					break;
				case 6:
					printf("数学成绩: %d\n",person->Math  );
					break;
				case 7: 
				    printf("英语成绩: %d\n",person->English  );
				    break;
				case 8:
					printf("总分: %d\n",person->score );
					break;
				case 9:
					printf("平均分: %g\n",person->sum);
					break;
			}
			break ;
		case  table:
			putchar('\n');
			printf("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); 
			printf("%8d%10s%8s",person->id ,person->Class,person->name);
			printf("%8s",person->sex );
			printf("%10d%10d%10d%10d%10g\n",person->Chinese ,person->Math ,person->English,person->score,person->sum);
			printf("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); 
			break ;
			
	}
}
void PersonBook()
{
	printf("                             向系统中添加学生的成绩单\n"); 
	printf("     ----------- A-添加      分别输入学号 班级 姓名 性别 语文成绩 数学成绩 外语成绩      \n");
	printf("                             系统会自动计算该学生的总分以及平均分      \n\n");
	printf("     ----------- S-显示      显示系统中所有已经输入的学生成绩    \n\n");
	printf("     ----------- F-查找      根据您提供的信息单独查找该学生的成绩    \n\n");
	printf("     ----------- M-修改      按您的要求修改学生的信息    \n\n");
	printf("     ----------- D-删除      删除学生的信息    \n\n");
	printf("     ----------- X-排名      根据您的要求 显示单科成绩排名 总分排名   \n\n");
	printf("     ----------- T-统计      统计系统中不及格的人数 学生优秀的人数    \n\n");
	printf("     ----------- C-班级      显示同一个班级的学生成绩 并按照总分降序排序    \n\n");
	printf("     ----------- Q-退出      退出学生成绩管理系统    \n\n");
}
int PersonCmp(const PERSON *x,const PERSON *y)
{
	int r;
	switch(col)
	{
		case 1:
			r=x->id -y->id ;
			break;
		case 2:
			r=strcmp(x->Class ,y->Class );
			break;
		case 3:
			r=strcmp(x->name ,y->name);
			break;
		case 4:
		    r=strcmp(x->sex ,y->sex);
			break;
		case 5:
			r=x->Chinese   -y->Chinese  ;
			break;
		case 6:
			r=x->Math -y->Math ;
			break;
		case 7:
			r=x->English -y->English ;
			break;
		case 8:
			r=x->score -y->score ;
			break;
		case 9: 
		    r=x->sum-y->sum;
	}
	return r;
}

void PersonSwap(PERSON *x,PERSON *y)
{
	PERSON a;
	a=*x;
	*x=*y;
	*y=a;
}
int PersonCode(char *code ,char *cd)
{
	int r,x;
	r=strcmp(code ,cd);
	if(r==0)
	{
		x=1;
	}
	else
	{
		x=0;
	}
	return x;
}
void PersonWrite(FILE *file ,const PERSON *person)
{
	fprintf(file,"%d\n",person->id);
	fprintf(file,"%s\n",person->Class );
	fprintf(file,"%s\n",person->name );
	fprintf(file,"%s\n",person->sex );
	fprintf(file,"%d\n",person->Chinese );
	fprintf(file,"%d\n",person->Math );
	fprintf(file,"%d\n",person->English );
	fprintf(file,"%d\n",person->score  );
	fprintf(file,"%g\n",person->sum  );
}
void PersonRead(FILE *file,PERSON  *person)
{
	int n;
	char temp[1000];
	fscanf(file,"%d%*c",&person->id);
	
    fgets(temp ,1000 ,file);
    n=strlen(temp);
    temp[n-1]='\0';
    strcpy(person->Class,temp);
    
    fgets(temp ,1000 ,file);
    n=strlen(temp);
    temp[n-1]='\0';
    strcpy(person->name ,temp);
    
    fgets(temp ,1000 ,file);
    n=strlen(temp);
    temp[n-1]='\0';
    strcpy(person->sex,temp);
    
    fscanf(file,"%d%*c",&person->Chinese);
    fscanf(file,"%d%*c",&person->Math);
    fscanf(file,"%d%*c",&person->English);
    fscanf(file,"%d%*c",&person->score);
    fscanf(file,"%lg%*c",&person->sum);
}

```c
#include  <stdio.h>
#include <stdlib.h>
#include  "Book.h"

//创建通讯录 
void BookCreate(BOOK *book)
{
	book->size=maxSize;
	book->number=0;
	book->person=(PERSON*)malloc(book->size * sizeof(PERSON));
}
//销毁通讯录 
void BookDestroy(BOOK *book)
{
	free(book->person);
	book->person = NULL;
	book->size=book->number=0;
}
//添加联系人 
void BookAppend(BOOK *book,const PERSON *person)
{
	if(book->number < book->size)
	{
		book->person[book->number]=*person;
		++book->number;
	}
 } 
 void BookIn(BOOK *book,int w)
{
	PERSON person;
	int k;
	Card();
	printf("┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓\n") ;
		printf("┃          学号        ┃            班级          ┃      姓名      ┃     ");
				if(w==1)

		{
			printf("语文成绩");
		 } 
		 if(w==2)
		{
			printf("数学成绩");
		 }
		 if(w==3)
		{
			printf("英语成绩");
		 }
		 printf("     \n");
	for(k=0;k<book->number;++k)
	{
//		printf("┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓\n") ;
//		printf("┃      学号      ┃       班级     ┃      姓名      ┃             \n");━
        printf("┣━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━┫\n") ;
//		if(w==1)
//
//		{
//			printf("语文成绩\n");
//		 } 
//		 if(w==2)
//		{
//			printf("数学成绩\n");
//		 }
//		 if(w==3)
//		{
//			printf("英语成绩\n");
//		 }
		SelectId();
		printf("┃      ");
		PersonOutput2(&book->person[k]);
		printf("        ┃         ");
		SelectClass();
		PersonOutput2(&book->person[k]);
		printf("        ┃      ");
		SelectName();
		PersonOutput2(&book->person[k]);
		printf("      ┃ ");
	    if((w>=5)||(w<=7))
		{
//		PersonOutput(&book->person[k]);
		SelectOn(w);
		printf("      ");
		PersonInput2(&book->person[k]);
		
		 } 
		
	
	}
	printf("┗━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━┛\n") ;
	printf("     --------您已输入完成 欢迎下次使用--------\n"); 
}
//显示通讯录
void BookOutput(const BOOK *book)
{
	int k;
	Table();
	Title();
	for(k=0;k<book->number;++k)
	{
		PersonOutput(&book->person[k]);
	}
	printf("┗━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━┻━━━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━┻━━━━━━━┛\n"); 
}
//输入个人信息
void BookInputPerson(const BOOK *book,int index)
{
	if(index>=0 && index<book->number)
	{
	PersonInput(&book->person[index]);
	}
	else
	{
		puts("内部错误!");
	}
}
//输出个人信息
void BookOutputperson(const BOOK *book,int index)
{
	if(index>=0 && index<book->number)
	{
    Card();
	PersonOutput(&book->person[index]);
	}
	else
	{
		puts("内部错误!");
	}

}
int BookFind(BOOK *book ,const PERSON *person)
{
	int r=-1,k;
	for(k=0 ; -1==r&&k<book->number ;++k)
	{
		if(!PersonCmp(&book->person[k],person))
		{
			r=k;
		}
	}
	return r;
}

// 排序
void BookSort(BOOK *book)
{
	int i,j,k,n=book->number-1;
	for(i=0;i<n;++i)
	{
		for(k=i,j=i+1;j<book->number ;++j)
		{
			if(PersonCmp((&book->person[j]),&book->person[k])<0)
			{
				k=j;
			}
		}
		if(k>i)
		{
			PersonSwap(&book->person[i],&book->person[k]);
		}
	}
}

// 排名 
void BookRank(BOOK *book)
{
	Table();
	int i,j,k,n=book->number-1;
	for(i=0;i<n;++i)
	{
		for(k=i,j=i+1;j<book->number ;++j)
		{
			if(PersonCmp((&book->person[j]),&book->person[k])>=0)
			{
				k=j;
			}
		}
		if(k>i)
		{
			PersonSwap(&book->person[i],&book->person[k]);
		}
	}
}
void BookClass(BOOK *book ,BOOK *bk)
{
	Table();
	SelectClass();
	int i,j,k,n=book->number-1,m=0,h=0,flag;
	for(i=0;i<=n;i++)
	{
        flag=0;
		for(m=i,h=i-1;h>=-1;h--)
		{

			if(PersonCmp(&book->person[m],&book->person[h])==0)
			{
			    flag=1;
			}
			
		}
		
		if(flag!=1)
		{
		putchar('\n');
		Title(); 
		PersonOutput(&book->person[i]);
		for(k=i,j=i+1;j<book->number ;j++)
		{
			if(PersonCmp((&book->person[j]),&book->person[k])==0)
			{
			    PersonOutput(&book->person[j]);
			}
		}
		
		
				printf("┗━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━┻━━━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━┻━━━━━━━┛\n");
		
	    }
	     
	}

}
void BookPass(BOOK *book)
{
	Table();
	int i,j,k=0,n=book->number-1;
	for(i=0;i<=n;i++)
	{
		if(PersonPass(&book->person[i])<0)
			{
		      if(k==0)
		      {
		      	Title();
			  }
				PersonOutput(&book->person[i]);
				k=1;
			}
	}
	
	if(k==0)
	{
		printf("没有符合要求的同学!\n"); 
	}
	else
	{
		printf("┗━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━┻━━━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━┻━━━━━━━┛\n"); 
	}
}
//写通讯录
void BookWrite( const char *filename, const BOOK *book)
{
	int k;
	FILE *file=fopen(filename,"w");
	if(file)
	{
		fprintf(file,"%d\n",book->number);
		for (k=0 ; k<book->number; ++k)
		{
			PersonWrite(file,&book->person[k]);
		} 
		fclose(file);
	}
	else
	{
		puts("Error!");
	}
}
//读通讯录
void BookRead(const char *filename ,BOOK *book)
{
	int k;
	FILE *file = fopen(filename , "r");
	if(file)
	{
		fscanf(file,"%d%*c",&book->number);
		for(k=0;k<book->number ;++k)
		{
			PersonRead(file,&book->person [k]);
		}
		fclose(file);
	}
	else
	{
		puts("Error!");
	}
}
void Bookdelete(BOOK *book,int index)
{
	int i=index-1,j,k,n=book->number,m;
    printf("是否选择删除该学生成绩?\n      是 -- 1     否 -- 0\n");
	scanf("%d",&m);
	while(m!=1&&m!=0)
	{
		printf("输入错误的信息  请重新输入! \n");
		scanf(" %d",&m);
	}
	if(m==1)
	{	
    for(k=i+1;k<n;++k)
	{
		book->person[k-1]=book->person[k];
	}
	--book->number ;
	printf("学生成绩已被删除!!!\n"); 
    }
    else
    {
    	printf("您已放弃删除学生成绩!!!\n"); 
	}
	 
}


技术特点:采用三层架构模式、数据分页、获取等均使用代码实现。注释详细、代码规范,非常适合学习和中小型学校使用。 功能描述: 一,可以导入和导出成绩,成绩单上的项目包括:姓名,学号,科目,班级,成绩,补考成绩,授课老师,考试日期。 其中成绩和补考成绩具体情况如下: 1,计算机课程:理论成绩,实践成绩,, 2,文化课:理论, 3,英语:考试成绩,平时成绩,总成绩 二,导入成绩后,系统会自动计算出该班级该科目的应考人数,实考人数,缺考人数,及格人数,不及格人数,平均分,通过率。 其中平均分和率具体情况如下: 1,计算机课程:理论成绩,实践成绩,总成绩(理论和实践各占50%) 2,文化课:理论, 3,英语:考试成绩,平时成绩,总成绩(考试成绩占80%,平时成绩占20%) 4,计算机课程: 理论平均分,通过率;实践平均分,通过率;总成绩的平均分,通过率。 5,文化课:理论成绩的平均分,通过率 6,英语:总成绩的平均分和通过率 三:查询: 1,可以通过班级,学号,姓名,科目,及格的人和不及格的人,授课老师进行查询, 2,可以查询该班的单科成绩,也可以查询该班的各科成绩汇总。 3,可以按月度查询该月所有考试的平均分和通过率,也可 以按年度查询该年度的平均分和通过率。 4,可以查询授课老师某一门的月度和年度平均分和通过率和该老师所授所有课程的月度和年度平均分和通过率。 四、成绩排序 可按照该班级某门课程的理论成绩,实践成绩、总成绩进行排序 五、任课教师的管理 任课教师基本信息,该门课程的授课教师 教务处: 学校全体成员的信息管理,对考试科目,时间及对所考科目的编号等进行具体的管理,并对任课老师等输入的信息进行管理,对学生的信息进行必要的维护,可打印学生的所有信息。 绝对是可用实际部署使用的。很实惠的。 注意事项:运行时请修改附加数据库并修改数据库连接字符串(在web.config里面)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值