此代码会有不足之处或者需要改进的地方!请各位不了手下留情!多多提醒我改进的地方。那么有劳各位费一点时间运行一下我的代码!想交流想法的大神或者尬聊的各位多多欢迎评论。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
//建立结构体 
struct Student_n  //学生的自然信息 
{
 int iNumber;
 char cName[20];
 char sex[5];
 int old;
 char nation[10];
 Student_n* pNext;
};
//建立结构体
struct Student_p  //学生的选课信息 
{
 int iNumber;
 char cName[20];
 int scnumber;
 char scname[20];
 Student_p* pNext;
}; 
//建立结构体 
struct Student_s //学生的成绩 
{
 int iNumber;
 char cName[20];
 int scnumber;
 char scname[20];
 int sc;
 Student_s* pNext;
};
//建立空表头
Student_n* head_n()
{
 Student_n* pHead = (Student_n *)malloc(sizeof(Student_n));
 pHead->pNext = NULL;
 return pHead;
} 
int iCount_n;  //记节点的个数 
//建立链表
void create_n(Student_n* pHead)
{
 Student_n* temp = (Student_n *)malloc(sizeof(Student_n));  //建立可移动的表头
 Student_n* pNew;
 int i = 1;
 iCount_n = 0; 
 printf("开始输入学生基本信息!\n\n"); 
 while(1)
 {
  pNew = (Student_n *)malloc(sizeof(Student_n));
  pNew->pNext = NULL;
  printf("输入第%d个人的信息(输入0终止输入):\n", i);
  printf("学号:");
  scanf("%d", &pNew->iNumber);
  if(pNew->iNumber == 0)
  {
   break;
  }
  printf("姓名:");
  scanf("%s", pNew->cName);
  printf("性别:");
  scanf("%s", pNew->sex);
  printf("年龄:");
  scanf("%d", &pNew->old);
  printf("民族:");
  scanf("%s", pNew->nation);
  if(i == 1)
  {
   pHead->pNext = pNew;
   temp = pNew;
  }
  else
  {
   temp->pNext = pNew;
   temp = temp->pNext;
   temp->pNext = NULL;
  }
  iCount_n++;
  i++;
 }
 free(pNew);
} 
//添加基本信息
void insert_n(Student_n* pHead)
{
 int j = 1;
 int i = iCount_n;
 Student_n* ptemp;
 Student_n* p, *temp;  //可移动的添加链表 
 Student_n* head = (Student_n *)malloc(sizeof(Student_n));
 while(1)
 {
  temp = (Student_n *)malloc(sizeof(Student_n));
  temp->pNext = NULL;
  printf("添加第%d个人的信息:(输入0终止输入)\n", i + 1);
  printf("学号:");
  scanf("%d", &temp->iNumber);
   if(temp->iNumber == 0)
   {
    break;
   }
  printf("姓名:");
  scanf("%s", temp->cName);
  printf("性别:");
  scanf("%s", temp->sex);
  printf("年龄:");
  scanf("%d", &temp->old);
  printf("民族:");
  scanf("%s", temp->nation);
  if(j == 1)
  {
   head = temp;
   p = temp;
  }
  else
  {
   p->pNext = temp;
   p = p->pNext;
   p->pNext = NULL;
  }
  i++;
  iCount_n++;
 }
 free(temp);
 ptemp = pHead;
 while(ptemp->pNext != NULL)
 {
  ptemp = ptemp->pNext;
 }
 ptemp->pNext = head;
}
//删除基本信息
void Delete_n(Student_n* pHead)
{
 int n = 0;  //输入要删除人的学号
 Student_n* p, *temp;  //负责移动的指针 
 Student_n* goal;  //要删除的节点 
 printf("请输入要删除人的学号:");
  DeLeTe:
 scanf("%d", &n);
 p = pHead;
 temp = pHead;
 goal = pHead;
 while(n != goal->iNumber)
 {
  p = p->pNext;
  goal = goal->pNext;
  if(goal == NULL)
  {
   printf("无此人!请输入正确的学号...\n");
   goto DeLeTe;
  }
 } 
 if(goal->pNext == NULL)
 {
  while(temp->pNext != goal)
  {
   temp = temp->pNext;
  }
  temp->pNext = NULL;
  free(goal);
  iCount_n--;
 }
 else
 {
  p = p->pNext;
  while(temp->pNext != goal)
  {
   temp = temp->pNext;
  }
  temp->pNext = p;
  iCount_n--;
  free(goal);
 }
} 
//更改基本信息
void change_n(Student_n* pHead)
{
 int n = 0;  //学号
 char name[20];
 int old;
 Student_n* temp;  //负责移动 
 printf("请输入要更改人的学号:");
  change:
 scanf("%d", &n);
 temp = pHead;
 while(n != temp->iNumber)
 {
  temp = temp->pNext;
  if(temp == NULL)
  {
   printf("无此人!请输入正确的学号...\n");
   goto change;
  }
 }
 printf("1,更改姓名\n");
 printf("2,更改年龄\n");
  errorchange:
 scanf("%d", &n);
  if(n == 1)
  {
   printf("请输入新的姓名:");
   scanf("%s", name);
   strcpy(temp->cName, name);
  }
  else if(n == 2)
  {
   printf("请输入新的年龄:");
   scanf("%d", &old);
   temp->old = old;
  }
  else
  {
   printf("输入有误!请重新输入...\n");
   goto errorchange;
  }
} 
//存盘
void Fileoutput_n(Student_n* pHead)
{
 pHead = pHead->pNext;
 Student_n* head;  //临时指针负责移动
 head = pHead; 
 FILE* p = fopen("nature.dat", "wb");
 if(p == NULL)
 {
  printf("指针为空\n");
  exit(1);
 }
 while(head != NULL)
 {
  fwrite(head, sizeof(Student_n), 1, p);
  head = head->pNext;
 }
 fclose(p);
} 
//读盘
void Fileinput_n(Student_n* pHead_n)
{
 iCount_n = 0;
 int i = 1;
 Student_n* head;
 Student_n* temp = (Student_n *)malloc(sizeof(Student_n));
 Student_n pNew;
 head = pHead_n;
 FILE* p = fopen("nature.dat", "rb");
 if(p == NULL)
 {
  printf("文件为空!\n");
  exit(1);
 }
 while(fread(&pNew, sizeof(Student_n), 1, p) == 1)
 {
  temp = (Student_n *)malloc(sizeof(Student_n));
  *temp = pNew;
  head->pNext = temp;
  head = head->pNext;
  head->pNext = NULL;
  iCount_n++;
 }
 fclose(p);
} 
//遍历 
void traversal_n(Student_n* pHead)
{
 Student_n* temp;  //临时指针负责移动
 temp = pHead; 
 int i = 1;
 if(pHead->pNext == NULL)
 {
  printf("链表为空!\n");
  exit(1);
 }
 temp = temp->pNext;
 printf("输出%d个人的信息!\n", iCount_n);
 while(temp != NULL)
 {
  printf("输出第%d个人的信息:\n", i);
  printf("学号:%d\n", temp->iNumber);
  printf("姓名:%s\n", temp->cName);
  printf("性别:%s\n", temp->sex);
  printf("年龄:%d\n", temp->old);
  printf("民族:%s\n", temp->nation);
  temp = temp->pNext;
  i++;
 } 
}
int iCount_p;
//建立选课信息的空表头
Student_p* head_p() 
{
 Student_p* head = (Student_p *)malloc(sizeof(Student_p));
 head->pNext = NULL;
 return head;
}
//建立选课信息链表
void create_p(Student_p* pHead)
{
 int i = 1;
 iCount_p = 0;
 printf("开始输入学生选课信息\n");
 Student_p* head = pHead;
 Student_p* pNew;
 while(1)
 {
  pNew = (Student_p *)malloc(sizeof(Student_p));
  printf("第%d个人的选课信息(输入0终止输入):\n", i);
  printf("学号:");
  scanf("%d", &pNew->iNumber);
   if(pNew->iNumber == 0)
   {
    break;
   }
  printf("姓名:");
  scanf("%s", pNew->cName);
  printf("课程号:");
  scanf("%d", &pNew->scnumber);
  printf("课程名:");
  scanf("%s", pNew->scname);
  head->pNext = pNew;
  head = head->pNext;
  head->pNext = NULL;
  iCount_p++;
  i++;
 }
} 
//添加选课信息
void insert_p(Student_p* pHead)
{
 int j = 1;
 int i = iCount_p;
 Student_p* temp;  //负责在原链表上移动
 Student_p* p, *pNew;  //负责在新的联表上移动
 Student_p* head;
 printf("开始添加学生选课信息:\n");
 while(1)
 {
  pNew = (Student_p *)malloc(sizeof(Student_p));
  printf("添加第%d个人的信息(输入0终止输入):\n", i + 1);
  printf("学号:");
  scanf("%d", &pNew->iNumber);
  if(pNew->iNumber == 0)
  {
   break;
  }
  printf("姓名:");
  scanf("%s", pNew->cName);
  printf("课程号:");
  scanf("%d", &pNew->scnumber);
  printf("课程名:");
  scanf("%s", pNew->scname);
  if(j == 1)
  {
   head = pNew;
   p = pNew;
   head->pNext = NULL;
  }
  else
  {
   head->pNext = pNew;
   head = head->pNext;
   head->pNext = NULL;
  }
  j++;
  i++;
  iCount_p++;
 } 
 free(pNew);
 temp = pHead;
 while(temp->pNext != NULL)
 {
  temp = temp->pNext;
 }
 temp->pNext = p;
} 
//删除选课信息
void Delete_p(Student_p* pHead)
{
 Student_p* p, *temp, *goal;
 int n = 0;
  error123:
 printf("请输入要删除人的学号:");
 scanf("%d", &n);
 temp = pHead;
 p = pHead;
 goal = pHead;
 while(n != goal->iNumber)
 {
  p = p->pNext;
  goal = goal->pNext;
  if(goal == NULL)
  {
   printf("无此人!请输入正确的学号...\n");
   goto error123;
  }
 }
 if(goal->pNext == NULL)
 {
  while(temp->pNext != goal)
  {
   temp = temp->pNext;
  }
  temp->pNext = NULL;
  free(goal);
  iCount_p--;
 }
 else
 {
  p = p->pNext;
  while(temp->pNext != goal)
  {
   temp = temp->pNext;
  }
  temp->pNext = p;
  free(goal);
  iCount_p--;
 }
} 
//更改选课信息
void change_p(Student_p* pHead)
{
 char name[20];  //scname
 int number;  //scnumber
 int n = 0;
 Student_p* goal;
 goal = pHead;
  errorchangepick:
 printf("请输入更改人的学号:");
 scanf("%d", &n);
 while(n != goal->iNumber)
 {
  goal = goal->pNext;
  if(goal == NULL)
  {
   printf("无此人!请输入正确的学号...\n");
   goto errorchangepick;
  }
 }
 printf("1,更改选课信息\n");
 printf("2,更改课程号\n");
 printf("3,更改课程名\n");
  errorchange123:
 scanf("%d", &n);
  if(n == 1)
  {
   system("cls");
   printf("请输入新课程号:");
   scanf("%d", &goal->scnumber);
   printf("请输入新课程名:");
   scanf("%s", goal->scname);
  }
  else if(n == 2)
  {
   system("cls");
   printf("请输入新课程号:");
   scanf("%d", &goal->scnumber);
  }
  else if(n == 3)
  {
   system("cls");
   printf("请输入新课程名:");
   scanf("%s", goal->cName);
  }
  else
  {
   printf("输入有误!请重新输入...\n");
   goto errorchange123;
  }
} 
//遍历————选课信息 
void traversal_p(Student_p* pHead)
{
 int i = 1;
 Student_p* temp = pHead;
 if(pHead->pNext == NULL)
 {
  printf("链表为空!\n");
  exit(1);
 }
 temp = temp->pNext;
 printf("输出%d个人的选课信息:\n\n", iCount_p);
 while(temp != NULL)
 {
  printf("输出第%d个人的信息:\n", i);
  printf("学号:%d\n", temp->iNumber);
  printf("姓名:%s\n", temp->cName);
  printf("课程号:%d\n", temp->scnumber);
  printf("课程名:%s\n", temp->scname);
  temp = temp->pNext;
  i++;
 }
}
//存盘
void Fileoutput_p(Student_p* pHead)
{
 Student_p* head;
 FILE* p = fopen("pick", "wb");
 head = pHead;
 head = head->pNext;
 if(p == NULL)
 {
  printf("指针为空!\n");
  exit(1);
 }
 while(head != NULL)
 {
  fwrite(head, sizeof(Student_p), 1, p);
  head = head->pNext;
 }
 fclose(p);
} 
//读盘
void Fileinput_p(Student_p* pHead)
{
 FILE* p = fopen("pick", "rb");
 Student_p* temp = (Student_p *)malloc(sizeof(Student_p));
 Student_p* head;
 Student_p pNew;
 head = pHead;
 if(p == NULL)
 {
  printf("文件为空!\n");
  exit(1);
 }
 while(fread(&pNew, sizeof(Student_p), 1, p) == 1)
 {
  temp = (Student_p *)malloc(sizeof(Student_p));
  *temp = pNew;
  head->pNext = temp;
  head = head->pNext;
  head->pNext = NULL;
  iCount_p++;
 }
 fclose(p); 
} 
int iCount_s;
//建立课程成绩的空表头
Student_s* head_s() 
{
 Student_s* head = (Student_s *)malloc(sizeof(Student_s));
 head->pNext = NULL;
 return head;
}
//建立课程成绩链表
void create_s(Student_s* pHead)
{
 int i = 1;
 iCount_s = 0;
 printf("开始输入学生选课信息\n");
 Student_s* head = pHead;
 Student_s* pNew;
 while(1)
 {
  pNew = (Student_s *)malloc(sizeof(Student_s));
  printf("第%d个人的成绩(输入0终止输入):\n", i);
  printf("学号:");
  scanf("%d", &pNew->iNumber);
   if(pNew->iNumber == 0)
   {
    break;
   }
  printf("姓名:");
  scanf("%s", pNew->cName);
  printf("课程号:");
  scanf("%d", &pNew->scnumber);
  printf("课程名:");
  scanf("%s", pNew->scname);
  printf("成绩:");
  scanf("%d", &pNew->sc);
  head->pNext = pNew;
  head = head->pNext;
  head->pNext = NULL;
  iCount_s++;
  i++;
 }
} 
//添加课程成绩 
void insert_s(Student_s* pHead)
{
 int j = 1;
 int i = iCount_s;
 Student_s* temp;  //负责在原链表上移动
 Student_s* p, *pNew;  //负责在新的联表上移动
 Student_s* head;
 printf("开始添加学生成绩:\n");
 while(1)
 {
  pNew = (Student_s *)malloc(sizeof(Student_s));
  printf("添加第%d个人的成绩(输入0终止输入):\n", i + 1);
  printf("学号:");
  scanf("%d", &pNew->iNumber);
  if(pNew->iNumber == 0)
  {
   break;
  }
  printf("姓名:");
  scanf("%s", pNew->cName);
  printf("课程号:");
  scanf("%d", &pNew->scnumber);
  printf("课程名:");
  scanf("%s", pNew->scname);
  printf("成绩:");
  scanf("%d", &pNew->sc);
  if(j == 1)
  {
   head = pNew;
   p = pNew;
   head->pNext = NULL;
  }
  else
  {
   head->pNext = pNew;
   head = head->pNext;
   head->pNext = NULL;
  }
  j++;
  i++;
  iCount_s++;
 } 
 free(pNew);
 temp = pHead;
 while(temp->pNext != NULL)
 {
  temp = temp->pNext;
 }
 temp->pNext = p;
} 
//删除成绩 
void Delete_s(Student_s* pHead)
{
 Student_s* p, *temp, *goal;
 int n = 0;
  error123123:
 printf("请输入要删除人的学号:");
 scanf("%d", &n);
 temp = pHead;
 p = pHead;
 goal = pHead;
 while(n != goal->iNumber)
 {
  p = p->pNext;
  goal = goal->pNext;
  if(goal == NULL)
  {
   printf("无此人!请输入正确的学号...\n");
   goto error123123;
  }
 }
 if(goal->pNext == NULL)
 {
  while(temp->pNext != goal)
  {
   temp = temp->pNext;
  }
  temp->pNext = NULL;
  free(goal);
  iCount_s--;
 }
 else
 {
  p = p->pNext;
  while(temp->pNext != goal)
  {
   temp = temp->pNext;
  }
  temp->pNext = p;
  free(goal);
  iCount_s--;
 }
} 
//更改成绩 
void change_s(Student_s* pHead)
{
 char name[20];  //scname
 int number;  //scnumber
 int n = 0;
 Student_s* goal;
 goal = pHead;
  errorchangescore:
 printf("请输入更改人的学号:");
 scanf("%d", &n);
 while(n != goal->iNumber)
 {
  goal = goal->pNext;
  if(goal == NULL)
  {
   printf("无此人!请输入正确的学号...\n");
   goto errorchangescore;
  }
 }
 printf("更改课程成绩!\n");
 scanf("%d", &goal->sc);
} 
//遍历————选课信息 
void traversal_s(Student_s* pHead)
{
 int i = 1;
 Student_s* temp = pHead;
 if(pHead->pNext == NULL)
 {
  printf("链表为空!\n");
  exit(1);
 }
 temp = temp->pNext;
 printf("输出%d个人的课程成绩:\n\n", iCount_s);
 while(temp != NULL)
 {
  printf("输出第%d个人的信息:\n", i);
  printf("学号:%d\n", temp->iNumber);
  printf("姓名:%s\n", temp->cName);
  printf("课程号:%d\n", temp->scnumber);
  printf("课程名:%s\n", temp->scname);
  printf("成绩:%d\n", temp->sc);
  temp = temp->pNext;
  i++;
 }
}
//存盘
void Fileoutput_s(Student_s* pHead)
{
 Student_s* head;
 FILE* p = fopen("score.dat", "wb");
 head = pHead;
 head = head->pNext;
 if(p == NULL)
 {
  printf("指针为空!\n");
  exit(1);
 }
 while(head != NULL)
 {
  fwrite(head, sizeof(Student_s), 1, p);
  head = head->pNext;
 }
 fclose(p);
} 
//读盘
void Fileinput_s(Student_s* pHead)
{
 FILE* p = fopen("score.dat", "rb");
 Student_s* temp = (Student_s *)malloc(sizeof(Student_s));
 Student_s* head;
 Student_s pNew;
 head = pHead;
 if(p == NULL)
 {
  printf("文件为空!\n");
  exit(1);
 }
 while(fread(&pNew, sizeof(Student_s), 1, p) == 1)
 {
  temp = (Student_s *)malloc(sizeof(Student_s));
  *temp = pNew;
  head->pNext = temp;
  head = head->pNext;
  head->pNext = NULL;
  iCount_s++;
 }
 fclose(p); 
} 
//成绩排名
int pp;  //高数排名 
void ranking(Student_s* pHead)
{
 pp = 1;
 int i = 0, j = 0;
 int score[50], temp;
 int number[50];
 char name[50][20], cname[20];
 Student_s* head;
 head = pHead;
 head = head->pNext;
 for(i = 0; i < iCount_s; i++)
 {
  score[i] = head->sc;
  number[i] = head->iNumber;
  strcpy(name[i], head->cName);
  head = head->pNext;
 }
 for(i = 0; i < iCount_s; i++)
 {
  for(j = 0; j < iCount_s; j++)
  {
   if(score[j] < score[j + 1])
   {
    temp = score[j + 1];
    score[j + 1] = score[j];
    score[j] = temp;
    temp = number[j + 1];
    number[j + 1] = number[j];
    number[j] = temp;
    strcpy(cname, name[j + 1]);
    strcpy(name[j + 1], name[j]);
    strcpy(name[j], cname);
   }
  }
 }
 for(i = 0; i < iCount_s; i++)
 {
  printf("*******\n");
  printf("排名:%d\n", i + 1);
  printf("学号:%d\n", number[i]);
  printf("姓名:%s\n", name[i]);
  printf("分数:%d\n", score[i]);
 }
}
//挂科 
void Fail(Student_s* pHead)
{
 int i = 0;
 Student_s* head;
 head = pHead;
 if(head->pNext == NULL)
 {
  printf("链表为空!\n");
  exit(1);
 }
 head = head->pNext;
 while(head != NULL)
 {
  if(head->sc < 60)
  {
   printf("姓名:%s", head->cName);
   printf("学号:%d", head->iNumber);
   printf("成绩:%d", head->sc);
  }
  else
  i++;
  head = head->pNext;
 }
 if(i == iCount_s)
 printf("无挂科的学生 !\n");
}
//按学号查询
void find(Student_s* pHead)
{
 int n = 0;
 Student_s* head;
 head = pHead;
 if(head->pNext == NULL)
 {
  printf("链表为空!\n");
  exit(1);
 }
  find:
 printf("请输入要查询的学号:");
 scanf("%d", &n);
 head = pHead;
 head = head->pNext;
 while(n != head->iNumber)
 {
  head = head->pNext;
  if(head == NULL)
  {
   printf("无此人!请重新输入...\n");
   goto find;
  }
 }
 printf("姓名:%s\n", head->cName);
 printf("学号:%d\n", head->iNumber);
 printf("分数:%d\n", head->sc);
} 
//主函数 
int main()
{
 int k = 0;  //输入菜单号码 
 Student_n* pHead_n;  //基本信息的表头
 Student_p* pHead_p;  //选课信息的表头 
 Student_s* pHead_s;
 pHead_n = head_n();  //基本信息的空表头赋值给pHead_n 
 pHead_p = head_p();
 pHead_s = head_s();
 Fileinput_n(pHead_n);
 Fileinput_p(pHead_p);
 Fileinput_s(pHead_s);
 printf("请按任意键开始使用!\n");
 getch();
 while(1)
 {
   one1:
  system("cls");
  printf("1,输入信息\n");
  printf("2,添加信息\n");
  printf("3,删除信息\n");
  printf("4,更改信息\n");
  printf("5,查询信息\n");
  printf("0,退出系统\n");
   error:
  scanf("%d", &k);
  switch(k)
  {
   case 1:
    system("cls");
    printf("1,返回到上一页\n");
    printf("2,输入基本信息\n");
    printf("3,输入选课信息\n");
    printf("4,输入课程成绩\n");
    scanf("%d", &k);
    if(k == 1)
    {
     goto one1;
    }
    else if(k == 2)
    {
     system("cls");
     create_n(pHead_n);
     printf("1,保存并返回上一页!\n");
     printf("2,保存并退出系统\n");
      error1:
     scanf("%d", &k);
      if(k == 1)
      {
       Fileoutput_n(pHead_n);
       goto one1;
      }
      else if(k == 2)
      {
       Fileoutput_n(pHead_n);
       exit(0);
      }
      else
      {
       printf("输入错误!请重新输入...\n");
       goto error1;
      }
    }
    else if(k == 3)
    {
     system("cls");
     create_p(pHead_p);
     printf("1,保存并返回上一页\n");
     printf("2,保存并退出系统\n");
      error12:
     scanf("%d", &k);
      if(k == 1)
      {
       Fileoutput_p(pHead_p);
       goto one1;
      }
      else if(k == 2)
      {
       Fileoutput_p(pHead_p);
       exit(0);
      }
      else
      {
       printf("输入错误!请重新输入...\n");
       goto error12;
      }
    }
    else if(k == 4)
    {
     system("cls");
     create_s(pHead_s);
     printf("1,保存并返回上一页\n");
     printf("2,保存并退出系统\n");
      error14:
     scanf("%d", &k);
      if(k == 1)
      {
       Fileoutput_s(pHead_s);
       goto one1;
      }
      else if(k == 2)
      {
       Fileoutput_s(pHead_s);
       exit(0);
      }
      else
      {
       printf("输入错误!请重新输入...\n");
       goto error14;
      }
    }
    break;
   case 2:
    system("cls");
    printf("1,返回上一页\n");
    printf("2,添加学生基本信息\n");
    printf("3,添加学生选课信息\n");
    printf("4,添加学生课程成绩\n");
    scanf("%d", &k);
    if(k == 1)
    {
     goto one1;
    }
    else if(k == 2)
    {
     system("cls");
     insert_n(pHead_n);
     printf("1,保存并返回上一页\n"); //goto one1
     printf("0,保存并退出系统\n");
      error22:
     scanf("%d", &k);
      if(k == 1)
      {
       Fileoutput_n(pHead_n);
       goto one1;
      } 
      else if(k == 0)
      {
       Fileoutput_n(pHead_n);
       exit(0);
      }
      else
      {
       printf("输入有误!请重新输入...\n");
       goto error22;
      }
     }
    else if(k == 3)
    {
     system("cls");
     insert_p(pHead_p);
     printf("1,保存并返回上一页\n"); //goto one1
     printf("0,保存并退出系统\n");
      error23:
     scanf("%d", &k);
      if(k == 1)
      {
       Fileoutput_p(pHead_p);
       goto one1;
      } 
      else if(k == 0)
      {
       Fileoutput_p(pHead_p);
       exit(0);
      }
      else
      {
       printf("输入有误!请重新输入...\n");
       goto error23;
      }
    }
    else if(k == 4)
    {
     system("cls");
     insert_s(pHead_s);
     printf("1,保存并返回上一页\n"); //goto one1
     printf("0,保存并退出系统\n");
      error24:
     scanf("%d", &k);
      if(k == 1)
      {
       Fileoutput_s(pHead_s);
       goto one1;
      } 
      else if(k == 0)
      {
       Fileoutput_s(pHead_s);
       exit(0);
      }
      else
      {
       printf("输入有误!请重新输入...\n");
       goto error24;
      }
    }
    break;
   case 3:
    system("cls");
    printf("1,返回上一页\n");
    printf("2,删除学生基本信息\n");
    printf("3,删除学生选课信息\n");
    printf("4,删除学生课程成绩\n");
    scanf("%d", &k);
    if(k == 1)
    {
     goto one1;
    }
    else if(k == 2)
    {
     Delete_n(pHead_n);
     printf("删除中...\n");
     Sleep(2000);
     system("cls");
     printf("1,保存并返回上一页\n");
     printf("0,保存并退出系统\n");
      error32:
     scanf("%d", &k);
      if(k == 1)
      {
       Fileoutput_n(pHead_n);
       goto one1;
      }
      else if(k == 0)
      {
       Fileoutput_n(pHead_n);
       exit(0);
      }
      else
      {
       printf("输入有误!请重新输入...\n");
       goto error32;
      }
    }
    else if(k == 3)
    {
     Delete_p(pHead_p);
     printf("删除中...\n");
     Sleep(2000);
     system("cls");
     printf("1,保存并返回上一页\n");
     printf("0,保存并退出系统\n");
      error33:
     scanf("%d", &k);
      if(k == 1)
      {
       Fileoutput_p(pHead_p);
       goto one1;
      }
      else if(k == 0)
      {
       Fileoutput_p(pHead_p);
       exit(0);
      }
      else
      {
       printf("输入有误!请重新输入...\n");
       goto error33;
      }
    }
    else if(k == 4)
    {
     Delete_s(pHead_s);
     printf("删除中...\n");
     Sleep(2000);
     system("cls");
     printf("1,保存并返回上一页\n");
     printf("0,保存并退出系统\n");
      error34:
     scanf("%d", &k);
      if(k == 1)
      {
       Fileoutput_s(pHead_s);
       goto one1;
      }
      else if(k == 0)
      {
       Fileoutput_s(pHead_s);
       exit(0);
      }
      else
      {
       printf("输入有误!请重新输入...\n");
       goto error34;
      }
    }
    break;
   case 4:
    system("cls");
    printf("1,返回上一页\n");
    printf("2,更改学生基本信息\n");
    printf("3,更改学生选课信息\n");
    printf("4,更改学生课程成绩\n");
    scanf("%d", &k);
     if(k == 1)
     {
      goto one1;
     }
     else if(k == 2)
     {
      system("cls");
      change_n(pHead_n);
      printf("1,保存并返回上一页\n");
      printf("0,保存并退出系统\n");
       error42:
      scanf("%d", &k);
       if(k == 1)
       {
        Fileoutput_n(pHead_n);
        goto one1;
       }
       else if(k == 0)
       {
        Fileoutput_n(pHead_n);
        exit(0);
       }
       else
       {
        printf("输入有误!请重新输入...\n");
        goto error42;
       }
     }
     else if(k == 3)
     {
      system("cls");
      change_p(pHead_p);
      printf("1,保存并返回上一页\n");
      printf("0,保存并退出系统\n");
       error43:
      scanf("%d", &k);
       if(k == 1)
       {
        Fileoutput_p(pHead_p);
        goto one1;
       }
       else if(k == 0)
       {
        Fileoutput_p(pHead_p);
        exit(0);
       }
       else
       {
        printf("输入有误!请重新输入...\n");
        goto error43;
       }
     } 
     else if(k == 4)
     {
      system("cls");
      change_s(pHead_s);
      printf("1,保存并返回上一页\n");
      printf("0,保存并退出系统\n");
       error44:
      scanf("%d", &k);
       if(k == 1)
       {
        Fileoutput_s(pHead_s);
        goto one1;
       }
       else if(k == 0)
       {
        Fileoutput_s(pHead_s);
        exit(0);
       }
       else
       {
        printf("输入有误!请重新输入...\n");
        goto error44;
       }
     } 
    break;
   case 5:
     five1:
    system("cls");
    printf("1,返回上一页\n");
    printf("2,查询学生基本信息\n");
    printf("3,查询学生选课信息\n");
    printf("4,查询学生成绩信息\n"); 
    printf("5,排名\n");
    printf("6,查询挂科名单\n");
    printf("7,按学号查询成绩\n");
    printf("0,退出系统\n");
     error51: 
    scanf("%d", &k);
     if(k == 1)
     {
      goto one1;
     }
     else if(k == 2)
     {
      system("cls");
      traversal_n(pHead_n);
      printf("1,返回上一页\n");
      printf("0,退出系统\n");
       error52:
      scanf("%d", &k);
       if(k == 1)
       {
        goto five1;
       } 
       else if(k == 0)
       {
        exit(0);
       }
       else 
       {
        printf("输入有误!请重新输入...\n");
        Sleep(2000);
        goto error52;
       }
     }
     else if(k == 3)
     {
      system("cls");
      traversal_p(pHead_p);
      printf("1,返回上一页\n");
      printf("0,退出系统\n");
       error53:
      scanf("%d", &k);
       if(k == 1)
       {
        goto five1;
       } 
       else if(k == 0)
       {
        exit(0);
       }
       else 
       {
        printf("输入有误!请重新输入...\n");
        Sleep(2000);
        goto error53;
       }
     }
     else if(k == 4)
     {
      system("cls");
      traversal_s(pHead_s);
      printf("1,返回上一页\n");
      printf("0,退出系统\n");
       error54:
      scanf("%d", &k);
       if(k == 1)
       {
        goto five1;
       } 
       else if(k == 0)
       {
        exit(0);
       }
       else 
       {
        printf("输入有误!请重新输入...\n");
        Sleep(2000);
        goto error54;
       }
     }
     else if(k == 5)
     {
      system("cls");
      ranking(pHead_s);
      printf("请按任意键继续\n");
      getch();
      system("cls");
      printf("1,返回上一页\n");
      printf("0,退出系统\n");
       error55:
      scanf("%d", &k);
       if(k == 1)
       {
        goto five1;
       } 
       else if(k == 0)
       {
        exit(0);
       }
       else 
       {
        printf("输入有误!请重新输入...\n");
        Sleep(2000);
        goto error55;
       }
     }
     else if(k == 6)
     {
      system("cls");
      Fail(pHead_s);
      printf("请按任意键继续\n");
      getch();
      system("cls");
      printf("1,返回上一页\n");
      printf("0,退出系统\n");
       error56:
      scanf("%d", &k);
       if(k == 1)
       {
        goto five1;
       } 
       else if(k == 0)
       {
        exit(0);
       }
       else 
       {
        printf("输入有误!请重新输入...\n");
        Sleep(2000);
        goto error56;
       }
     }
     else if(k == 7)
     {
      system("cls");
      find(pHead_s);
      printf("请按任意键继续\n");
      getch();
      system("cls");
      printf("1,返回上一页\n");
      printf("0,退出系统\n");
       error57:
      scanf("%d", &k);
       if(k == 1)
       {
        goto five1;
       } 
       else if(k == 0)
       {
        exit(0);
       }
       else 
       {
        printf("输入有误!请重新输入...\n");
        Sleep(2000);
        goto error57;
       }
     }
     else if(k == 0)
     {
      exit(0);
     }
     else
     {
      printf("输入有误!请重新输入...\n");
      goto error51;
     }
    break;
   case 0: 
    exit(0);
    break;
   defalut:
    printf("输入有误!请重新输入...\n");
    goto error;
  }
 } 
 return 0;
}