学生宿舍管理系统.docx
- 文档编号:3188961
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:14
- 大小:88.90KB
学生宿舍管理系统.docx
《学生宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《学生宿舍管理系统.docx(14页珍藏版)》请在冰点文库上搜索。
学生宿舍管理系统
课程设计
学号
班级
姓名
指导教师
2007年9月16日
课程设计任务书
一、课程设计题目:
学生宿舍管理系统
二、课程设计工作自2007年09月11日起至2007年09月16日止
三、课程设计内容:
学生宿舍管理系统(200604021160)
该系统具有如下功能:
(1)添加学生入某宿舍手续
(2)查询某宿舍现有学生
(3)办理学生退某宿舍手续
学生的记录信息要保存在磁盘文件中(记录结构至少应该包括以下四项:
学号,姓名、班级、宿舍号)。
四、课程设计要求:
程序质量:
◆贯彻结构化程序设计思想。
◆用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
◆代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计结束后上交课程设计说明书,课程设计说明书的内容及格式参见所给的模板。
指导教师:
学生签名:
五、说明书成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段6
四、个人总结11
五、参考文献12
六、源程序12
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:
建立学生信息链表函数creat,输出学生信息函数print,查询宿舍学生信息函数find以及删除学生信息函数del,添加学生信息函数insert。
在这些函数当中,前四个函数的实现严格按照题目的要求,而后面的两个函数属于附加功能。
1、建立学生信息链表函数creat主要实现程序最初运行时建立学生信息文件
2、输出学生信息函数print实现输出学生信息功能
3、查询宿舍学生信息函数find允许按照宿舍号对学生的信息进行查询
4、删除学生信息函数del实现的是删除学生记录信息。
5、添加学生信息函数insert实现的是添加新的学生信息
每一个学生记录都包含学号、姓名,宿舍号,班级,在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入c:
\\book.dat文件中,其他函数每次对学生记录的访问,其数据来源都是book.dat文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序流程图
1.程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)建立学生信息链表函数creat
图2建立学生信息链表函数creat
(2)输出学生信息函数print
图3输出学生信息函数print
(3)查询宿舍学生信息函数find
图4查询宿舍学生信息函数find
(4)删除学生信息函数del
图5删除学生信息函数del
(5)添加学生信息函数insert
图6添加学生信息函数insert
三、核心技术的实现说明及相应程序段
本程序主要由5个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,添加数据函数、删除数据函数和输出函数、查询函数是程序中较为核心的部分,下面分别进行说明。
1、输出学生信息函数print该函数的核心内容是实现打印出学生信息。
voidprint(structstudent*head)
{structstudent*p;
printf("\ngongyou%dtiaojilu:
\n",n);
p=head;
puts("\t\bnum\tname\t\t\b\bsushe\t\b\bbanji");
do
{
printf("\t\b%ld\t%s\t\t\b\b%ld\t\b\b%s\n",p->num,p->name,p->sushe,p->banji);
p=p->next;}while(p!
=NULL);
}
2、查询宿舍学生信息函数find
该函数的核心内容是查找学生信息。
该函数执行时,输入宿舍号后,查询该宿舍所有学生信息
structstudent*find(structstudent*head,longsushe)
{structstudent*p1;
if(head==NULL){printf("wuyaozhaodejilu");gotoend;}
printf("\t\bnum\tname\t\t\b\bsushe\t\b\bbanji\n");
for(p1=head;p1!
=NULL;p1=p1->next)
{if(sushe!
=p1->sushe)
continue;printf("\t\b%ld\t%s\t\t\b\b%ld\t\b\b%s\n",p1->num,p1->name,p1->sushe,p1->banji);};
printf("shurujinxingdecaozuo:
1.shanchu2.tianjia3.chaxun4.tuichu\n");
end:
return(head);
}
3、删除学生信息函数del
该函数的核心内容是删除学生信息。
该函数执行时,输入学号后就能删除。
直到输入学号为0跳出该函数。
structstudent*del(structstudent*head,longnum)
{structstudent*p1,*p2;
if(head==NULL){printf("\kongbiao\n");gotoend;}
p1=head;
while(num!
=p1->num&&p1->next!
=NULL)
{p2=p1;p1=p1->next;}
if(num==p1->num)
{if(p1==head)head=p1->next;
elsep2->next=p1->next;
printf("shanchu:
%ldhaojilu!
\n",num);
n=n-1;
}
elseprintf("wucijilu\n");
end:
return(head);
}
4.添加学生信息函数insert该函数的核心功能时添加学生信息。
该函数执行时,输入学生信息,就能插入到链表中。
直到输入学号为0跳出该函数。
structstudent*insert(structstudent*head,structstudent*stud)
{structstudent*p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{while((p0->num>p1->num)&&(p1->next!
=NULL))
{p2=p1;
p1=p1->next;}
if(p0->num<=p1->num)
{if(head==p1)head=p0;
elsep2->next=p0;
p0->next=p1;}
else
{p1->next=p0;p0->next=NULL;}
}
n=n+1;
return(head);
}
四、个人总结
通过这次课程设计,使我增加了c语言学习的兴趣。
期间我与阅读了许多资料,上网查阅了大量的源程序,这不仅使我的见识大长,还给了我很大的信心,让我在以后的学习中更有兴趣和动力。
总之c语言课设是一件即提高人的知识又锻炼人的意志的事情。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include
#include
#include
#defineLENsizeof(structstudent)
FILE*fp;
structstudent
{longnum;
charname[10];
longsushe;
charbanji[10];
structstudent*next;};
intn;
structstudent*creat(void)
{structstudent*p1,*p2;
structstudent*head;
n=0;
fp=fopen("c:
\\book,dat","wr");
p1=p2=(structstudent*)malloc(LEN);
scanf("%ld%s%ld%s",&p1->num,&p1->name,&p1->sushe,&p1->banji);
fprintf(fp,"%ld%s%ld%s",p1->num,p1->name,p1->sushe,p1->banji);
head=NULL;
while(p1->num!
=0)
{n=n+1;
if(n==1)head=p1;
elsep2->next=p1;
p2=p1;
p1=(structstudent*)malloc(LEN);
scanf("%ld%s%ld%s",&p1->num,&p1->name,&p1->sushe,&p1->banji);
fprintf(fp,"%ld%s%ld%s",p1->num,p1->name,p1->sushe,p1->banji);
}
p2->next=NULL;
fclose(fp);
return(head);
}
voidprint(structstudent*head)
{structstudent*p;
printf("\ngongyou%dtiaojilu:
\n",n);
p=head;
puts("\t\bnum\tname\t\t\b\bsushe\t\b\bbanji");
do
{
printf("\t\b%ld\t%s\t\t\b\b%ld\t\b\b%s\n",p->num,p->name,p->sushe,p->banji);
p=p->next;}while(p!
=NULL);
}
structstudent*find(structstudent*head,longsushe)
{structstudent*p1;
if(head==NULL){printf("wuyaozhaodejilu");gotoend;}
printf("\t\bnum\tname\t\t\b\bsushe\t\b\bbanji\n");
for(p1=head;p1!
=NULL;p1=p1->next)
{if(sushe!
=p1->sushe)
continue;printf("\t\b%ld\t%s\t\t\b\b%ld\t\b\b%s\n",p1->num,p1->name,p1->sushe,p1->banji);};
printf("shurujinxingdecaozuo:
1.shanchu2.tianjia3.chaxun4.tuichu\n");
end:
return(head);
}
structstudent*del(structstudent*head,longnum)
{structstudent*p1,*p2;
if(head==NULL){printf("\kongbiao\n");gotoend;}
p1=head;
while(num!
=p1->num&&p1->next!
=NULL)
{p2=p1;p1=p1->next;}
if(num==p1->num)
{if(p1==head)head=p1->next;
elsep2->next=p1->next;
printf("shanchu:
%ldhaojilu!
\n",num);
n=n-1;
}
elseprintf("wucijilu\n");
end:
return(head);
}
structstudent*insert(structstudent*head,structstudent*stud)
{structstudent*p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{while((p0->num>p1->num)&&(p1->next!
=NULL))
{p2=p1;
p1=p1->next;}
if(p0->num<=p1->num)
{if(head==p1)head=p0;
elsep2->next=p0;
p0->next=p1;}
else
{p1->next=p0;p0->next=NULL;}
}
n=n+1;
return(head);
}
voidmain()
{
inta;
structstudent*head,*stu;
longdel_num,find_sushe;
printf("\t\t\txueshengsusheguanlixitong\n");
printf("\t\t***********************************\n");
printf("\t\t*1.shanchu2.tianjia*\n");
printf("\t\t*3.chaxun4.tuichu*\n");
printf("\t\t***********************************\n");
printf("shuruxueshengjilu:
\n");
puts("numnamesushebanji\n");
head=creat();
print(head);
printf("shurujinxingdecaozuo:
1.shanchu2.tianjia3.chaxun4.tuichu\n");
scanf("%d",&a);
while(a!
=0)
{switch(a)
{
case1:
{printf("shurushanchudexuehao:
\n");
scanf("%ld",&del_num);
while(del_num!
=0)
{
head=del(head,del_num);
print(head);
printf("shurushanchudexuehao:
\n");
scanf("%ld",&del_num);
printf("shurujinxingdecaozuo:
1.shanchu2.tianjia3.chaxun4.tuichu\n");
break;}
break;
}
case2:
{
printf("\nshuruyaotianjiadejilu:
");
stu=(structstudent*)malloc(LEN);
puts("numnamesushebanji");
scanf("%ld%s%ld%s",&stu->num,&stu->name,&stu->sushe,&stu->banji);
while(stu->num!
=0)
{head=insert(head,stu);
print(head);
printf("\nshuruyaotianjiadejilu:
");
stu=(structstudent*)malloc(LEN);
puts("numnamesushebanji\n");
scanf("%ld%s%ld%s",&stu->num,&stu->name,&stu->sushe,&stu->banji);
printf("shurujinxingdecaozuo:
1.shanchu2.tianjia3.chaxun4.tuichu\n");
break;}
break;
}
case3:
{
printf("\nshuruchaxundesushehao\n");
scanf("%ld",&find_sushe);
head=find(head,find_sushe);
break;
}
default:
gotoQ;
}
scanf("%d",&a);}
Q:
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生宿舍 管理 系统