1、c语言学生宿舍管理系统难度系数3级C语言:学生宿舍管理系统 (难度系数:3级) (附加清屏操作) 设计一个学生宿舍管理程序。该程序应该具有以下功能: (1)录入学生宿舍信息; (2)修改、删除学生宿舍信息; (3)统计当前未住学生宿舍的个数并显示宿舍编号; (4)统计当前空闲的男生、女生床位数; (5)按宿舍编号由小到大显示已住学生的宿舍信息; (6)分别显示男生、女生有空床位的宿舍信息; (7)按宿舍编号、可住人数、空床数、宿舍性质(男生还是女生)等信息进行查询,若查询信息不存在,输出没找到的信息。 题目要求: (1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序,即在程序中
2、加入异常处理,检查用户输入数据的有效性,以保证程序的健壮性; (2)宿舍信息应该包括宿舍编号、可住人数、空床数、宿舍性质等; (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选项选则所需进行的操作项目,菜单要界面友好、清晰; (4)将所有宿舍信息存储在一个文件中,并实现文件的读写操作,即将输入的数据以文件的形式存盘,将原来已经存盘的文件读入内存,进行管理; (5)应保证测试用例测试程序的各种边缘情况。 输入要求: 应用程序运行后,在屏幕上显示一个菜单。用户可以根据需要,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。 输出要求
3、: (1)应用程序运行后,在屏幕上显示一个菜单。 (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。 代码: #includestdio.h #includestdlib.h #includeconio.h #includeprocess.h #define max 2 /最大容量 /#define k 6 /每个宿舍最多可住人数 typedef struct node int num; int ke; int empty; int yi; int sex; /1-女0-男 /struct node *next; doc; /宿舍信息应该包括宿舍编号、
4、可住人数、空床数、宿舍性质等; /int q=0; /已入住的房间数-1 doc dcmmax; void a() /1.录入学生宿舍信息 int q; printf(nnt现在执行录入学生宿舍信息n); for(q=0;qmax;q+) / printf(请输入要录入的宿舍个数:n); / scanf(%d,&j); / while(j0) printf(请输入该宿舍的宿舍号:n); scanf(%d,&dcmq.num); printf(请输入该宿舍的最大住人数:n); scanf(%d,&dcmq.ke); printf(请输入该宿舍的已住人数:n); scanf(%d,&dcmq.yi
5、); while(dcmq.yidcmq.ke) printf(输入错误!已住人数大于最大入住人数!n请重新输入: ); scanf(%d,&dcmq.yi); dcmq.empty=dcmq.ke-dcmq.yi; printf(请输入宿舍性质(0代表男宿舍,1代表女宿舍):n); scanf(%d,&dcmq.sex); while(dcmq.sex!=1&dcmq.sex!=0) printf(非法输入宿舍性质!请重新输入!n); scanf(%d,&dcmq.sex); / q+; / j-; void xianshi()/显示所有宿舍信息 for(int j=0;jmax;j+) p
6、rintf(宿舍号为:%d 可住人数为:%d 空床数为%d ,dcmj.num,dcmj.ke,dcmj.empty); if(dcmj.sex=0) printf(宿舍性质:男宿舍n); else printf(宿舍性质:女宿舍n); void xs(int j) printf(宿舍号为:%d 可住人数:%d 空床数%dn,dcmj.num,dcmj.ke,dcmj.empty); if(dcmj.sex=0) printf(宿舍性质:男宿舍n); else printf(宿舍性质:女宿舍n); void b() /2.修改、删除学生宿舍信息 int j,m,h; doc k; while(
7、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) / case 1: printf(请输入要修改的宿舍的宿舍号:); scanf(%d,&m); for(int i=0,k=0;imax;i+) if(m=dcmi.num) k=i+1; if(k=0) printf(在记录中没有找到这个宿舍!
8、n); continue; printf(请输入该宿舍的最大住人数:n); scanf(%d,&dcmk-1.ke); printf(请输入该宿舍的已住人数:n); scanf(%d,&dcmk-1.yi); dcmm.empty=dcmk-1.ke-dcmk-1.yi; printf(请输入宿舍性质(0代表男宿舍,1代表女宿舍): n); scanf(%d,&dcmk-1.sex); while(dcmk-1.sex!=1&dcmk-1.sex!=0) printf(非法输入宿舍性质!请重新输入!n); scanf(%d,&dcmk-1.sex); printf(t操作成功!已经修改完毕n)
9、; break; / break; / case 2: else if(j=2) printf(请输入要删除的宿舍号:); scanf(%d,&h); for(int i=0,k=0;imax;i+) if(h=dcmi.num) k=i+1; if(k=0) printf(在记录中没有找到这个宿舍!n); continue; for(i=k-1;imax-1;i+) dcmi=dcmi+1; dcmmax-1.empty=NULL; dcmmax-1.ke=NULL; dcmmax-1.num=NULL; dcmmax-1.sex=NULL; dcmmax-1.yi=NULL; printf
10、(t操作成功!已经删除完毕n); / break; / default: else if(j=3) break; else printf(输入错误!请重新输入。n); continue; printf(*n); void c() /3.统计当前未住学生宿舍的个数并显示宿舍编号 int i=0; printf(*n); printf(未住学生空宿舍宿舍号如下:n); for(int j=0;jmax;j+) if(dcmj.ke=dcmj.empty) printf(t%d,dcmj.num); i+; if(j%3=0) printf(n); printf(n); printf(*n); pr
11、intf(当前未入住的学生宿舍个数共有:%d个n,i); void d() /4.统计当前空闲的男生、女生床位数 int m=0,n=0; printf(*n); printf(统计当前空闲的男生、女生床位数n); for(int j=0;jmax;j+) if(dcmj.empty!=0) printf(宿舍号为:%dt空床数为%dt,dcmj.num,dcmj.empty); if(dcmj.sex=0) printf(男生寝室n); m+=dcmj.empty; else printf(女生寝室n); n+=dcmj.empty; printf(男生共有空床位%d个n女生共有空床位%d个
12、nt男女生合计共有空床位%d个n,m,n,m+n); printf(*n); void e() /5.按宿舍编号由小到大显示已住学生的宿舍信息 printf(*n); printf(按宿舍编号由小到大显示已住学生的宿舍信息n); int i; doc k; for(int j=0;jmax;j+) for(i=j;idcmi.num) k=dcmj; dcmj=dcmi; dcmi=k; xianshi(); printf(*n); void f() /6.分别显示男生、女生有空床位的宿舍信息 int m=0,n=0; printf(*n); printf(统计当前空闲的男生、女生床位数nn)
13、; printf(统计当前空闲的男生床位数:n); for(int j=0;jmax;j+) if(dcmj.empty!=0) if(dcmj.sex=0) printf(宿舍号为:%dt空床数为%dn,dcmj.num,dcmj.empty); m+=dcmj.empty; printf(男生空床数共有%d个nn,m); printf(统计当前空闲的女生床位数:n); for(j=0;jmax;j+) if(dcmj.empty!=0) if(dcmj.sex=1) printf(宿舍号为:%dt空床数为%dn,dcmj.num,dcmj.empty); n+=dcmj.empty; pr
14、intf(女生空床数共有%d个n,n); printf(*n); void g() /7.宿舍查询 int m,i,p,k=0; while(1) printf(*n); printf(查询可按宿舍编号(0)、可住人数(1)、空床数(2)、宿舍性质(男生还是女生)(3)等信息进行); scanf(%d,&p); switch(p) case 0: printf(*n); printf(按宿舍编号查询t请输入要查询的宿舍号:); scanf(%d,&m); for(i=0;imax;i+) if(m=dcmi.num) xs(i); k+; if(k=0) printf(在记录中没有找到这个宿舍
15、!n); continue; break; case 1: printf(*n); printf(按可住人数查询t请输入要查询宿舍的可住人数:); scanf(%d,&m); for(i=0;imax;i+) if(m=dcmi.ke) xs(i); k+; if(k=0) printf(在记录中没有找到这个宿舍!n); continue; break; case 2: printf(*n); printf(按空床数查询t请输入要查询宿舍的空床数:); scanf(%d,&m); for(i=0;imax;i+) if(m=dcmi.empty) xs(i); k+; if(k=0) prin
16、tf(在记录中没有找到这个宿舍!n); continue; break; case 3: printf(*n); printf(按宿舍性质查询t请输入要查询宿舍的性质(0-男,1-女,其他视为错误输入):); scanf(%d,&m); for(i=0;imax;i+) if(m=dcmi.sex) xs(i); k+; if(k=0) printf(在记录中没有找到这个宿舍!n); continue; break; default:printf(非法输入查询条件!请重新输入!n);continue; printf(*n); break; void caidan() printf(n); pr
17、intf(n); 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.退出
18、n); printf( 0.清屏n); printf( *n); printf(请输入对应操作的命令:n); void main() int i,j; FILE *fp; if(fp=fopen(document,wt+)=NULL) printf(nerror!ncant open the file!/n); exit(0); while(1) caidan(); scanf(%d,&i); switch(i) case 1:a();break; case 2:b();break; case 3:c();break; case 4:d();break; case 5:e();break; c
19、ase 6:f();break; case 7:g();break; case 8: for(j=0;jmax;j+) fprintf(fp,宿舍号:%d 可住人数为:%d 已住人数%d 空床数为%d ,dcmj.num,dcmj.ke,dcmj.yi,dcmj.empty); if(dcmj.sex=0) fprintf(fp,宿舍性质: 男宿舍n); else fprintf(fp,宿舍性质: 女宿舍n); break; case 9:fclose(fp);exit(0);break; case 0:system( cls );break; default:printf(输入错误!请重新输入!nn);break;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1