您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > 宿舍管理系统c语言设计
河南工程学院《数据结构》课程设计成果报告姓名学号学院计算机学院专业班级计算机科学与技术1521专业课程数据结构指导老师李芳2016年6月20日宿舍管理查询系统I河南工程学院计算机学院课程设计报告书课程设计题目:课程设计时间:6月20日~6月24日课程设计地点:计算机学院1201课程设计单位:计算机学院指导教师:李芳学院院长:曲宏山宿舍管理查询系统II本组组长夏少峰本组成员夏少峰、丁宏阁、曲宣榕设计题目宿舍管理查询系统本人分工资料查询,设计思路、算法设计、部分代码编制、代码调试考核项目考核内容得分平时考核(30分)出勤情况、态度、效率、协作精神;知识掌握情况、基本操作技能、知识应用能力、获取知识能力设计思想(20分)需求分析能力,算法分析设计能力编码、调试分析(30分)编制代码能力,调试分析能力文档资料(20分)表达能力、文档写作能力和文档的规范性总评成绩指导教师评语:等级:评阅人:职称:副教授年月日宿舍管理查询系统III目录目录1设计目标...............................................12课题分析...............................................12.1需求分析.............................................12.2存储结构设计.........................................22.3算法设计及其分析.....................................22.4程序流程图..........................................113程序清单..............................................124系统测试..............................................304.1测试数据............................................304.2测试结果............................................315总结..................................................335.1收获................................................335.2不足................................................335.3算法改进分析........................................33宿舍管理查询系统11设计目标随着计算机技术的发展以及网络的发展,对学生宿舍的管理与控制越来越实用并且得到管理者的证实,无论是查询还是修改都有很方便,查询的信息一目了然。这个程序包含了学生宿舍信息的录入、修改,学生楼栋信息的录入、毕业生的退舍、智能分配宿舍等功能,但不能进行删除的操作,总体来说使用简单方便。这个程序应该满足以下几个要求:(1)信息的输入:需要建立起完整的宿舍信息数据库,从而实现通过输入学生入住的楼栋号、宿舍号,该宿舍入住的人数以及入住的学生的信息(包括学生的姓名、学号和系别),来添加学生信息,实现信息录入。(2)信息的修改:进行信息输入后,过一段时间后,想要对里面的信息进行修改,可以通过学号等关键字对其进行修改。(3)信息的查询:这个程序应该可以实现通过按学号或房号进行查找的过程。在此使用的是折半法,查找过程是:先确定待查记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。这样可以缩短查找时间,同时还可以减少查找的次数。(4)退出程序:当完成了所有的操作之后就要进行退出操作了。2课题分析2.1需求分析学生宿舍管理是一个很大的项目,在早期,还没有利用计算机管理时,一切都是利用人工进行管理的,这样管理起来既烦琐又复杂,资料也很容易被丢失,而且耗时、耗资金。而利用本系统,可以高效地对学生宿舍进行统一管理与控制,资料也不容易被丢失,这样大大节省了人力与资源,提高了管理效率,给管理人员带来很多方便,基于以上分析有如下分析:(1)要实现交互工作方式,各项操作结束后均应返回主菜单。(2)系统本无任何信息数据,要建立数据文件,需要开发一个信息录入宿舍管理查询系统2功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,所以我们开发信息存盘功能;(3)信息录入后都要保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查询,所以需要具备按各种关键字显示的功能;(4)由于有些新同学入校,所以设计了插入功能;(5)当用户操作完毕需要退出时,提供了退出选项,便于使用者退出交互式工作系统2.2存储结构设计本系定义的存储结构为顺序存储结构,结构体为typedefstruct{charID[20];//学号charname[20];//姓名chargender[10];//性别chardormitory[4];//宿舍号}Student;typedefstruct{charID[4];//宿舍号intmax_num;//可容纳人数intcurrent_num;//已入住人数chargender[10];//男舍或女舍2.3算法设计及其分析在此系统中,根据对查阅资料的了解,我们对宿舍人员的信息以及各种函数进行了定义,具体如下:(1)将宿舍人员信息定义为一个名字为typedefstruct的结构体,其中包括charID{20},charname[20],cahrgender[10],chardormitory[4]分别表示学号、姓名、性别和宿舍号,将宿舍信息定义为一个名字为typedefstruct的结构体,其中包括charID[4],charmax_num,charcurrent_num,chargender[10],分别是宿舍号、可容纳人数、已入住人数、男舍或者女舍。宿舍管理查询系统3(2)功能函数加上主函数一共有十二个,功能函数包括create(),open(),insert_dorm(),insert_stu(),dormnumsearch(),change(),namesearch(),check_out(),numsearch(),exchange(),display(),main(),分别用新增楼栋,新增宿舍信息,新增学生入住宿舍信息,毕业生退舍,互换宿舍,姓名查询,学号查询,宿舍号查询,互换宿舍,调换宿舍,职能分配宿舍,退出本系统的功能。(3)在主函数中,使用一个while语句来选择调用主菜单中的各个功能函数。由于本人负责新增宿舍楼栋,新增宿舍信息,新增学生宿舍信息的功能,所以操作如下:单击数字键“0”则为新增楼栋信息单击数字键“1”则为新增宿舍信息单击数字键“2”则为新增学生宿舍信息在每次操作前都要输入相应的编号。各功能函数的具体实现如下:voidcreate(){printf(\n请输入新增楼栋名称:\n);scanf(%s,filename);_fp=fopen(filename,rb+);if(_fp==NULL){//如果文件不存在则建立文件否则提示文件已存在_fp=fopen(filename,wb+);fp=fopen(strcat(filename,学生),wb+);if(fp==NULL||_fp==NULL){printf(Filenotopen!\n);exit(-1);}}elseprintf(文件已存在!\n);fclose(fp);fclose(_fp);}宿舍管理查询系统4voidopen(){printf(请输入学生宿舍所在楼栋:\n);scanf(%s,filename);_fp=fopen(filename,rb+);fp=fopen(strcat(filename,学生),rb+);if(fp==NULL||_fp==NULL){printf(Filenotopen!\n);exit(-1);}}voidinsert_dorm(){Dormitory*d=(Dormitory*)malloc(sizeof(Dormitory));open();printf(\n请输入宿舍号,可容纳学生数,已容纳学生数,男舍/女舍(空格隔开,‘#’结束):\n);scanf(%s,d-ID);while(strcmp(d-ID,#)){scanf(%d%d%s,&d-max_num,&d-current_num,d-gender);fwrite(d,sizeof(Dormitory),1,_fp);scanf(%s,d-ID);}fclose(_fp);fclose(fp);}voidinsert_stu(){longlocate,pre_locate;intflag=0;Student*s=(Student*)malloc(sizeof(Student));宿舍管理查询系统5Dormitory*d=(Dormitory*)malloc(sizeof(Dormitory));open();printf(\n请输入学号、姓名、性别、宿舍号(空格隔开,‘#’结束):\n);scanf(%s,s-ID);while(strcmp(s-ID,#)){//不相等继续读取,相等为0便退出循环不再读取数据scanf(%s%s%s,s-name,s-gender,s-dormitory);locate=ftell(_fp);while(fread(d,sizeof(Dormitory),1,_fp)){if(!strcmp(d-ID,s-dormitory)){//每增加一个学生,相应寝室的实际人数应当增加一个fseek(_fp,locate,SEEK_SET);d-current_num++;fwrite(d,sizeof(Dormitory),1,_fp);flag=1;break;}locate=ftell(_fp);}if(flag==0){printf(不存在该宿舍!\n);exit(-1);}fwrite(s,sizeof(Student),1,fp);rewind(_fp);scanf(%s,s-ID);}fclose(_fp);fclose(fp);}宿舍管理查询系统6voidchange(){intflag=0,tag=0;longlocate,locate_b,locate_c;charinput_stunum[20];charinput_dormnum[4];charprevious_dormnum[4];Student*s=(Student*)malloc(sizeof(Student));Dormitory*d=(Dormitory*)malloc(sizeof(Dormitory));open();printf(\n请输入需要调换宿舍学生学号:\n);scanf(%s,input_stunum);locate=ftell(fp);while(fread(s,sizeof(Student),1,fp)){if(!strcmp(input_stunum,s-ID)){flag=1;printf(该学生信息如下:\n%-20s%-20s%-20s%-20s\n,学号,姓名,性别,宿舍号);printf(%-20s%-20s%-20s%-20s\n,s-ID,s-name,s-gender,s-dormitory);strcmp(previous_dormnum,s-dormitory);printf(\n请输入新宿舍的宿舍号:\n);scanf(%s,input_dormnum);locate_b=ftell(_fp);while(fread(d,sizeof(Dormitory),1,_fp)){if(!strcmp(input
本文标题:宿舍管理系统c语言设计
链接地址:https://www.777doc.com/doc-7028675 .html