




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*/#include #include #include #include /* 字定义函数声明 */void Add();/增加记录void Delete();/删除记录void Search();/查找记录void Alter();/修改记录void Views();/查看所有记录void delete_all(); /清除所有记录int check(char strID); /查找文件记录中已经存在的学生ID/* 定义学生信息结构体 */struct student /学生信息(学号,姓名,性别,籍贯,电话,住址,民族); char ID10; char name10; char sex4; char nativePlace10; char phone13; char nation6;struct student stu;FILE *fp;/定义文件指针/* main() 主函数 */void main()int flag;while(flag!=7)printf(/n/t/t 【 请选择您所要的操作 】 /n);printf(/t/t*/n);printf(/t/t 1、增加记录 4、修改记录 /n);printf(/t/t 2、删除记录 5、清除所有记录 /n);printf(/t/t 3、查询记录 6、所有记录列表 /n);printf(/t/t 按任意键退出 /n);printf(/t/t*/n);scanf(%d,&flag);switch(flag)case 1:Add();/增加记录getch();system(cls);break;case 2:Delete();/删除记录getch();system(cls);break;case 3:Search();/查找记录getch();system(cls);break;case 4:Alter();/修改记录getch();system(cls);break;case 5:delete_all();/清空所有记录getch();system(cls);break;case 6:Views();/查看所有记录getch();system(cls);break;default:exit(0);/* 插入新记录 */void Add() if(fp=fopen(StudentMessage,ab+)=NULL)printf(学生信息文件打开失败!);exit(1);elseint check_add(char stuID);long flength,offset;int k=0,t;/t用来接收check()函数的传值char str53;fseek(fp,0,SEEK_END);flength=ftell(fp)/sizeof(stu); /统计文件中有多少条记录printf(/t请输入要插入的学生的信息:/n);input_message:printf(/t学号:);scanf(%s,&stu.ID);t=check_add(stu.ID); if(t=1)printf(/t 该学号已经存在,不允许重复插入!请重新输入一个学号。/n);goto input_message; /跳转到“input_message”标记处继续执行printf(/t姓名:);scanf(%s,&);printf(/t性别:);scanf(%s,&stu.sex);printf(/t籍贯:);scanf(%s,&stu.nation);printf(/t电话:);scanf(%s,&stu.phone);printf(/t名族:);scanf(%s,&stu.nativePlace);rewind(fp);/检测文件中是否有空字符串,如果有则在此处插入新记录,如果没有则插入到文件尾while(!feof(fp)fread(&str,sizeof(stu),1,fp);/检测到空字符串,则将fp所指向的文件关闭,以读写方式重新打开if(strcmp(str,)=0)fclose(fp);fp=fopen(StudentMessage,rb+);break;k+;offset=sizeof(stu)*k;fseek(fp,offset,SEEK_SET);fwrite(&stu,sizeof(stu),1,fp);fclose(fp);printf(插入数据成功!/n);/* 检测将要插入的学号是否已存在文件记录中 */int check(char stuID10)int id=0,k=1;FILE *fpp;struct student checkID;if(fpp=fopen(StudentMessage,rb)=NULL) /以只读方式打开一个二进制文件StudentMessageprintf(文件打开失败!/n);exit(1);/打开失败,返回系统while(!feof(fpp)fread(&checkID,sizeof(stu),1,fpp);/检测用户输入的学号是否已经存在,若存在则终止程序的执行if(strcmp(checkID.ID,stuID)=0) break;id+;fclose(fpp);return id*k;/* 检测输入的学号是否能插入 */int check_add(char stuID10)int id;FILE *fpp;struct student checkID;if(fpp=fopen(StudentMessage,rb)=NULL) /以只读方式打开一个二进制文件StudentMessageprintf(文件打开失败!/n);exit(1);/打开失败,返回系统while(!feof(fpp)fread(&checkID,sizeof(stu),1,fpp);/检测用户输入的学号是否已经存在,若存在则终止程序的执行if(strcmp(checkID.ID,stuID)=0) id=1; break;elseid=0;fclose(fpp);return id;/* 根据用户输入的学号删除记录 */void Delete() printf(删除相应记录!/n);if(fp=fopen(StudentMessage,rb+)=NULL)/以可读可写方式打开一个二进制文件printf(文件打开失败!/n);return;elsechar message10; /接收用户需要删除的学号int i;long flength;fseek(fp,0,SEEK_END); /把文件指针移到文件尾flength=ftell(fp)/sizeof(struct student); /计算文件中有多少条记录printf(/t请输入您要删除的学号:);scanf(%s,message);i=check(message);long offset=sizeof(stu)*i;/记录要删除的学号的位置if(flength=0)printf(文件记录为空!/n);return; else if(iflength)printf(没有该学生信息!/n);return;else/将要删除的字符串全部置为空strcpy(stu.ID,);strcpy(,);strcpy(stu.sex,);strcpy(stu.nation,);strcpy(stu.phone,);strcpy(stu.nativePlace,);fseek(fp,offset,SEEK_SET); /移动指针到要删除的学号的位置fwrite(&stu,sizeof(stu),1,fp); /将置空的信息重新写回到文件中printf(/t/t数据删除成功!/n);fclose(fp);/* 查找数据 */void Search()if(fp=fopen(StudentMessage,rb)=NULL) /以只读方式打开StudentMessage文件printf(/t文件打开失败!/n);return;elsechar message10;/接收用户需要查找的信息int i;long flength,offset;fseek(fp,0,SEEK_END);/将文件指针移文件尾flength=ftell(fp)/sizeof(struct student);/得到文件中有多少条记录printf(/t请输入您要查找的学号:);scanf(%s,message);i=check(message);offset=sizeof(struct student)*i;if(flength=0)printf(/t文件记录为空!/n);return; else if(iflength)printf(/t/t查找失败,没有找到相应信息!/n);return;else/输出查找到的内容rewind(fp);fseek(fp,offset,SEEK_SET);fread(&stu,sizeof(struct student),1,fp);printf(学号:%s ,stu.ID);printf(姓名:%s ,);printf(性别:%s ,stu.sex);printf(籍贯:%s ,stu.nation);printf(电话:%s ,stu.phone);printf(民族:%s/n,stu.nativePlace);fclose(fp);/* 修改记录 */void Alter() printf(修改相应记录!/n);if(fp=fopen(StudentMessage,rb+)=NULL)printf(文件打开失败!/n);exit(1);elsechar message10; /存储用户要修改的学号int i;long flength,offset;fseek(fp,0,SEEK_END);/移动文件指针到文件尾flength=ftell(fp)/sizeof(struct student);/得到文件中有多少条记录printf(/t请输入您要修改的学号:);scanf(%s,message);i=check(message);offset=sizeof(struct student)*i;/记录要修改的记录在文件中的位置if(flength=0)printf(文件记录为空!/n);return; else if(iflength)printf(没有该学生信息!/n);return;elserewind(fp);fseek(fp,offset,SEEK_SET);fread(&stu,sizeof(struct student),1,fp);printf(该学生原来的信息:/n);printf(/t学号:%s ,stu.ID);printf(姓名:%s ,);printf(性别:%s ,stu.sex);printf(籍贯:%s ,stu.nation);printf(电话:%s ,stu.phone);printf(名族:%s/n/n,stu.nativePlace);printf(请更新该学生的信息:/n);strcpy(stu.ID,message);printf(/t姓名:);scanf(%s,&);printf(/t性别:);scanf(%s,&stu.sex);printf(/t籍贯:);scanf(%s,&stu.nation);printf(/t电话:);scanf(%s,&stu.phone);printf(/t名族:);scanf(%s,&stu.nativePlace);fseek(fp,offset,SEEK_SET); /将文件指针指向要修改的地方fwrite(&stu,sizeof(stu),1,fp);/将修改后的内容重新写回到原来的地方printf(/t数据更新成功!/n);fclose(fp);/* 查看所有记录 */void Views() long flength;if(fp=fopen(StudentMessage,rb)=NULL)printf(文件打开失败!/n);exit(1);fseek(fp,0,SEEK_END); /移动文件指针到文件尾flength=ftell(fp)/sizeof(struct student);/得到文件中有多少条记录if(flength=0)printf(文件中没有记录!);return;rewind(fp); /将文件指针移动到文件头printf(/t/t/t所有记录列表/n/n);while(!feof(fp)fread(&stu,sizeof(stu),1,fp);if(strcmp(stu.ID,)!=0)/检测文件中的空字符串,如果不是空字符串则输出printf(学号:%s ,stu.ID);printf(姓名:%s ,);printf(性别:%s ,stu.sex);printf(籍贯:%s ,stu.nation);printf(电话:%s ,stu.phone);printf(民族:%s/n,stu.nativePlace);fclose(fp);/* 删除所有记录 */void delet
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025安徽宣城市旌德县兴业融资担保有限公司招聘3人考前自测高频考点模拟试题及完整答案详解1套
- 2025年潍坊寒亭区(经济区)公开招聘中小学教师(11名)考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025江苏南京白下人力资源开发服务有限公司招聘劳务派遣人员2人(二十五)模拟试卷有答案详解
- 2025湖北咸宁市通山县政金融资担保有限公司招聘工作人员3人模拟试卷及1套参考答案详解
- 2025年福建泉州市华侨大学分析测试中心招聘实验技术系列人员(4月)模拟试卷有完整答案详解
- 2025国内产品交易合同协议书
- 解除商品房租赁合同5篇
- 教资保育考试题库及答案
- 美术创意考试题库及答案
- 代理合同电线代理合同6篇
- DG-TJ08-2466-2025 超低能耗建筑设计标准(公共建筑)
- 安全生产盲区
- 社区居民健康档案建立
- 非公企业党建培训课件
- 物业管家手机管理办法
- 2025发展对象考试试题库及参考答案(完整版)
- 妇产科开展宫腔镜手术的可行性报告
- 重视体检的健康知识讲座
- DB54∕T 0275-2023 民用建筑节能技术标准
- 中国工运史课件
- 质量检测监理管理制度
评论
0/150
提交评论