C语言:学生宿舍管理系统(难度系数:3级)(附加清屏操作)设计一个学生宿舍管理程序。该程序应该具有以下功能:(1)录入学生宿舍信息;(2)修改、删除学生宿舍信息;(3)统计当前未住学生宿舍的个数并显示宿舍编号;(4)统计当前空闲的男生、女生床位数;(5)按宿舍编号由小到大显示已住学生的宿舍信息;(6)分别显示男生、女生有空床位的宿舍信息;(7)按宿舍编号、可住人数、空床数、宿舍性质(男生还是女生)等信息进行查询,若查询信息不存在,输出没找到的信息。题目要求:(1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序,即在程序中加入异常处理,检查用户输入数据的有效性,以保证程序的健壮性;(2)宿舍信息应该包括宿舍编号、可住人数、空床数、宿舍性质等;(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选项选则所需进行的操作项目,菜单要界面友好、清晰;(4)将所有宿舍信息存储在一个文件中,并实现文件的读写操作,即将输入的数据以文件的形式存盘,将原来已经存盘的文件读入内存,进行管理;(5)应保证测试用例测试程序的各种边缘情况。输入要求:应用程序运行后,在屏幕上显示一个菜单。用户可以根据需要,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。输出要求:(1)应用程序运行后,在屏幕上显示一个菜单。(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。代码:#includestdio.h#includestdlib.h#includeconio.h#includeprocess.h#definemax2//最大容量//#definek6//每个宿舍最多可住人数typedefstructnode{intnum;intke;intempty;intyi;intsex;//1-女0-男//structnode*next;}doc;//宿舍信息应该包括宿舍编号、可住人数、空床数、宿舍性质等;//intq=0;//已入住的房间数-1docdcm[max];voida()//1.录入学生宿舍信息{intq;printf(\n\n\t现在执行录入学生宿舍信息\n);for(q=0;qmax;q++)//printf(请输入要录入的宿舍个数:\n);//scanf(%d,&j);//while(j=0)//{//printf(输入错误!请重新输入:);//scanf(%d,&j);//}//else//while(j0){printf(请输入该宿舍的宿舍号:\n);scanf(%d,&dcm[q].num);printf(请输入该宿舍的最大住人数:\n);scanf(%d,&dcm[q].ke);printf(请输入该宿舍的已住人数:\n);scanf(%d,&dcm[q].yi);while(dcm[q].yidcm[q].ke){printf(输入错误!已住人数大于最大入住人数!\n请重新输入:);scanf(%d,&dcm[q].yi);}dcm[q].empty=dcm[q].ke-dcm[q].yi;printf(请输入宿舍性质(0代表男宿舍,1代表女宿舍):\n);scanf(%d,&dcm[q].sex);while(dcm[q].sex!=1&&dcm[q].sex!=0){printf(非法输入宿舍性质!请重新输入!\n);scanf(%d,&dcm[q].sex);}//q++;//j--;}}voidxianshi()//显示所有宿舍信息{for(intj=0;jmax;j++){printf(宿舍号为:%d可住人数为:%d空床数为%d,dcm[j].num,dcm[j].ke,dcm[j].empty);if(dcm[j].sex==0)printf(宿舍性质:男宿舍\n);elseprintf(宿舍性质:女宿舍\n);}}voidxs(intj){printf(宿舍号为:%d可住人数:%d空床数%d\n,dcm[j].num,dcm[j].ke,dcm[j].empty);if(dcm[j].sex==0)printf(宿舍性质:男宿舍\n);elseprintf(宿舍性质:女宿舍\n);}voidb()//2.修改、删除学生宿舍信息{intj,m,h;dock;while(1){printf(****************************************\n);printf(*************1、修改宿舍信息************\n);printf(*************2、删除宿舍信息************\n);printf(*************3、退出返回顶层菜单********\n);printf(****************************************\n);printf(请输入对应命令:);scanf(%d,&j);printf(****************************************\n);printf(以下为目前的宿舍信息:\n);xianshi();if(j==1){//case1:printf(请输入要修改的宿舍的宿舍号:);scanf(%d,&m);for(inti=0,k=0;imax;i++){if(m==dcm[i].num)k=i+1;}if(k==0){printf(在记录中没有找到这个宿舍!\n);continue;}printf(请输入该宿舍的最大住人数:\n);scanf(%d,&dcm[k-1].ke);printf(请输入该宿舍的已住人数:\n);scanf(%d,&dcm[k-1].yi);dcm[m].empty=dcm[k-1].ke-dcm[k-1].yi;printf(请输入宿舍性质(0代表男宿舍,1代表女宿舍):\n);scanf(%d,&dcm[k-1].sex);while(dcm[k-1].sex!=1&&dcm[k-1].sex!=0){printf(非法输入宿舍性质!请重新输入!\n);scanf(%d,&dcm[k-1].sex);}printf(\t操作成功!已经修改完毕\n);break;}//break;//case2:elseif(j==2){printf(请输入要删除的宿舍号:);scanf(%d,&h);for(inti=0,k=0;imax;i++){if(h==dcm[i].num)k=i+1;}if(k==0){printf(在记录中没有找到这个宿舍!\n);continue;}for(i=k-1;imax-1;i++){dcm[i]=dcm[i+1];}dcm[max-1].empty=NULL;dcm[max-1].ke=NULL;dcm[max-1].num=NULL;dcm[max-1].sex=NULL;dcm[max-1].yi=NULL;printf(\t操作成功!已经删除完毕\n);}//break;//default:elseif(j==3)break;else{printf(输入错误!请重新输入。\n);continue;}}printf(****************************************\n);}voidc()//3.统计当前未住学生宿舍的个数并显示宿舍编号{inti=0;printf(****************************************\n);printf(未住学生空宿舍宿舍号如下:\n);for(intj=0;jmax;j++)if(dcm[j].ke==dcm[j].empty){printf(\t%d,dcm[j].num);i++;if(j%3==0)printf(\n);}printf(\n);printf(****************************************\n);printf(当前未入住的学生宿舍个数共有:%d个\n,i);}voidd()//4.统计当前空闲的男生、女生床位数{intm=0,n=0;printf(****************************************\n);printf(统计当前空闲的男生、女生床位数\n);for(intj=0;jmax;j++){if(dcm[j].empty!=0){printf(宿舍号为:%d\t空床数为%d\t,dcm[j].num,dcm[j].empty);if(dcm[j].sex==0){printf(男生寝室\n);m+=dcm[j].empty;}else{printf(女生寝室\n);n+=dcm[j].empty;}}}printf(男生共有空床位%d个\n女生共有空床位%d个\n\t男女生合计共有空床位%d个\n,m,n,m+n);printf(****************************************\n);}voide()//5.按宿舍编号由小到大显示已住学生的宿舍信息{printf(****************************************\n);printf(按宿舍编号由小到大显示已住学生的宿舍信息\n);inti;dock;for(intj=0;jmax;j++)for(i=j;imax;i++){if(dcm[j].numdcm[i].num){k=dcm[j];dcm[j]=dcm[i];dcm[i]=k;}}xianshi();printf(****************************************\n);}voidf()//6.分别显示男生、女生有空床位的宿舍信息{intm=0,n=0;printf(****************************************\n);printf(统计当前空闲的男生、女生床位数\n\n);printf(统计当前空闲的男生床位数:\n);for(intj=0;jmax;j++){if(dcm[j].empty!=0){if(dcm[j].sex==0){printf(宿舍号为:%d\t空床数为%d\n,dcm[j].num,dcm[j].empty);m+=dcm[j].empty;}}}printf(男生空床数共有%d个\n\n,m);printf(统计当前空闲的女生床位数:\n);for(j=0;jmax;j++){if(dcm[j].empty!=0){if(dcm[j].sex==1){printf(宿舍号为:%d\t空床数为%d\n,dcm[j].num,dcm[j].empty);n+=dcm[j].empty;}}}printf(女生空床数共有%d个\n,n);printf(****************************************\n);}voidg()//7.宿舍查询{intm,i,p,k=0;while(1){printf(****************************************\n);printf(查询可按宿舍编号(0)、可住人数(1)、空床数(2)、宿舍性质(男生还是女生)(3)等信息进行);scanf(%d,&p);switch(p){case0:{printf(****************************************\n);printf(按宿舍编号查询\t请输入要查询的宿舍号:);scanf(%d,&m);for(i=0;imax;i++){if(m==dcm[i].num){xs(i);k++;}}if(k==0){printf(在记录中没有找到这个宿舍!\n);continue;}break;}case1:{printf(*******************