//宿舍管理:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#define STU_FILE “student.txt”
struct Student
{
char num[12]; //学号
char roomnum[10]; //宿舍号
char gender[10]; //性别
char name[20]; //姓名
char yuanxi[20]; //院系
int chuanghao; //床号
}room[1000];
/*菜单*/
int menu_select()
{
char 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§ 0. 结束程序 §\n");
printf("\t\t----------------------------------------------\n");
printf("\t\t请选择您要运行的选项按(0-7)😊;
c = getchar();
} while (c<‘0’ || c>‘7’);
return(c - ‘0’);
}
/*输入函数*/
int Input(Student room[], int n)
{
int i =0 ,j=0;
room[n].chuanghao=0;
char sign = 0, x[10],a[10];
while (sign != 'n'&&sign != 'N')
{
printf("\t\t学号:");
scanf("\t\t%s", &room[n + i].num);
printf("\t\t宿舍号:");
scanf("\t\t%s", &room[n + i].roomnum);
printf("\t\t性别请输入男或女: ");
scanf("\t\t%s", &room[n + i].gender);
for(j=0;j<1000;j++)
if(strcmp(room[j].roomnum,room[n+i].roomnum)==0&&strcmp(room[j].gender,room[n+i].gender))//判断男女
{
printf("\t\t*男女不能混住,请重新改输入!*\n");
printf("\t\t学号:");
scanf("\t\t%s", &room[n + i].num);
printf("\t\t宿舍号:");
scanf("\t\t%s", &room[n + i].roomnum);
printf("\t\t性别请输入男或女: ");
scanf("\t\t%s", &room[n + i].gender);
break;
}
printf("\t\t姓名:");
getchar();
scanf("\t\t%s", &room[n + i].name);
printf("\t\t院系:");
getchar();
scanf("\t\t%s",&room[n+i].yuanxi);
for(j=0;j<1000;j++)
if(strcmp(room[j].roomnum,room[n+i].roomnum)==0)//判断是否住满
{
room[n + i].chuanghao++;
if(room[n + i].chuanghao%4==0)
{
printf("\t\t%s*房间已满!*\n",room[n+i].roomnum);
break;
}
}
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%-10s%-5s%7d\n", room[i - 1].roomnum, room[i - 1].num, room[i - 1].name, room[i - 1].gender,room[i - 1].yuanxi,room[i - 1].chuanghao);
if (i > 1 && i == 0)
{
printf("\t\t--------------------------------------------------\n");
printf("\t\t");
system(“pause”);
printf("\t\t--------------------------------------------------\n");
}
}
printf("\t\t");
system(“pause”);
}
/*插入函数*/
int Insert_a_record(Student room[], int n)
{
int i=1,j=0;
room[n].chuanghao=0;
char x[10];
{
printf("\t\t学号:");
scanf("\t\t%s", &room[n ].num);
printf("\t\t宿舍号:");
scanf("\t\t%s", &room[n ].roomnum);
printf("\t\t性别请输入男或女: ");
scanf("\t\t%s", &room[n ].gender);
for(j=0;j<n;j++)
if(strcmp(room[j].roomnum,room[n].roomnum)==0&&strcmp(room[j].gender,room[n].gender))//判断男女
{
printf("\t\t*男女不能混住,请重新改输入!*\n");
printf("\t\t学号:");
scanf("\t\t%s", &room[n ].num);
printf("\t\t宿舍号:");
scanf("\t\t%s", &room[n ].roomnum);
printf("\t\t性别请输入男或女: ");
scanf("\t\t%s", &room[n ].gender);
break;
}
printf("\t\t姓名:");
getchar();
scanf("\t\t%s", &room[n ].name);
printf("\t\t院系:");
getchar();
scanf("\t\t%s",&room[n].yuanxi);
for(j=0;j<4;j++)
if(strcmp(room[j].roomnum,room[n].roomnum)==0)//判断是否住满
{
room[n ].chuanghao++;
if(room[n ].chuanghao%4==0)
{
printf("\t\t%s*房间已满!*\n",room[n].roomnum);
break;
}
}
else
printf("\t\t插入记录成功!\n");
}
n++;
return(n );
}
/*删除函数*/
int Delete_a_record(Student room[],int n)
{
char s[20],s1[20];
int i=0,j;
printf("\t\t输入他(她)的姓名或学号:");
scanf("%s,%s",s,s1);
while(strcmp(room[i].name,s)!=0&&strcmp(room[i].num,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t\t对不起没找到该学生!\n");
return(n);
}
for(j=i;j<n-1;j++)
{
strcpy(room[j].name,room[j+1].name);
strcpy(room[j].gender,room[j+1].gender);
strcpy(room[j].roomnum,room[j+1].roomnum);
strcpy(room[j].num,room[j+1].num);
strcpy(room[j].yuanxi,room[j+1].yuanxi);
}
printf("\t\t删除记录成功!\n");
return(n-1);
}
/按宿舍号排序/
void Sort_by_num(Student room[],int n)
{
int i,j;
char t[10];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(room[j].roomnum,room[j+1].roomnum)>0)
{
strcpy(t,room[j+1].num);
strcpy(room[j+1].num,room[j].num);
strcpy(room[j].num,t);
strcpy(t,room[j+1].roomnum);
strcpy(room[j+1].roomnum,room[j].roomnum);
strcpy(room[j].roomnum,t);
strcpy(t,room[j+1].name);
strcpy(room[j+1].name,room[j].name);
strcpy(room[j].name,t);
strcpy(t,room[j+1].yuanxi);
strcpy(room[j+1].yuanxi,room[j].yuanxi);
strcpy(room[j].yuanxi,t);
strcpy(t,room[j+1].gender);
strcpy(room[j+1].gender,room[j].gender);
strcpy(room[j].gender,t);
}
}
/*查询函数*/
void Query_a_record(Student room[],int n)
{
char s[20];
int i=0,j=0;
printf("\t\t输入他(她)的宿舍号:");
scanf("\t\t%s",&s);
for(;i<=n;i++)
{
if(strcmp(room[i].roomnum,s)==0)
{ j++;
printf("\t\t------------------------------------------------------------\n");
printf("\t\t宿舍号 学号 姓名 性别 院系 \n");
printf("\t\t------------------------------------------------------------\n");
printf("\t\t%-10s %-10s %-10s%-10s%-5s\n", room[i].roomnum, room[i].num, room[i ].name, room[i].gender,room[i].yuanxi);
}
else if(j=0)
{
printf("\t\t对不起没找到该房间!\n");
return;
}
}
}
/交换函数/
void Exchange(Student room[],int n)
{
int i=0,j,k,l=1;
char s1[10],s2[10],t[10],r[10];
printf("\t\t请输入第一个学生的姓名或学号:");
scanf("%s",s1);
for(i=0;i<=n;i++)
{
if(strcmp(room[i].name,s1)==0||strcmp(room[i].num,s1)==0)
j=i;
else
break;
}
printf("\t\t请输入第二个学生的姓名或学号:");
scanf("%s",s2);
for(i=0;i<=n;i++)
{
if(strcmp(room[i].name,s2)==0||strcmp(room[i].num,s2)==0)
k=i;
else
if(i==n&&strcmp(room[j].name,s1)!=0&&strcmp(room[k].num,s2)!=0)
{l=0;
break;
}
}
if(strcmp(room[j].gender,room[k].gender)!=0)
printf("\t\t男女不能交换!\n");
else if(l)
{
strcpy(t,room[j].roomnum);
strcpy(room[j].roomnum,room[k].roomnum);
strcpy(room[k].roomnum,t);
strcpy(r,room[j].gender);
strcpy(room[j].gender,room[k].gender);
strcpy(room[k].gender,r);
printf("\t\t交换成功\n");
}
else
printf("\t\t未找到\n");
}
/宿舍住满情况函数/
void Search(Student room[],int n)
{
int i,j,k;
for(i=0;i<=n;i++)
{
for(j=i+1,k=1;j<n;j++)
if(strcmp(room[i].roomnum,room[j].roomnum)==0)
k=room[j].chuanghao;
switch(k)
{
case 1:printf("\t\t%s宿舍还有3床位.\n",room[i].roomnum);break;
case 2:printf("\t\t%s宿舍还有2床位.\n",room[i].roomnum);break;
case 3:printf("\t\t%s宿舍还有1床位.\n",room[i].roomnum);break;
case 4: break;
}
}
}
int main()
{
int n = 0;
for (;;)
{
switch (menu_select())
{
case 1:
printf("\t\t输入学生数据\n");
n = Input(room, n);
break;
case 2:
printf("\t\t显示学生数据\n");
Display(room, n);
break;
case 3:
printf("\t\t给出姓名或学号后插入\n");
n = Insert_a_record(room, n);
Sort_by_num(room,n);
Display(room, n);
break;
case 4:
printf("\t\t给出姓名或学号后删除\n");
n=Delete_a_record(room,n);
printf("\t\t");
system("pause");
Display(room, n);
break;
case 5:
Query_a_record(room,n);
system("pause");
break;
case 6:
printf("\t\t该房间的入住学生\n");
Exchange(room, n);
Sort_by_num(room,n);
system("pause");
Display(room, n);
break;
case 7:
Search(room, n);
Sort_by_num(room,n);
system("pause");
Display(room, n);
break;
case 0:
printf("\t\t谢谢使用\n");
printf("\t\t");
system("pause");
exit(0);
}
}
}
214



被折叠的 条评论
为什么被折叠?



