宿舍管理系统C语言实验报告材料.docx
- 文档编号:13436033
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:30
- 大小:47.44KB
宿舍管理系统C语言实验报告材料.docx
《宿舍管理系统C语言实验报告材料.docx》由会员分享,可在线阅读,更多相关《宿舍管理系统C语言实验报告材料.docx(30页珍藏版)》请在冰点文库上搜索。
宿舍管理系统C语言实验报告材料
C语言程序设计报告
题目:
宿舍管理系统
院系名称:
电子工程学院
专业名称:
计算机科学与技术
班级:
1001
学生姓名:
XXX
学号(8位):
13
指导教师:
XXX
设计起止时间:
2011年6月22日~2011年6月30日
一.设计目的
学生宿舍管理系统对于一个学校来说是必不可少的组成部分。
目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据的高校来说,人工记录是相当麻烦的。
而且当查找某条记录时,由于数据量庞大,还只能靠人工一条条去查找,这样不但麻烦还浪费了许多时间,效率也比较低。
当今社会是飞速进步的而世界,原始的记录方式已经被社会所淘汰,计算机化管理正是适应时代的产物。
信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。
21世纪的今天,信息社会占着主流地位,,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。
故随着宿舍需要管理的信息快速增长,建立一个宿舍管理系统可使宿舍管理人员的管理工作系统化、规范化、自动化,大大提高管理效率。
二.设计内容
1.录入学生信息
2.显示学生信息
3.插入学生信息
4.修改学生信息
5.删除学生信息
6.排序学生信息
7.统计学生信息
8.管理员密码
三.概要设计
1.录入学生信息将信息保存至文件中
2.从文件中读取信息显示出学生信息
3.从文件中读取信息存至单链表中,传递头指针从而修改学生信息,再将修改完成的学生信息保存至文件中
4.从文件中读取信息存至单链表中,传递头指针从然后用冒泡法排序学生信息,再将修改完成的学生信息保存至文件中
5.统计学生信息按照宿舍号、楼层、楼号分别统计出人数
6.管理员进入此系统需输入密码,而学生进入则不需要
1.功能模块图;
2.各个模块详细的功能描述。
1.录入学生信息
录入学生信息将信息保存至文件中
2.显示学生信息
从文件中读取信息显示出学生信息
3.插入学生信息
从文件中读取信息存至单链表中,传递头指针从而插入学生信息,再将修改完成的学生信息保存至文件中
4.修改学生信息
从文件中读取信息存至单链表中,传递头指针从而修改学生信息,再将修改完成的学生信息保存至文件中
5.删除学生信息
从文件中读取信息存至单链表中,传递头指针从而删除学生信息,再将修改完成的学生信息保存至文件中
6.排序学生信息
从文件中读取信息存至单链表中,传递头指针从然后用冒泡法排序学生信息,再将修改完成的学生信息保存至文件中
7.统计学生信息
统计学生信息按照宿舍号、楼层、楼号分别统计出人数
四.测试数据及运行结果
1.正常测试数据和运行结果
要求提供3组正常测试数据和运行结果
排序
查找
2.异常测试数据及运行结果
要求提供2组异常测试数据和运行结果
五.调试情况,设计技巧及体会
1.改进方案
对自己的设计进行评价,指出合理和不足之处,提出改进方案;管理员密码不精致,会被管理员以外的人看到保密性不好。
插入、删除、修改等函数太过繁琐。
2.体会
对设计及调试过程的心得体会:
在这一周多的实习中,让我对C语言有了更深刻的认识,不但复习了原来所学的知识,更对新的知识有了了解。
在调试过程中,通过自己学习,寻求老师、同学的帮助解决了许多不懂的问题。
六.参考文献
C语言程序设计(第二版)
七.附录:
源代码(电子版)
#include
#include
#include
#include
#include
#include
#defineP"学号:
%-8ld姓名:
%-8s班级:
%-10s楼号:
%-3s楼层:
%-3s宿舍号:
%-3s\n",p->num,p->name,p->classes,p->bnum,p->fnum,p->rnum
#defineNsizeof(structstud)
manager();
main();
student();
structstud
{
longnum;
charname[20];
charclasses[20];
charbnum[5];
charfnum[5];
charrnum[5];
structstud*next;
};
structnode
{
charmima[10];
structnode*next;
};
/*********************************************************************************************************/
//录入学生信息
/*********************************************************************************************************/
structstud*input_message()
{
structstud*p1,*p2,*head;
FILE*fp;
fp=fopen("student_message.txt","wt");
head=p2=(structstud*)malloc(N);/*headp2指向头结点*/
printf("请输入学号姓名班级楼号楼层宿舍号(输入0结束)\n");
p1=(structstud*)malloc(N);/*p1指向第一个结点*/
scanf("%ld%s%s%s%s%s",&p1->num,p1->name,p1->classes,p1->bnum,p1->fnum,p1->rnum);
if(p1->num!
=0)
fprintf(fp,"%ld%s%s%s%s%s\n",p1->num,p1->name,p1->classes,p1->bnum,p1->fnum,p1->rnum);
while(p1->num!
=0)
{
p2->next=p1;/*将新结点连接到表尾*/
p2=p1;/*p2指向新的表尾*/
p1=(structstud*)malloc(N);/*p1指向新申请的结点*/
scanf("%ld%s%s%s%s%s",&p1->num,p1->name,p1->classes,p1->bnum,p1->fnum,p1->rnum);
if(p1->num!
=0)
fprintf(fp,"%ld%s%s%s%s%s\n",p1->num,p1->name,p1->classes,p1->bnum,p1->fnum,p1->rnum);
}
fclose(fp);
p2->next=NULL;/*表尾结点next置空*/
free(p1);/*释放无效结点*/
returnhead;
}
/*********************************************************************************************************/
//将文件中的信息存入单链表
/*********************************************************************************************************/
structstud*inread()/*将文件中的信息存入单链表*/
{
structstud*head,*p,*p1;
FILE*fp;
fp=fopen("student_message.txt","rt");
if(fp==NULL)
{
printf("读出文件出错,按任意键退出");
exit
(1);
}
head=(structstud*)malloc(N);
head->next=NULL;
p=head;
while(!
feof(fp))
{
p1=(structstud*)malloc(N);
fscanf(fp,"%ld%s%s%s%s%s\n",&p1->num,p1->name,p1->classes,p1->bnum,p1->fnum,p1->rnum);
p->next=p1;/*连接结点*/
p=p1;
}
p->next=NULL;
fclose(fp);
returnhead;
}
/*********************************************************************************************************/
//显示学生信息
/*********************************************************************************************************/
revise_message()
{
FILE*fp;
structstud*p;
intn=0,a,fsize;
p=(structstud*)malloc(N);
fp=fopen("student_message.txt","rt");
if(fp==NULL)
{
printf("\n打开文件失败!
");
exit
(1);
}
while(!
feof(fp))/*文件未结束执行循环*/
{
a=fileno(fp);
fsize=filelength(a);/*判断文件大小*/
if(fsize==0)
break;
fscanf(fp,"%ld%s%s%s%s%s\n",&p->num,p->name,p->classes,p->bnum,p->fnum,p->rnum);
printf(P);
n=1;
}
fclose(fp);
if(n==0)printf("无记录!
!
!
\n");
}
/*********************************************************************************************************/
//将单链表的信息保存至文件中
/*********************************************************************************************************/
baocun(structstud*p)
{
structstud*p1;
FILE*fp;
fp=fopen("student_message.txt","wt");
if(fp==NULL)
{
printf("写入文件出错,按任意键退出");
exit
(1);
}
for(p1=p->next;p1!
=NULL;p1=p1->next)
fprintf(fp,"%ld%s%s%s%s%s\n",p1->num,p1->name,p1->classes,p1->bnum,p1->fnum,p1->rnum);
fclose(fp);
}
/*********************************************************************************************************/
//查询学生信息
/*********************************************************************************************************/
find_message()
{
longnnum;
inta,b,n,m;
FILE*fp;
structstud*p;
fp=fopen("student_message.txt","rt");
p=(structstud*)malloc(N);
system("cls");
printf("\n\n\n\n");
printf("***********************************\n");
printf("欢迎进入宿舍管理系统\n");
printf("***********************************\n");
printf("\n1.返回上一级\n");
printf("\n1.按学生学号查找\n");
printf("\n2.按学生姓名查找\n");
printf("\n3.按宿舍号查找\n");
printf("\n\n\n");
printf("请选择:
");
scanf("%d",&b);
printf("\n\n\n");
//按学生学生学号
if(b==1)
{
printf("\n请输入要查找的人的学号:
\n");
scanf("%ld",&nnum);
while(!
feof(fp))
{
fscanf(fp,"%ld%s%s%s%s%s\n",&p->num,p->name,p->classes,p->bnum,p->fnum,p->rnum);
if(p->num==nnum)
{
printf(P);
a=1;
}/*标志*/
}
if(a!
=1)printf("\n没有找到此人!
!
!
!
\n");
}
//按学生姓名查找
if(b==2)
{
charnname[20];
printf("\n请输入要查找的人的姓名:
");
scanf("%s",&nname);
while(!
feof(fp))
{
fscanf(fp,"%ld%s%s%s%s%s\n",&p->num,p->name,p->classes,p->bnum,p->fnum,p->rnum);
n=strcmp(p->name,nname);
if(n==0)
{
printf(P);
a=1;}/*标志*/
}
if(a!
=1)printf("\n没有找到此人!
!
!
!
\n");
}
if(b==3)
{
charnrnum[20];
printf("\n请输入要查找的宿舍号:
");
scanf("%s",&nrnum);
while(!
feof(fp))
{
fscanf(fp,"%ld%s%s%s%s%s\n",&p->num,p->name,p->classes,p->bnum,p->fnum,p->rnum);
m=strcmp(p->rnum,nrnum);
if(m==0)
{
printf(P);
a=1;}/*标志*/
}
if(a!
=1)printf("\n没有找到此宿舍!
!
!
!
\n");
}
if(b==0)
manager();
}
/*********************************************************************************************************/
//删除学生信息
/*********************************************************************************************************/
delete_message(structstud*p0)
{
structstud*p;
longnnum;
inta;
p=p0->next;
printf("请输入要删除的人的学号:
");
scanf("%ld",&nnum);
while(p!
=NULL)
{
if(p->num==nnum)
{
p0->next=p->next;/*后续结点接到前面的结点上*/
printf("已删除此人!
!
!
!
");
a=1;/*标志常量*/
}
p0=p;/*推移指针*/
p=p->next;
}
if(a!
=1)
printf("没有找到要删除的人!
!
!
!
");
}
/*********************************************************************************************************/
//插入和修改学生信息
/*********************************************************************************************************/
change_message(structstud*p0)
{
longnnum;
inta,b;
system("cls");
printf("\n\n\n\n");
printf("***********************************\n");
printf("欢迎进入宿舍管理系统\n");
printf("***********************************\n");
printf("\n0.返回上一级\n");
printf("\n1.插入学生信息\n");
printf("\n2.修改学生信息\n");
printf("\n\n\n");
printf("请选择:
");
scanf("%d",&b);
printf("\n\n\n");
if(b==1)
{
structstud*p;
p=(structstud*)malloc(N);
printf("请输入要插入的学号姓名班级楼号楼层宿舍号\n");
scanf("%ld%s%s%s%s%s",&p->num,p->name,p->classes,p->bnum,p->fnum,p->rnum);
p->next=p0->next;/*后续结点连接到新结点后*/
p0->next=p;/*此时新接点处在头的位置*/
}
if(b==2)
{
printf("请输入要修改的人的学号:
");
scanf("%ld",&nnum);
while(p0->next!
=NULL)
{
p0=p0->next;/*指针后移*/
if(p0->num==nnum)
{
printf("请修改此人的姓名班级楼号楼层宿舍号:
");
scanf("%s%s%s%s%s",p0->name,p0->classes,p0->bnum,p0->fnum,p0->rnum);
printf("\n修改成功!
!
!
!
\n");
a=1;
}/*标志*/
}
if(a!
=1)printf("\n没有找到此人!
!
!
!
\n");
}
if(b==0)
manager();
}
/*********************************************************************************************************/
//统计学生信息
/*********************************************************************************************************/
dorm_message()
{
inta,b,m;
FILE*fp;
structstud*p;
fp=fopen("student_message.txt","rt");
p=(structstud*)malloc(N);
a=0;
system("cls");
printf("\n\n\n\n");
printf("***********************************\n");
printf("欢迎进入宿舍管理系统\n");
printf("***********************************\n");
printf("\n0.返回上一级\n");
printf("\n1.输入楼号统计人数\n");
printf("\n2.输入楼层号统计人数\n");
printf("\n3.输入宿舍号统计人数\n");
printf("\n\n\n");
printf("请选择:
");
scanf("%d",&b);
printf("\n\n\n");
//按楼号统计
if(b==1)
{
charnbnum[20];
printf("\n请输入要统计的楼号:
\n");
scanf("%s",&nbnum);
while(!
feof(fp))
{
fscanf(fp,"%ld%s%s%s%s%s\n",&p->num,p->name,p->classes,p->bnum,p->fnum,p->rnum);
m=strcmp(p->bnum,nbnum);
if(m==0)
{
printf(P);
a++;
}
}/*标志*/
printf("\n该楼共有%d人\n",a);
}
//按楼层号统计
if(b==2)
{
charnfnum[20];
printf("\n请输入要统计的楼层号:
\n");
scanf("%s",&nfnum);
while(!
feof(fp))
{
fscanf(fp,"%ld%s%s%s%s%s\n",&p->num,p->name,p->classes,p->bnum,p->fnum,p->rnum);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 宿舍 管理 系统 语言 实验 报告 材料