学生成绩管理系统核心代码
在这里插入代码片
```#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 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("语文成绩: ");
scanf("%d%*c",&person->Chinese );}printf("数学成绩: ");scanf("%d%*c",&person->Math );while((person->Math>100)||(person->Math<0)){printf(" -----您输入的成绩不在正确的范围内 请重新输入-----\n");printf("数学成绩: ");
scanf("%d%*c",&person->Math );}printf("英语成绩: ");scanf("%d%*c",&person->English );while((person->English>100)||(person->English<0)){printf(" -----您输入的成绩不在正确的范围内 请重新输入-----\n");printf("英语成绩: ");
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("语文成绩: ");
scanf("%d%*c",&person->Chinese );}break ;case 6:printf("数学成绩: ");scanf("%d%*c",&person->Math );while((person->Math>100)||(person->Math<0)){printf(" -----您输入的成绩不在正确的范围内 请重新输入-----\n");printf("数学成绩: ");
scanf("%d%*c",&person->Math );}break;case 7: printf("英语成绩: ");scanf("%d%*c",&person->English );while((person->English>100)||(person->English<0)){printf(" -----您输入的成绩不在正确的范围内 请重新输入-----\n");printf("英语成绩: ");
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("语文成绩: ");
scanf("%d%*c",&person->Chinese );}printf("数学成绩: ");scanf("%d%*c",&person->Math );while((person->Math>100)||(person->Math<0)){printf(" -----您输入的成绩不在正确的范围内 请重新输入-----\n");printf("数学成绩: ");
scanf("%d%*c",&person->Math );}printf("英语成绩: ");scanf("%d%*c",&person->English );while((person->English>100)||(person->English<0)){printf(" -----您输入的成绩不在正确的范围内 请重新输入-----\n");printf("英语成绩: ");
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:
scanf("%d%*c",&person->Chinese );while((person->Chinese>100)||(person->Chinese<0)){printf(" -----您输入的成绩不在正确的范围内 请重新输入-----\n");
scanf("%d%*c",&person->Chinese );}break ;case 6:
scanf("%d%*c",&person->Math );while((person->Math>100)||(person->Math<0)){printf(" -----您输入的成绩不在正确的范围内 请重新输入-----\n");
scanf("%d%*c",&person->Math );}break;case 7:
scanf("%d%*c",&person->English );while((person->English>100)||(person->English<0)){printf(" -----您输入的成绩不在正确的范围内 请重新输入-----\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:
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);
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") ;
SelectId();printf("┃ ");PersonOutput2(&book->person[k]);printf(" ┃ ");SelectClass();PersonOutput2(&book->person[k]);printf(" ┃ ");SelectName();PersonOutput2(&book->person[k]);printf(" ┃ ");if((w>=5)||(w<=7)){
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"); }}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!