代码错误百出,尤其是排序部分总排不了,请朋友们帮改

代码错误百出,尤其是排序部分总排不了

//函数声明
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void welcome();//欢迎界面
void PrimaryMenu();//进入页面,主菜单
void secondMenu();//功能菜单    
void logon();//注册
void login();//登录
void get();//录入
void sort();//排序
int seek();//查找
void dlt();  //删除信息
void modify();//修改


//结构体,储存学生宿舍信息
#define N 9 //设定的所有信息的长度。之后修改所有的字符长度设定都应该与结构体的设定一样
struct student
{
    char name [N];//学生名字
    char num1[N];//学号
    char  cla[N];//班级
    char  dorm[N];//宿舍编号
    char title[N];//宿舍名字
    char num2[N];//楼号
}stu[100]; 
//结构体,储存用户注册信息                         
struct user
{
    char username[20];
    char password[20];
}User;
//全局变量
    int sum=0;//学生总人数



//主函数
int main()
{
    int choice;//储存菜单编号
    welcome();//欢迎
    PrimaryMenu();//进入页面
    logon();//注册
    login();//登录
    secondMenu();//功能菜单
    printf("请输入一个菜单编号:");
    scanf("%d",&choice);
    while(choice!=0)
    {
           switch(choice)
           {
           case 3:get();break;//录入
           case 4:dlt();break;//删除
           case 5:seek();break;//查询
           case 6:sort();break;//排序
           case 7:modify();break;//修改
           default:printf("输入有误!\n");
           }
    }
    if(choice==0)
    {
        printf("退出成功!\n");
    }

    return 0;    
}



//欢迎
void welcome()
{
    printf("\t\t|——————————————————|\n");
    printf("\t\t|------------------------------------|\n");
    printf("\t\t|----------高校学生管理系统----------|\n");
    printf("\t\t|************************************|\n");
    printf("\t\t|------------版本:V1.0--------------|\n");
    printf("\t\t|--------开发时间:2022/11/17--------|\n");
    printf("\t\t|------------------------------------|\n");
    printf("\t\t|——————————————————|\n");
}
//登陆菜单
void PrimaryMenu()
{
    printf("\n\n");
    printf("\t|*******************************************|\n");
    printf("\t|---------------1.注册----------------------|\n");
    printf("\t|---------------2.登录----------------------|\n");
    printf("\t|*******************************************|\n\n");
}
//功能菜单
void secondMenu()
{
    printf("------------------您的操作-------------------\n");
    printf("------------------0.退出---------------------\n");
    printf("------------------3.录入---------------------\n");
    printf("------------------4.删除---------------------\n");
    printf("------------------5.查询---------------------\n");
    printf("------------------6.排序---------------------\n");
    printf("------------------7.修改---------------------\n");
}

//宿管注册
void logon()
{
    printf("<-----------------------------注册页面---------------------------------->\n");
    printf("请输入用户名:");
    scanf("%s",User.username);
    printf("请输入密码:");
    scanf("%s",User.password);
    printf("<-----------------------------注册成功!-------------------------------->\n\n\n");
}

//登录
void login()
{
    int n=0;//记录登录次数
    char username[20],password[20];
    printf("<*************************登录***************************>\n");
    do 
    {
        printf("请输入用户名:");
        scanf("%s",username);
         printf("请输入密码:");
        scanf("%s",password);
        if ((strcmp(username,User.username))==0&&((strcmp(password,User.password))==0))
        {
                printf("    正在登陆,请稍等\n");
                
                printf("**************************登录成功!**********************\n\n");
                break;
        }
        else 
        {
            printf("用户名名或密码错误(仅有三次机会)\n");
             printf("\t请重新输入用户名或密码.\n");
            n++;
        }
    }while(n<=3);
        if(n>3)
        {
            printf("登录失败!!!\n");
        }
}


//导入功能
void get()
{
    int i,j;//通过i循环录入,j是每次添加的学生人数

    printf("请输入录入学生人数(少于100人):");
    scanf("%d", &j);
    for(i=0;i<j;i++)//循环录入学生信息
    {
        
        printf("请输入第%d位学生学号:",i+1);
        scanf("%s", stu[i].num1);
        printf("请输入第%d位学生姓名:",i+1);
        scanf("%s", stu[i].name);
        printf("请输入第%d位学生的班级:",i+1);
        scanf("%s", stu[i].cla);
        printf("请输入第%d位学生的宿舍编号:",i+1);
        scanf("%s", stu[i].dorm);
        printf("请输入第%d位学生的宿舍名字:",i+1);
        scanf("%s", stu[i].title);
        printf("请输入第%d位学生的楼号:",i+1);
        scanf("%s", stu[i].num2);   
    
        printf("\n");
        sum++;
    }
    printf("——————已经录入系统的学生信息:——————\n\n");

    for(i=0;i<j;i++)
    {
        printf("%s  %s  %s  %s %s  %s\n",stu[i].num1,stu[i].name,stu[i].cla,stu[i].dorm,stu[i].title,stu[i].num2);
    }
    printf("系统中总共学生人数是%d\n",sum);
    printf("————————录入完成!————————\n");
    system("pause");    //让系统暂停
}

//排序
void sort()//利用冒泡排序根据学号升序排列
{
  
  int i,j;
  struct student t;
  printf("***********按学生学号排序***********\n");
  for(i=0;i<sum-1;i++)
  {

    for(j=i+1;j<sum;j++)
    {
     if(stu[i].num1>stu[j].num1)
     {
         t=stu[i];
         stu[i]=stu[j];
         stu[j]=t;
     }
    }
  }
  printf("<学号    姓名    班级    宿舍号   宿舍名称   楼号>\n");
  for(i=0;i<sum;i++)
  {
      printf("%s   %s   %s   %s   %s   %s \n",stu[i].num1,stu[i].name,stu[i].cla,stu[i].dorm,stu[i].title,stu[i].num2);
  }
  
  printf("——————排序完成!——————\n");
}




  
int seek()//查找
{
    student *stu;
    int *len;
 printf("请输入你要查询的方式\n");
 printf("-----1.按姓名查询------\n");
 printf("-----2.按学号查询------\n");
 int number;
 scanf("%d",&number);
 switch(number)
 {
  case 1:
  {
   printf("按姓名查询\n");
   printf("请输入你要查询的学生姓名\n");
   char name[10];
   scanf("%s",name);
   int i;
   for(i = 0; i < *len; i++)
   {
    if(strcmp(stu[i].name, name) == 0)
    {
     printf("学生姓名\t学号\t班级\t宿舍编号\t宿舍名字\t楼号\n");
     printf("%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].name, stu[i].num1,stu[i].cla, stu[i].dorm, stu[i].title, stu[i]. num2);
     break;
    }
   }
   break;
  }
  case 2:
  {
   printf("按学号查询\n");
   printf("请输入你要查询的学生学号\n");
   char no[9];
   scanf("%s",no);
   int i;
   for(i = 0; i < *len; i++)
   {
    if(strcmp(stu[i].num1, no)==0)
    {
      printf("学生姓名\t学号\t班级\t宿舍编号\t宿舍名字\t楼号\n");     

     printf("%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].name, stu[i].num1,stu[i].cla, stu[i].dorm, stu[i].title, stu[i]. num2);

     break;
    }
   }
   break;
  }
 }
 return 0;
}




void dlt()   //删除信息
{
    int flag, i, j;
    char s1[100];
    printf("请输入要删除学生的学号:\n");
    getchar();
    gets(s1);
    flag = 0;
    for (i = 0; i < sum; i++)
    {
        if (strcmp(stu[i].num1, s1) == 0)
        {
            flag = 1;
            for (j = i; j < sum-1; j++)
            {
                stu[j] = stu[j + 1];
            }
        }
        if (flag == 1) break;
    }
    if (flag == 0) printf("未找到该学生!\n");
    if (flag == 1)
    {
        printf("删除成功!\n");
        sum--;
    }
}

void modify()//修改
{
    int num,i; 
                printf("***************************************************\n");
                printf("*----1.修改姓名--------  -  -----2.修改班级-------*\n");
                printf("*----3.修改楼号--------  -  -----4.修改宿舍名--*\n");
                printf("*----5.修改宿舍号----*\n");
                printf("*-------------------6.退出本菜单------------------*\n");
                printf("***************************************************\n\n");
                printf("请输入菜单编号:\n");
                scanf("%d", &num);
 if (num<0||num>6)
 {num=7;};
 printf("请输入学号:");
    scanf("%d",&i);
      switch (num)
    {
                case 1:
                    printf("请输入新姓名:\n");
                    scanf("%s",&stu[i].name);
                    break;
                case 2:
                    printf("请输入班级:\n");
                    scanf("%s",&stu[i].cla);
                    break;
                case 3:
                    printf("请输入楼号:\n");
                    scanf("%s", &stu[i].num2);
                    break;
                case 4:
                    printf("请输入宿舍名:\n");
                    scanf("%s", &stu[i].title);
                    break;
                case 5:
                    printf("请输入宿舍号:\n");
                    scanf("%s", &stu[i].dorm);
                    break;
                case 6:return;
     break;
    case 7:printf("不可能");
     break;
   }
   printf("修改成功!\n");
}