搜档网
当前位置:搜档网 › 学生成绩管理系统v6.0

学生成绩管理系统v6.0

学生成绩管理系统v6.0
学生成绩管理系统v6.0

#include <>

#include <>

#include <>

#define m_l 10

#define m_num 30

#define m_cs 6

typedef struct student

{

long num ;

char name[m_l];

float score[m_cs];

float sum;

float aver;

}STU;

int menu(void);

void Readscore(STU stu[],int n,int m);

void Aversumofeverystudent(STU stu[],int n,int m);

void Aversumofeverycourse(STU stu[],int n,int m);

void Sortbyscore(STU stu[],int n,int m,int (*compare)(float a,float b)); int Ascending(float a,float b);

int Descending(float a,float b);

void swapfloat(float *x,float *y);

void swaplong(long *x,long *y);

void swapchar(char x[],char y[]);

void Assortbynum(STU stu[], int n, int m);

void Sortbyname(STU stu[], int n, int m);

void Searchbynum(STU stu[], int n, int m);

void Searchbyname(STU stu[], int n, int m);

void StatisticAnlysis(STU stu[], int n, int m); void Printscore(STU stu[], int n, int m);

void Writetofile(STU stu[], int n, int m);

void Readfromfile(STU stu[], int *n, int *m);

int main()

{

char ch;

int n=0,m=0;

STU stu[m_num];

printf("请输入学生人数(n<=%d):\n",m_num);

scanf("%d",&n);

printf("请输入课程数目(m<=%d):\n",m_cs);

scanf("%d",&m);

while(1)

{

ch=menu();

switch(ch)

{

case 1:

Readscore(stu,n,m);

break;

case 2:

Aversumofeverystudent(stu ,n,m); break;

case 3:

Aversumofeverycourse(stu ,n,m);

case 4:

Sortbyscore(stu ,n,m,Descending); printf("\n成绩降序排序\n");

Printscore( stu ,n, m);

break;

case 5:

Sortbyscore(stu ,n,m,Ascending); printf("\n成绩升序排序\n");

Printscore( stu ,n, m);

break;

case 6:

Assortbynum( stu , n, m);

printf("\n学号升序排序\n");

Printscore( stu ,n, m);

break;

case 7:

Sortbyname( stu , n, m);

printf("\n姓名字典升序排序\n"); Printscore( stu ,n, m);

break;

case 8:

Searchbynum( stu , n, m);

break;

case 9:

Searchbyname( stu , n, m);

break;

StatisticAnlysis( stu , n, m); break;

case 11:

Printscore( stu ,n, m);

break;

case 12:

Writetofile(stu,n,m);

break;

case 13:

Readfromfile(stu,&n,&m);

break;

case 0:

printf("\n欢迎下次继续使用"); exit(0);

default:

printf("\n输入错误");

}

}

return 0;

}

int menu(void)

{

int items;

printf("欢迎使用学生成绩管理系统\n");

printf("1.输入成绩\n");

printf("2.计算各个学生总成绩和平均成绩\n"); printf("3.计算各门学科总成绩和平均成绩\n"); printf("4.成绩降序排序\n");

printf("5.成绩升序排序\n");

printf("6.学号升序排序\n");

printf("7.姓名升序排序\n");

printf("8.通过学号查找成绩\n");

printf("9.通过姓名查找成绩\n");

printf("10.标准分析\n");

printf("11.显示成绩\n");

printf("12.写入文件\n");

printf("13.读取文件\n");

printf("0.退出\n");

printf("请做出您的选择\n");

scanf("%d",&items);

return items;

}

void Readscore(STU stu[],int n,int m)

{

int i,j;

printf("请输入学生学号,姓名,成绩\n");

for(i=0;i

{

scanf("%ld%s",&stu[i].num,stu[i].name); stu[i].sum=0;

for(j=0;j

{

scanf("%f",&stu[i].score[j]);

stu[i].sum+=stu[i].score[j];

}

if(m>0)

stu[i].aver= m>0 stu[i].sum/m : -1;

}

}

void Aversumofeverystudent(STU stu[],int n,int m)

{

int i,j;

for(i=0;i

{

printf("学生%d:总成绩:%.1f,平均成绩: %.1f\n",i+1,stu[i].sum,stu[i].aver);

}

}

void Aversumofeverycourse(STU stu[],int n,int m)

{

int i,j;

float sum[m_cs],aver[m_cs];

for(i=0;i

{

sum[i]=0;

for(j=0;j

{

sum[i]+=stu[j].score[i];

}

aver[i]= n>0sum[i]/n:-1;

printf("课程 %d:总成绩: %.1f,平均成绩: %.1f\n",i+1,sum[i],aver[i]); }

}

void Sortbyscore(STU stu[],int n,int m,int (*compare)(float a,float b))

{

int i,j,k,t;

for(i=0;i

{

k=i;

for(j=i+1;j

{

if((*compare)(stu[j].sum,stu[k].sum))

k=j;

}

if(k!=i)

{

for(t=0;t

{

swapfloat(&stu[k].score[t],&stu[i].score[t]);

}

swapfloat(&stu[k].sum,&stu[i].sum);

swapfloat(&stu[k].aver,&stu[i].aver);

swaplong(&stu[k].num,&stu[i].num);

swapchar(stu[k].name,stu[i].name);

}

}

}

int Ascending(float a,float b)

{

return a

}

int Descending(float a,float b) {

return a>b;

}

void swapfloat(float *x,float *y) {

float b;

b=*x;

*x=*y;

*y=b;

}

void swaplong(long *x,long *y)

{

long b;

b=*x;

*x=*y;

*y=b;

}

void swapchar(char x[],char y[]) {

char b[m_l];

strcpy(b,x);

strcpy(x,y);

strcpy(y,b);

}

void Assortbynum(STU stu[], int n, int m)

{

int i,j,k,t;

for(i=0;i

{

k=i;

for(j=i+1;j

{

if(stu[j].num

k=j;

}

if(k!=i)

{

for(t=0;t

{

swapfloat(&stu[k].score[t],&stu[i].score[t]); }

swapfloat(&stu[k].sum,&stu[i].sum);

swapfloat(&stu[k].aver,&stu[i].aver);

swaplong(&stu[k].num,&stu[i].num);

swapchar(stu[k].name,stu[i].name);

}

}

}

void Sortbyname(STU stu[], int n, int m)

{

int i,j,t;

for(i=0;i

{

for(j=i+1;j

{

if(strcmp(stu[j].name,stu[i].name)<0)

{

for(t=0;t

{

swapfloat(&stu[i].score[t],&stu[j].score[t]); }

swapfloat(&stu[j].sum,&stu[i].sum);

swapfloat(&stu[j].aver,&stu[i].aver);

swaplong(&stu[j].num,&stu[i].num);

swapchar(stu[j].name,stu[i].name);

}

}

}

}

void Searchbynum(STU stu[], int n, int m)

{

long num;

int i,j;

printf("输入你所想要查找的学号\n");

scanf("%ld",&num);

for(i=0;i

{

if(stu[i].num==num)

{

printf("%ld\t%s\t",stu[i].num,stu[i].name);

for(j=0;j

{

printf("%.0f\t",stu[i].score[j]);

}

printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver); return;

}

}

printf("\n查无此号 \n");

}

void Searchbyname(STU stu[], int n, int m)

{

char name[m_l];

int i,j;

printf("输入你所想要查找的姓名\n");

scanf("%s",name);

for(i=0;i

{

if(strcmp(stu[i].name,name)==0)

{

printf("%ld\t%s\t",stu[i].num,stu[i].name);

for(j=0;j

{

printf("%.0f\t",stu[i].score[j]);

}

printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver); return;

}

}

printf("\n查无此人 \n");

}

void StatisticAnlysis(STU stu[], int n, int m)

{

int i,j,total,t[6];

for(j=0;j

{

printf("学科:%d:\n",j+1);

memset(t,0,sizeof(t));

for(i=0;i

{

if(stu[i].score[j]>=0&&stu[i].score[j]<60)

t[0]++;

else if(stu[i].score[j]<70)

t[1]++;

else if(stu[i].score[j]<80)

t[2]++;

else if(stu[i].score[j]<90)

t[3]++;

else if(stu[i].score[j]<100)

t[4]++;

else if(stu[i].score[j]==100)

t[5]++;

}

total=0;

for(i=0;i<=5;i++)

{

total+=t[i];

}

for(i=0;i<=5;i++)

{

if(i==0)

printf("<60\t%d\t%.2f%%\n",t[i],(float)t[i]/n*100);

else if(i==5)

printf("=100\t%d\t%.2f%%\n",t[i],(float)t[i]/n*100);

else

printf("%d-%d\t%d\t%.2f%%\n",t[i],(i+5)*10,(i+5)*10+9,(float)t[i]/n*100); }

}

}

void Printscore(STU stu[], int n, int m)

{

int i,j;

for(i=0;i

{

printf("%ld\t%s\t",stu[i].num,stu[i].name);

for(j=0;j

{

printf("%.1f\t",stu[i].score[j]);

}

printf("%.1f\t%.1f\n",stu[i].sum,stu[i].aver); }

}

void Writetofile(STU stu[], int n, int m)

{

FILE *fp;

int i,j;

if((fp=fopen("","w"))==NULL)

{

printf("打开“”失败!\n");

exit(0);

}

fprintf(fp,"%d\t%d\n",n,m);

for(i=0;i

{

fprintf(fp,"%10ld%10s",stu[i].num,stu[i].name);

for(j=0;j

{

fprintf(fp,"%",stu[i].score[j]);

}

fprintf(fp,"%%\n",stu[i].sum,stu[i].aver);

}

fclose(fp);

}

void Readfromfile(STU stu[],int *n,int *m)

{

FILE *fp;

int i,j;

if((fp=fopen("","r"))==NULL)

{

printf("打开 !失败\n");

exit(0);

}

fscanf(fp,"%d\t%d",n,m);

for(i=0;i<*n;i++)

{

fscanf(fp,"%10ld",&stu[i].num);

fscanf(fp,"%s",&stu[i].name);

for(j=0;j<*m;j++)

{

fscanf(fp,"%10f",&stu[i].score[j]);

}

fscanf(fp,"%10f%10f\n",&stu[i].sum,&stu[i].aver); }

fclose(fp);

}

相关主题