#include<stdio.h> //包含输入输出函数
#include<stdlib.h> //包含malloc函数
#include<ctype.h> //定义了一些C语言字符分类函数
#include<string.h> //包含字符串函数
typedef struct //结构体
{
char roomnum[4]; //房间号
char bednum[2]; //床号
char num[10]; //学号
char name[20]; //姓名
}Student;
Student room1[1000]; //结构体数组
int menu_select() //创建系统功能函数
{
char c; //字符c
do{
system("cls");
printf("\t\t---------------学生宿舍管理系统---------------\n");
printf("\t\t§ 1. 输入学生数据 §\n");
printf("\t\t§ 2. 显示学生数据 §\n");
printf("\t\t§ 3. 按房间号排序并显示 §\n");
printf("\t\t§ 4. 按学号排序并显示 §\n");
printf("\t\t§ 5. 插入一条记录按学号排序并显示 §\n");
printf("\t\t§ 6. 按姓名查找,删除一条记录 §\n");
printf("\t\t§ 7 查找并显示一个记录 §\n");
printf("\t\t§ 8. 从文件中读入数据 §\n");
printf("\t\t§ 9. 循环写入数据 §\n");
printf("\t\t§ 0. 结束程序 §\n");
printf("\t\t----------------------------------------------\n");
printf("\t\t请选择您要运行的选项按(0-9):");
c=getchar(); //输入0-9,选择功能
}while(c<'0'||c>'9');
return(c-'0'); //返回0-9,即获取用户的选择项
}
int Input(Student room[],int n) //输入学生数据,参数,结构体数组,整型n
{
int i=0;
char sign=0,x[10]; //字符串x[]
while(sign!='n'&&sign!='N') //不等于N就输入数据,即等于Y的时候输入
{
printf("\t\t房间号:");
scanf("\t\t%s",&room[n+i].roomnum);
printf("\t\t床位号:");
scanf("\t\t%s",&room[n+i].bednum);
printf("\t\t学号:");
scanf("\t\t%s",&room[n+i].num);
printf("\t\t姓名:");
scanf("\t\t%s",&room[n+i].name);
gets(x);
printf("\t\t是否继续输入?(Y/N)");
scanf("\t\t%c",&sign);
i++;
}
return(n+i);
}
void Display(Student room[],int n) //显示学生数据
{
int i;
printf("\t\t--------------------------------------------------\n");
printf("\t\t房间号 床位号 学号 姓名 \n");
printf("\t\t--------------------------------------------------\n");
for(i=1;i<n+1;i++)
{
printf("\t\t%-10s%-10s%-10s%-20s\n",room[i-1].roomnum,room[i-1].bednum,room[i-1].num,room[i-1].name);
if(i>1&&i==0)
{printf("\t\t--------------------------------------------------\n");
printf("\t\t");
system("pause");
printf("\t\t--------------------------------------------------\n");
}
}
printf("\t\t");
system("pause");
}
void Sort_by_num(Student room[],int n) //按照学号排序数据
{
int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++) //从小到大排序
if(strcmp(room[j].num,room[j+1].num)>0) //如果room[j].num比room[j+1].num大
{
//交换床号
strcpy(t,room[j+1].bednum); //将room[j+1].bednum赋值给t
strcpy(room[j+1].bednum,room[j].bednum);
strcpy(room[j].bednum,t);
//交换学号
strcpy(t,room[j+1].num);
strcpy(room[j+1].num,room[j].num);
strcpy(room[j].num,t);
//交换姓名
strcpy(t,room[j+1].name);
strcpy(room[j+1].name,room[j].name);
strcpy(room[j].name,t);
}
}
void Sort_by_roomnum(Student room[],int n) //按照房间号排序
{
int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) //进行n趟比较
for(j=0;j<n-1-i;j++) //相当于把最大的数据冒泡排序出来
if(strcmp(room[j].roomnum,room[j+1].roomnum)>0) //从小到大排
{
strcpy(t,room[j+1].roomnum); //交换房间号
strcpy(room[j+1].roomnum,room[j].roomnum);
strcpy(room[j].roomnum,t);
strcpy(t,room[j+1].bednum); //交换床号
strcpy(room[j+1].bednum,room[j].bednum);
strcpy(room[j].bednum,t);
strcpy(t,room[j+1].num); //交换学号
strcpy(room[j+1].num,room[j].num);
strcpy(room[j].num,t);
strcpy(t,room[j+1].name); //交换姓名
strcpy(room[j+1].name,room[j].name);
strcpy(room[j].name,t);
}
}
int Insert_a_record(Student room[],int n) //插入一条记录按照学号排序
{
char x[100]; //字符串数组
printf("\t\t学生房间号:");
scanf("\t\t%s",&room[n].roomnum);
printf("\t\t学生床位号:");
scanf("\t\t%s",&room[n].bednum);
printf("\t\t学生学号:");
scanf("\t\t%s",&room[n].num);
printf("\t\t学生姓名:");
scanf("\t\t%s",&room[n].name);
gets(x); //输入字符串
n++;
Sort_by_num(room,n); //调用函数,按学号排序
printf("\t\t插入记录成功!\n");
return(n);
}
int Delete_a_record(Student room[],int n) //按姓名查找,删除一条记录
{
char s[20]; //字符串
int i=0,j;
printf("\t\t输入他(她)的姓名:");
scanf("%s",s); //输入学生姓名
while(strcmp(room[i].name,s)!=0&&i<n) //与输入的姓名比较,是否相等
i++; //不等,往后索引
if(i==n) //找完所有数据项,表示没找到
{
printf("\t\t对不起没找到该学生!\n");
return(n);
}
for(j=i;j<n-1;j++) //删除后的移动操作
{
strcpy(room[j].roomnum,room[j+1].roomnum);
strcpy(room[j].bednum,room[j+1].bednum);
strcpy(room[j].num,room[j+1].num);
strcpy(room[j].name,room[j+1].name);
}
printf("\t\t删除记录成功!\n");
return(n-1);
}
void Query_a_record(Student room[],int n) //查找并显示一条记录
{
char s[20]; //字符串
int i=0;
printf("\t\t输入他(她)的姓名:");
scanf("\t\t%s",&s);
while(strcmp(room[i].name,s)!=0&&i<n) i++; //查找
if(i==n)
{
printf("\t\t对不起没找到该学生!\n");
return;
}
printf("\t\t他(她)的房间号:%s\n",room[i].roomnum); //显示
printf("\t\t他(她)的床位号:%s\n",room[i].bednum);
printf(