学生宿舍管理系统设计C语言_第1页
学生宿舍管理系统设计C语言_第2页
学生宿舍管理系统设计C语言_第3页
学生宿舍管理系统设计C语言_第4页
学生宿舍管理系统设计C语言_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机程序设计基础(C语言)课程设计题目:学生宿舍管理系统设计 班级:姓名:指导教师:2023年7月1信息工程学院信息技术教学与实验中心学生宿舍管理系统设计功能:实现简朴的学生宿舍基本信息管理,宿舍的基本信息涉及楼号、房间号、面积、所容纳人数、已入住人数等。基本规定:1.设计简朴的菜单,可以进行系统功能选择。2.实现信息的录入功能。3.在已有信息的基础上添加新的纪录。4.删除指定房间号的记录。5.修改指定房间号的记录。6.实现信息的浏览功能。7.按房间号查询功能。8.按已入住人数排序功能。1.学生宿舍管理系统概述…………41.1需求分析……………………41.2基本功能……………………42.学生宿舍管理系统总体设计……………………51.1管理流程图…………………51.2管理员操作…………………53.模块划分…………61.1第一选择模块………………61.2第二录入模块………………71.3第三添加模块………………81.4第四删除模块………………81.5第五修改模块………………91.6第六浏览模块………………91.7第七查询模块………………101.8第八排序模块………………114.算法说明…………115.各函数模块功能…………………111.1各自定义函数功能…………116.程序测试…………127.结论………………141.1对调试中重要问题进行总结………………148.体会及建议………………………141.1对自己设计进行评价,指出合理和局限性之处,提出改善的方案………149.学生宿舍管理系统设计参与者…………………141.1小组成员信息………………141.学生宿舍管理系统概述1.1需求分析高校学生宿舍管理系统是典型的信息管理系统(MIS),其开发重要涉及后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前端应用程序的开发则规定应用程序能提供强大的数据操纵功能,界面和谐、使用简朴方便等特点。旧的手工纪录的宿舍管理方式已经不能适应高速发展的信息化时代,新的宿舍管理系统开发出来之后,学校的现有的宿舍信息管理将有很大的改观,由过去的人工方式转变为计算机方式,由效率低、数据冗余、易产生错误转变为检索迅速、查找方便、可靠性高、存储量大。这些优点可以极大地提高效率,也是学校科学化、正规化管理的重要条件。学生宿舍管理系统对于一个学校来说是必不可少的组成部分。对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相称麻烦的,并且当查找某条记录时,只能靠人工去一条条地查找,这样不仅麻烦并且效率非常低。当今社会是飞速进步的世界,计算机化管理正是适应时代的产物。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及。我们针对此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相称大,并且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运营速度快、安全性高、稳定性好的优点,还具有修改功能,可以快速的查询学校所需的住宿信息。1.2基本功能高校学生宿舍管理系统的开发重要涉及后台数据库的建立和维护以及前端应用程序的开发两个方面,但本课题要实现的是前端应用程序的开发。在设计该系统时,会尽也许地贴近我们学生,便于管理者操作。系统在实现上具有如下功能:设计简朴的菜单,可以进行系统功能选择。实现信息的录入功能。在已有信息的基础上添加新的记录。删除指定房间号的记录。修改指定房间号的记录实现信息的浏览功能按房间号查询功能按已入住人数排序功能2.学生宿舍管理系统总体设计1.1管理流程图对系统可划分为三层流程图:第一层流程图:输入宿舍信息(房间号输入宿舍信息(房间号、楼号、容纳人数、手机号等)学生宿舍管理系统 第二层流程图:添加添加宿舍管理系统记录宿舍管理系统记录删除选择操作选择操作 修改修改第三层流程图:房间号相应的宿舍信息房间号相应的宿舍信息学生宿舍管理系统选择查询信息原则选择查询信息原则按已入住按已入住人数排序3.模块划分1.1选择功能模块图输入插入插入录入存储录入存储删除删除修改主函数主函数数据操作查询记录输出信息输出信息排序排序显示1.2第二录入模块开始开始输入输入宿舍信息p->livenumberp->areap-p->livenumberp->areap->roomcount2++count2++count3++count1++end开始1.3第三添加模块开始插入宿舍信息用sort()用sort()函数排序输入宿舍信息将其入栈结束结束开始1.4第四删除模块开始输入删输入删除房间号for循环,扫描存储学生信息for循环,扫描存储学生信息p-p->room:roomm != =删除相应学生信息结束结束1.5第五修改模块开始开始输入修改房间号roomfor循环,扫描for循环,扫描存储学生信息p->room;room=!=修改相应学生信息结束结束1.6第六浏览模块(与下图1.7类似)开始开始按宿舍长按宿舍长查询选择查询方式按宿舍号查询输入要查找输入要查找宿舍长姓名开始循环,扫描存储的宿舍信息输入查找的宿舍号p->dormitoryleader:p->dormitoryleader:dormitoryleaderp->room:room != !===输出宿舍信息输出宿舍信息输出宿舍信息输出宿舍信息结束1.8第八排序模块开始开始开始循环,扫描存储信息开始循环,扫描存储信息选出居住人数最小的宿舍与第一个宿舍互换选出居住人数最小的宿舍与第一个宿舍互换在余下居住人数中选出最少的与第二个宿舍互换在余下居住人数中选出最少的与第二个宿舍互换以此类推,直至排序完毕以此类推,直至排序完毕结束4.算法说明数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等,运用数组对宿舍的记录进行循环输入输出,运用冒泡法记录进行排序,运用循环查找数组中某个数据,对其进行显示,删除,读入和写入文档等操作。5.各函数模块功能1.1各自定义函数功能1、voidinsert()(录入系统所需的数据;将录入的数据存储在文献中)2、voidseek()(按规定对数据进行查询)3、voidmodify()(对数据进行更新操作)4、voiddel()(对数据进行删除操作)5、voidsave()(对指定数据进行记录并输出)6、voidsort()(对指定数据排序并输出)7、voidreveal()(对指定数据产生报表输出)8、voidmenu()(功能目录)6.程序测试显示请选择菜单编号请输入待增长的宿舍数请输入第1个宿舍的房间号输入4 11316………………………请输入第1个宿舍的宿舍长请输入第1个宿舍的楼号请输入第1个宿舍的宿舍面积贾文超140…………………………请输入第1个宿舍的房间容纳人数请输入第1个宿舍的宿舍成员6贾文超/陆秀和/杨晓红/张永康/李正明/伟力…………………………请输入第1个宿舍的手机号请输入第1个宿舍的居住人数………………………6………………………录入完毕!请选择菜单编号6…………………………结果:所有宿舍信息为:房间号宿舍长楼号宿舍面积房间容纳人数…………………………1316贾文超1406********************************************************************宿舍成员手机号居住人数…………………………贾文超/陆秀和/杨晓红/张永康/李正明/伟力6显示请选择菜单编号输入2…………………………--------------1.按房间号查询----------------------------2.按宿舍长查询----------------------------3.退出本菜单----------------请选择子菜单编号:1…………………………请输入要查询的宿舍的房间号:1316…………………………结果:房间号宿舍长楼号宿舍面积房间容纳人数…………………………1316贾文超1406********************************************************************宿舍成员手机号居住人数…………………………贾文超/陆秀和/杨晓红/张永康/李正明/伟力6显示请选择菜单编号请输入要修改的宿舍的房间号输入31316………………………------------------------------请输入新的宿舍面积1.修改宿舍长2.修改楼号3.修改宿舍面积4.修改房间容纳人数5.修改宿舍成员6.修改手机号号码7.修改居住人数8.退出本菜单-------------------------------请选择子菜单编号:350…………………………请选择子菜单编号:请选择菜单编号86…………………………结果:房间号宿舍长楼号宿舍面积房间容纳人数…………………………1316贾文超1506********************************************************************宿舍成员手机号居住人数…………………………贾文超/陆秀和/杨晓红/张永康/李正明/伟力67.总结1.1对调试中重要问题进行总结调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同或定义数组长度不够所导致的。有时候程序中还会出现录入五个数据而只显示四个的情况,这也往往是由于定义的结构体数组长度过低所导致的。像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解决。在调试过程中我碰到最大的问题出现在删除模块。在运用“dormitory.txt”打开文献并对某一数据进行删除后,往往显示会多显示一行数据。这是由于“dormitory.txt”写数据时只会覆盖数据而不会清除原文献数据,因此文献最后一行数据总会保存在原文献中。后来我先用“dormitory.txt”打开文献并读取文献中的数据,然后再用“r”打开原文献将删除后的数据重新写入文献,最终检测运营成功。8.体会及建议1.1对自己设计进行评价,指出合理和局限性之处,提出改善的方案本程序拥有很多的优点:第一,它具有作为一个宿舍管理系统的各个功能,涉及录入信息、添加信息、修改信息、删除信息、查询信息、记录信息六大重要功能。可以方便的进行住宿学生信息的管理。第二,它的各个功能模块在实现时非常方便,例如:录入和添加学生信息可以自己控制录入和添加的人数;记录学生信息可以分学号、班级、专业等进行记录等等。。“万事开头难”这句话在我编写程序的过程中得到了真正的体现。在最初编写的几天里出现了这样那样的错误一大堆,这重要是由于我对基础知识掌握不扎实所导致的。但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。短短的两周实习时间我收获颇多,我相信通过这次实习必将为我以后的进一步学习打下扎实的基础。9.学生宿舍管理系统设计参与者1.1小组成员信息姓名院系班级学号贾文超信息工程学院机121120502陆秀和信息工程学院机121120506杨晓红信息工程学院机121120504张永康信息工程学院机121120505参考文献:1.《软件工程导论》第四版清华大学出版2.《C#开发实战宝典》王小科编著清华大学出版社3.《C#开发大全》刘丽霞编著清华大学出版 4.百度知道5.C#与.net开发网附录:源程序清单#include<stdio.h>/*I/O函数*/#include<stdlib.h>/*其它说明*/#include<string.h>/*字符串函数*/#defineBUFLEN100/*缓冲区最大字符数*/#defineLEN100/*房间号和宿舍长最大字符数,实际请更改*/#defineN1000/*最大宿舍人数,实际请更改*/structapartment/*结构体*/{charroom[LEN+1];/*房间号*/chardormitoryleader[LEN+1];/*宿舍长*/intdormitory;/*楼号*/chararea[3];/*宿舍面积*/charhold[LEN+1];/*房间容纳人数*/charmember[1000];/*宿舍成员*/chartel[LEN+1];/*手机号号码*/charlivenumber[30];/*居住人数*/}stu[N];intk=1,n,m;/*定义全局变量*/voidreadfile();/*函数声明*/voidseek();voidmodify();voidinsert();voiddel();voidreveal();voidsave();voidmenu();intmain(){while(k)menu();system("pause");return0;}voidhelp(){printf("\n0.欢迎使用宿舍系统帮助!\n");printf("\n1.进入系统后,先刷新宿舍信息,再查询;\n");printf("\n2.按照菜单提醒键入数字代号;\n");printf("\n3.增长宿舍信息后,牢记保存按7;\n");printf("\n4.谢谢您的使用!\n");}voidreadfile()/*建立信息*/{char*p="dormitory.txt";FILE*fp;inti=0;if((fp=fopen("dormitory.txt","r"))==NULL){printf("Openfile%serror!Strikeanykeytoexit!",p);system("pause");exit(0);}while(fscanf(fp,"%s%s%d%s%s%s%s%s",stu[i].room,stu[i].dormitoryleader,&stu[i].dormitory,stu[i].area,stu[i].hold,stu[i].member,stu[i].tel,stu[i].livenumber)==8){i++;i=i;}fclose(fp);n=i;printf("录入完毕!\n");}voidseek()/*查找*/{inti,item,flag;chars1[21];/*以宿舍长和房间号最长长度+1为准*/printf("------------------\n");printf("-----1.按房间号查询-----\n");printf("-----2.按宿舍长查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){case1:printf("请输入要查询的宿舍的房间号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].room,s1)==0){flag=1;printf("房间号宿舍长楼号宿舍面积房间容纳人数\n");printf("--------------------------------------------------------------------------------\n");printf("%0s%8s%3d%7s%11s\n",stu[i].room,stu[i].dormitoryleader,stu[i].dormitory,stu[i].area,stu[i].hold);printf("********************************************************************************\n");printf("宿舍成员手机号居住人数\n");printf("--------------------------------------------------------------------------------\n");printf("%0s%20s%8s\n",stu[i].member,stu[i].tel,stu[i].livenumber);}if(flag==0)printf("该房间号不存在!\n");break;case2:printf("请输入要查询的宿舍的宿舍长:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].dormitoryleader,s1)==0){flag=1;printf("房间号宿舍长楼号宿舍面积房间容纳人数\n");printf("--------------------------------------------------------------------------------\n");printf("%0s%8s%3d%7s%11s\n",stu[i].room,stu[i].dormitoryleader,stu[i].dormitory,stu[i].area,stu[i].hold);printf("********************************************************************************\n");printf("宿舍成员手机号居住人数\n");printf("--------------------------------------------------------------------------------\n");printf("%0s%20s%8s\n",stu[i].member,stu[i].tel,stu[i].livenumber);}if(flag==0)printf("该宿舍长不存在!\n");break;case3:return;default:printf("请在1-3之间选择\n");}}}voidmodify()/*修改信息*/{inti,item,num;chararea1[3],s1[LEN+1],s2[LEN+1];/*以宿舍长和房间号最长长度+1为准*/printf("请输入要修改的宿舍的房间号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].room,s1)==0)/*比较字符串是否相等*/num=i;printf("------------------\n");printf("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){case1:printf("请输入新的宿舍长:\n");scanf("%s",s2);strcpy(stu[num].dormitoryleader,s2);break;case2:printf("请输入新的楼号:\n");scanf("%d",&stu[num].dormitory);break;case3:printf("请输入新的宿舍面积:\n");scanf("%s",area1);strcpy(stu[num].area,area1);break;case4:printf("请输入新的房间容纳人数:\n");scanf("%s",s2);strcpy(stu[num].hold,s2);break;case5:printf("请输入新的宿舍成员:\n");scanf("%s",s2);strcpy(stu[num].member,s2);break;case6:printf("请输入新的手机号号码:\n");scanf("%s",s2);strcpy(stu[num].tel,s2);break;case7:printf("请输入新的居住人数:\n");scanf("%s",s2);strcpy(stu[num].livenumber,s2);break;case8:return;default:printf("请在1-8之间选择\n");}}}voidsort()/*按居住人数排序*/{inti,j,*p,*q,s;chartemp[100];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].livenumber,stu[j].livenumber)>0){strcpy(temp,stu[j-1].room);strcpy(stu[j-1].room,stu[j].room);strcpy(stu[j].room,temp);strcpy(temp,stu[j-1].dormitoryleader);strcpy(stu[j-1].dormitoryleader,stu[j].dormitoryleader);strcpy(stu[j].dormitoryleader,temp);strcpy(temp,stu[j-1].area);strcpy(stu[j-1].area,stu[j].area);strcpy(stu[j].area,temp);strcpy(temp,stu[j-1].hold);strcpy(stu[j-1].hold,stu[j].hold);strcpy(stu[j].hold,temp);strcpy(temp,stu[j-1].member);strcpy(stu[j-1].member,stu[j].member);strcpy(stu[j].member,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].livenumber);strcpy(stu[j-1].livenumber,stu[j].livenumber);strcpy(stu[j].livenumber,temp);p=&stu[j-1].dormitory;q=&stu[j].dormitory;s=*q;*q=*p;*p=s;}}}voidinsert()/*插入函数*/{inti=n,j,flag;printf("请输入待增长的宿舍数:\n");scanf("%d",&m);do{flag=1;while(flag){flag=0;printf("请输入第%d个宿舍的房间号:\n",i+1);scanf("%s",stu[i].room);for(j=0;j<i;j++)if(strcmp(stu[i].room,stu[j].room)==0){printf("已有该房间号,请检查后重新录入!\n");flag=1;break;/*如有反复立即退出该层循环,提高判断速度*/}}printf("请输入第%d个宿舍的宿舍长:\n",i+1);scanf("%s",stu[i].dormitoryleader);printf("请输入第%d个宿舍的楼号:\n",i+1);scanf("%d",&stu[i].dormitory);printf("请输入第%d个宿舍的宿舍宿舍面积(m^2):\n",i+1);scanf("%s",stu[i].area);printf("请输入第%d个宿舍的房间容纳人数:\n",i+1);scanf("%s",stu[i].hold);printf("请输入第%d个宿舍的宿舍成员(注:人员之间加/):\n",i+1);scanf("%s",stu[i].member);printf("请输入第%d个宿舍的手机号:\n",i+1);scanf("%s",stu[i].tel);printf("请输入第%d个宿舍的居住人数:\n",i+1);scanf("%s",stu[i].livenumber);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");sort();}voiddel(){inti,j,flag=0;chars1[LEN+1];printf("请输入要删除宿舍的房间号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].room,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("该房间号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n");n--;}}voidreveal(){inti;printf("所有宿舍的信息为:\n");printf("房间号宿舍长楼号宿舍面积房间容纳人数\n");printf("-----------------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%0s%7s%5d%5s%9s\n",stu[i].room,stu[i].dormitoryleader,stu[i].dormitory,stu[i].area,stu[i].hold);}printf("***************************************************************************\n");printf("宿舍成员手机号居住人数\n");printf("-------------------------------------------------------------------------------

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论