




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成绩 徐州工程学院课 程 设 计 报 告 课 程 名 称 数据结构课程设计 专 业 计算机科学与技术 班 级 09计单 学 生 姓 名 黄 晨 学 号 * 设 计 题 目 宿舍查询管理系统 指 导 教 师 * 设计起止时间:2011 年 6 月20日至2011年6月21日1. 课程设计的背景:为学生提供了一个既动手又动脑,独立实践的机会,通过课程设计的综合训练,旨在帮助学生进一步系统的掌握数据结构这门课的主要内容,并进一步培养学生分析问题和解决问题的能力,主要体现在能够让学生针对实际问题有效地组织数据,选择合适的数据结构,并进行正确和高效的算法设计,并用程序实现算法。该课的课程设计是一个良好的程序设计技能训练的过程。二. 课程设计的内容和要求:1、基本内容任务:为宿舍管理人员编写一个宿舍管理查询软体。2、基本要求1、建立数据文件,数据文件按关键字(房号、学号、姓名)查询。2、主菜单(1)新建班级宿舍信息(2)查找已有班级宿舍信息(3)输出已有班级宿舍信息(4)插入已有班级学生信息(0)退出3、查询菜单(1)按宿舍号查找(2)按学号查找(3)按姓名查找(0)退出4、可以连续操作。5、新建班级宿舍信息在磁盘上新文件并写入数据。查找已有班级宿舍信息读入磁盘文件数据使用插入排序建立双向链表存储数据,分别使用索引表查找,折半查找,哈稀表查找对链表进行查询同时选择是否删除。输出已有班级宿舍信息读入磁盘文件数据,排序后输出。插入已有班级学生信息对磁盘文件进行追加写入。三.主要参考文献:1.数据结构课程设计, 苏仕华 等编著, 机械工业出版社, 2005.5.第一版;2.算法与数据结构,范策等编著,机械工业出版社 2004,第一版。3数据结构 (C语言版),严蔚敏等编著,清华大学出版社 20044数据结构实用教程(第二版),徐孝凯编著,清华大学出版社 20065数据结构,谢楚屏等编著,人民邮电出版社6数据结构与算法导论,徐绪松等著,电子工业出版社四. 课程设计进度计划(以天为单位):起 止 日 期工 作 内 容备 注6 月20日插入排序建立双向链表存储数据函数,分别使用索引表查找,折半查找,哈稀表查找对链表进行查询函数,同时选择是否删除记录调用删除函数。磁盘文件在“学生宿舍信息09计单.txt”目录下6月21日在磁盘上新建文件并写入数据函数,追加写入文件函数,输出文件信息函数,欢迎退出主菜单查询菜单等函数。磁盘文件都保存学生宿舍信息文件夹下。一、问题描述 任务:为宿舍管理人员编写一个宿舍管理查询软体。二、基本要求1、建立数据文件,数据文件按关键字(房号、学号、姓名)查询。2、主菜单(1)新建班级宿舍信息(2)查找已有班级宿舍信息(3)输出已有班级宿舍信息(4)插入已有班级学生信息(0)退出3、查询菜单(1)按宿舍号查找(2)按学号查找(3)按姓名查找(0)退出4、可以连续操作。3、 算法思想新建班级宿舍信息在磁盘上新文件并写入数据。查找已有班级宿舍信息读入磁盘文件数据使用插入排序建立双向链表存储数据,分别使用索引表查找,折半查找,哈稀表查找对链表进行查询同时选择是否删除。输出已有班级宿舍信息读入磁盘文件数据,排序后输出。插入已有班级学生信息对磁盘文件进行追加写入。4、 模块划分:包括一些必要的流程图欢迎界面主菜单主菜单退出界面插入已有班级学生信息输出已有班级学生信息新建班级宿舍信息查找已有班级学生信息查询菜单按宿舍号查找按姓名查找按学号查找5、 数据结构typedef struct stu_hcchar name7;double num;long rnum;struct stu_hc *prior;struct stu_hc *next;stu_hc;Name,num, rnum;NULLName,num, rnum;NULLName,num, rnum;typedef struct stu_hc*head;int nop;double minnum,maxnum;index_hc;第一个宿舍在链表中起始地址宿舍人数、学号最大和最小值第三个宿舍在链表中起始地址宿舍人数、学号最大和最小值第二个宿舍在链表中起始地址宿舍人数、学号最大和最小值typedef structchar key7;int count;stu_hc *stu; hashtable_hcMAXSIZE;关键字、冲突次数该姓名在链表中地址关键字、冲突次数该姓名在链表中地址关键字、冲突次数该姓名在链表中地址6、 源程序在运行文件目录下新建学生宿舍信息文件夹。#include stdio.h#include stdlib.h#include string.h#include malloc.h#include windows.htypedef struct stu_hcchar name7;double num;long rnum;struct stu_hc *prior;struct stu_hc *next;stu_hc;typedef struct stu_hc*head;int nop;double minnum,maxnum;index_hc;#define MAXSIZE 100typedef structchar key7;int count;stu_hc *stu; hashtable_hcMAXSIZE;int peosum,roomsum,tag=0;char root100;char sname=.txt;void clearroot_hc()strcpy(root,学生宿舍信息);int compkey_hc(stu_hc *l,stu_hc *l1)int f;if(l-rnuml1-rnum|l-rnum=l1-rnum&l-numl1-num)f=1;else f=0;return (f);stu_hc *place_hc(stu_hc *l,stu_hc *l1)stu_hc *l2=l-next,*l3=l;while(l2!=NULL)if(compkey_hc(l2,l1)break;l2=l2-next;l3=l3-next;return(l3);stu_hc *createlist_hc()stu_hc *l,*l1,*l2;FILE*fp;char fname10;l=NULL;peosum=0;printf(要执行操作的班级为:);flushall();gets(fname);clearroot_hc();strcat(root,fname);strcat(root,sname);if(!(fp=fopen(root,r)printf(找不到文件!n);return(l);while(1)l1=(stu_hc*)malloc(sizeof(stu_hc);if(!l1)printf(错误(1)n),exit(0);if(fscanf(fp,%ld %lf %s,&l1-rnum,&l1-num,l1-name)0)if(l=NULL)l=l1;l-next=NULL;l-prior=NULL;else if(compkey_hc(l,l1)l1-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;elsel1-next=l2-next;l2-next-prior=l1;l1-prior=l2;l2-next=l1;peosum+;else break;fclose(fp);return(l);void printlist_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;int k=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);void seek_hc1(index_hc *i)stu_hc *l;long roomnum;int low=0,high=roomsum-1,mid,j;printf(该班同学使用的宿舍有:);for(j=0;jrnum);printf(n输入宿舍号:);flushall();scanf(%ld,&roomnum);while(lowrnum=roomnum) break;else if(imid.head-rnumroomnum)high=mid-1;else low=mid+1;if(low=high)l=imid.head;for(j=0;jrnum,l-num,l-name);l=l-next;else printf(%s班没有这个宿舍号的学生!n,root);stu_hc* deletelist_hc(stu_hc*l,stu_hc *l1)char flat;printf(是否删除此信息(Y/N):);flushall();flat=getchar();if(flat=Y)tag=1;peosum-;if(l1-prior=NULL)l=l-next;elsel1-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;int j,k=0;double number;printf(输入学号:);flushall();scanf(%lf,&number);for(j=0;jroomsum;j+)if(ij.minnumnumber)break;else if(ij.minnum=number|ij.maxnum=number)break;if(j=roomsum)printf(找不到此学生!n);return(l);elsel1=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);int hash(char s)return abs(s0+s1+s2+s3)%97;void insertht_hc(hashtable_hc ha,char k,stu_hc *l)int i,p=hash(k);if(strcmp(hap.key,)=0)strcpy(hap.key,k);hap.count=1;hap.stu=l;elsei=0;dohap.count+;p=(p+1)%MAXSIZE;i+;while(strcmp(hap.key,)!=0);strcpy(hap.key,k);hap.count=i;hap.stu=l;void createht_hc(hashtable_hc ha,stu_hc *l)int i;for(i=0;iname,l);l=l-next;stu_hc *seek_hc3(stu_hc *l)hashtable_hc ha;stu_hc *l1;int p;char k7;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);void newfile_hc()FILE*fp;char fname10;long roomnum;double number;char name7;printf(新文件名(以班级为文件名):);flushall();gets(fname);clearroot_hc();strcat(root,fname);strcat(root,sname);fp=fopen(root,w);printf(输入文件内容以-1结束(roomnum number name):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);void digfile_hc()FILE*fp;char fname10;long roomnum;double number;char name7;printf(输入已有班级:);flushall();gets(fname);clearroot_hc();strcat(root,fname);strcat(root,sname);fp=fopen(root,at);printf(输入插入内容以-1结束(roomnum number name):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);void welcome_hc()int i=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 );system(pause);void goodbye_hc()int i=0,j;system(cls);while(i4)printf(谢谢使用!);Sleep(5*100);system(cls);for(j=0;j=i;j+)printf(tt);i+;system(cls);printf(ntttt 谢谢使用!n);printf(作者:黄晨);void menu1_hc()int j;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(选择操作序号:);void menu2_hc()int j;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);void keep_hc(stu_hc *l)char keep;if(tag=1)printf(是否保存修改(Y/N):);flushall();keep=getchar();tag=0;if(keep=Y)writefile_hc(l);free(l);main()stu_hc *l;int x;welcome_hc();system(cls);menu1_hc();flushall();scanf(%d,&x);while(x)if(x=1)system(cls);newfile_hc();else if(x=2)if(l=c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《食物中毒管理办法》
- 高新区智库管理办法
- ppm值考核管理办法
- 车务段红线管理办法
- 电商平台软件外包保密协议及消费者数据安全合同
- 融资企业规范管理办法
- 邳州解冻资金管理办法
- 车辆点检考核管理办法
- 预付款担保合同在新能源技术研发中的资金保障
- 教育机构劳动合同签订与教师权益保障细则
- 2025年新《公司法》知识竞赛题库(附含答案)
- (2025秋新版)部编版八年级上册道德与法治全册教案
- 八年级心理健康体验式教学计划
- 二手房资金监管协议书
- 甘肃省会宁县2025年上半年公开招聘辅警试题含答案分析
- 消防监控考试题初级及答案
- 2025年太阳能海水淡化项目经济效益评估报告
- 2025年湖南湘西自治州州直事业单位招聘考试笔试试卷附答案
- 《小学开学第一课》课件
- 新苏教版六年级科学上册活动手册答案
- 4D厨房区域区间管理责任卡
评论
0/150
提交评论