数据结构课程设计-宿舍管理系统的设计与实现内容摘要:

《 宿舍管理系统的设计与实现 》 第 16 页 共 27 页 roomnumber,spare with space,endwith \n)。 scanf(%s,personname)。 while(strcmp(personname,)) //该循环用于控制 学生信息的录入 当输入 时 学生信息录入完毕 { scanf(%s %s,personxh,personfh)。 fprintf(fp,%10s%20s%50s\n,personname,personxh,personfh)。 scanf(%s,personname)。 } fclose(fp)。 } void readfile() //文件读取函数 用于打开已有的二进制数据文件 {printf(\n please enter the fileroad:\n)。 scanf(%s,filename)。 //此处输入为文件的路径 如 c: \zhang if((fp=fopen(filename,r+))==NULL) { printf(\n can39。 t open thefile:\n)。 exit(0)。 } fclose(fp)。 } void output() //输出函数 用于输出文件的全部信息 { personnode *person。 long offset1,offset2。 char name1[8],name2[8],name3[8]。 char xh1[16],xh2[16],xh3[16]。 char fh1[30],fh2[30],fh3[30]。 person=(personnode *)malloc(sizeof(personnode))。 《 宿舍管理系统的设计与实现 》 第 17 页 共 27 页 if((fp=fopen(filename,r))==NULL) { printf(\n can39。 t open the file)。 exit(0)。 } while(!feof(fp)) //此循环用于 对文件数据中关键字学号进行从小到大冒泡排序 { int a,b,c,d。 //a 为循环结束判定变量 b, c, d 用于起泡排序时学号交换的替换 if((fp=fopen(filename,r+))==NULL) { printf(\n can39。 t open the file)。 exit(0)。 } while(!feof(fp)) // 从文件头开始遍历 { while(!feof(fp)) //对两组数据进行排序 { offset1=ftell(fp)。 //获取文件内部当前指针位置 fscanf(fp,%s%s%s\n,personname,personxh,personfh)。 strcpy(name1,personname)。 strcpy (xh1,personxh)。 strcpy(fh1,personfh)。 if(feof(fp)) break。 //文件结束 跳出循环 offset2=ftell(fp)。 //获取文件内部下一指针位置 fscanf(fp,%s%s%s\n,personname,personxh,personfh)。 strcpy (name2,personname)。 strcpy(xh2,personxh)。 《 宿舍管理系统的设计与实现 》 第 18 页 共 27 页 strcpy(fh2,personfh)。 b=strlen(xh1)。 c=strlen(xh2)。 d=strcmp(xh1,xh2)。 if(b==camp。 amp。 d0) //如果 学号 1 大于等于学号 2 怎交换全部数据 { strcpy(name3,name1)。 strcpy(name1,name2)。 strcpy(name2,name3)。 strcpy(xh3,xh1)。 strcpy(xh1,xh2)。 strcpy(xh2,xh3)。 strcpy(fh3,fh1)。 strcpy(fh1,fh2)。 strcpy(fh2,fh3)。 fseek(fp,offset1,SEEK_SET)。 //将文件指针移动 offset1个字节 strcpy(personname,name1)。 strcpy(personxh,xh1)。 strcpy(personfh,fh1)。 fprintf(fp,%10s%20s%50s\n,personname,personxh,personfh)。 // 排序后写入文件 strcpy(personname,name2)。 strcpy(personxh,xh2)。 strcpy( personfh,fh2)。 fprintf(fp,%10s%20s%50s\n,personname,personxh,personfh)。 // 排序后写入文件 《 宿舍管理系统的设计与实现 》 第 19 页 共 27 页 } fseek(fp,offset2,SEEK_SET)。 ///将文件位置指针从文件头向前移动 offset2个字节 } rewind(fp)。 //指向头文件 while(!feof(fp)) //此循环用于判断学号是否有序 { offset1=ftell(fp)。 fscanf(fp,%s%s%s\n,personname,personxh,personfh)。 strcpy (xh1,personxh)。 if(feof(fp)) {a=1。 break。 } offset2=ftell(fp)。 fscanf(fp,%s%s%s\n,personname,personxh,personfh)。 strcpy(xh2,personxh)。 b=strlen(xh1)。 c=strlen(xh2)。 d=strcmp(xh1,xh2)。 if(b==camp。 amp。 d=0) a=1。 //若 a 为。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。