C语言结构体(struct)的详细讲解

  #include "stdio.h"

  #include "string.h"

  #include

  //定义存放学生信息的结构体类型

  struct StuDentInfo

  {

  char Name[20]; //姓名

  int number; //学号

  char phone[20];//电话号码

  };

  //全局变量区域

  unsigned int StuDentCnt=0; //记录已经录入的全部学生数量

  //函数声明区域

  void PrintStuDentInfoList(void);

  void InputStuDentInfo(struct StuDentInfo*info);

  void FindStuDentInfo(struct StuDentInfo*info);

  void SortStuDentInfo(struct StuDentInfo*info);

  void PrintStuDentInfo(struct StuDentInfo*info);

  int main()

  {

  struct StuDentInfo data[100]; //可以100位学生的信息

  int number;

  while(1)

  {

  PrintStuDentInfoList(); //打印功能列表

  scanf("%d",&number);

  printf("

  ");

  switch(number)

  {

  case 1:

  InputStuDentInfo(data);

  break;

  case 2:

  FindStuDentInfo(data);

  break;

  case 3:

  SortStuDentInfo(data);

  break;

  case 4:

  PrintStuDentInfo(data);

  break;

  case 5:

  break;

  default:

  printf("选择错误!

  ");

  break;

  }

  }

  return 0;

  }

  /*

  函数功能: 打印学生管理系统的功能列表

  */

  void PrintStuDentInfoList(void)

  {

  printf("

  --------------学生管理系统功能列表----------------

  ");

  printf("1. 录入学生信息

  ");

  printf("2. 根据学号查找学生信息

  ");

  printf("3. 根据学号排序

  ");

  printf("4. 打印所有学生信息

  ");

  printf("5. 删除指定的学生信息

  ");

  printf("请选择功能序号:");

  }

  /*

  函数功能: 录入学生信息

  */

  void InputStuDentInfo(struct StuDentInfo*info)

  {

  printf("输入学生姓名:");

  scanf("%s",info[StuDentCnt].Name);

  printf("输入学号:");

  scanf("%d",&info[StuDentCnt].number);

  printf("输入电话号码:");

  scanf("%s",info[StuDentCnt].phone);

  StuDentCnt++; //数量自增

  }

  /*

  函数功能: 查找学生信息

  */

  void FindStuDentInfo(struct StuDentInfo*info)

  {

  int num,i;

  printf("输入查找的学号:");

  scanf("%d",&num);

  for(i=0; i

  {

  if(info[i].number==num)

  {

  printf("信息查找成功,该学生的信息如下:

  ");

  printf("姓名:%s

  ",info[i].Name);

  printf("学号:%d

  ",info[i].number);

  printf("电话号码:%s

  ",info[i].phone);

  printf("

  ");

  break;

  }

  }

  if(i==StuDentCnt)

  {

  printf("----------%d学号不存在!---------

  ",num);

  }

  }

  /*

  函数功能: 根据学号排序

  */

  void SortStuDentInfo(struct StuDentInfo*info)

  {

  int i,j;

  struct StuDentInfo tmp; //保存临时信息

  for(i=0; i

  {

  for(j=0;j

  {

  if(info[j].number>info[j+1].number)

  {

  tmp=info[j];

  info[j]=info[j+1];

  info[j+1]=tmp;

  }

  }

  }

  }

  /*

  函数功能: 打印所有学生信息

  */

  void PrintStuDentInfo(struct StuDentInfo*info)

  {

  int i=0;

  printf("-----------所有学生的信息列表------------

  ");

  for(i=0;i

  {

  printf("姓名:%s

  ",info[i].Name);

  printf("学号:%d

  ",info[i].number);

  printf("电话号码:%s

  ",info[i].phone);

  printf("

  ");

  }

  }