学生宿舍管理系统Word下载.docx
《学生宿舍管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《学生宿舍管理系统Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
1.密码模块
voidinsystem()
第一次进入系统时需设定密码,密码保存将保存在D:
\\luman.txt中,当再进入时需输入该密码方可进入系统。
2.主菜单
main()
显示管理系统的主要功能,包括录入、查询、修改、插入等,供用户选择使用。
3.查询模块
voidfind(structstu*head)
显示查询主菜单,提供不同的查询路径,包括;
voidsearchnum(structstu*head)按学号查询
voidsearchname(structstu*head)按姓名查询
voidsearchcla(structstu*head)按班级查询
voidsearchstu(structstu*head)按宿舍查询
voidsearchtel(structstu*head)按宿舍号查询该宿舍电话
4.修改模块
gai(structstu*head)修改学生信息
5.删除模块
Shan(structstu*head)根据学号删除对应学生信息
6.插入模块
insert(structstu*head)学生信息的插入
7.统计模块
count(structstu*p)数据统计,统计存入学生个数
8.排序模块
turn(structstu*head)按学号进行排序
9.打印报表模块
output(structstu*p)显示所有住宿学生的各项信息
10.保存信息模块
voidcunchu(structstu*p)存储数据到用户指定的文件中
四.详细设计
1.功能函数的调用关系图
2.各功能函数的数据流程图
查询模块
修改模块
删除模块
插入模块
3.重点设计及编码
structstu/*结构体定义*/
{
charname[10];
charyuan[10];
charxi[10];
charcla[10];
charnum[10];
charsex;
charlou[5];
charshe[5];
charhao[5];
chartel[15];
structstu*next;
};
main()/*主函数*/
structstu*head;
inti;
head=NULL;
mima_system();
head=read();
do
{
system("
cls"
);
printf("
************************欢迎登陆学生住宿管理系统*************"
\n\n1学生住宿情况建立\
\n\n2学生住宿情况查询\
\n\n3学生住宿情况修改\
\n\n4学生住宿情况删除\
\n\n5学生住宿情况插入\
\n\n6学生数据统计\
\n\n7按学号进行排序\
\n\n8打印学生住宿情况信息\
\n\n0退出并保存数据"
\n\n请选择0-8"
flushall();
scanf("
%d"
&
i);
switch(i)
case1:
head=bulid();
break;
case2:
find(head);
case3:
gai(head);
case4:
shan(head);
case5:
insert(head);
case6:
count(head);
case7:
turn(head);
case8:
output(head);
case0:
break;
}
}while(i);
cunchu(head);
}
五.测试数据及运行结果
1.正常测试数据和运行结果
1.主菜单;
2.数据的录入;
3.按学号查询;
2.异常测试数据及运行结果
1.没有该学号;
2.不存在的学号提示无法删除;
六.调试情况,设计技巧及体会
1.改进方案
经过两个礼拜的设计制作,从整体上来讲我还是比较满意的,各个模块都达到了预期中的功能,运行也较有效率,条理清晰,结构简明,但在密码模块中没能做到多次重设定,只能始终使用第一次进入系统时设定的密码,并且还没做到多通道分用户进入系统,这些都是需要在进行改进的地方。
2.体会
刚开始接触该课程设计时感觉束手无策不知如何下手,虽然在学习C语言的过程中也曾多次上机练习,但当时写的都是单个的小功能性程序,书写时主要关注于功能的实现,没有一个大体上的框架需要构思。
后来在和老师、同学的交流中,首先先确立了自己该课程设计的主题,就是做一个学生宿舍管理系统,完成对于住宿学生信息的管理,后来用了将近两天的时间进行了该系统的框架设计,包括包含多少个模块,每个模块具体要实现的功能以及各功能模块的调用关系。
在程序的设计中,我首先做了主菜单的设计,以选择的模式罗列出系统的主要功能,继而以此为流程分各个模块进行具体的功能设计,写完每个功能都进行了功能的测试,在保证功能可以实现的情况下,通过主函数调用将各个模块进行整体上的连接并进行第一次修改,再初步运行后找出自己程序的缺陷进行细化,尽量保证系统应用的简便。
在这次课程设计的实训中,我第一次体会到C程序的整体性,并第一次尝试在考虑大局的情况下对各个功能模块进行编写。
编写过程固然是繁复且辛苦的,从研究算法、代码的书写和编码的修改与完善,每一步亲身的体验都对我的影响很大,我开始更加注意细节,更加努力要求自己在编码过程中的绝对认真,尽量保证自己算法的考虑周全和正确性。
在编写的过程中通过与同学的交流和向他人的请教,第一次见识到了VC++6.0的调试功能,这也让我体会到了自己在C语言的学习上还仅仅处于起步阶段,未来的学习道路还很漫长,我需要学习的不仅包含计算机语言本身,还应包含该语言的开发环境的使用,学会如何更好的应用该开发环境修改完善自己的程序。
这次课程设计得到的程序虽然不是最完美的,但却是我尽最大努力去制作的,值得修改完善的地方还有很多,这次实训的结束并不是结束,我还会继续在课下的时间里进行该系统的完善,尽力做到最好,同时非常感谢帮助我的老师和同学,是他们在我遇到坎坷时给予了我极大的帮助才使得我能够顺利完成这次实训
七.参考文献
《C语言程序设计》(王曙燕/主编科学出版社)
《C语言程序设计》(陈刚/主编清华大学出版社)
《数据结构(C语言版)》(黄国瑜叶乃青/主编清华大学出版社)
八.附录:
#include<
stdio.h>
stdlib.h>
string.h>
#defineNsizeof(structstu)
#defineL"
\n\n学号\t姓名\t性别\t院\t系\t班\t楼号\t宿舍号\t床铺号\t宿舍电话"
#defineM"
\n%s\t%s\t%c\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n"
p->
num,p->
name,p->
sex,p->
yuan,p->
xi,p->
cla,p->
lou,p->
she,p->
hao,p->
tel
structstu*lulu()
{
structstu*p1;
p1=(structstu*)malloc(N);
\n\n请输入学生的姓名\n"
%s"
p1->
name);
\n性别\n"
%c"
p1->
sex);
\n学号\n"
flushall();
num);
\n所在院\n"
yuan);
\n所在系\n"
xi);
\n所在班级\n"
cla);
\n所在楼号(两位数)\n"
lou);
\n所在宿舍(三位数)\n"
she);
\n请输入所在床铺号(一位数)\n"
hao);
\n宿舍电话\n"
tel);
return(p1);
voidcunchu(structstu*p)/*存储数据*/
FILE*fp;
charfile[40];
\n\n请输入要存储数据的文件夹路径:
\n"
/*可以任意选择文件路径*/
gets(file);
fp=fopen(file,"
wt"
while(p->
next!
=NULL)
p=p->
next;
fwrite(p,N,1,fp);
fclose(fp);
structstu*creat()/*建立链表*/
intchoice;
structstu*p1,*p2,*head;
head=p2=(structstu*)malloc(N);
/*带头结点的链表*/
do
p1=lulu();
p2->
next=p1;
p2=p1;
是否继续输入(YorN)"
choice=getch();
}
while(choice=='
Y'
||choice=='
y'
next=NULL;
return(head);
structstu*bulid()/*建立新的数据库*/
return(head=creat());
structstu*read()/*读取数据*/
if((fp=fopen("
D:
\\student.txt"
"
rt"
))==NULL)
printf("
\n\n提醒:
学生住宿情况数据不存在,按任意键进入主菜单"
flushall();
getchar();
else
while
(1)
if(fread(p1,N,1,fp)!
=1)break;
returnhead;
voidsearch_num(structstu*head)/*按学号查询*/
charc,num[10];
structstu*p;
p=head;
\n请输入要查询的学生学号:
"
gets(num);
while(p!
=NULL&
&
strcmp(p->
num,num)!
=0)
if(p==NULL)
\n对不起,无此学生信息"
elseif(strcmp(p->
num,num)==0)
printf(L);
printf(M);
\n是否继续按学生学号查询(y或n):
c);
if(c=='
n'
)break;
voidsearch_name(structstu*head)/*按姓名查找*/
charc,name[10];
\n\n请输入要查找的学生姓名:
gets(name);
name,name)!
p=p->
if(p==NULL)printf("
name,name)==0)
{
\n是否继续按学生姓名查找(y或n):
/*可以多次查找*/
voidsearch_cla(structstu*head)/*按班级查询*/
charcla[10],c;
i=0;
\n请输入要查询的班级:
gets(cla);
\n%s班住宿情况如下:
"
cla);
if(strcmp(p->
cla,cla)==0)
i++;
}
if(!
i)printf("
\n\n班级输入有误!
!
\n是否继续按班级查询(y或n):
voidsearch_stu(structstu*head)/*按宿舍查询*/
charc,lou[5],she[5];
\n请输入要查询楼号及宿舍号(如13204):
%s%s"
lou,she);
\n%s楼%s宿舍成员有:
{
she,she)==0&
lou,lou)==0)
\n\n无此宿舍或此宿舍无学生入住!
\n是否继续按宿舍查询(y或n):
voidsearch_tel(structstu*head)/*宿舍电话查询*/
{structstu*p;
charlou[5],she[5],c;
\n请输入要查询电话的宿舍号(包括楼号)(如13204):
lou,lou)==0&
she,she)==0)break;
\n\n对不起,宿舍号输入有误!
elseprintf("
\n%s"
\n是否继续查询宿舍电话(y或n):
voidfind(structstu*head)/*查找选择,具有不同的查找选项*/
intn;
intc;
\n\n*******************欢迎来到学生宿舍信息查询系统************"
\n\n1按照学生学号查询\
\n\n2按照学生姓名查询\
\n\n3按照班级查询\
\n\n4查询宿舍住宿人员\
\n\n5查询宿舍电话\
\n\n0退出信息查询系统\n"
请选择0-5"
n);
switch(n)
search_num(p);
search_name(p);
search_cla(p);
search_stu(p);
search_tel(p);
n)break;
\n\n是否继续浏览查询系统(y或n):
shan(structstu*head)/*删除*/
structstu*p,*p1;
inti=0;
p1=p->
if(p1==NULL)
\n学生数据为空,无法删除!
请输入要删除学生的学号:
num);
while(p1!
if(strcmp(p1->
p->
next=p1->
free(p1);
p=p1;
p1=p1->
if(i)printf("
\n删除成功!
!
\n无此学生信息,无法删除!
\n是否继续删除(y或n):
voidinsert(structstu*head)/*插入*/
charc;
next->
num,p1->
num)<
0)
if(p!
num)==0)
\n\n对不起,已有相同学号的学生!
p1->
next=p->
\n\n插入成功!
\n\n是否继续插入(y或n):
gai(structstu*head)/*修改学生信息*/
charname[10],c;
\n请输入要修改的学生姓名:
\n要修改