版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成绩徐州工程学院课 程 设 计 报 告课 程 名 称 数据结构课程设计 专 业 计算机科学与技术 班 级 09计单 学 生 姓 名 黄 晨学 号 * 设 计 题 目 宿舍查询管理系统 指 导 教 师 * 设计起止时间:2011 年 6 月20日至2011年6月21日1. 课程设计的背景:为学生提供了一个既动手又动脑,独立实践的机会,通过课程设计的综合训练,旨在帮助学生进一步系统的掌握数据结构这门课的主要内容,并进一步培养学生分析问题和解决问题的能力,主要体现在能够让学生针对实际问题有效地组织数据,选择合适的数据结构,并进行正确和高效的算法设计,并用程序实现算法。该课的课程设计是一个良好的程序设
2、计技能训练的过程。二。 课程设计的内容和要求:1、基本内容任务:为宿舍管理人员编写一个宿舍管理查询软体。2、基本要求1、建立数据文件,数据文件按关键字(房号、学号、姓名)查询.2、主菜单(1)新建班级宿舍信息(2)查找已有班级宿舍信息(3)输出已有班级宿舍信息(4)插入已有班级学生信息(0)退出3、查询菜单(1)按宿舍号查找(2)按学号查找(3)按姓名查找(0)退出4、可以连续操作。5、新建班级宿舍信息在磁盘上新文件并写入数据.查找已有班级宿舍信息读入磁盘文件数据使用插入排序建立双向链表存储数据,分别使用索引表查找,折半查找,哈稀表查找对链表进行查询同时选择是否删除。输出已有班级宿舍信息读入磁
3、盘文件数据,排序后输出.插入已有班级学生信息对磁盘文件进行追加写入.三。主要参考文献:1。数据结构课程设计,苏仕华等编著,机械工业出版社, 2005.5。第一版;2.算法与数据结构,范策等编著,机械工业出版社 2004,第一版。3数据结构(C语言版),严蔚敏等编著,清华大学出版社 20044数据结构实用教程(第二版),徐孝凯编著,清华大学出版社 20065数据结构,谢楚屏等编著,人民邮电出版社6数据结构与算法导论,徐绪松等著,电子工业出版社四。 课程设计进度计划(以天为单位):起 止 日 期工 作 内 容备 注6 月20日插入排序建立双向链表存储数据函数,分别使用索引表查找,折半查找,哈稀表查
4、找对链表进行查询函数,同时选择是否删除记录调用删除函数。磁盘文件在“学生宿舍信息09计单。txt”目录下6月21日在磁盘上新建文件并写入数据函数,追加写入文件函数,输出文件信息函数,欢迎退出主菜单查询菜单等函数。磁盘文件都保存学生宿舍信息文件夹下.一、问题描述 任务:为宿舍管理人员编写一个宿舍管理查询软体。二、基本要求1、建立数据文件,数据文件按关键字(房号、学号、姓名)查询.2、主菜单(1)新建班级宿舍信息(2)查找已有班级宿舍信息(3)输出已有班级宿舍信息(4)插入已有班级学生信息(0)退出3、查询菜单(1)按宿舍号查找(2)按学号查找(3)按姓名查找(0)退出4、可以连续操作。3、 算法
5、思想新建班级宿舍信息在磁盘上新文件并写入数据。查找已有班级宿舍信息读入磁盘文件数据使用插入排序建立双向链表存储数据,分别使用索引表查找,折半查找,哈稀表查找对链表进行查询同时选择是否删除。输出已有班级宿舍信息读入磁盘文件数据,排序后输出。插入已有班级学生信息对磁盘文件进行追加写入.4、 模块划分:包括一些必要的流程图欢迎界面主菜单主菜单退出界面插入已有班级学生信息输出已有班级学生信息新建班级宿舍信息查找已有班级学生信息查询菜单按宿舍号查找按姓名查找按学号查找5、 数据结构typedefstruct stu_hcchar name7;double num;long rnum;struct stu
6、_hc prior;struct stu_hc next;stu_hc;Name,num, rnum;NULLName,num, rnum;NULLName,num, rnum;typedefstructstu_hchead;int nop;double minnum,maxnum;index_hc;第一个宿舍在链表中起始地址宿舍人数、学号最大和最小值第三个宿舍在链表中起始地址宿舍人数、学号最大和最小值第二个宿舍在链表中起始地址宿舍人数、学号最大和最小值typedefstructchar key7;int count;stu_hc *stu; hashtable_hcMAXSIZE;关键字、冲
7、突次数该姓名在链表中地址关键字、冲突次数该姓名在链表中地址关键字、冲突次数该姓名在链表中地址6、 源程序在运行文件目录下新建学生宿舍信息文件夹.include”stdio.h”#include”stdlib。h"#include”string.h”include”malloc.h"#include”windows。h"typedefstruct stu_hcchar name7;double num;long rnum;struct stu_hc *prior;struct stu_hc next;stu_hc;typedefstructstu_hchead;in
8、t nop;double minnum,maxnum;index_hc;#define MAXSIZE 100typedefstructchar 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>rnuml>rnum=l
9、1rnum&l-numl1num)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=l2next;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);
10、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”,&l1rnum,&l1num,l1>name)>0)if(l=NULL)l=l1;lnext=NULL;l-prior=NULL;else
11、if(compkey_hc(l,l1))l1next=l;l1prior=NULL;lprior=l1;l=l1;elsel2=place_hc(l,l1);if(l2next=NULL)l2>next=l1;l1next=NULL;l1>prior=l2;elsel1-next=l2next;l2next-prior=l1;l1>prior=l2;l2next=l1;peosum+;elsebreak;fclose(fp);return(l);void printlist_hc()stu_hcl;l=createlist_hc();if(l!=NULL)printf(”%s
12、班学生宿舍信息为:roomnum/num/namen",root);while(l)printf("ldt。0ftsn",lrnum,lnum,l>name);l=lnext;free(l);index_hc createindex_hc(stu_hc *l)index_hc i,*newbase;int k=0;i=(index_hc)malloc(peosumsizeof(index_hc);if(!i)printf("错误(2)n”),exit(0);ik.head=l;ik.nop=1;ik。maxnum=l-num;ik。minnum=l
13、>num;l=lnext;while(l)if(ik。head-rnum=lrnum)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,roomsumsizeof(index_hc));if(!newbase)printf(”错误(3)n"),exit(0);return(newbase);void seek_hc1(index_hc i)stu_h
14、c l;long roomnum;int low=0,high=roomsum1,mid,j;printf(”该班同学使用的宿舍有:”);for(j=0;jroomsum;j+)printf("ldt”,ij.head->rnum);printf(”n输入宿舍号:”);flushall();scanf(”ld”,roomnum);while(low<=high)mid=(low+high)/2;if(imid.headrnum=roomnum) break;elseif(imid。head>rnumroomnum)high=mid-1;else low=mid+1;
15、if(low=high)l=imid.head;for(j=0;jimid。nop;j+)printf(”%ldt%。0ftsn”,l-rnum,l->num,l-name);l=lnext;else printf(”s班没有这个宿舍号的学生!n”,root);stu_hc deletelist_hc(stu_hcl,stu_hc *l1)char flat;printf(”是否删除此信息(Y/N):”);flushall();flat=getchar();if(flat=Y)tag=1;peosum;if(l1prior=NULL)l=l->next;elsel1->nex
16、t->prior=l1-prior;l1priornext=l1next;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.minnum<number&ij.maxnum>number)break;elseif(ij.minnum=numberij.maxnum=number)break;if(
17、j=roomsum)printf("找不到此学生!n”);return(l);elsel1=ij。head;for(k=0;k<ij。nop;k+)if(l1-num=number)printf(”ldt%。0ftsn”,l1rnum,l1->num,l1name);break;l1=l1next;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(h
18、ashtable_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;iMAXSIZE;i+)strcpy(ha
19、i.key,"”);hai。count=0;while(l)insertht_hc(ha,l>name,l);l=lnext;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”);re
20、turn(l);l1=hap。stu;printf(”ldt。0ft%sn",l1->rnum,l1->num,l1name);return(deletelist_hc(l,l1);void newfile_hc()FILEfp;char fname10;long roomnum;double number;char name7;printf("新文件名(以班级为文件名):”);flushall();gets(fname);clearroot_hc();strcat(root,fname);strcat(root,sname);fp=fopen(root,&qu
21、ot;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;cha
22、r 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
23、",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 (注:本
24、程序中宿舍号第二位字母以数字代替0表示A,1表示B)");printf(”nnnttt ”);system("pause");void goodbye_hc()int i=0,j;system("cls”);while(i<4)printf("谢谢使用!”);Sleep(5*100);system("cls”);for(j=0;j=i;j+)printf("tt”);i+;system(”cls");printf(”ntttt 谢谢使用!n”);printf(”作者:黄晨”);void menu1_hc()i
25、nt j;printf(”n”);for(j=0;j<37;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("*");print
26、f("选择操作序号:”);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;j<80;j+)printf(”);printf(”选择操作序号:”);void seekmenu_hc(stu_hc l)int y;index_hc i;system("cls”);menu2_hc
27、();flushall();scanf(”%d”,&y);while(y)if(y=1)system(”cls”);i=createindex_hc(l);seek_hc1(i);elseif(y=2)system("cls”);i=createindex_hc(l);l=seek_hc2(l,i);elseif(y=3)system("cls”);l=seek_hc3(l);system(”pause");system("cls");menu2_hc();flushall();scanf(”%d”,y);void writefile_hc(stu_hcl)FILEfp=fopen(root,”w”);while(l)fprintf(fp,”%ld 。0f sn",l-rnum,l->num,lname);l=lnext;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&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淡水鱼鱼油:制备工艺、微胶囊化技术与应用前景探究
- 液晶面板生产企业新产品开发项目的风险洞察与评估体系构建
- 液化天然气船液货装卸模拟器的优化与创新:基于实践与技术革新
- 涟漪效应:剖析产品伤害危机类型以情感反应为中介对消费者补救期望的多维影响
- 202年电建数字化系统集成合同合同二篇
- 妊娠期胰腺炎的超声诊断新技术应用
- 妊娠期胰腺炎对母婴围产期的影响评估
- 妊娠期结核病合并妊娠期早产儿的感染防控
- 2026舟山市中考语文考前3天预测卷含答案
- 妊娠期糖尿病酮症酸中毒的妊娠期皮肌炎管理
- DZ∕T 0399-2022 矿山资源储量管理规范(正式版)
- 2024年河南应用技术职业学院单招职业适应性测试题库及答案解析
- 树立正确婚恋观做遵纪守法军人
- 2021年中国中车公司组织架构和部门职能
- 反间谍法介绍宣传课件
- CPK-数据自动生成器
- catia静强度有限元分析课件
- 钢的热处理工艺课件
- Unit 1 Our living planet Reading 课件-2022-2023学年高中英语牛津译林版(2020)选修第一册
- 高考语文一轮复习:古诗文情景默写 专项练习题汇编(含答案)
- 色盲检测图(俞自萍第六版)
评论
0/150
提交评论