1、学生宿舍管理系统.txt52每个人都一条抛物线,天赋决定其开口,而最高点则需后天努力。没有秋日落叶飘零,何来新春绿芽饿明丽?只有懂得失去,才会重新拥有。#include "stdio.h" #include "iostream.h" #include "string.h" #define ERROR 0 #define OK 1 #define MAXSIZE 2500 #define EQ(a,b) ((a)==(b)) typedef int Status; int N=4;//全局变量来储存所输入个数; struct studen
2、t { //数据构造类型; char name[10]; int num; int room; }; /*--------------------------------------------------------------------------*/ Status Input() { //数据输入; int i=0; int flag=1; char ch; FILE * fpdata; student stu[MAXSIZE]; if((fpdata=fopen("studata.txt","wb"))==NULL) {
3、 printf("cannot open studata.c file!"); return ERROR; } while(flag) { printf("与否继续输入(Y/N):"); cin>>ch; if(ch=='y'||ch=='Y') { scanf("%s%d%d",stu[i].name,&stu[i].num,&stu[i].room); fwrite(&stu[i],sizeof(struct student),1,fpdata); i++; } else flag=0; } N=i; fclose(fpdata); pri
4、ntf("数据输入完毕!\n");
return OK;
}
Status Print(char *filename)
{
//输出数据;
FILE * fpdata;
student st;
int i=0;
if((fpdata=fopen(filename,"rb"))==NULL)
{
printf("cannot open studata.c file!");
return ERROR;
}
while(i 5、d %d\n",st.name,st.num,st.room);
i++;
}
fclose(fpdata);
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status NameSort()
{
//姓名排序;
int i,j;
FILE * fpdata;
FILE 6、 fpnamesort;
student stu[MAXSIZE];
if((fpdata=fopen("studata.txt","rb"))==NULL)
{
printf("cannot open data.c file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,fpdata);
}
fclose(fpdata);
if((fpnamesort=fopen("namesort.txt","wb"))==NULL)
{
print 7、f("cannot open nsort.c");
return ERROR;
}
for(i=2;i<=N;i++)
{
if(strcmp(stu[i].name,stu[i-1].name)<0)
{
strcpy(stu[0].name,stu[i].name);
stu[0].num=stu[i].num;
stu[0].room=stu[i].room;
strcpy(stu[i].name,stu[i-1].name);
stu[i].num=stu[i-1].num;
stu[i].room=stu[i-1].room;
for(j=i-2; 8、strcmp(stu[0].name,stu[j].name))<0;j--)
{
strcpy(stu[j+1].name,stu[j].name);
stu[j+1].num=stu[j].num;
stu[j+1].room=stu[j].room;
}
strcpy(stu[j+1].name,stu[0].name);
stu[j+1].num=stu[0].num;
stu[j+1].room=stu[0].room;
}
}
for(i=1;i<=N;i++)
{
fwrite(&stu[i],sizeof(struct student) 9、1,fpnamesort);
}
fclose(fpnamesort);
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status NumSort()
{
//学号排序;
int i,j;
FILE * fpdata;
FILE * fpnumsort;
student 10、stu[MAXSIZE];
if((fpdata=fopen("studata.txt","rb"))==NULL)
{
printf("cannot open data.c file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,fpdata);
}
fclose(fpdata);
if((fpnumsort=fopen("numsort.txt","wb"))==NULL)
{
printf("cannot open nsort.c"); 11、
return ERROR;
}
for(i=2;i<=N;i++)
{
if(stu[i].num 12、py(stu[j+1].name,stu[j].name);
stu[j+1].num=stu[j].num;
stu[j+1].room=stu[j].room;
}
strcpy(stu[j+1].name,stu[0].name);
stu[j+1].num=stu[0].num;
stu[j+1].room=stu[0].room;
}
}
for(i=1;i<=N;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fpnumsort);
}
fclose(fpnumsort);
return OK;
13、
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status RoomSort()
{
//房间号排序;
int i,j;
FILE * fpdata;
FILE * fproomsort;
student stu[MAXSIZE];
if((fpdata=fopen("studata.txt","rb" 14、))==NULL)
{
printf("cannot open data.c file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,fpdata);
}
fclose(fpdata);
if((fproomsort=fopen("roomsort.txt","wb"))==NULL)
{
printf("cannot open nsort.c");
return ERROR;
}
for(i=2;i<=N;i++)
{
if( 15、stu[i].room 16、stu[j].num;
stu[j+1].room=stu[j].room;
}
strcpy(stu[j+1].name,stu[0].name);
stu[j+1].num=stu[0].num;
stu[j+1].room=stu[0].room;
}
}
for(i=1;i<=N;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fproomsort);
}
fclose(fproomsort);
return OK;
}
/* ******** ******** ********* ** 17、 ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status NameSearch(char * namekey)
{
//按名字查询;
//顺序查找
int i;
FILE * f;
student stu[MAXSIZE];
if((f=fopen("namesort.txt","rb"))==NULL)
{
printf("cannot open namesort 18、txt file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,f);
}
int low=1;
int high=N;
//int mid;
int flag=0;
int m=N;
//char namekey;
//int t;
strcpy(stu[0].name,namekey);
for(m=N;m>0;--m)
{
if(!strcmp(stu[m].name,namekey))
printf("%s %d %d\n" 19、stu[m].name,stu[m].num,stu[m].room);
}
return m;
fclose(f);
if(flag>0)
{
printf("%s %d %d\n",stu[flag].name,stu[flag].num,stu[flag].room);
}
else printf("对不起,没有找到相匹配记录\n");
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ***** 20、 ********* ********* ********* ********* ********* */
Status NumSearch(int key)
{
//按学号查询;
int i;
FILE * f;
student stu[MAXSIZE];
if((f=fopen("numsort.txt","rb"))==NULL)
{
printf("cannot open namesort.txt file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof 21、struct student),1,f);
}
int low=1;
int high=N;
int mid;
int flag=0;
while(low<=high)
{
mid=(low+high)/2;
if(stu[mid].num==key)
{
flag=mid;
break;
}
else
{
if(stu[mid].num>key)
high=mid-1;
else
low=mid+1;
}
}
fclose(f);
if(flag>0)
{
printf("%s %d %d\n",stu[flag 22、].name,stu[flag].num,stu[flag].room);
}
else printf("对不起,没有找到相匹配记录\n");
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status RoomSearch(int key)
{
//按房间号查询;
int i 23、
FILE * f;
student stu[MAXSIZE];
if((f=fopen("roomsort.txt","rb"))==NULL)
{
printf("cannot open roomsort.txt file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,f);
}
int low=1;
int high=N;
//int mid;
int flag=0;
int t;
stu[0].room=key;
for(t= 24、N;t>0;--t)
{if(stu[t].room==key)
printf("%s %d %d\n",stu[t].name,stu[t].num,stu[t].room);
}
return t;
fclose(f);
if(flag>0)
{
printf("%s %d %d\n",stu[flag].name,stu[flag].num,stu[flag].room);
}
else printf("对不起,没有找到相匹配记录\n");
return OK;
}
/* ******** ******** ********* **** 25、 ********* ********* ********* */
/* ******** ******** ********* main() ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
void main()
{
int num;
int room;
int flag,flag1,flag2;
char cha;
char name[10];
cout<<" ******** 学生宿舍 26、管理系统 ********"< 27、住宿学生信息输入(姓名 学号 房间号)\n");
Input();
NameSort();
NumSort();
RoomSort();
}
while(flag)
{printf("------------------------------------------------------\n");
cout<<"**************** 学生宿舍管理系统 ****************"< 28、取操作:\n");
printf("A.按姓名查询\n");
printf("B.按学号查询\n");
printf("C.按房号查询\n");
printf("D.退出\n");
cout<<"注意:字母请输入大写……"< 29、输出\n");
printf("C.返回\n");
printf("注意:字母请输入大写……\n");
cin>>cha;
switch(cha)
{
case 'A':
scanf("%s",name);
printf("查询成果为:\n");
printf("------------------------------------------------------\n");
NameSearch(name);
printf("------------------------------------------------------\n");
break;
30、case 'B':
Print("namesort.txt");
break;
case 'C':
flag1=0;
break;
default:
printf("------------------------------------------------------\n");
printf("!!!!!!!!你输入命令无效。注意:命令字母请输入大写!!!!!!!!!!!\n");
}
}
break;
case 'B' :
while(flag2)
{printf("------------------------------------------- 31、\n");
printf("A.输入要查询学号\n");
printf("B.按学号所有输出\n");
printf("C.返回\n");
printf("注意:字母请输入大写……\n");
cin>>cha;
switch(cha)
{
case 'A':
scanf("%d",&num);
printf("查询成果为:\n");
printf("------------------------------------------------------\n");
NumSearch(num);
break;
case 'B':
P 32、rint("numsort.txt");
break;
case 'C':
flag2=0;
break;
default:
printf("------------------------------------------------------\n");
printf("!!!!!!!!你输入命令无效。注意:命令字母请输入大写!!!!!!!!!!!\n");
}
}
break;
case 'C' :
flag1=1;
while(flag1)
{printf("---------------------------------------------- 33、\n");
printf("A.输入要查询宿舍号\n");
printf("B.按宿舍号所有输出\n");
printf("C.返回\n");
printf("注意:字母请输入大写……\n");
cin>>cha;
switch(cha)
{
case 'A':
scanf("%d",&room);
printf("查询成果为:\n");
printf("------------------------------------------------------\n");
RoomSearch(room);
printf("------------ 34、\n");
break;
case 'B':
Print("roomsort.txt");
break;
case 'C':
flag1=0;
break;
default:
printf("------------------------------------------------------\n");
printf("!!!!!!!!你输入命令无效。注意:命令字母请输入大写!!!!!!!!!!!\n");
}
}
break;
case 'D' :
flag=0;
break;
default:
printf("------------------------------------------------------\n");
printf("!!!!!!!!你输入命令无效。注意:命令字母请输入大写!!!!!!!!!!!\n");
}
}
}






