已阅读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广东环保集团总部招聘一般管理岗位员工9人笔试考试参考题库及答案解析
- 2025浙商银行福建福州分行招聘笔试考试备考题库及答案解析
- 2025广东昌教小学招聘语文临聘教师1人考试笔试备考题库及答案解析
- 2026年西电集团医院校园招聘(41人)考试笔试模拟试题及答案解析
- 人教版高中语文全五册文言文注释汇编
- 《思想道德与法治》(23版):第三章 继承优良传统 弘扬中国精神
- 超星尔雅学习通《现代自然地理学(南京师范大学)》2025章节测试附答案
- 学生能力提升与发展路径计划
- 公共体育民族操舞知到智慧树章节测试课后答案2024年秋广西科技大学
- 新冠样本转运流程的风险评估
- 液氨储罐更换拆除施工方案
- 2025年上海市嘉定区中考英语一模试卷
- 中国人寿营销员管理办法规定
- 【MOOC】金羽飞扬-世界冠军的羽毛球课堂-哈尔滨工业大学 中国大学慕课MOOC答案
- 2024福建福州鼓楼区华大街道办事处招聘专职网格员笔试备考试题及答案解析
评论
0/150
提交评论