1、计算机程序设计基础(C语言)课程设计题目:学生宿舍管理系统设计班 级:计 121学号:120502 120504 120506 120505 姓 名:贾 文 超杨 晓 红张 永 康 陆 秀 和指导教师:刘 喜 梅孙 强范 周 瑜2013年 7月 1日北京信息工程学院信息技术教学与实验中心学生宿舍管理系统设计功能:实现简单的学生宿舍基本信息管理,宿舍的基本信息包括楼号、房间号、面积、所容纳人数、已入住人数等。基本要求:1.设计简单的菜单,能够进行系统功能选择.2.实现信息的录入功能。3。在已有信息的基础上添加新的纪录。4。删除指定房间号的记录.5。修改指定房间号的记录。6。实现信息的浏览功能。7
2、.按房间号查询功能。8。按已入住人数排序功能。1。学生宿舍管理系统概述4 1。1需求分析 4 1.2基本功能 42。学生宿舍管理系统总体设计5 1。1管理流程图5 1。2管理员操作53。模块划分6 1。1第一选择模块6 1。2第二录入模块7 1。3第三添加模块8 1。4第四删除模块8 1.5第五修改模块9 1。6第六浏览模块9 1。7第七查询模块10 1。8第八排序模块114.算法说明115。各函数模块功能11 1.1各自定义函数功能 116。程序测试127。结论141.1对调试中主要问题进行总结148.体会及建议141.1对自己设计进行评价,指出合理和不足之处,提出改进的方案149.学生宿舍
3、管理系统设计参与者14 1。1 小组成员信息141。学生宿舍管理系统概述1。1需求分析高校学生宿舍管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面.对于前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点。旧的手工纪录的宿舍管理方式已经不能适应高速发展的信息化时代,新的宿舍管理系统开发出来之后,学校的现有的宿舍信息管理将有很大的改观,由过去的人工方式转变为计算机方式,由效率低、数据冗余、易产生错误转变为检索迅速、查找方便、可靠性高、存储量大。这些优点能够极大地提高效率,也是学校科学化、正规化管理的重要条
4、件。学生宿舍管理系统对于一个学校来说是必不可少的组成部分。对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的,而且当查找某条记录时,只能靠人工去一条条地查找,这样不但麻烦而且效率非常低.当今社会是飞速进步的世界,计算机化管理正是适应时代的产物。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及。我们针对此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这
5、无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,还具有修改功能,能够快速的查询学校所需的住宿信息.1。2基本功能高校学生宿舍管理系统的开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面,但本课题要实现的是前端应用程序的开发.在设计该系统时,会尽可能地贴近我们学生,便于管理者操作.系统在实现上具有如下功能:1 设计简单的菜单,能够进行系统功能选择。2 实现信息的录入功能.3 在已有信息的基础上添加新的记录。4 删除指定房间号的记录。5 修改指定房间号的记录6 实现信息的浏览功能7 按房间号查询功能8 按已入住人数排序功能
6、2.学生宿舍管理系统总体设计1。1管理流程图对系统可划分为三层流程图:第一层流程图:输入宿舍信息(房间号、楼号、容纳人数、手机号等) 学生宿舍 管理系统第二层流程图: 添加宿舍管理系统记录删除选择操作修改 第三层流程图:房间号对应的宿舍信息 学生宿舍 管理系统选择查询信息原则 按已入住 人数排序 3.模块划分1。1选择功能模块图 输入 插入录入存储 删除 修改主函数数据操作 查询 统计输出信息 排序 显示1。2第二录入模块开始输入宿舍信息p-livenumberp-areap-roomcount2+ count3+count1+ end开始1。3第三添加模块 插入宿 舍信息用sort()函数排
7、序 输入宿 舍信息 将其入栈结束开始1.4第四删除模块输入删除房间号for循环,扫描存储学生信息p-room:roomm!= 删除对应 学生信息 结束1.5第五修改模块开始 输入修改 房间号room for循环,扫描 存储学生信息 p-room; room = != 修改对应 学生信息结束1.6第六浏览模块(与下图1。7类似) 开始1.7第七查询模块 按宿舍 长查询 选择查 询方式 按宿舍号查询 输入要查找 宿舍长姓名开始循环,扫描存储的宿舍信息 输入查找 的宿舍号p-dormitoryleader: dormitoryleaderp-room: room!=!= = =输出宿舍信息输出宿舍信
8、息 结束1.8第八排序模块 开始开始循环,扫描存储信息选出居住人数最小的宿舍与第一个宿舍交换在余下居住人数中选出最少的与第二个宿舍交换以此类推,直至排序完成 结束4。算法说明数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等,利用数组对宿舍的记录进行循环输入输出,利用冒泡法记录进行排序,利用循环查找数组中某个数据,对其进行显示,删除,读入和写入文档等操作.5。各函数模块功能1。1各自定义函数功能1、void insert()(录入系统所需的数据;
9、将录入的数据存储在文件中)2、void seek()(按要求对数据进行查询)3、void modify()(对数据进行更新操作)4、void del()(对数据进行删除操作)5、void save()(对指定数据进行统计并输出)6、void sort()(对指定数据排序并输出)7、void reveal()(对指定数据产生报表输出)8、void menu()(功能目录)6。程序测试显示 请选择菜单编号请输入待增加的宿舍数请输入第1个宿舍的房间号 输入4 1 1316请输入第1个宿舍的宿舍长 请输入第1个宿舍的楼号 请输入第1个宿舍的宿舍面积贾文超 1 40请输入第1个宿舍的房间容纳人数 请输入
10、第1个宿舍的宿舍成员6贾文超/陆秀和/杨晓红/张永康/李正明/伟力请输入第1个宿舍的手机号 请输入第1个宿舍的居住人数13476731421 6录入完毕! 请选择菜单编号 6结果:所有宿舍信息为:房间号 宿舍长 楼号 宿舍面积 房间容纳人数1316贾文超 1 40 6*宿舍成员 手机号 居住人数贾文超/陆秀和/杨晓红/张永康/李正明/伟力 13476731421 6显示 请选择菜单编号输入 2 -1。按房间号查询- -2。按宿舍长查询- -3。退出本菜单-请选择子菜单编号: 1请输入要查询的宿舍的房间号: 1316结果:房间号 宿舍长 楼号 宿舍面积 房间容纳人数1316贾文超 1 40 6*
11、宿舍成员 手机号 居住人数贾文超/陆秀和/杨晓红/张永康/李正明/伟力 13476731421 6显示请选择菜单编号 请输入要修改的宿舍的房间号输入 3 1316 - 请输入新的宿舍面积 1。修改宿舍长 2。修改楼号 3.修改宿舍面积 4。修改房间容纳人数 5。修改宿舍成员 6。修改手机号号码 7.修改居住人数 8。退出本菜单 - 请选择子菜单编号: 3 50请选择子菜单编号: 请选择菜单编号 8 6结果:房间号 宿舍长 楼号 宿舍面积 房间容纳人数1316贾文超 1 50 6*宿舍成员 手机号 居住人数贾文超/陆秀和/杨晓红/张永康/李正明/伟力 13476731421 6 7.总结1.1对
12、调试中主要问题进行总结调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同或定义数组长度不够所造成的。有时候程序中还会出现录入五个数据而只显示四个的情况,这也往往是由于定义的结构体数组长度过低所造成的.像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解决。在调试过程中我遇到最大的问题出现在删除模块。在运用“dormitory。txt”打开文件并对某一数据进行删除后,往往显示会多显示一行数据。这是由于“dormitory。txt”写数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数据总会保留在原文件中。后来我先用“dormitory。tx
13、t打开文件并读取文件中的数据,然后再用“r”打开原文件将删除后的数据重新写入文件,最终检测运行成功.8。体会及建议1.1对自己设计进行评价,指出合理和不足之处,提出改进的方案本程序拥有很多的优点:第一,它具有作为一个宿舍管理系统的各个功能,包括录入信息、添加信息、修改信息、删除信息、查询信息、统计信息六大主要功能。可以方便的进行住宿学生信息的管理.第二,它的各个功能模块在实现时非常方便,例如:录入和添加学生信息可以自己控制录入和添加的人数;统计学生信息可以分学号、班级、专业等进行统计等等。.“万事开头难这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里出现了这样那样的错误一大堆,这
14、主要是由于我对基础知识掌握不扎实所造成的。但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功. 短短的两周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入学习打下扎实的基础。9。学生宿舍管理系统设计参与者1。1小组成员信息 姓名 院系 班级 学号贾文超 信息工程学院机121 120502陆秀和 信息工程学院机121 120506杨晓红 信息工程学院机121120504张永康 信息工程学院机121 120505参考文献:1。软件工程导论第四版 清华大学出版 2。C
15、#开发实战宝典王小科 编著 清华大学出版社3。C开发大全刘丽霞 编著 清华大学出版 4.百度知道 5。C与.net开发网 http:/developer.51cto。com/net/附录:源程序清单include/I/O函数/includestdlib。h/*其它说明/#includestring。h/字符串函数*/#defineBUFLEN 100 /* 缓冲区最大字符数 /#defineLEN 100 /* 房间号和宿舍长最大字符数,实际请更改 */defineN 1000 /* 最大宿舍人数,实际请更改/structapartment/结构体*/char roomLEN+1; / 房间号
16、 */char dormitoryleaderLEN+1; /* 宿舍长 /int dormitory; / 楼号 /char area3; / 宿舍面积 /char holdLEN+1; /* 房间容纳人数 /char member1000; / 宿舍成员 /char telLEN+1; / 手机号号码 /char livenumber30; / 居住人数 /stuN;int k=1,n,m; / 定义全局变量 /void readfile();/* 函数声明 /void seek();void modify();void insert();void del();void reveal();
17、void save();void menu(); int main() while(k)menu();system(pause”);return 0; void help() printf(”n0.欢迎使用宿舍系统帮助!n);printf(”n1.进入系统后,先刷新宿舍信息,再查询;n”);printf(”n2。按照菜单提示键入数字代号;n);printf(”n3.增加宿舍信息后,切记保存按7;n”);printf(n4。谢谢您的使用!n”); void readfile()/ 建立信息 /char p=”dormitory。txt”;FILE fp;int i=0;if (fp=fopen(
18、”dormitory。txt”,”r”)=NULL) printf(Open file %s error! Strike any key to exit!,p);system(”pause”);exit(0);while(fscanf(fp,”s s%ds s %s %s s”,stui。room,stui。dormitoryleader,stui。dormitory,stui.area,stui。hold,stui。member,stui。tel,stui.livenumber)=8)i+;i=i;fclose(fp);n=i;printf(”录入完毕!n); void seek() /*查
19、找/int i,item,flag;char s121; / 以宿舍长和房间号最长长度+1为准 /printf(-n”);printf(”-1.按房间号查询-n);printf(”-2。按宿舍长查询-n”);printf(”-3.退出本菜单-n”);printf(”-n”);while(1)printf(”请选择子菜单编号:”);scanf(d”,item);flag=0;switch(item)case 1:printf(”请输入要查询的宿舍的房间号:n);scanf(”s,s1);for(i=0;in;i+)if(strcmp(stui.room,s1)=0)flag=1;printf(”
20、房间号宿舍长楼号宿舍面积房间容纳人数 n);printf(-n”);printf(”0s %8s %3d %7s 11s n”,stui.room,stui。dormitoryleader,stui。dormitory,stui。area,stui。hold);printf(*n”);printf(” 宿舍成员手机号居住人数n);printf(”-n);printf( %0s 20s %8sn”,stui。member,stui。tel,stui.livenumber);if(flag=0)printf(该房间号不存在!n”); break;case 2:printf(”请输入要查询的宿舍的宿
21、舍长:n”);scanf(”%s”,s1);for(i=0;in;i+)if(strcmp(stui。dormitoryleader,s1)=0)flag=1;printf(房间号宿舍长楼号宿舍面积房间容纳人数 n);printf(”-n);printf(”0s 8s %3d 7s 11s n”,stui.room,stui。dormitoryleader,stui。dormitory,stui。area,stui.hold);printf(”*n”);printf(” 宿舍成员手机号居住人数n);printf(”-n”);printf(” 0s 20s 8sn”,stui.member,st
22、ui.tel,stui.livenumber);if(flag=0)printf(该宿舍长不存在!n); break;case 3:return;default:printf(请在1-3之间选择n); void modify() /修改信息/int i,item,num;char area13,s1LEN+1,s2LEN+1; / 以宿舍长和房间号最长长度+1为准 */printf(”请输入要修改的宿舍的房间号:n”);scanf(”s”,s1);for(i=0;in;i+)if(strcmp(stui。room,s1)=0) /*比较字符串是否相等/num=i;printf(-n);prin
23、tf(”1。修改宿舍长n);printf(2。修改楼号n”);printf(”3。修改宿舍面积n);printf(4。修改房间容纳人数n”);printf(5.修改宿舍成员n);printf(”6.修改手机号号码n”);printf(”7。修改居住人数n”);printf(”8.退出本菜单n”);printf(”-n”);while(1)printf(”请选择子菜单编号:);scanf(”d”,item);switch(item)case 1:printf(”请输入新的宿舍长:n);scanf(”s”,s2);strcpy(stunum。dormitoryleader,s2); break;c
24、ase 2:printf(请输入新的楼号:n”);scanf(”d”,&stunum。dormitory);break;case 3:printf(”请输入新的宿舍面积:n”);scanf(s,area1);strcpy(stunum.area,area1); break;case 4:printf(”请输入新的房间容纳人数:n);scanf(s”,s2);strcpy(stunum.hold,s2); break;case 5:printf(请输入新的宿舍成员:n”);scanf(”s”,s2);strcpy(stunum。member,s2); break;case 6:printf(”请
25、输入新的手机号号码:n);scanf(”s,s2);strcpy(stunum。tel,s2); break;case 7:printf(”请输入新的居住人数:n);scanf(”%s,s2);strcpy(stunum。livenumber,s2); break;case 8:return;default:printf(请在1-8之间选择n”); void sort()/按居住人数排序*/int i,j,p,q,s;char temp100;for(i=0;i0)strcpy(temp,stuj1。room);strcpy(stuj1.room,stuj。room);strcpy(stuj。
26、room,temp);strcpy(temp,stuj1。dormitoryleader);strcpy(stuj1。dormitoryleader,stuj。dormitoryleader);strcpy(stuj。dormitoryleader,temp);strcpy(temp,stuj1.area);strcpy(stuj1。area,stuj.area);strcpy(stuj。area,temp);strcpy(temp,stuj-1。hold);strcpy(stuj1。hold,stuj。hold);strcpy(stuj.hold,temp);strcpy(temp,stuj
27、-1。member);strcpy(stuj1.member,stuj。member);strcpy(stuj。member,temp);strcpy(temp,stuj-1。tel);strcpy(stuj-1。tel,stuj。tel);strcpy(stuj.tel,temp);strcpy(temp,stuj-1。livenumber);strcpy(stuj-1。livenumber,stuj.livenumber);strcpy(stuj.livenumber,temp); p=stuj-1。dormitory; q=stuj.dormitory; s=q; q=*p; *p=s;
28、 void insert() /*插入函数/int i=n,j,flag;printf(”请输入待增加的宿舍数:n);scanf(”d,m);do flag=1;while(flag)flag=0;printf(请输入第 %d 个宿舍的房间号:n”,i+1);scanf(s”,stui。room);for(j=0;ji;j+)if(strcmp(stui。room,stuj。room)=0)printf(”已有该房间号,请检查后重新录入!n”);flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/printf(”请输入第 d 个宿舍的宿舍长:n,i+1);scanf(”s
29、,stui。dormitoryleader);printf(请输入第 d 个宿舍的楼号:n”,i+1);scanf(”%d”,stui。dormitory);printf(”请输入第 d 个宿舍的宿舍宿舍面积(m2):n,i+1);scanf(”s”,stui.area);printf(请输入第 %d 个宿舍的房间容纳人数:n,i+1);scanf(”s”,stui。hold);printf(请输入第 %d 个宿舍的宿舍成员(注:人员之间加/):n”,i+1);scanf(%s”,stui。member);printf(”请输入第 d 个宿舍的手机号:n”,i+1);scanf(”s”,stu
30、i.tel);printf(”请输入第 d 个宿舍的居住人数:n”,i+1);scanf(”s,stui。livenumber);if(flag=0) i=i;i+;while(in+m);n+=m;printf(录入完毕!nn”);sort(); void del()int i,j,flag=0;char s1LEN+1;printf(”请输入要删除宿舍的房间号:n);scanf(”s”,s1);for(i=0;in;i+)if(strcmp(stui.room,s1)=0) flag=1;for(j=i;jn-1;j+)stuj=stuj+1;if(flag=0)printf(该房间号不存
31、在!n);if(flag=1)printf(删除成功,显示结果请选择菜单6n”);n-; void reveal()int i;printf(”所有宿舍的信息为:n”);printf(”房间号宿舍长楼号宿舍面积房间容纳人数 n”);printf(-n”);for(i=0;in;i+) printf(0s 7s %5d 5s 9s n”,stui.room,stui.dormitoryleader,stui。dormitory,stui。area,stui.hold);printf(”*n);printf(宿舍成员手机号居住人数n);printf(”-n”);for(i=0;in;i+) pri
32、ntf(”0s 10s 10sn”,stui。member,stui。tel,stui。livenumber); void save()int i;FILE fp;fp=fopen(”dormitory。txt,”w”); /写入/for(i=0;in;i+)fprintf(fp,”%s s d s s s s sn”,stui。room,stui。dormitoryleader,stui。dormitory,stui。area,stui。hold,stui。member,stui。tel,stui.livenumber);fclose(fp); void menu()/ 界面 */int num;printf(”*宿舍系统功能菜单*
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100