C语言实现简单学生成绩管理系统项目

  #include

  #include

  //#include "hs.h"

  struct student

  {

  int id;

  float yw;

  float sx;

  float wy;

  float pj;

  };

  void help(void);

  int type(struct student *p);

  void list(struct student *p,int n);

  void average(struct student *p,int n);

  void search (struct student *p);

  void sort(struct student *p,int n);

  int main(int argc, const char *argv[])

  {

  char ch;

  struct student stu[32];

  int n=0;

  while(1)

  {

  printf("请输入命令 = ");

  //getchar();

  scanf("%c",&ch);

  putchar(10);

  if(ch=='T')

  {

  n=type(stu);

  }

  else if(ch=='L')

  {

  if(n==0)

  {

  printf("成绩表为空!请先使用T录入成绩!

  ");

  putchar(10);

  }

  else

  list(stu,n);

  }

  else if(ch=='A')

  {

  if(n==0)

  {

  printf("成绩表为空!请先使用T录入成绩!

  ");

  putchar(10);

  }

  else

  {

  average(stu,n);

  printf("平均分已计算,请使用命令L查看!

  ");

  putchar(10);

  }

  }

  else if(ch=='H')

  help();

  else if(ch=='C')

  system("clear");

  else if(ch=='S')

  {

  if(n==0)

  {

  printf("成绩表为空!请先使用T录入成绩!

  ");

  putchar(10);

  }

  else

  {

  search(stu);

  putchar(10);

  }

  }

  else if(ch=='P')

  {

  if(n==0)

  {

  printf("成绩表为空!请先使用T录入成绩!

  ");

  putchar(10);

  }

  else

  {

  sort(stu,n);

  putchar(10);

  }

  }

  else if(ch=='Q')

  {

  printf("Press any key to continue!

  ");

  return -1;

  }

  getchar();

  }

  return 0;

  }

  int type(struct student *p)

  {

  int n=0;

  printf("请输入学生人数:");

  scanf("%d",&n);

  printf("请输入学生三门课的成绩:

  ");

  printf("学号 语文 数学 外语

  ");

  for(int i=0;i

  {

  printf("%d    ",i+1);

  struct student stu[i];

  scanf("%f %f %f",&(p+i)->yw,&(p+i)->sx,&(p+i)->wy);

  }

  return n;

  }

  void list(struct student *p,int n)

  {

  printf("学生成绩如下:

  ");

  printf("学号 语文 数学 外语 平均分

  ");

  for(int i=0;i

  {

  printf("%d    ",i+1);

  printf("%.1f %.1f %.1f %.1f",p->yw,p->sx,p->wy,p->pj);

  p++;

  putchar(10);

  }

  }

  void average(struct student *p,int n)

  {

  for(int i=0;i

  {

  (p->pj)=((p->yw)+(p->sx)+(p->wy))/3;

  p++;

  }

  }

  void help(void)

  {

  printf("**********************************

  ");

  printf(" *  学生成绩管理系统——帮助菜单  *

  ");

  printf("**********************************

  ");

  printf(" *   H = 显示帮助菜单           *

  ");

  printf(" *   T = 成绩录入               *

  ");

  printf(" *   A = 计算学生平均分         *

  ");

  printf(" *   L = 列出成绩单             *

  ");

  printf(" *   P = 按平均成绩由高到低排序 *

  ");

  printf(" *   S = 按学号查询学生成绩     *

  ");

  printf(" *   C = 清屏                   *

  ");

  printf(" *   Q =退出系统                *

  ");

  printf("**********************************

  ");

  printf(" *Copyright(c) 2022.3.15 By liq*

  ");

  printf("**********************************

  ");

  }

  void search(struct student *p)

  {

  int s=0;

  printf("请输入要查询的学生号:");

  scanf("%d",&s);

  printf("学号 语文 数学 外语 平均分

  ");

  printf("%d   %.1f  %.1f  %.1f  %.1f",s,(p+s-1)->yw,(p+s-1)->sx,(p+s-1)->wy,(p+s-1)->pj);

  putchar(10);

  }

  void sort(struct student *p,int n)

  {

  struct student temp;

  int i,j;

  for(i=0;i

  {

  for(j=0;j

  {

  if(p[j].pj

  {

  temp=p[j];

  p[j]=p[j+1];

  p[j+1]=temp;

  }

  }

  }

  printf("排序完成,请使用命令L查看!

  ");

  }