文章标题

来源:互联网 发布:hexo博客绑定域名 编辑:程序博客网 时间:2024/06/05 16:21

C语言 学生成绩管理系统

#include<stdio.h>#include<string.h>typedef struct student{  char name[10];  int  num;  int score[3];  float ave;  int sum;}STUD;void XMB(void);                         //显示主界面void add(STUD a[],int j);               //添加若干条记录void delete(STUD a[],int j);            //删除若干条记录void alt(STUD a[],int k);               //修改若干条信息void view(STUD a[],int j);              //按不同的方式查看所有信息void inqu(STUD a[],int k);              //按不同的方式查找信息void viewave(STUD a[],int k);           //查看符合平均值条件的信息int read(STUD a[]);                     //从文件中读入数据到数组,返回记录条数void sortd(STUD a[],int n);             //降序排序void sortu(STUD a[],int j);             //升序排序void sortu(STUD a[],int j);             //按学号排序FILE *f1;STUD term;int main(void){  STUD a[100];  int m,n,j,k;  char c;  j=read(a);  for(k=0;k<j;k++){        a[k].sum=a[k].score[0]+a[k].score[1]+a[k].score[2];        a[k].ave=a[k].sum/3.0;       }  do{    XMB();    scanf("%d",&n);    switch(n){      case 1:view(a,j);break;      case 2:add(a,j);break;      case 3:delete(a,j);break;      case 4:alt(a,j);break;      case 5:inqu(a,j);break;      case 6:viewave(a,j);break;      default:printf("输入有误!\n");    }    printf("\n按任意键继续,按0键结束\n\n");    j=read(a);    c=getch();  } while(c!='0');}void XMB(void){  printf("|—-------欢迎使用学生成绩管理系统------|\n");  printf("|        1.显示所有学生信息             |\n");  printf("|        2.添加若干条信息               |\n");  printf("|        3.删除指定学生信息             |\n");  printf("|        4.修改指定学生信息             |\n");  printf("|        5.查找指定学生信息             |\n");  printf("|        6.查看符合平均值条件学生的信息 |\n");  printf("|---------------------------------------|\n\n");  printf("请选择(1-6):");}int read(STUD a[]){  int m=0;  if( (f1=fopen("学生成绩.txt","r+"))==NULL){        printf("文件不存在,请检查!\n");        exit(1);  }  while(fscanf(f1,"%s %d %d %d %d %f %d",a->name,&a->num,&a->score[0],                &a->score[1],&a->score[2],&a->ave,&a->sum)!=EOF){        a++;        ++m;    }   rewind(f1);   fclose (f1);   return m;}void sortd (STUD a[],int j){  int p,q,k;   for(p=0;p<j-1;p++){        k=p;        for(q=p+1;q<j;q++){          if(a[k].ave>a[q].ave){            k=q;          }        }        if(k!=p){          term=a[k];          a[k]=a[p];          a[p]=term;        }      }}void sortu (STUD a[],int j){  int p,q,k;   for(p=0;p<j-1;p++){        k=p;        for(q=p+1;q<j;q++){          if(a[k].ave<a[q].ave){            k=q;          }        }        if(k!=p){          term=a[k];          a[k]=a[p];          a[p]=term;        }      }}void sortn(STUD a[],int j){  int p,q,k;   for(p=0;p<j-1;p++){        k=p;        for(q=p+1;q<j;q++){          if(a[k].num>a[q].num){            k=q;          }        }        if(k!=p){          term=a[k];          a[k]=a[p];          a[p]=term;        }      }}void view(STUD a[],int j){  int i,k,m;  m=j;  STUD term;  printf("*********************\n");  printf(" 1.按学号查看所有信息\n");  printf(" 2.按照平均值升序查看\n");  printf(" 3.按照平均值降序查看\n");  printf("*********************\n");  printf("请选择:");  scanf("%d",&i);  switch(i)  {    case 1:{       sortn(a,m);break;      }    case 2:{       sortd(a,m);break;    }    case 3:{       sortu(a,m);break;    }  }  printf("  姓名   学号   成绩1   成绩2   成绩3   平均分   总分\n");  for(k=0;k<j;k++){        printf("%6s %6d %6d %6d %8d %9.2f %6d\n",a[k].name,a[k].num,a[k].score[0],                a[k].score[1],a[k].score[2],a[k].ave,a[k].sum);  }}void add(STUD a[],int j){  int n,k,i;  printf("请输入需要添加的记录条数:");  scanf("%d",&n);  for(k=j;k<n+j;k++){     printf("姓名:\n");     scanf("%s",a[k].name);     printf("学号:\n");     scanf("%d",&a[k].num);     printf("分数一:\n");     scanf("%d",&a[k].score[0]);     printf("分数二:\n");     scanf("%d",&a[k].score[1]);     printf("分数三:\n");     scanf("%d",&a[k].score[2]);     a[k].sum=a[k].score[0]+a[k].score[1]+a[k].score[2];        a[k].ave=a[k].sum/3.0;     if( (f1=fopen("学生成绩.txt","a+"))==NULL){        printf("文件不存在,请检查!\n");        exit(1);  }    fprintf(f1,"%s %d %d %d %d %f %d\n",a[k].name,a[k].num,a[k].score[0],                a[k].score[1],a[k].score[2],a[k].ave,a[k].sum);    printf("\n添加成功!\n");  }  rewind(f1);  fclose(f1);}void delete(STUD a[],int k){  char name[10];  int num,n,i,j,p,q;  int flag=0;  printf("请输入需要删除的记录条数:");  scanf("%d",&p);  for(q=0;q<p;q++){      printf("**********************\n");  printf("1.根据姓名删除记录\n");  printf("2.根据学号删除记录\n");  printf("**********************\n");  printf("\n请选择\n");  scanf("%d",&n);  if(n==1){    printf("请输入姓名:");    scanf("%s",name);    printf("\n");  }  else {    printf("请输入学号:");    scanf("%d",&num);    printf("\n");  }  for(i=0;i<k;i++){    if(a[i].num==num||(strcmp(a[i].name,name)==0)){      if(i==k) k=k-1;      else{        for(j=i;j<k-1;j++){        a[j]=a[j+1];      }      }      flag=1;    }  }   if(flag==0){    printf("输入信息有误!请检查!\n");   } else{    if( (f1=fopen("学生成绩.txt","w+"))==NULL){        printf("文件不存在,请检查!\n");        exit(1);  }  for(i=0;i<k-1;i++){        fprintf(f1,"%s %d %d %d %d %.2f %d\n", a[i].name, a[i].num, a[i].score[0],                 a[i].score[1],a[i].score[2],a[i].ave,a[i].sum);  }  printf("\n删除成功!\n\n");  }  }  rewind(f1);  fclose(f1);}void alt(STUD a[],int k){  int flag=0;  char name[10];  int num,n,i,j,p,q;  printf("请输入需要修改的记录条数:");  scanf("%d",&p);  for(q=0;q<p;q++){  printf("**********************\n");  printf("1.根据姓名修改记录\n");  printf("2.根据学号修改记录\n");  printf("**********************\n");  printf("\n请选择\n");  scanf("%d",&n);  if(n==1){    printf("请输入姓名:");    scanf("%s",name);    printf("\n");  }  else {    printf("请输入学号:");    scanf("%d",&num);    printf("\n");  }  for(i=0;i<k;i++){    if(a[i].num==num||(strcmp(a[i].name,name)==0)){        printf("请输入新的信息:\n");        printf("姓名:\n");        scanf("%s",a[i].name);        printf("学号:\n");        scanf("%d",&a[i].num);        printf("分数一:\n");        scanf("%d",&a[i].score[0]);        printf("分数二:\n");        scanf("%d",&a[i].score[1]);        printf("分数三:\n");        scanf("%d",&a[i].score[2]);        flag=1;         break;    }      }      if(flag==0) printf("输入信息有误!\n");      else {         if( (f1=fopen("学生成绩.txt","w+"))==NULL){        printf("文件不存在,请检查!\n");        exit(1);  }  for(i=0;i<k;i++){        fprintf(f1,"%s %d %d %d %d %.2f %d\n", a[i].name, a[i].num, a[i].score[0],                 a[i].score[1],a[i].score[2],a[i].ave,a[i].sum);  }         printf("\n修改成功!\n\n");      }  }  rewind(f1);  fclose(f1);}void inqu(STUD a[],int k){  char name[10];  int number=0,n,i,j;  int flag=0;  printf("**********************\n");  printf("1.根据姓名查找记录\n");  printf("2.根据学号查找记录\n");  printf("**********************\n");  printf("\n请选择\n");  scanf("%d",&n);  if(n==1){    printf("请输入姓名:");    scanf("%s",name);    printf("\n");  }  else {    printf("请输入学号:");    scanf("%d",&number);    printf("\n");  }  for(i=0;i<k;i++){    if(a[i].num==number||(strcmp(a[i].name,name)==0)){       printf("  姓名   学号   成绩1   成绩2   成绩3   平均分   总分\n");       printf("%6s %6d %6d %6d %8d %9.2f %6d\n",a[i].name,a[i].num,a[i].score[0],                a[i].score[1],a[i].score[2],a[i].ave,a[i].sum);  }                flag=1;                break;    }      if(flag==0) printf("输入信息有误!\n");  }void viewave(STUD a[],int k){  int i,n;  printf("***************************\n");  printf("1.查找平均值大于90的学生\n");  printf("2.查找平均值小于60的学生\n");  printf("***************************\n请选择:");  scanf("%d",&n);  printf("  姓名   学号   成绩1   成绩2   成绩3   平均分   总分\n");  if(n==1){     for(i=0;i<k;i++){      if(a[i].ave>90)        printf("%6s %6d %6d %6d %8d %9.2f %6d\n",a[i].name,a[i].num,a[i].score[0],                a[i].score[1],a[i].score[2],a[i].ave,a[i].sum);     }  }  else {     for(i=0;i<k;i++){      if(a[i].ave<60)        printf("%6s %6d %6d %6d %8d %9.2f %6d\n",a[i].name,a[i].num,a[i].score[0],                a[i].score[1],a[i].score[2],a[i].ave,a[i].sum);     }  }}

这里写图片描述

0 0
原创粉丝点击