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

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

在这里插入代码片
```#include <stdio.h>
#include  "Student.h"
#include 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  
#include 
#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"); }}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部