/学生宿舍管理系统/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
int m,n;
struct room /基本信息结构体/
{
int Num;
char Type[2];
int KeZhu;
int RuZhu;
int KongYu;
char Class[10];
char Spec[10];
};
struct room CY[900];
struct room t;
int main(); /主函数/
void Save();/创建保存信息文件函数/
void Input(); /录入函数/
void XianShi(); /显示宿舍信息函数/
void Search(); /查询宿舍信息函数/
void Modify(); /修改函数/
void Del(); /删除函数/
void Sta(); /统计函数/
void Off(); /退出函数/
void Linen(); /打出横线函数/
void Main_menu(); /主菜单/
void Mod_menu(); /修改菜单/
void Query_menu(); /查找菜单/
void Sta_menu(); /统计菜单/
void Save() /创建保存信息的txt文件/
{
int t;
FILE *f;
f=fopen("room.txt","w");
}
void Input() /录入宿舍信息/
{
int Flas=1;
char t;
FILE *f;
while(Flas)
{
system("cls");
f=fopen("room.txt","a+");
if(f==NULL)
{
printf("打开文件失败!");
}
printf("请输入宿舍号:");
scanf("%d",&CY[m].Num);
getchar();
printf("请输入宿舍类别:");
gets(CY[m].Type);
printf("请输入可住人数:");
scanf("%d",&CY[m].KeZhu);
printf("请输入入住人数:");
scanf("%d",&CY[m].RuZhu);
printf("请输入空余:");
scanf("%d",&CY[m].KongYu);
getchar();
printf("请输入班级:");
gets(CY[m].Class);
printf("请输入学院:");
gets(CY[m].Spec);
fprintf(f, " %d %s %d %d %d %s %s\r\n",CY[m].Num,CY[m].Type,CY[m].KeZhu,CY[m].RuZhu,CY[m].KongYu,CY[m].Class,CY[m].Spec);
system("cls");
printf("是否继续录入(Y/N)?");
scanf("%s",&t);
if(t=='n' || t=='N')
{
Flas=0;
fclose(f);
}
else if(t=='y'||t=='Y')
{
Flas=1;
}
}
}
void XianShi() /显示宿舍信息/
{
int ch,t;
FILE *f;
f = fopen("room.txt","r");
if (f == NULL)
{
printf("读取文件失败!\n");
exit(1);
}
printf("\n");
printf("宿舍号 宿舍类别 可住人数 入住人数 空余 班级 学院\n");
Linen();
while((ch=getc(f))!=EOF)
putchar(ch);
}
void Modify() /更改宿舍信息/
{
int NUM,x,i,Ese=1,Flas=1,Ese1;
char y;
FILE *f;
system("cls");
f = fopen("room.txt","r");
printf("请输入想要修改的宿舍号:");
scanf("%d",&NUM);
for(i=0;i<m;i++)
{
if(NUM==CY[i].Num)
{
while(Flas==1)
{
system("cls");
f = fopen("room.txt","r");
Mod_menu();
printf("\n");
printf("宿舍号 宿舍类别 可住人数 入住人数 空余 班级 学院\n");
Linen();
printf(" %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
Linen();
printf("\n");
printf("请输入相应的序号:");
scanf("%d",&x);
switch (x)
{
case 1:
{
printf("入住人数:");
scanf("%d",&CY[i].Num);
break;
}
case 2:
{
printf("空余:");
scanf("%d",&CY[i].KongYu);
break;
}
case 3:
{
printf("班级:");
scanf("%s",&CY[i].Class);
break;
}
case 4:
{
printf("学院:");
scanf("%s",&CY[i].Spec);
break;
}
case 5 :
{
goto Ese1;
break;
}
}
printf("\n");
printf("修改后的宿舍信息!\n");
Linen();
printf(" %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
Linen();
getch();
f=fopen("room.txt","w");
if(f==NULL)
{
printf("打开文件失败!");
}
for (i=0;i<m;i++)
{
fprintf(f, " %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
}
fclose(f);
system("cls");
printf("是否继续修改(Y/N)");
scanf("%s",&y);
if(y=='y' || y=='Y')
{
Flas==1;
i--;
}
else
{
Flas=0;
Ese=0;
}
}
}
}
if(Ese==1)
{
system("cls");
printf("没有该宿舍的记录!");
getch();
}
Ese1: ;
}
void Search() /查询宿舍信息/
{
int i,k,NUM,Flas=1,Flas1;
char Type[3],Spec[10];
FILE *f;
f = fopen("room.txt","r");
while(Flas==1)
{
system("cls");
Query_menu();
printf(" 请输入相应的序号:");
scanf("%d",&k);
switch (k)
{
case 1:
{
system("cls");
Flas1=1;
printf("请输入宿舍号:");
scanf("%d",&NUM);
printf("\n");
printf("宿舍号 宿舍类别 可住人数 入住人数 空余 班级 学院\n");
Linen();
for(i=0;i<m;i++)
{
if(NUM==CY[i].Num)
{
printf( " %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
Linen();
Flas1=0;
}
}
if(Flas1==1)
{
system("cls");
printf("没有该宿舍的记录!");
}
getch();
break;
}
case 2:
{
system("cls");
Flas1=1;
printf("请输入宿舍类别:");
gets(Type);
printf("\n");
printf("宿舍号 宿舍类别 可住人数 入住人数 空余 班级 学院\n");
Linen();
for(i=0;i<m;i++)
{
if(strcmp(Type,CY[i].Type)==0)
{
printf( " %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
Linen();
Flas1=0;
}
}
if(Flas1==1)
{
system("cls");
printf("没有该宿舍的记录!");
}
getch();
break;
}
case 3 :
{
system("cls");
Flas1=1;
getchar();
printf("请输入学院:");
gets(Spec);
printf("\n");
printf("宿舍号 宿舍类别 可住人数 入住人数 空余 班级 学院\n");
Linen();
for(i=0;i<m;i++)
{
if(strcmp(Spec,CY[i].Spec)==0)
{
printf( " %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
Linen();
Flas1=0;
}
}
if(Flas1==1)
{
system("cls");
printf("没有该宿舍的记录!");
}
getch();
break;
}
case 4:
{
Flas=0;
}
}
}
}
void Sta() /统计宿舍信息/
{
int i,k,Flas=1,Flas1,x,Ese0,Ese1,Ese2,Ese3;
char Type[3],Spec[10],Class[10];
while(Flas==1)
{
system("cls");
Sta_menu();
printf(" 请输入相应的序号:");
scanf("%d",&k);
switch (k)
{
case 1:
{
system("cls");
Flas=1;
x=0;
getchar();
printf("请输入宿舍类别:");
gets(Type);
printf("\n");
printf("宿舍号 宿舍类别 可住人数 入住人数 空余 班级 学院\n");
Linen();
for(i=0;i<m;i++)
{
if(strcmp(Type,CY[i].Type)==0)
{
printf( " %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
Linen();
Flas1=0;
x++;
}
}
if(Flas1==1)
{
system("cls");
printf("没有找到该宿舍!");
goto Ese0;
}
printf("\n");
printf("该楼层总共有 %d 名学生,总共有 %d 个%s!",m,x,Type);
Ese0: ;
getch();
break;
}
case 2:
{
system("cls");
Flas1=1;
x=0;
printf("请输入班级:");
gets(Class);
printf("\n");
printf("宿舍号 宿舍类别 可住人数 入住人数 空余 班级 学院\n");
Linen();
for(i=0;i<m;i++)
{
if(Class==CY[i].Class)
{
printf( " %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
Linen();
Flas1=0;
x++;
}
}
if(Flas1==1)
{
system("cls");
printf("没有找到该宿舍!");
goto Ese1;
}
printf("\n");
printf("该 %d 宿舍,总共有 %d 个成员!",Type,x);
Ese1: ;
getch();
break;
}
case 3:
{
system("cls");
Flas=1;
x=0;
getchar();
printf("请输入学院:");
gets(Spec);
printf("\n");
printf("宿舍号 宿舍类别 可住人数 入住人数 空余 班级 学院\n");
Linen();
for(i=0;i<m;i++)
{
if(strcmp(Spec,CY[i].Spec)==0)
{
printf( " %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
x++;
Linen();
Flas=0;
}
}
if(Flas1==1)
{
system("cls");
printf("没有找到该宿舍!");
goto Ese3;
}
printf("\n");
printf("该楼层总共有 %d 名学生,该 %s 学院总共有 %d 个学生在就读!",m,Spec,x);
getch();
Ese3: ;
break;
}
case 4:
{
Flas=0;
}
}
}
}
void Del() /删除宿舍信息/
{
int NUM,i,x,Flas=1;
char y;
FILE *f;
system("cls");
printf("请输入想删除的宿舍号:");
scanf("%s",&NUM);
printf("宿舍号 宿舍类别 可住人数 入住人数 空余 班级 学院\n");
Linen();
for(i=0;i<m;i++)
{
if(NUM==CY[i].Num)
{
printf( " %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
Flas=0;
break;
}
}
if(Flas==0)
{
printf("\n");
printf("确定要删除该宿舍信息?(Y/N)");
scanf("%s",&y);
if(y=='y' || y=='Y')
{
for(x=i;x<m;x++)
{
CY[x]=CY[x+1];
}
system("cls");
printf("删除成功!");
getch();
f=fopen("room.txt","w");
if(f==NULL)
{
printf("打开文件失败!");
}
for (i=0;i<m-1;i++)
{
fprintf(f, " %d %s %d %d %d %s %s\r\n",CY[i].Num,CY[i].Type,CY[i].KeZhu,CY[i].RuZhu,CY[i].KongYu,CY[i].Class,CY[i].Spec);
}
fclose(f);
}
}
else
{
system("cls");
printf("该宿舍不存在!");
getch();
}
}
void Backupdata()
{
char cha1[50];
char cha2[50];
strcpy(cha1, "C:\room.txt");
strcpy(cha1, "C:\backup.txt");
char ch[256];
FILE *fp1;
FILE *fp2;
fp1=fopen(cha1,"r");
fp2=fopen(cha2,"a+");
while(fgets(ch,256,fp1)!=NULL)
{
puts(ch);
fputs(ch,fp2);
}
fclose(fp1);
fclose(fp2);
}
void Off()
{
exit(0);
}
void Linen()
{
int i;
for(i=0;i<80;i++)
{
printf("_");
}
printf("\n");
}
void Main_menu()
{
printf(" ------欢迎使用学生宿舍管理系统------ \n");
printf(" --------------------------------------- \n");
printf(" | 1.创建文件保存信息 | \n");
printf(" | 2.录入宿舍信息 | \n");
printf(" | 3.显示宿舍信息 | \n");
printf(" | 4.更改宿舍信息 | \n");
printf(" | 5.查询宿舍信息 | \n");
printf(" | 6.统计宿舍信息 | \n");
printf(" | 7.删除宿舍信息 | \n");
printf(" | 8.备份宿舍信息 | \n");
printf(" | 9.退出 | \n");
printf(" --------------------------------------- \n");
}
void Mod_menu()
{
printf(" ------欢迎使用学生宿舍管理系统------ \n");
printf(" --------------------------------------- \n");
printf(" | 1.修改入住人数 | \n");
printf(" | 2.修改空余 | \n");
printf(" | 3.修改班级 | \n");
printf(" | 4.修改学院 | \n");
printf(" | 5.退出 | \n");
printf(" --------------------------------------- \n");
}
void Query_menu()
{
printf(" ------欢迎使用学生宿舍管理系统------ \n");
printf(" --------------------------------------- \n");
printf(" | 1.按宿舍号 | \n");
printf(" | 2.按班级 | \n");
printf(" | 3.按学院 | \n");
printf(" | 4.退出 | \n");
printf(" --------------------------------------- \n");
}
void Sta_menu()
{
printf(" ------欢迎使用学生宿舍管理系统------ \n");
printf(" --------------------------------------- \n");
printf(" | 1.按宿舍类别 | \n");
printf(" | 2.按班级 | \n");
printf(" | 3.学院 | \n");
printf(" | 4.退出 | \n");
printf(" --------------------------------------- \n");
}
int main()
{
int i;
system("cls");
Main_menu();
printf(" 请选择操作项号:");
scanf("%d",&i);
switch (i)
{
case 1:/创建保存信息的文件/
{
Save();
break;
}
case 2:/录入宿舍信息/
{
Input();
break;
}
case 3:/显示所有宿舍信息/
{
XianShi();
break;
}
case 4:/更改宿舍信息/
{
Modify();
break;
}
case 5:/查询宿舍信息/
{
Search();
break;
}
case 6:/统计宿舍信息/
{
Sta();
break;
}
case 7:/删除宿舍信息/
{
Del();
break;
}
case 8:/备份宿舍信息/
{
Backupdata();
break;
}
case 9:/退出/
{
Off();
break;
}
}
}