ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:16.25KB ,
资源ID:3097600      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3097600.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(源代码知识讲解.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

源代码知识讲解.docx

1、源代码知识讲解#include#include#includetypedef struct pnode /结构体定义 用于存放学生信息的节点 char name 8; /姓名 char xh16; /学号 char fh30; /房号 personnode;char filename50; /文件名FILE *fp; /指向文件的指针void creat() /创建新数据文件的函数 创建一个二进制文件 用于存放学生数据 personnode *person; person=(personnode *)malloc(sizeof(personnode); /为节点分配内存 printf(n 请输

2、入文件名:n); scanf(%s,filename); if(fp=fopen(filename,w+)=NULL) printf(n 你没有输入文件名,不能找到文件夹); exit(0); printf(n 请输入姓名,学号(相同的长度)和房号,以空格隔开,以#结束n); scanf(%s,person-name); while(strcmp(person-name,#) /该循环用于控制学生信息的录入 当输入#时 学生信息录入完毕 scanf(%s %s,person-xh,person-fh); fprintf(fp,%-10s%-20s%-50sn,person-name,perso

3、n-xh,person-fh); scanf(%s,person-name); fclose(fp);void readfile() /文件读取函数 用于打开已有的二进制数据文件printf(n please enter the fileroad:n); scanf(%s,filename); /此处输入为文件的路径 如c:zhang if(fp=fopen(filename,r+)=NULL) printf(n cant open thefile:n); exit(0); fclose(fp);void output() /输出函数 用于输出文件的全部信息 personnode *perso

4、n; long offset1,offset2; char name18,name28,name38; char xh116,xh216,xh316; char fh130,fh230,fh330; person=(personnode *)malloc(sizeof(personnode); if(fp=fopen(filename,r)=NULL) printf(n cant open the file); exit(0); while(!feof(fp) /此循环用于对文件数据中关键字学号进行从小到大冒泡排序 int a,b,c,d; /a为循环结束判定变量 b,c,d用于起泡排序时学号

5、交换的替换 if(fp=fopen(filename,r+)=NULL) printf(n cant open the file); exit(0); while(!feof(fp) / 从文件头开始遍历 while(!feof(fp) /对两组数据进行排序 offset1=ftell(fp); /获取文件内部当前指针位置 fscanf(fp,%s%s%sn,person-name,person-xh,person-fh); strcpy(name1,person-name); strcpy (xh1,person-xh); strcpy(fh1,person-fh); if(feof(fp)

6、 break; /文件结束 跳出循环 offset2=ftell(fp); /获取文件内部下一指针位置 fscanf(fp,%s%s%sn,person-name,person-xh,person-fh); strcpy (name2,person-name); strcpy(xh2,person-xh); strcpy(fh2,person-fh); b=strlen(xh1); c=strlen(xh2); d=strcmp(xh1,xh2); if(b=c&d0) /如果 学号1大于等于学号2 则交换全部数据 strcpy(name3,name1); strcpy(name1,name2

7、); 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(person-name,name1); strcpy(person-xh,xh1); strcpy(person-fh,fh1); fprintf(fp,%-10s%-20s%-50sn,person-name,person-xh,pers

8、on-fh);/排序后写入文件 strcpy(person-name,name2); strcpy(person-xh,xh2); strcpy( person-fh,fh2); fprintf(fp,%-10s%-20s%-50sn,person-name,person-xh,person-fh);/排序后写入文件 /if fseek(fp,offset2,SEEK_SET); /将文件位置指针从文件头向前移动offset2个字节 /while对两组数据进行排序 rewind(fp); /指向头文件 while(!feof(fp) /此循环用于判断学号是否有序 offset1=ftell(f

9、p); fscanf(fp,%s%s%sn,person-name,person-xh,person-fh); strcpy(xh1,person-xh); if(feof(fp) a=1; break; offset2=ftell(fp); fscanf(fp,%s%s%sn,person-name,person-xh,person-fh); strcpy(xh2,person-xh); b=strlen(xh1); c=strlen(xh2); d=strcmp(xh1,xh2); if(b=c&dname,person-xh,person-fh); printf(%-10s%-20s%-

10、50sn,person-name,person-xh,person-fh); fclose(fp); printf(*nn);void search1() / 按姓名搜索函数 int k=0; char namekey8; personnode *person; person=(personnode *)malloc(sizeof(personnode); printf(n please enter the namehead you need :); scanf(%s,namekey); if(fp=fopen(filename,rb)=NULL) printf(n cant open the

11、file); exit(0); while(!feof(fp) fscanf(fp,%s %s %sn,person-name,person-xh,person-fh); if(!strcmp(namekey,person-name) /比较是否相同 相同则输出结果 否则输出未找到记录 printf(nn have serched,the courrent is:); printf(%-10s%-20s%-50sn,person-name,person-xh,person-fh); k=1; if(!k) printf(nn sorry,there is not the current of

12、thiss people n); fclose(fp);void search2() /按学号搜索函数 int k=0; char xhkey16; personnode *person; person=(personnode *)malloc(sizeof(personnode); printf(n please enter the roomnumber you want to serch:); scanf(%s,xhkey); if(fp=fopen(filename,rb)=NULL) printf(n cant open the file ); exit(0); while(!feof

13、(fp) fscanf(fp,%s %s %sn,person-name,person-xh,person-fh); if(!strcmp(xhkey,person-xh) /比较是否相同 相同则输出结果 否则输出未找到记录 printf(nn have got it,the current is:); printf(%-10s%-20s%-50sn,person-name,person-xh,person-fh); k=1; if(!k) printf(nn sorry,there is not the current of thiss people n); fclose(fp);void

14、search3() /按房号搜索函数 int k=0; char fhkey30; personnode *person; person=(personnode *)malloc(sizeof(personnode); printf(n please enter the roomnumber you want to serch:); scanf(%s,fhkey); if(fp=fopen(filename,rb)=NULL) printf(n cant open thefile); exit(0); while(!feof(fp) fscanf(fp,%s %s %sn,person-nam

15、e,person-xh,person-fh); if(!strcmp(fhkey,person-fh) /比较是否相同 相同则输出结果 否则输出未找到记录 printf(nn have got it,the current is:); printf(%-10s%-20s%-50sn,person-name,person-xh,person-fh); k=1; if(!k) printf(nn sorry,there is not the current of thiss peoplen); fclose(fp);void main() /主函数 int m,flag=1; / m用于控制菜单的

16、选择项 flag用于控制菜单弹出 while(flag) printf(%33sn,thefile); printf(*n); printf(tt0-创建一个新的学生数据文件n); printf(tt1-读取一个已经建立的文件n); printf(tt2- 按名字进行查询n); printf(tt3- 按学号进行查询n); printf(tt4- 按宿舍号进行查询n); printf(tt5-输出按学号进行排序的文件n); printf(tt6-退出n); printf(*n); printf(t 请选择(0-6)n); scanf(%d,&m); switch(m) case 0:creat(); break; case 1:readfile(); break; case 2:search1(); break; case 3:search2(); break; case 4:search3(); break; case 5:output(); break; case 6:exit(0); break;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2