数据结构课程设计报告-学生宿舍管理系统

上传人:沈*** 文档编号:127009960 上传时间:2022-07-29 格式:DOCX 页数:9 大小:174.07KB
返回 下载 相关 举报
数据结构课程设计报告-学生宿舍管理系统_第1页
第1页 / 共9页
数据结构课程设计报告-学生宿舍管理系统_第2页
第2页 / 共9页
数据结构课程设计报告-学生宿舍管理系统_第3页
第3页 / 共9页
点击查看更多>>
资源描述
徐州工程学院课程设计报告课程名称数据结构课程设计专业计算机科学与技术班级09计单学生姓名黄晨学号*设计题目宿舍查询管理系统指导教师*设计起止时间:2011年6月20日至2011年6月21日一. 课程设计的背景:为学生提供了一个既动手又动脑,独立实践的机会,通过课程设计的综合训练,旨在帮助学生进一步系统的掌握数据结构这门课的主要内容,并进一步培养学生分析问题和解决问题的能力,主要体现在能够让学生针对实际问题有效地组织数据,选择合适的数据结构,并进行正确和高效的算法设计,并用程序实现算法。该课的课程设计是一个良好的程序设计技能训练的过程。二. 课程设计的内容和要求:1、基本内容任务:为宿舍管理人员编写一个宿舍管理查询软体。2、基本要求1、建立数据文件,数据文件按关键字(房号、学号、姓名)查询。2、主菜单新建班级宿舍信息查找已有班级宿舍信息输出已有班级宿舍信息插入已有班级学生信息(0)退出3、查询菜单按宿舍号查找按学号查找按姓名查找(0)退出4、可以连续操作。5、新建班级宿舍信息在磁盘上新文件并写入数据。查找已有班级宿舍信息读入磁盘文件数据使用插入排序建立双向链表存储数据,分别使用索引表查找,折半查找,哈稀表查找对链表进行查询同时选择是否删除。输出已有班级宿舍信息读入磁盘文件数据,排序后输出。插入已有班级学生信息对磁盘文件进行追加写入。三. 主要参考文献:1. 数据结构课程设计,苏仕华等编著,机械工业出版社,2005.5.第一版;算法与数据结构,范策等编著,机械工业出版社2004,第一版。.数据结构(C语言版),严蔚敏等编著,活华大学出版社2004.数据结构实用教程(第二版),徐孝凯编著,活华大学出版社20065.数据结构,谢楚屏等编著,人民邮电出版社6.数据结构与算法导论,徐绪松等著,电子工业出版社四. 课程设计进度计划(以天为单位):起止日期工作内容备注6月20日插入排序建立双向链表存储数据函数,分别使用索引表查磁盘文件在“学生找,折半查找,哈稀表查找对链表进行查询函数,同时选宿舍信息09计择是否删除记录调用删除函数。单.txt目录下6月21日在磁盘上新建文件并写入数据函数,追加写入文件函数,磁盘文件都保存学输出文件信息函数,欢迎退出主菜单查询菜单等函数。生宿舍信息文件夹下。一、问题描述任务:为宿舍管理人员编写一个宿舍管理查询软体。二、基本要求1、建立数据文件,数据文件按关键字(房号、学号、姓名)查询。2、主菜单新建班级宿舍信息查找已有班级宿舍信息输出已有班级宿舍信息插入已有班级学生信息(0)退出3、查询菜单按宿舍号查找按学号查找按姓名查找(0)退出4、可以连续操作。三、算法思想新建班级宿舍信息在磁盘上新文件并写入数据。查找已有班级宿舍信息读入磁盘文件数据使用插入排序建立双向链表存储数据,分别使用索引表查找,折半查找,哈稀表查找对链表进行查询同时选择是否删除。输出已有班级宿舍信息读入磁盘文件数据,排序后输出。插入已有班级学生信息对磁盘文件进行追加写入。四、模块划分:包括一些必要的流程图欢迎界面欢迎界面王来单五、数据结构typedefstructstu_hc(charname7;doublenum;longrnum;structstu_hc*prior;structstu_hc*next;)stu_hc;typedefstruct(stu_hc*head;intnop;doubleminnum,maxnum;)index_hc;第一个宿舍在链表中起始地址宿舍人数、学号最大和最小值第二个宿舍在链表中起始地址宿舍人数、学号最大和最小值第三个宿舍在链表中起始地址宿舍人数、学号最大和最小值typedefstruct(charkey7;intcount;stu_hc*stu;)hashtable_hcMAXSIZE;关键字、冲突次数该姓名在链表中地址关键字、冲突次数关键字、冲突次数该姓名在链表中地址该姓名在链表中地址六、源程序在运行文件目录下新建学生宿舍信息文件夹。#includestdio.h#includestdlib.h#includestring.h#includemalloc.h#includewindows.h名棋惨改日期大小.学生借舍倍息201/3/514:33文侬目学生宿鸯O莒昼统-C2012/3/2514;29CSource8KB口享生宿舍信息岂理繇0#201/3/2514:32解解SSKB出学生宿舍信息莒喔寂。句2012/3/2514:32ObjectFile13KBtypedefstructstu_hc(charname7;doublenum;longrnum;structstu_hc*prior;structstu_hc*next;)stu_hc;typedefstruct(stu_hc*head;intnop;doubleminnum,maxnum;)index_hc;#defineMAXSIZE100typedefstruct(charkey7;intcount;stu_hc*stu;)hashtable_hcMAXSIZE;intpeosum,roomsum,tag=0;charroot100;charsname=.txt;voidclearroot_hc()(strcpy(root,学生宿舍信息);)intcompkey_hc(stu_hc*l,stu_hc*11)(intf;if(1-rnum11-rnum|1-rnum=11-rnum&1-num11-num)f=1;elsef=0;return(f);stu_hc*p1ace_hc(stu_hc*1,stu_hc*11)(stu_hc*12=1-next,*13=1;whi1e(12!=NULL)(if(compkey_hc(12,11)break;12=12-next;13=13-next;return(13);stu_hc*create1ist_hc()(stu_hc*1,*11,*12;FILE*fp;charfname10;1=NULL;peosum=0;printf(要执行操作的班级为:);f1usha11();gets(fname);c1earroot_hc();strcat(root,fname);strcat(root,sname);if(!(fp=fopen(root,r)(printf(找不到文件!n);return(1);whi1e(1)(11=(stu_hc*)ma11oc(sizeof(stu_hc);if(!11)printf(错误(1)n),exit(0);if(fscanf(fp,%1d%1f%s,&11-rnum,&11-num,11-name)0)(if(1=NULL)(1=11;1-next=NULL;1-prior=NULL;elseif(compkeyhc(l,l1)(11-next=l;l1-prior=NULL;l-prior=l1;l=l1;else(l2=place_hc(l,l1);if(l2-next=NULL)l2-next=l1;l1-next=NULL;l1-prior=l2;else(l1-next=l2-next;l2-next-prior=l1;l1-prior=l2;l2-next=l1;peosum+;elsebreak;fclose(fp);return(l);voidprintlist_hc()stu_hc*l;l=createlist_hc();if(l!=NULL)printf(%s班学生宿舍信息为:roomnum/num/namen”,root);while(l)printf(%ldt%.0ft%sn,l-rnum,l-num,l-name);l=l-next;free(l);index_hc*createindex_hc(stu_hc*l)index_hc*i,*newbase;intk=0;i=(index_hc*)malloc(peosum*sizeof(index_hc);if(!i)printf(错误(2)n),exit(0);ik.head=l;ik.nop=1;ik.maxnum=l-num;ik.minnum=l-num;l=l-next;while(l)if(ik.head-rnum=l-rnum)ik.nop+;ik.maxnum=l-num;else+k;ik.head=l;ik.nop=1;ik.maxnum=l-num;ik.minnum=l-num;l=l-next;roomsum=k+1;newbase=(index_hc*)realloc(i,roomsum*sizeof(index_hc);if(!newbase)printf(错误(3)n),exit(0);return(newbase);voidseek_hc1(index_hc*i)stu_hc*l;longroomnum;intlow=0,high=roomsum-1,mid,j;printf(该班同学使用的宿舍有:);for(j=0;jrnum);printf(n输入宿舍号:);flushall();scanf(%ld,&roomnum);while(lowrnum=roomnum)break;elseif(imid.head-rnumroomnum)high=mid-1;elselow=mid+1;if(low=high)(l=imid.head;for(j=0;jrnum,l-num,l-name);l=l-next;elseprintf(%s班没有这个宿舍号的学生!n”,root);stu_hc*deletelist_hc(stu_hc*l,stu_hc*l1)(charflat;printf(是否删除此信息(Y/N):);flushall();flat=getchar();if(flat=Y)(tag=1;peosum-;if(l1-prior=NULL)l=l-next;else(l1-next-prior=l1-prior;l1-prior-next=l1-next;free(l1);return(l);stu_hc*seek_hc2(stu_hc*l,index_hc*i)(stu_hc*l1;intj,k=0;doublenumber;printf(输入学号:);flushall();scanf(%lf,&number);for(j=0;jroomsum;j+)(if(ij.minnumnumber)break;elseif(ij.minnum=number|ij.maxnum=number)break;if(j=roomsum)(printf(找不到此学生!n);return(l);else(l1=ij.head;for(k=0;knum=number)(printf(%ldt%.0ft%sn,l1-rnum,l1-num,l1-name);break;l1=l1-next;if(k=ij.nop)(printf(找不到此学生!n);return(l);return(deletelist_hc(l,l1);inthash(chars)(returnabs(s0+s1+s2+s3)%97;voidinsertht_hc(hashtable_hcha,chark,stu_hc*l)(inti,p=hash(k);if(strcmp(hap.key,)=0)(strcpy(hap.key,k);hap.count=1;hap.stu=l;else(i=0;do(hap.count+;p=(p+1)%MAXSIZE;i+;while(strcmp(hap.key,)!=0);strcpy(hap.key,k);hap.count=i;hap.stu=l;voidcreateht_hc(hashtable_hcha,stu_hc*l)(inti;for(i=0;iname,l);l=l-next;stu_hc*seek_hc3(stu_hc*l)(hashtable_hcha;stu_hc*l1;intp;chark7;createht_hc(ha,l);printf(输入要查找的姓名:);flushall();gets(k);p=hash(k);while(strcmp(hap.key,k)!=0&hap.count!=0)p=(p+1)%MAXSIZE;if(hap.count=0)(printf(找不到此学生!n);return(l);l1=hap.stu;printf(%ldt%.0ft%sn,l1-rnum,l1-num,l1-name);return(deletelist_hc(l,l1);voidnewfile_hc()(FILE*fp;charfname10;longroomnum;doublenumber;charname7;printf(新文件名(以班级为文件名):);flushall();gets(fname);clearroot_hc();strcat(root,fname);strcat(root,sname);fp=fopen(root,w);printf(输入文件内容以-1结束(roomnumnumbername):n);flushall();scanf(%d,&roomnum);while(roomnum!=-1)(scanf(%lf%s,&number,name);fprintf(fp,%ld%.0f%sn,roomnum,number,name);flushall();scanf(%ld,&roomnum);fclose(fp);voiddigfile_hc()(FILE*fp;charfname10;longroomnum;doublenumber;charname7;printf(输入已有班级:);flushall();gets(fname);clearroot_hc();strcat(root,fname);strcat(root,sname);fp=fopen(root,at);printf(输入插入内容以-1结束(roomnumnumbername):n);flushall();scanf(%d,&roomnum);while(roomnum!=-1)(scanf(%lf%s”,&number,name);fprintf(fp,%ld%.0f%sn,roomnum,number,name);flushall();scanf(%ld,&roomnum);fclose(fp);voidwelcome_hc()(inti=0,j;while(i5)(printf(欢迎进入宿舍信息查询系统!);Sleep(5*100);system(cls);for(j=0;j=i;j+)printf(n);for(j=0;j=i;j+)printf(t);i+;printf(nnnttt欢迎进入宿舍信息查询系统!);printf(nnt(注:本程序中宿舍号第二位字母以数字代替0表示A,1表示B);printf(nnnttt);systemfpause);voidgoodbye_hc()(inti=0,j;systemfcls);while(i4)(printf(谢谢使用!);Sleep(5*100);system(cls);for(j=0;j=i;j+)printf(tt);i+;systemfcls);printf(ntttt谢谢使用!n);printf(作者:黄晨);voidmenu1_hc()(intj;printf(n);for(j=0;j37;j+)printf(*);printf(主菜单”);for(j=0;j37;j+)printf(*);printf(ntttt(1)新建班级宿舍信息n);printf(tttt(2)查找已有班级宿舍信息n);printf(tttt(3)输出已有班级宿舍信息n);printf(tttt(4)插入已有班级学生信息n);printf(tttt(0)退出n);for(j=0;j80;j+)printf(*);printf(”选择操作序号:”);voidmenu2_hc()intj;system(cls);printf(tttt查询菜单n);printf(tttt(1)按宿舍号查找n);printf(tttt(2)按学号查找n);printf(tttt(3)按姓名查找n);printf(tttt(0)退出n);for(j=0;jrnum,l-num,l-name);l=l-next;fclose(fp);voidkeep_hc(stu_hc*l)charkeep;if(tag=1)printf(是否保存修改(Y/N):);flushall();keep=getchar();tag=0;if(keep=Y)writefile_hc(l);free(l);八、心得体会通过这一个星期左右的数据结构课程设计,使我从中获益匪浅,在指导老师的精心教导下,我学会了如何编写一个简单的小软件,如何把所学的理论知识和实践联系起来。虽然我对很多数据结构的知识运用得还不是很熟练,但是我相信通过自己努力一定会得到提高。在实习中,我做的项目是宿舍查询管理系统。它基本满足了界面友好,易于操作的要求,因此更利于用户操作方便,运行简易,从而达到对宿舍管理员和学生信息更加有效的管理,并且速度更快、内容更直接地,达到用户所想要的效果。这个软件实现了对宿舍管理员对学生信息库的建立,对学生信息的新建、查找、删除、插入等操作。由此来系统化管理宿舍信息,能够达到方便迅捷、易于管理的目的。我设计的这个软件仍然存在一些不足,例如不太美观。通过这次数据结构课程设计,我发现理论和实践要充分地结合起来,而且以后要想在编程这方面发展还必需要扎实的基本功。特别是向我们学的计算机专业,实践尤其重要。在这次做课程设计的过程中,我还发现专业知识的功底一定要扎实,简单的学好那是不行的,一定要专业,这样在以后的工作中才会游刃有余。在这次做课程设计的过程中学到了很多,希望我能够在以后充分利用这样的机会来充实自己,提高水平。指导教师签字:年月日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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