排序运行不了,请各位帮忙改一下
//函数声明
#include
#include
#include
void welcome();//欢迎界面
void PrimaryMenu();//进入页面,主菜单
void secondMenu();//功能菜单
void logon();//注册
void login();//登录
void get();//录入
void sort();//排序
//结构体,储存学生宿舍信息
#define N 9 //设定的所有信息的长度。之后修改所有的字符长度设定都应该与结构体的设定一样
struct student
{
char name [N];//学生名字
int num1[N];//学号
int cla[N];//班级
int dorm[N];//宿舍编号
char title[N];//宿舍名字
int num2[N];//楼号
}stu[100];
//结构体,储存用户注册信息
struct user
{
char username[20];
char password[20];
}User;
//全局变量
int sum=0;//学生总人数
//欢迎
void welcome()
{
printf("\t|——————————————————|\n");
printf("\t|------------------------------------|\n");
printf("\t|----------高校学生管理系统----------|\n");
printf("\t|************************************|\n");
printf("\t|------------版本:V1.0--------------|\n");
printf("\t|--------开发时间:2022/11/17--------|\n");
printf("\t|------------------------------------|\n");
printf("\t|——————————————————|\n");
}
//登陆菜单
void PrimaryMenu()
{
printf("\n");
printf("\t---------------1.注册-----------------\n");
printf("\t---------------2.登录-----------------\n");
}
//功能菜单
void secondMenu()
{
printf("------------------您的操作-------------------\n");
printf("------------------a.导入---------------------\n");
printf("------------------b.删除---------------------\n");
printf("------------------c.查询---------------------\n");
printf("------------------d.排序---------------------\n");
printf("------------------e.修改---------------------\n");
}
//宿管注册
void logon()
{
printf("请输入用户名:");
scanf("%s",User.username);
printf("请输入密码:");
scanf("%s",User.password);
}
//登录
void login()
{
int n=0;//记录登录次数
char username[20],password[20];
do
{
printf("请输入用户名:");
scanf("%s",username);
printf("请输入密码:");
scanf("%s",password);
if ((strcmp(username,User.username))==0&&((strcmp(password,User.password))==0))
{
printf(" 正在登陆,请稍等\n");
printf("********************************\n");
printf("登录成功!\n");
break;
}
else
{
printf("用户名名或密码错误(仅有三次机会)\n");
printf("请重新输入用户名或密码.\n");
n++;
}
}while(n<=3);
if(n>3)
{
printf("登录失败!!!\n");
}
}
//导入功能
void get()
{
int i,j;//通过i循环录入,j是每次添加的学生人数
int sum=0;//学生总人数struct student stu[100];
printf("请输入录入学生人数(少于100人):");
scanf("%d", &j);
for(i=0;i//循环录入学生信息
{
printf("请输入第%d位学生学号:",i+1);
scanf("%d", &stu[i].num1);
printf("请输入第%d位学生姓名:",i+1);
scanf("%s", stu[i].name);
printf("请输入第%d位学生的班级:",i+1);
scanf("%d",&stu[i].cla);
printf("请输入第%d位学生的宿舍编号:",i+1);
scanf("%d",&stu[i].dorm);
printf("请输入第%d位学生的宿舍名字:",i+1);
scanf("%s", stu[i].name);
printf("请输入第%d位学生的楼号:",i+1);
scanf("%d", &stu[i].num2);
printf("\n");
sum++;
}
printf("系统中总共学生人数是%d\n",sum);
printf("录入完成!\n");
}
void sort(int sum)//利用冒泡排序根据学号升序排列
{
int i,j,a;
struct student t;
printf("请再次输入数字1或2\n");
printf("输入1排序,2退出\n");
scanf("%d",&a);
switch(a)
{
case 1:printf("按学生学号排序\n");
for(i=0;i-1;i++)
for(j=i+1;jif(stu[i].num1>stu[j].num1)
{
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
}
for(i=0;iprintf("%d,%s,%d,%d,%d\n",stu[i].num1,stu[i].name,stu[i].cla,stu[i].dorm,stu[i].num2);}
case 2:printf("退出");break;
}
}
//主函数
int main()
{
welcome();//欢迎
PrimaryMenu();//进入页面
logon();//注册
login();//登录
secondMenu();//功能菜单
get();//录入
sort(stu,sum);
return 0;
}
```
修改如下,供参考:
//函数声明
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void welcome();//欢迎界面
void PrimaryMenu();//进入页面,主菜单
void secondMenu();//功能菜单
void logon();//注册
void login();//登录
void get();//录入
void sort();//排序
//结构体,储存学生宿舍信息
#define N 9 //设定的所有信息的长度。之后修改所有的字符长度设定都应该与结构体的设定一样
struct student
{
char name [N];//学生名字
int num1; //学号 //[N] 修改
int cla; //班级 //[N] 修改
int dorm; //宿舍编号//[N]修改
char title[N];//宿舍名字
int num2; //楼号 //[N] 修改
}stu[100];
//结构体,储存用户注册信息
struct user
{
char username[20];
char password[20];
}User;
//全局变量
int sum=0;//学生总人数
//欢迎
void welcome()
{
printf("\t|——————————————————|\n");
printf("\t|------------------------------------|\n");
printf("\t|----------高校学生管理系统----------|\n");
printf("\t|************************************|\n");
printf("\t|------------版本:V1.0--------------|\n");
printf("\t|--------开发时间:2022/11/17--------|\n");
printf("\t|------------------------------------|\n");
printf("\t|——————————————————|\n");
}
//登陆菜单
void PrimaryMenu()
{
printf("\n");
printf("\t---------------1.注册-----------------\n");
printf("\t---------------2.登录-----------------\n");
}
//功能菜单
void secondMenu()
{
printf("------------------您的操作-------------------\n");
printf("------------------a.导入---------------------\n");
printf("------------------b.删除---------------------\n");
printf("------------------c.查询---------------------\n");
printf("------------------d.排序---------------------\n");
printf("------------------e.修改---------------------\n");
}
//宿管注册
void logon()
{
printf("请输入用户名:");
scanf("%s",User.username);
printf("请输入密码:");
scanf("%s",User.password);
}
//登录
void login()
{
int n=0;//记录登录次数
char username[20] ,password[20];
do
{
printf("请输入用户名:");
scanf("%s",username);
printf("请输入密码:");
scanf("%s",password);
if ((strcmp(username,User.username))==0&&((strcmp(password,User.password))==0))
{
printf(" 正在登陆,请稍等\n");
printf("********************************\n");
printf("登录成功!\n");
break;
}
else
{
printf("用户名名或密码错误(仅有三次机会)\n");
printf("请重新输入用户名或密码.\n");
n++;
}
}while(n<=3);
if(n>3)
{
printf("登录失败!!!\n");
}
}
//导入功能
void get()
{
int i,j;//通过i循环录入,j是每次添加的学生人数
//int sum=0;//学生总人数struct student stu[100]; 修改
printf("请输入录入学生人数(少于100人):");
scanf("%d", &j);
for(i=0;i < j;i++)//循环录入学生信息 修改
{
printf("请输入第%d位学生学号:",i+1);
scanf("%d", &stu[i].num1);
printf("请输入第%d位学生姓名:",i+1);
scanf("%s", stu[i].name);
printf("请输入第%d位学生的班级:",i+1);
scanf("%d",&stu[i].cla);
printf("请输入第%d位学生的宿舍编号:",i+1);
scanf("%d",&stu[i].dorm);
printf("请输入第%d位学生的宿舍名字:",i+1);
scanf("%s", stu[i].title); // scanf("%s", stu[i].name); 修改
printf("请输入第%d位学生的楼号:",i+1);
scanf("%d", &stu[i].num2);
printf("\n");
sum++;
}
printf("系统中总共学生人数是%d\n",sum);
printf("录入完成!\n");
}
void sort(struct student stu[],int sum)//利用冒泡排序根据学号升序排列 //void sort(int sum)
{
int i,j,a;
struct student t;
printf("请再次输入数字1或2\n");
printf("输入1排序,2退出\n");
scanf("%d",&a);
switch(a)
{
case 1:printf("按学生学号排序\n");
for(i=0;i < sum - 1;i++){ //(i=0;i-1;i++) 修改
for(j=0;j < sum - 1 - i;j++)
if(stu[j].num1>stu[j+1].num1)//(stu[i].num1>stu[j].num1)修改
{
t=stu[j]; // t=stu[i]; 修改
stu[j]=stu[j+1]; //stu[i]=stu[j]; 修改
stu[j+1]=t; //stu[j]=t; 修改
}
}
for(i=0;i < sum;i++) {
printf("%d,%s,%d,%d,%d\n",stu[i].num1,
stu[i].name,stu[i].cla,stu[i].dorm,stu[i].num2);
}
break;
case 2:printf("退出");break;
}
}
//主函数
int main()
{
welcome();//欢迎
PrimaryMenu();//进入页面
logon();//注册
login();//登录
secondMenu();//功能菜单
get();//录入
sort(stu,sum);
return 0;
}