代码错误百出,尤其是排序部分总排不了
//函数声明
#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");
}