宿舍管理系统软件数据结构课程设计(共17页).doc

上传人:飞****2 文档编号:13514623 上传时间:2022-04-29 格式:DOC 页数:17 大小:360.50KB
返回 下载 相关 举报
宿舍管理系统软件数据结构课程设计(共17页).doc_第1页
第1页 / 共17页
宿舍管理系统软件数据结构课程设计(共17页).doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《宿舍管理系统软件数据结构课程设计(共17页).doc》由会员分享,可在线阅读,更多相关《宿舍管理系统软件数据结构课程设计(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上一、题目名称:宿舍管理查询软件二、设计目的:进一步掌握和利用C语言进行课程设计的能力,理解和运用结构化程设计的思想和方法,熟练掌握条件语句、循环、数组、函数操作,初步掌握开发一个小型实用系统的基本方法,学会高度一个较长程序的基本方法和利用流程图或N-S图表示算法,将本课程所学的知识合理地运用于实践当中。了解一些书上没有的函数及使用方法。三、设计分析:1、需求分析为了实现提高高校宿舍管理部门的工作效率,充分利用资源,减少不必要的人力、物力和财力的支出,方便宿舍管理部门的工作人员全面地掌握学生住宿情况等目的,为宿舍管理部门开发设计专用系统学生宿舍信息管理系统来进行管理学生

2、宿舍信息,使学生宿舍信息实现标准化的管理和规范化的制度是十分必要的。2、经济可行性分析如今是信息化时代,信息化管理可以使学生宿舍管理更加系统化,全面化,快速化,这样可以为学校带来高效的工作效益和经济效益,开发出本系统可以减少宿舍管理人员人数,而且管理方便,各功能实现迅速,数据有效的管理。这些效益和管理上的便捷远远超过了开发本系统的成本,所以在经济上具有完全的可行性。四、总体设计:根据系统要求,即本系统具有信息的录入,显示,查找,删除,从文件中读入数据、循环写入数据、结束程序等功能,先设计出详细的系统流程图,然后将源代码输入程序,进行编译调试即可。 程序总体分九个项目:输入记录、显示记录、按房间

3、号排序并显示、按学号排序并显示、插入一条记录并按学号排序并显示、按姓名查找、删除一条记录、查找并显示一个记录、从文件中读入数据、循环写入数据以及结束程序。五、详细设计:1、系统流程图如图5-1所示开始输出界面选择操作选择1选择2选择3选择4选择5选择6选择7选择8选择9选择0输入记录是是显示记录否否否否否否否否否退出系统结束按床位排序显示按学号排序显示是是是是插入一个记录查找删除记录查找显示记录从文件输入写入文件保存是是是是否图5-1 系统流程图2、根据流程图,将程序源代码输入到编译环境中,按照提示选择进行记录的输入,输入一个数据后提示是否继续输入,直到结束程序为止。输入主菜单如下:输出(tt

4、学生宿舍管理系统n); 输出(tt 1. 输入记录 n);输出(tt 2. 显示记录 n);输出(tt 4. 按学号排序并显示 n);输出(tt 5. 插入一条记录按学号排序并显示 n);输出(tt 6. 按姓名查找,删除一条记录 n);输出(tt 7 查找并显示一个记录 n);输出(tt 8. 从文件中读入数据 n);输出(tt 9. 循环写入数据 n);输出(tt 0. 结束程序 n);输出(ttn);输出(tt请选择您要运行的选项按(0-9):);将程序编译生成“学生宿舍管理系统.exe”。运行该文件如图5-2所示。图5-2 输出界面图输入记录采用循环输入while(sign!=n&si

5、gn!=N) 输出(tt房间号:); 输入(tt%s&,roomn+i.roomnum);输出(tt床位号:);输入(tt%s,&roomn+i.bednum);输出(tt学号:);输入(tt%s,&roomn+i.num);输出(tt姓名:);输入(tt%s,&roomn+i.name);gets(x); /*清除多余的输入*/输出(tt是否继续输入?(Y/N);输入(tt%c,&sign); i+;返回(n+i);按照提示选择“1”进行记录的输入如图5-3所示:图5-3 输入记录显示图 按房间号排序采用冒泡排序法。 int i,j,*p,*q,s; char t10; for(i=0;in

6、-1;i+) /*冒泡法排序*/for(j=0;j0) 比较(t,roomj+1.roomnum);比较(roomj+1.roomnum,roomj.roomnum);比较(roomj.roomnum,t);比较(t,roomj+1.bednum);比较(roomj+1.bednum,roomj.bednum);比较(roomj.bednum,t);比较(t,roomj+1.num);比较(roomj+1.num,roomj.num);比较(roomj.num,t);比较(t,roomj+1.name);比较(roomj+1.name,roomj.name);比较(roomj.name,t);

7、连续输入多组数据后,按“n”结束输入,提示按任意键继续,按任意键后选择“2”进行记录的显示如图5-4所示。图5-4 按房间号排序并显示图按学号排序采用冒泡排序法比较(t,roomj+1.bednum);比较(roomj+1.bednum,roomj.bednum);比较(roomj.bednum,t);比较(t,roomj+1.num);比较(roomj+1.num,roomj.num);比较(roomj.num,t);比较(t,roomj+1.name);比较(roomj+1.name,roomj.name);比较(roomj.name,t);显示后提示按任意键继续,选择“4”进行按学号排序

8、并显示,如图5-5所示。图5-5 按学号排序显示图插入记录采用交互式输入:输出(tt输入他(她)的姓名:); 输入(tt%s,&s);while(strcmp(roomi.name,s)!=0&in) i+; 如果(i=n)输出(tt对不起没找到该学生!n); return;输出(tt他(她)的房间号:%sn,roomi.roomnum); 输出(tt他(她)的床位号:%sn,roomi.bednum);输出(tt他(她)的学号:%sn,roomi.num);显示后提示按任意键继续,选择“5”按提示步骤插入一条记录,如图5-6所示。图5-6 插入一条记录图六、系统测试将源代码输入至编译环境中,

9、将程序编译连接后生成“学生宿舍管理系统.exe”运行该文件,则显示主菜单:1、输入记录2、显示记录3、按房间号排序并显示4、按学号排序并显示5、插入一条记录并按学号排序显示6、按姓名查找,删除一条记录7、查找并显示一个记录8、从文件中读入数据9、循环写入数据0、结束程序请选择您要运行的选项按(0-9):按照提示选择“1”进行记录的输入,则在主菜单下显示:输入记录房间号:101床位号:1学号:21姓名:xiaoning是否继续输入?(Y/N)-按N结束,按任意键后选择“2”进行记录的显示,则在主菜单下显示:房间号 床位号 学号 姓名101 1 21 xiaoning314 2 12 xiaozh

10、ang203 2 32 xiaoli417 5 41 xiaowang请按任意键继续选择“5”插入一条记录,则在主菜单下显示:学生房间号:513学生床位号:4学生学号:52学生姓名:xiaoguan插入记录成功!房间号 床位号 学号 姓名101 1 21 xiaoning314 2 12 xiaozhang203 2 32 xiaoli417 5 41 xiaowang513 4 52 xiaoguan请按任意键继续七、结论这次课程设计我做的还不是很完善,因为功能不是很多,如果以后有机会完善的话,应该对管理员和用户登录时做进一步完善。学生的信息还不够完整,如学生的宿舍长,系别,一些费用以及学生

11、的成绩等待相关详细信息。如果使次系统再详细些,需添加更多的管理员以及管理员权限,还有学生的更多信息,如果有必要的话,添加一些有关教师的信息,以及教师登录的界面。在这次课程设计的过程中,我们体会到要想开发一个系统软件,不仅需要相当的专业技术知识,还要有严谨缜密的思维能力。只有思想上清晰了,编程才有意义,否则就是白费力气。同时还要善于捕获细小的方面,因为那往往是这个程序的致命因素。这次课程设计培养了我的细心和耐性,更树立了一种科学的态度。附录:源代码#include /*引用库函数*/#include#include#includetypedef struct /*定义结构体数组*/char ro

12、omnum4; /*房间号*/char bednum2; /*床位号*/char num10; /*学号*/char name20; /*姓名*/Student;Student room11000; /*结构体数组变量*/int menu_select() /*菜单函数*/char c;dosystem(cls); /*运行前清屏*/printf(tt学生宿舍管理系统n); /*菜单选择*/printf(tt 1. 输入记录 n);printf(tt 2. 显示记录 n);printf(tt 4. 按学号排序并显示 n);printf(tt 5. 插入一条记录按学号排序并显示 n);print

13、f(tt 6. 按姓名查找,删除一条记录 n);printf(tt 7 查找并显示一个记录 n);printf(tt 8. 从文件中读入数据 n);printf(tt 9. 循环写入数据 n);printf(tt 0. 结束程序 n);printf(ttn);printf(tt请选择您要运行的选项按(0-9):);c=getchar(); /*读入选择*/while(c9);return(c-0); /*返回选择*/int Input(Student room,int n) /*输入若干条记录*/int i=0;char sign,x10; /*x10为清除多余的数据所用*/while(sig

14、n!=n&sign!=N) /*判断*/printf(tt房间号:); /*交互输入*/scanf(tt%s&,roomn+i.roomnum);printf(tt床位号:);scanf(tt%s,&roomn+i.bednum);printf(tt学号:);scanf(tt%s,&roomn+i.num);printf(tt姓名:);scanf(tt%s,&roomn+i.name);gets(x); /*清除多余的输入*/printf(tt是否继续输入?(Y/N);scanf(tt%c,&sign); /*输入判断*/i+;return(n+i);void Display(Student

15、room,int n) /*显示所有记录*/int i;printf(tt-n); /*格式头*/printf(tt房间号 床位号 学号 姓名 n);printf(tt-n);for(i=1;i1&i%10=0) /*每十个暂停*/printf(tt-n);/*格式*/printf(tt);system(pause);printf(tt-n); printf(tt);system(pause);void Sort_by_num(Student room,int n) /*按学号排序*/int i,j,*p,*q,s;char t10;for(i=0;in-1;i+) /*冒泡法排序*/for(

16、j=0;j0)strcpy(t,roomj+1.bednum);strcpy(roomj+1.bednum,roomj.bednum);strcpy(roomj.bednum,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,roomj.name);strcpy(roomj.name,t);void Sort_by_roomnum(Student room,int n) /*按房间号排序*/int i,j,*p

17、,*q,s;char t10;for(i=0;in-1;i+) /*冒泡法排序*/for(j=0;j0)strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);strcpy(t,roomj+1.bednum);strcpy(roomj+1.bednum,roomj.bednum);strcpy(roomj.bednum,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strc

18、py(t,roomj+1.name);strcpy(roomj+1.name,roomj.name);strcpy(roomj.name,t);int Insert_a_record(Student room,int n) /*插入一条记录*/char x100; /*清除多余输入所用*/printf(tt学生房间号:); /*交互式输入*/scanf(tt%s,&roomn.roomnum);printf(tt学生床位号:);scanf(tt%s,&roomn.bednum);printf(tt学生学号:);scanf(tt%s,&roomn.num);printf(tt学生姓名:);sca

19、nf(tt%s,&roomn.name);gets(x);n+;Sort_by_num(room,n); /*调用排序函数*/printf(tt插入记录成功!n); /*返回成功信息*/return(n);int Delete_a_record(Student room,int n) /*按姓名查找,删除一条记录*/char s20;int i=0,j;printf(tt输入他(她)的姓名:); /*交互式问寻*/scanf(%s,s);while(strcmp(roomi.name,s)!=0&in) i+; /*查找判断*/if(i=n)printf(tt对不起没找到该学生!n); /*返

20、回失败信息*/return(n);for(j=i;jn-1;j+) /*删除操作*/strcpy(roomj.roomnum,roomj+1.roomnum);strcpy(roomj.bednum,roomj+1.bednum); strcpy(roomj.num,roomj+1.num);strcpy(roomj.name,roomj+1.name);printf(tt删除记录成功!n); /*返回成功信息*/return(n-1);void Query_a_record(Student room,int n) /*查找并显示一个记录*/char s20;int i=0;printf(tt

21、输入他(她)的姓名:); /*交互式输入*/scanf(tt%s,&s);while(strcmp(roomi.name,s)!=0&in) i+; /*查找判断*/if(i=n)printf(tt对不起没找到该学生!n); /*输入失败信息*/return;printf(tt他(她)的房间号:%sn,roomi.roomnum); /*输出该学生信息*/printf(tt他(她)的床位号:%sn,roomi.bednum);printf(tt他(她)的学号:%sn,roomi.num);int AddfromText(Student room,int n) /*从文件中读入数据*/int i

22、=0,num;FILE *fp; /*定义文件指针*/char filename20; /*定义文件名*/printf(tt输入文件名:);scanf(tt%s,&filename); /*输入文件名*/if(fp=fopen(filename,rb)=NULL) /*打开文件*/printf(tt无法打开该文件n); /*打开失败信息*/printf(tt);system(pause);return(n);fscanf(fp,%d,&num); /*读入总记录量*/while(inum) /*循环读入数据*/ fscanf(fp,%s%s%s%s,roomn+i.roomnum,roomn+

23、i.bednum,roomn+i.num,roomn+i.name);i+;n+=num;fclose(fp); /*关闭文件*/printf(tt读入成功!n);printf(tt);system(pause);return(n);void WritetoText(Student room,int n) /*将所有记录写入文件*/int i=0;FILE *fp; /*定义文件指针*/char filename100; /*定义文件名*/printf(tt循环写入数据n); /*输入文件名*/printf(tt输入文件名:);scanf(tt%s,&filename);if(fp=fopen

24、(filename,w)=NULL) /*打开文件*/printf(tt无法打开该文件n);system(pause);return;fprintf(fp,%dn,n); /*循环写入数据*/while(in)fprintf(fp,%-10s%-10s%-10s%-10sn,roomi.roomnum,roomi.bednum,roomi.num,roomi.name);i+;fclose(fp); /*关闭文件*/printf(写入成功!n); /*返回成功信息*/void main() /*主函数*/int n=0;for(;)switch(menu_select() /*选择判断*/ c

25、ase 1:printf(tt输入记录n); /*输入若干条记录*/n=Input(room1,n);break; case 2: printf(tt显示记录n); /*显示所有记录*/ Display(room1,n); break; case 3: printf(tt按房间号排序并显示n); Sort_by_roomnum(room1,n); /*按房间号排序*/ printf(tt排序成功!n); Display(room1,n); printf(tt); break; case 4: printf(tt按学号排序并显示n); Sort_by_num(room1,n); /*按学号排序*

26、/ printf(ttt排序成功!n); Display(room1,n); printf(tt); break; case 5: printf(tt插入一条记录按学号排序并显示n); n=Insert_a_record(room1,n); /*插入一条记录*/ Display(room1,n); printf(tt); break; case 6: printf(tt按姓名查找,删除一条记录n); n=Delete_a_record(room1,n); /*按姓名查找,删除一条记录*/ printf(tt); system(pause); break; case 7: printf(tt查找

27、并显示一个记录n); Query_a_record(room1,n); /*查找并显示一个记录*/ printf(tt); system(pause); break; case 8: printf(tt从文件中读入数据n); AddfromText(room1,n); /*从文件中读入数据*/ printf(tt); system(pause); break; case 9: printf(tt循环写入数据n); WritetoText(room1,n); /*循环写入数据*/ printf(tt); system(pause); break; case 0: printf(tt谢谢使用,祝您好运,再见!n); /*结束程序*/ printf(tt); system(pause); exit(0);专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁