版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C语言实现学生宿舍管理系统本文实例为大家分享了C语言实现学生宿舍管理系统的具体代码,供大家参考,具体内容如下
实现简单的学生宿舍基本信息管理,宿舍的基本信息包括楼号、房间号、面积、所容纳人数、已入住人数等,系统以文本菜单形式工作。
登录时:用户名为asd密码任意
#includestdio.h
#includestdlib.h
#includestring.h
#includeconio.h
#includectype.h
#includemalloc.h
#includewindows.h
#defineNsizeof(structStudent)
typedefstructStudent
intbuildnum;
//宿舍楼栋号
introomnum;
//房间号
intbrnum;
//宿舍楼栋号+房间号
floatarea;
//宿舍房间面积
intrnanum;
//所容纳人数
charxy[100];
//学院
intbj;
//班级
intnum;
//学号
charname[20];//姓名
charsex[10];
//性别
intdate;
//日期
structStudent*next;
}Stu,*stu;
inta[1000000];//记录寝室入住人数
voidsave_stu(stup);
voidlogin()
system("cls");
system("color
4E");
printf("\n\n\n\n\n\n\n############################~欢迎进入学生宿舍管理系统~##########################\n");
printf("\n\n\n\t\t\t\t
★★★★★");
printf("\n\n\n\n\t\t\t\t\t\tLoading");
for(inti=0;ii++)
{
Sleep(400);
printf(".");
}
system("cls");
charusername[10];
charpassword;
intp=0;
system("color6E");
printf("\n\n\n
==============================欢迎使用=================================\n");
for(inti=0;ii++)
{
printf("\n\n\n\t\t请输入用户名:[
]\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%s",username);
if(strcmp(username,"asd")==0)
{
printf("\t\t请输入密码:
[
]\b\b\b\b\b\b\b\b\b\b\b\b");
while((password=getch())!='\r')//判断是否是回车
{
p++;
if(password==8)//实现backspace键的功能,其中backspace键的ascii码是8
{
putchar('\b');
putchar('');
putchar('\b');
if(p0)
//最多只能删到没有字符
p--;
}
if(!isdigit(password)!isalpha(password))//判断是否是数字或字符
continue;
putchar('*');//在屏幕上打印星号
}
printf("\n\n\n
===============================登陆成功=================================");
Sleep(600);
return;
system("pause");
}
else
{
if(i2)
printf("用户名错误,请重新输入");
else
{
printf("\n
您已连续3次将用户名或密码输错,系统将退出!");
exit(0);
//关闭所有文件,终止正在执行的进程
}
}
}
intmenu_select()
//主菜单选项
{
inta;
do
{
system("cls");
system("color3E");
printf("\n\n\t======================学生宿舍管理系统※※※※※※※※※※※※\n\n");
printf("\t◆◆
1.添加学生信息
◆◆\n\n");
printf("\t◆◆
2.显示学生信息
◆◆\n\n");
printf("\t◆◆
3.对学生信息进行排序
◆◆\n\n");
printf("\t◆◆
4.查找学生信息
◆◆\n\n");
printf("\t◆◆
5.修改学生信息
◆◆\n\n");
printf("\t◆◆
6.删除学生信息
◆◆\n\n");
printf("\t◆◆
0.退出系统
◆◆\n\n");
printf("\t※※※※※※※※※※※※※※※================================\n");
printf("\t请选择您要运行的选项按(0-6):");
scanf("%d",
}while(a0||a
returna;
stuss()
//将文件中的内容读出到链表中,返回值为表头地址
FILE*fp;
//文件指针
intn=0;
stuhead=NULL;
stup1,p,pr=NULL;
fp=fopen("student","ab+");
//以只读的方式打开文件
if(fp==NULL)
{
printf("文件打开失败!\n");
}
else
{
while(!feof(fp))
//判断文件位置标志是否移动到文件末尾
{
n++;
p=(stu)malloc(N);//向内存申请一段空间
fread(p,N,1,fp);
//将fp所指向的文件中的内容赋给p
if(n==1)
{
head=p;
p1=p;
}
else
//创建链表
{
pr=p1;
p1-next=p;
p1=p;
}
}
}
if(pr!=NULL)
pr-next=NULL;
else
head=NULL;
fclose(fp);
//关闭文件
returnhead;
//返回头指针
Student*input(intn)
inti;
stuhead,p,q;
if(n=0)
returnNULL;
p=(stu)malloc(sizeof(Stu));
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号楼栋房间号房间面积容纳数学院
班级
学号
姓名
性别
日期\n");
printf("--------------------------------------------------------------------------------\n");
scanf("%d%d%d%f%d%s%d%d%s%s%d",p-buildnum,p-roomnum,p-brnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date);
a[p-brnum]++;
if(a[p-brnum]==p-rnanum)
printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n");
head=p;
save_stu(p);
for(i=1;ii++)
{
q=(stu)malloc(sizeof(Stu));
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号楼栋房间号房间面积容纳数学院
班级
学号
姓名
性别
日期\n");
printf("--------------------------------------------------------------------------------\n");
scanf("%d%d%d%f%d%s%d%d%s%s%d",q-buildnum,q-roomnum,q-brnum,q-area,q-rnanum,q-xy,q-bj,q-num,q-name,q-sex,q-date);
printf("\n");
a[q-brnum]++;
if(a[q-brnum]==q-rnanum)
{
printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n");
Sleep(300);
}
save_stu(q);
p-next=q;
p=q;
}
p-next=NULL;
returnhead;
voidsave_stu(stup)
//将p中内容写入文件
FILE*fp;
//文件指针
fp=fopen("student","ab");
//以追加的方式打开名字为student的二进制文件
if(fp==NULL)
{
printf("文件打开失败!");
}
if(fwrite(p,N,1,fp)!=1)
//将p所指向的一段大小为N的内容存入fp所指向的文件中
{
printf("写入错误!");
}
fclose(fp);
//关闭文件
voidoutput(stuhead)
//输出学生信息
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号房间面积容纳数学院
班级
学号
姓名
性别
日期
已住人数
\n");
printf("--------------------------------------------------------------------------------\n");
stup,q;
intn=0;
head=ss();
p=head;
if(head==NULL)
{
printf("\n\t\t\t学生信息为空!\n");
}
else
{
for(p=head;p!=NULL;p=p-next)
{
for(q=head;q!=NULL;q=q-next)
{
if(p-brnum==q-brnum)
n++;
}
a[p-brnum]=n;
printf("%3d%5d
%.1f
%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,n);
n=0;
}
}
intsort_menu()
//排序选择菜单
inta;
do
{
system("cls");
printf("\n\n\t\t------------------------------------------------------------\n\n");
printf("\t\t\t▲▲1.按照宿舍房间号排序\n\n");
printf("\t\t\t▲▲2.按照学号排序\n\n");
printf("\t\t\t▲▲0.返回到主菜单\n\n");
printf("\t\t------------------------------------------------------------\n");
printf("\t\t请选择您要运行的选项按(0-2):");
scanf("%d",
}
while(a0||a
returna;
intsort(stuhead,intn)
//排序
FILE*fp;
head=ss();
stup,q;
intbuildnum;
//宿舍楼栋号
introomnum;
//房间号
intbrnum;
//宿舍楼栋号+房间号
floatarea;
//宿舍房间面积
intrnanum;
//所容纳人数
charxy[100];
//学院
intbj;
//班级
intnum;
//学号
charname[20];//姓名
charsex[10];
//性别
intdate;
//日期
switch(n)
{
case1:
system("cls");
for(p=head;p!=NULL;p=p-next)
{
for(q=p-next;q!=NULL;q=q-next)
{
if(p-brnumq-brnum)
{
buildnum=q-buildnum;
roomnum=q-roomnum;
brnum=q-brnum;
area=q-area;
rnanum=q-rnanum;
strcpy(xy,q-
bj=q-
num=q-
strcpy(name,q-name);
strcpy(sex,q-sex);
date=q-date;
q-buildnum=p-buildnum;
q-roomnum=p-roomnum;
q-brnum=p-brnum;
q-area=p-area;
strcpy(q-xy,p-
q-bj=p-
q-num=p-
strcpy(q-name,p-name);
strcpy(q-sex,p-sex);
q-date=p-date;
p-buildnum=buildnum;
p-roomnum=roomnum;
p-brnum=brnum;
p-area=area;
strcpy(p-xy,xy);
p-bj=bj;
p-num=num;
strcpy(p-name,name);
strcpy(p-sex,sex);
p-date=date;
}
}
}
fp=fopen("student","wb");
if(fp==NULL)
{
printf("文件打开失败!");
}
if(fwrite(head,N,1,fp)!=1)
{
printf("写入错误!");
}
fclose(fp);
if(head!=NULL)
{
p=head-next;
fp=fopen("student","ab");
if(fp==NULL)
{
printf("文件打开失败!");
}
while(p!=NULL)
{
if(fwrite(p,N,1,fp)!=1)
{
printf("写入错误!");
}
p=p-next;
}
fclose(fp);
}
output(head);
system("pause");
return1;
case2:
system("cls");
for(p=head;p!=NULL;p=p-next)
{
for(q=p-next;q!=NULL;q=q-next)
{
if(p-numq-num)
{
buildnum=q-buildnum;
roomnum=q-roomnum;
brnum=q-brnum;
area=q-area;
strcpy(xy,q-
bj=q-
num=q-
strcpy(name,q-name);
strcpy(sex,q-sex);
date=q-date;
q-buildnum=p-buildnum;
q-roomnum=p-roomnum;
q-brnum=p-brnum;
q-area=p-area;
strcpy(q-xy,p-
q-bj=p-
q-num=p-
strcpy(q-name,p-name);
strcpy(q-sex,p-sex);
q-date=p-date;
p-buildnum=buildnum;
p-roomnum=roomnum;
p-brnum=brnum;
p-area=area;
strcpy(p-xy,xy);
p-bj=bj;
p-num=num;
strcpy(p-name,name);
strcpy(p-sex,sex);
p-date=date;
}
}
}
fp=fopen("student","wb");
if(fp==NULL)
{
printf("文件打开失败!");
}
if(fwrite(head,N,1,fp)!=1)
{
printf("写入错误!");
}
fclose(fp);
if(head!=NULL)
{
p=head-next;
fp=fopen("student","ab");
if(fp==NULL)
{
printf("文件打开失败!");
}
while(p!=NULL)
{
if(fwrite(p,N,1,fp)!=1)
{
printf("写入错误!");
}
p=p-next;
}
fclose(fp);
}
output(head);
system("pause");
return1;
case0:
system("pause");
return0;
}
intfind_menu()
//查找菜单
inta;
do
{
system("cls");
printf("\n\n\t\t------------------------------------------------------------\n\n");
printf("\t\t\t▲▲1.按照楼栋房间号查找(查找同一寝室人员)\n\n");
printf("\t\t\t▲▲2.按照学院查找(查找同一学院人员)\n\n");
printf("\t\t\t▲▲3.按照班级查找(查找同一班级人员)\n\n");
printf("\t\t\t▲▲4.按照学号查找\n\n");
printf("\t\t\t▲▲5.按照姓名查找\n\n");
printf("\t\t\t▲▲0.返回到主菜单\n\n");
printf("\t\t------------------------------------------------------------\n");
printf("\t\t请选择您要运行的选项按(0-5):");
scanf("%d",
}while(a0||a
returna;
intfind(stuhead,intn)
//查找选择菜单
stup;
head=ss();
switch(n)
{
case1:
system("cls");
intsou;
printf("\n\t\t\t要查找的宿舍房间号为:");
scanf("%d",sou);
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号房间面积容纳数学院
班级
学号
姓名
性别
日期
已住人数
\n");
printf("--------------------------------------------------------------------------------\n");
for(p=head;p!=NULL;p=p-next)
{
if(p-brnum==sou)
printf("%3d%5d
%.1f
%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);
}
system("pause");
return1;
case2:
system("cls");
p=head;
chard[30];
printf("\n\t\t\t要查找的学院为:");
scanf("%s",
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号房间面积容纳数学院
班级
学号
姓名
性别
日期
已住人数
\n");
printf("--------------------------------------------------------------------------------\n");
for(p=head;p!=NULL;p=p-next)
{
if(strcmp(p-xy,d)==0)
printf("%3d%5d
%.1f
%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);
}
system("pause");
return1;
case3:
system("cls");
intcl;
printf("\n\t\t\t要查找的班级为:");
scanf("%d",cl);
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号房间面积容纳数学院
班级
学号
姓名
性别
日期
已住人数
\n");
printf("--------------------------------------------------------------------------------\n");
for(p=head;p!=NULL;p=p-next)
{
if(p-bj==cl)
printf("%3d%5d
%.1f
%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);
}
system("pause");
return1;
case4:
system("cls");
intf;
printf("\n\t\t\t要查找的学号为:");
scanf("%d",
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号房间面积容纳数学院
班级
学号
姓名
性别
日期
已住人数
\n");
printf("--------------------------------------------------------------------------------\n");
for(p=head;p!=NULL;p=p-next)
{
if(p-num==f)
printf("%3d%5d
%.1f
%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);
}
system("pause");
return1;
case5:
system("cls");
charg[20];
printf("\n\t\t\t要查找的姓名为:");
scanf("%s",g);
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号房间面积容纳数学院
班级
学号
姓名
性别
日期
已住人数
\n");
printf("--------------------------------------------------------------------------------\n");
for(p=head;p!=NULL;p=p-next)
{
if(strcmp(p-name,g)==0)
printf("%3d%5d
%.1f
%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);
}
system("pause");
return1;
case0:
system("pause");
return0;
}
intalter(stuhead)
//修改学生信息
FILE*fp;
inty;
printf("\n\t\t\t请输入将要修改的学生的学号:");
scanf("%d",
stup;
head=ss();
p=head;
while(p!=NULL)
{
if(y==p-num)
{
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号房间面积容纳数学院
班级
学号
姓名
性别
日期
已住人数
\n");
printf("--------------------------------------------------------------------------------\n");
printf("%3d%5d
%.1f
%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);
printf("\n\t\t对信息进行修改:\n");
printf("--------------------------------------------------------------------------------\n");
printf("楼栋号房间号宿舍房间号房间面积容纳数学院
班级
学号
姓名
性别
日期\n");
printf("--------------------------------------------------------------------------------\n");
scanf("%d%d%d%f%d%s%d%d%s%s%d",p-buildnum,p-roomnum,p-brnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date);
a[p-brnum]++;
if(a[p-brnum]==p-rnanum)
printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n");
printf("\n");
}
p=p-next;
}
fp=fopen("student","wb");
//以只写的方式打开名为student的二进制文件,打开的同时清空文件中的内容
if(fp==NULL)
{
printf("文件打开失败!");
}
if(fwrite(head,N,1,fp)!=1)
//将head写入fp所指向的文件中
{
printf("写入错误!");
}
fclose(fp);
//关闭文件
if(head!=NULL)
//如果head不为空
{
p=head-next;
//让p指向第二个结点
fp=fopen("student","ab");
//以追加的方式打开文件
if(fp==NULL)
{
printf("文件打开失败!");
}
while(p!=NULL)
{
if(fwrite(p,N,1,fp)!=1)//将p写入fp所指向的文件中
{
printf("写入错误!");
}
p=p-next;
}
fclose(fp);
}
Sleep(500);
}
intdel_menu()
inta;
do
{
system("cls");
printf("\n\n\t\t------------------------------------------------------------\n\n");
printf("\t\t\t▲▲1.删除某个学生信息\n\n");
printf("\t\t\t▲▲2.删除全部学生信息\n\n");
printf("\t\t\t▲▲0.返回到主菜单\n\n");
printf("\t\t------------------------------------------------------------\n");
printf("\t\t请选择您要运行的选项按(0-2):");
scanf("%d",
}
while(a0||a
returna;
intdel(stuhead,intg)
//删除学生信息
FILE*fp;
stup,q;
head=ss();
p=head;
q=NULL;
switch(g)
{
case1:
system("cls");
intx,y;
printf("\n\t\t\t请输入将要删除学生的学号:");
scanf("%d",
while(p!=NULLp-num!=y)
{
q=p;
p=p-next;
x=p-brnum;
}
if(p!=NULL)
{
if(q==NULL)
{
head=head-next;
}
elseif(p-next!=NULL)
{
q-next=p-next;
}
else
q-next=NULL;
}
free(p);
printf("\n\t\t\t删除成功!\n");
a[x]--;
fp=fopen("student","wb");
if(fp==NULL)
{
printf("文件打开失败!");
}
if(fwrite(head,N,1,fp)!=1)
{
printf("写入错误!");
}
fclose(fp);
if(head!=NULL)
{
p=head-next;
fp=fopen("student","ab");
if(fp==NULL)
{
printf("文件打开失败!");
}
while(p!=NULL)
{
if(fwrite(p,N,1,fp)!=1)
{
printf("写入错误!");
}
p=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026汽车制造市场调研及发展技巧与投资回报预测报告
- 2026中国运动安全预警系统人工智能技术融合应用前景报告
- 2026中国涡流泵市场消费需求变化与用户行为调研报告
- 2026汽车零部件行业竞争格局调研与未来发展展望分析研究报告
- 新版教科版六年级上册科学(课件)第4单元 5机械钟摆
- 2026叶黄素酯原料产地资源分布与采购策略研究报告
- 2026中国消费品零售市场发展趋势及商业模式创新与投资前景预测研究报告
- 2026人工智能技术发展市场潜力分析探讨战略规划投资价值评估
- 2026能源监控设备行业市场应用分析评估发展策略研究
- 工业机器视觉技术与应用 课件 第五章-工业机器视觉目标检测与跟踪
- 医院门诊检验标本采集工作手册
- 西师大版小学二年级上册数学全册教学设计
- 《养老机构智慧消防管理数字化平台建设技术规范》
- 蜘蛛咬伤诊疗规范
- 2026年(煤矿)采煤班组长培训考试题库附答案
- 内蒙古荣达可再生能源发展有限公司建设25kt-a脱硫副产物硫膏、硫渣提纯工业硫磺综合利用项目水土保持报告表
- 辅助生殖控制性卵巢刺激临床应用专家共识(2026版)
- 2025版《首钢集团有限公司职工违规行为处理办法》
- 2026年深度学习及其应用-复旦大学中国大学mooc课后章节答案期末题库试题含答案详解(考试直接用)
- 近五年高考语文高频默写名句TOP50
- 工会婚恋服务工作制度
评论
0/150
提交评论