最新c语言学生宿舍管理系统难度系数3级资料.docx
《最新c语言学生宿舍管理系统难度系数3级资料.docx》由会员分享,可在线阅读,更多相关《最新c语言学生宿舍管理系统难度系数3级资料.docx(18页珍藏版)》请在冰豆网上搜索。
最新c语言学生宿舍管理系统难度系数3级资料
C语言:
学生宿舍管理系统
(难度系数:
3级)
(附加清屏操作)
设计一个学生宿舍管理程序。
该程序应该具有以下功能:
(1)录入学生宿舍信息;
(2)修改、删除学生宿舍信息;
(3)统计当前未住学生宿舍的个数并显示宿舍编号;
(4)统计当前空闲的男生、女生床位数;
(5)按宿舍编号由小到大显示已住学生的宿舍信息;
(6)分别显示男生、女生有空床位的宿舍信息;
(7)按宿舍编号、可住人数、空床数、宿舍性质(男生还是女生)等信息进行查询,若查询信息不存在,输出没找到的信息。
题目要求:
(1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序,即在程序中加入异常处理,检查用户输入数据的有效性,以保证程序的健壮性;
(2)宿舍信息应该包括宿舍编号、可住人数、空床数、宿舍性质等;
(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选项选则所需进行的操作项目,菜单要界面友好、清晰;
(4)将所有宿舍信息存储在一个文件中,并实现文件的读写操作,即将输入的数据以文件的形式存盘,将原来已经存盘的文件读入内存,进行管理;
(5)应保证测试用例测试程序的各种边缘情况。
输入要求:
应用程序运行后,在屏幕上显示一个菜单。
用户可以根据需要,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
输出要求:
(1)应用程序运行后,在屏幕上显示一个菜单。
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
代码:
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#include"process.h"
#definemax2//最大容量
//#definek6//每个宿舍最多可住人数
typedefstructnode{
intnum;
intke;
intempty;
intyi;
intsex;//1-女0-男
//structnode*next;
}doc;//宿舍信息应该包括宿舍编号、可住人数、空床数、宿舍性质等;
//intq=0;//已入住的房间数-1
docdcm[max];
voida()//1.录入学生宿舍信息
{
intq;
printf("\n\n\t现在执行录入学生宿舍信息\n");
for(q=0;q//printf("请输入要录入的宿舍个数:
\n");
//scanf("%d",&j);
//while(j<=0)
//{
//printf("输入错误!
请重新输入:
");
//scanf("%d",&j);
//}
//else
//while(j>0)
{
printf("请输入该宿舍的宿舍号:
\n");
scanf("%d",&dcm[q].num);
printf("请输入该宿舍的最大住人数:
\n");
scanf("%d",&dcm[q].ke);
printf("请输入该宿舍的已住人数:
\n");
scanf("%d",&dcm[q].yi);
while(dcm[q].yi>dcm[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;j{
printf("宿舍号为:
%d可住人数为:
%d空床数为%d",dcm[j].num,dcm[j].ke,dcm[j].empty);
if(dcm[j].sex==0)
printf("宿舍性质:
男宿舍\n");
else
printf("宿舍性质:
女宿舍\n");
}
}
voidxs(intj)
{
printf("宿舍号为:
%d可住人数:
%d空床数%d\n",dcm[j].num,dcm[j].ke,dcm[j].empty);
if(dcm[j].sex==0)
printf("宿舍性质:
男宿舍\n");
else
printf("宿舍性质:
女宿舍\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;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;i{
if(h==dcm[i].num)
k=i+1;
}
if(k==0)
{
printf("在记录中没有找到这个宿舍!
\n");
continue;
}
for(i=k-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;jif(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;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;jfor(i=j;i{
if(dcm[j].num>dcm[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;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;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;i{
if(m==dcm[i].num)
{
xs(i);
k++;
}
}
if(k==0)
{
printf("在记录中没有找到这个宿舍!
\n");
continue;
}
break;}
case1:
{printf("****************************************\n");
printf("按可住人数查询\t请输入要查询宿舍的可住人数:
");
scanf("%d",&m);
for(i=0;i{
if(m==dcm[i].ke)
{
xs(i);
k++;
}
}
if(k==0)
{
printf("在记录中没有找到这个宿舍!
\n");
continue;
}
break;}
case2:
{printf("****************************************\n");
printf("按空床数查询\t请输入要查询宿舍的空床数:
");
scanf("%d",&m);
for(i=0;i{
if(m==dcm[i].empty)
{
xs(i);
k++;
}
}
if(k==0)
{
printf("在记录中没有找到这个宿舍!
\n");
continue;
}
break;}
case3:
{printf("****************************************\n");
printf("按宿舍性质查询\t请输入要查询宿舍的性质(0-男,1-女,其他视为错误输入):
");
scanf("%d",&m);
for(i=0;i{
if(m==dcm[i].sex)
{
xs(i);
k++;
}
}
if(k==0)
{
printf("在记录中没有找到这个宿舍!
\n");
continue;
}
break;}
default:
printf("非法输入查询条件!
请重新输入!
\n");continue;
}
printf("****************************************\n");
break;
}
}
voidcaidan()
{
printf("\n");
printf("\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.退出\n");
printf("0.清屏\n");
printf("****************************************\n");
printf("请输入对应操作的命令:
\n");
}
voidmain()
{
inti,j;
FILE*fp;
if((fp=fopen("document","wt+"))==NULL)
{
printf("\nerror!
\ncan'topenthefile!
/n");
exit(0);
}
while
(1)
{caidan();
scanf("%d",&i);
switch(i)
{
case1:
a();break;
case2:
b();break;
营销调研课题case3:
c();break;
但这些困难并非能够否定我们创业项目的可行性。
盖茨是由一个普通退学学生变成了世界首富,李嘉诚是由一个穷人变成了华人富豪第一人,他们的成功表述一个简单的道理:
如果你有能力,你可以从身无分文变成超级富豪;如果你无能,你也可以从超级富豪变成穷光蛋。
case4:
d();break;
1.www。
cer。
net/artide/2004021313098897。
shtml。
case5:
e();break;
年轻有活力是我们最大的本钱。
我们这个自己动手做的小店,就应该与时尚打交道,要有独特的新颖性,这正是我们年轻女孩的优势。
case6:
f();break;
附件
(二):
调查问卷设计case7:
g();break;
秘诀:
好市口+个性经营case8:
1、现代文化对大学生饰品消费的影响for(j=0;j{
据调查统计在对大学生进行店铺经营风格所考虑的因素问题调查中,发现有50%人选择了价格便宜些,有28%人选择服务热情些,有30%人选择店面装潢有个性,只有14%人选择新颖多样。
如图(1-5)所示fprintf(fp,"宿舍号:
%d可住人数为:
%d已住人数%d空床数为%d",dcm[j].num,dcm[j].ke,dcm[j].yi,dcm[j].empty);
if(dcm[j].sex==0)
fprintf(fp,"宿舍性质:
男宿舍\n");
据上述部分的分析可见,我校学生就达4000多人。
附近还有两所学校,和一些居民楼。
随着生活水平的逐渐提高,家长给孩子的零用钱也越来越多,人们对美的要求也越来越高,特别是大学生。
他们总希望自己的无论是衣服还是首饰都希望与众不同,能穿出自己的个性。
但在我们美丽的校园里缺少自己的个性和琳琅满目的饰品,所以我们的小饰品店存在的竞争力主要是南桥或是市区的。
这给我们小组的创业项目提供了一个很好的市场机会。
else
fprintf(fp,"宿舍性质:
女宿舍\n");
}break;
case9:
fclose(fp);exit(0);break;
2、Google网站www。
people。
com。
cncase0:
system("cls");break;
default:
printf("输入错误!
请重新输入!
\n\n");break;
}
}
}