学生宿舍管理系统.docx
- 文档编号:3333633
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:32
- 大小:250.73KB
学生宿舍管理系统.docx
《学生宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《学生宿舍管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
学生宿舍管理系统
西安郵電學院
C语言课程设计报告
题目:
学生宿舍管理系统
院系名称:
专业名称:
班级:
学生姓名:
学号(8位):
指导教师:
设计起止时间:
一.设计目的
1.通过本课程的设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法;
2.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力;
3.为后续各门计算机课程的学习打下坚实的基础
二.设计内容
宿舍管理系统的功能;
1.能够按照学生学号、姓名、性别以及所在院、系和班级等完成其所在宿舍信息的录入、修改和删除。
2.可按学生学号、姓名、班级、所住宿舍门牌号、床位号添加信息。
3.从多个方面进行查询。
4.依据学号从小到大进行排序。
5.实现住宿学生数目的统计。
6.可显示所有住宿学生的具体信息表。
7.可实现数据以文件的形式保存。
8.从文件读入已存储信息。
9.以菜单方式工作。
10.具有密码功能。
11.运用链表进行该程序系统的设计。
开发工具—VisualC++6.0
运行平台—WindowsXP
性能描述;
程序相对较小,运行速度较快,各功能都可正常运行。
三.概要设计
通过主函数调用其他函数,由菜单函数实现功能的选择
1.功能模块图;
2.各个模块详细的功能描述。
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("************************欢迎登陆学生住宿管理系统*************");
printf("\n\n1学生住宿情况建立\
\n\n2学生住宿情况查询\
\n\n3学生住宿情况修改\
\n\n4学生住宿情况删除\
\n\n5学生住宿情况插入\
\n\n6学生数据统计\
\n\n7按学号进行排序\
\n\n8打印学生住宿情况信息\
\n\n0退出并保存数据");
printf("\n\n请选择0-8");
flushall();
scanf("%d",&i);
switch(i)
{
case1:
head=bulid();break;
case2:
find(head);break;
case3:
gai(head);break;
case4:
shan(head);break;
case5:
insert(head);break;
case6:
count(head);break;
case7:
turn(head);break;
case8:
output(head);break;
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
#include
#include
#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/*结构体定义*/
{
charname[10];
charyuan[10];
charxi[10];
charcla[10];
charnum[10];
charsex;
charlou[5];
charshe[5];
charhao[5];
chartel[15];
structstu*next;
};
structstu*lulu()
{
structstu*p1;
p1=(structstu*)malloc(N);
printf("\n\n请输入学生的姓名\n");
scanf("%s",p1->name);
printf("\n性别\n");
flushall();
scanf("%c",&p1->sex);
printf("\n学号\n");flushall();
scanf("%s",p1->num);
printf("\n所在院\n");
scanf("%s",p1->yuan);
printf("\n所在系\n");
scanf("%s",p1->xi);
printf("\n所在班级\n");
scanf("%s",p1->cla);
printf("\n所在楼号(两位数)\n");
scanf("%s",p1->lou);
printf("\n所在宿舍(三位数)\n");
scanf("%s",p1->she);
printf("\n请输入所在床铺号(一位数)\n");
scanf("%s",p1->hao);
printf("\n宿舍电话\n");
scanf("%s",p1->tel);
return(p1);
}
voidcunchu(structstu*p)/*存储数据*/
{
FILE*fp;
charfile[40];
printf("\n\n请输入要存储数据的文件夹路径:
\n");/*可以任意选择文件路径*/
flushall();
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;
system("cls");
head=p2=(structstu*)malloc(N);/*带头结点的链表*/
do
{
p1=lulu();
p2->next=p1;
p2=p1;
printf("是否继续输入(YorN)");
choice=getch();
}
while(choice=='Y'||choice=='y');
p2->next=NULL;
return(head);
}
structstu*bulid()/*建立新的数据库*/
{
structstu*head;
return(head=creat());
}
structstu*read()/*读取数据*/
{
structstu*p1,*p2,*head;
FILE*fp;
if((fp=fopen("D:
\\student.txt","rt"))==NULL)
{
system("cls");
printf("\n\n提醒:
学生住宿情况数据不存在,按任意键进入主菜单");
flushall();
getchar();
}
else
{
head=p2=(structstu*)malloc(N);
while
(1)
{
p1=(structstu*)malloc(N);
if(fread(p1,N,1,fp)!
=1)break;
p2->next=p1;
p2=p1;
}
p2->next=NULL;
fclose(fp);
}
returnhead;
}
voidsearch_num(structstu*head)/*按学号查询*/
{
charc,num[10];
structstu*p;
while
(1)
{
p=head;
printf("\n请输入要查询的学生学号:
");
flushall();
gets(num);
while(p!
=NULL&&strcmp(p->num,num)!
=0)
p=p->next;
if(p==NULL)
printf("\n对不起,无此学生信息");
elseif(strcmp(p->num,num)==0)
{
printf(L);
printf(M);
}
printf("\n是否继续按学生学号查询(y或n):
");
flushall();
scanf("%c",&c);
if(c=='n')break;
}
}
voidsearch_name(structstu*head)/*按姓名查找*/
{
charc,name[10];
structstu*p;
while
(1)
{
p=head;
printf("\n\n请输入要查找的学生姓名:
");
flushall();
gets(name);
while(p!
=NULL&&strcmp(p->name,name)!
=0)
p=p->next;
if(p==NULL)printf("\n对不起,无此学生信息");
elseif(strcmp(p->name,name)==0)
{
printf(L);
printf(M);
}
printf("\n是否继续按学生姓名查找(y或n):
");/*可以多次查找*/
flushall();
scanf("%c",&c);
if(c=='n')break;
}
}
voidsearch_cla(structstu*head)/*按班级查询*/
{
charcla[10],c;
inti;
structstu*p;
while
(1)
{
i=0;
p=head;
printf("\n请输入要查询的班级:
");
flushall();
gets(cla);
printf("\n%s班住宿情况如下:
",cla);
printf(L);
while(p!
=NULL)
{
if(strcmp(p->cla,cla)==0)
{
printf(M);
i++;
}
p=p->next;
}
if(!
i)printf("\n\n班级输入有误!
!
!
!
");
printf("\n是否继续按班级查询(y或n):
");
flushall();
scanf("%c",&c);
if(c=='n')break;
}
}
voidsearch_stu(structstu*head)/*按宿舍查询*/
{
charc,lou[5],she[5];
inti;
structstu*p;
while
(1)
{
i=0;
p=head;
printf("\n请输入要查询楼号及宿舍号(如13204):
");
flushall();
scanf("%s%s",lou,she);
printf("\n%s楼%s宿舍成员有:
",lou,she);
while(p!
=NULL)
{
if(strcmp(p->she,she)==0&&strcmp(p->lou,lou)==0)
{
printf(L);
printf(M);
i++;
}
p=p->next;
}
if(!
i)printf("\n\n无此宿舍或此宿舍无学生入住!
!
!
!
!
");
printf("\n是否继续按宿舍查询(y或n):
");
flushall();
scanf("%c",&c);
if(c=='n')break;
}
}
voidsearch_tel(structstu*head)/*宿舍电话查询*/
{structstu*p;
charlou[5],she[5],c;
while
(1)
{
p=head;
printf("\n请输入要查询电话的宿舍号(包括楼号)(如13204):
");
flushall();
scanf("%s%s",lou,she);
while(p!
=NULL)
{
if(strcmp(p->lou,lou)==0&&strcmp(p->she,she)==0)break;
p=p->next;
}
if(p==NULL)printf("\n\n对不起,宿舍号输入有误!
!
!
!
");
elseprintf("\n%s",p->tel);
printf("\n是否继续查询宿舍电话(y或n):
");
flushall();
scanf("%c",&c);
if(c=='n')break;
}
}
voidfind(structstu*head)/*查找选择,具有不同的查找选项*/
{
intn;
intc;
structstu*p;
while
(1)
{
system("cls");
p=head;
printf("\n\n*******************欢迎来到学生宿舍信息查询系统************");
printf("\n\n1按照学生学号查询\
\n\n2按照学生姓名查询\
\n\n3按照班级查询\
\n\n4查询宿舍住宿人员\
\n\n5查询宿舍电话\
\n\n0退出信息查询系统\n");
printf("请选择0-5");
flushall();
scanf("%d",&n);
switch(n)
{
case1:
search_num(p);break;
case2:
search_name(p);break;
case3:
search_cla(p);break;
case4:
search_stu(p);break;
case5:
search_tel(p);break;
case0:
break;
}
if(!
n)break;
printf("\n\n是否继续浏览查询系统(y或n):
");
flushall();
scanf("%c",&c);
if(c=='n')break;
}
}
shan(structstu*head)/*删除*/
{
structstu*p,*p1;
inti=0;
charc,num[10];
while
(1)
{
system("cls");
p=head;
p1=p->next;
if(p1==NULL)
printf("\n学生数据为空,无法删除!
!
");
printf("请输入要删除学生的学号:
");
flushall();
scanf("%s",num);
while(p1!
=NULL)
{
if(strcmp(p1->num,num)==0)
{
p->next=p1->next;
i++;
free(p1);
break;
}
p=p1;
p1=p1->next;
}
if(i)printf("\n删除成功!
!
");
elseprintf("\n无此学生信息,无法删除!
!
");
printf("\n是否继续删除(y或n):
");
flushall();
scanf("%c",&c);
if(c=='n')break;
}
}
voidinsert(structstu*head)/*插入*/
{
structstu*p,*p1;
charc;
while
(1)
{
system("cls");
p=head;
p1=lulu();
while(p->next!
=NULL&&strcmp(p->next->num,p1->num)<0)
p=p->next;
if(p!
=NULL&&strcmp(p->num,p1->num)==0)
{
free(p1);
printf("\n\n对不起,已有相同学号的学生!
!
");
}
else
{
p1->next=p->next;
p->next=p1;
printf("\n\n插入成功!
!
");
}
printf("\n\n是否继续插入(y或n):
");
flushall();
scanf("%c",&c);
if(c=='n')break;
}
}
gai(structstu*head)/*修改学生信息*/
{
structstu*p;
charname[10],c;
inti;
while
(1)
{
system("cls");
p=head;
p=p->next;
printf("\n请输入要修改的学生姓名:
");
flushall();
gets(name);
while(p!
=NULL&&strcmp(p->name,name)!
=0)
p=p->next;
if(strcmp(p->name,name)==0)
{
printf("\n要修改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生宿舍 管理 系统