*************************************/#includestdio.h#includestdlib.h#includestring.h#includeconio.h/***********************字定义函数声明********************************/voidAdd();//增加记录voidDelete();//删除记录voidSearch();//查找记录voidAlter();//修改记录voidViews();//查看所有记录voiddelete_all();//清除所有记录intcheck(charstrID[]);//查找文件记录中已经存在的学生ID/*********************定义学生信息结构体**********/structstudent{//学生信息(学号,姓名,性别,籍贯,电话,住址,民族);charID[10];charname[10];charsex[4];charnativePlace[10];charphone[13];charnation[6];};structstudentstu;FILE*fp;//定义文件指针/*********************main()主函数*************************************/voidmain(){intflag;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){case1:Add();//增加记录getch();system(cls);break;case2:Delete();//删除记录getch();system(cls);break;case3:Search();//查找记录getch();system(cls);break;case4:Alter();//修改记录getch();system(cls);break;case5:delete_all();//清空所有记录getch();system(cls);break;case6:Views();//查看所有记录getch();system(cls);break;default:exit(0);}}}/*****************插入新记录*******************************/voidAdd(){if((fp=fopen(StudentMessage,ab+))==NULL){printf(学生信息文件打开失败!);exit(1);}else{intcheck_add(charstuID[]);longflength,offset;intk=0,t;//t用来接收check()函数的传值charstr[53];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);gotoinput_message;//跳转到“input_message”标记处继续执行}printf(/t姓名:);scanf(%s,&stu.name);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);}}/******************检测将要插入的学号是否已存在文件记录中**************************/intcheck(charstuID[10]){intid=0,k=1;FILE*fpp;structstudentcheckID;if((fpp=fopen(StudentMessage,rb))==NULL)//以只读方式打开一个二进制文件StudentMessage{printf(文件打开失败!/n);exit(1);//打开失败,返回系统}while(!feof(fpp)){fread(&checkID,sizeof(stu),1,fpp);//检测用户输入的学号是否已经存在,若存在则终止程序的执行if(strcmp(checkID.ID,stuID)==0){break;}id++;}fclose(fpp);returnid*k;}/********************检测输入的学号是否能插入*****************************************/intcheck_add(charstuID[10]){intid;FILE*fpp;structstudentcheckID;if((fpp=fopen(StudentMessage,rb))==NULL)//以只读方式打开一个二进制文件StudentMessage{printf(文件打开失败!/n);exit(1);//打开失败,返回系统}while(!feof(fpp)){fread(&checkID,sizeof(stu),1,fpp);//检测用户输入的学号是否已经存在,若存在则终止程序的执行if(strcmp(checkID.ID,stuID)==0){id=1;break;}else{id=0;}}fclose(fpp);returnid;}/*******************根据用户输入的学号删除记录************/voidDelete(){printf(删除相应记录!/n);if((fp=fopen(StudentMessage,rb+))==NULL)//以可读可写方式打开一个二进制文件{printf(文件打开失败!/n);return;}else{charmessage[10];//接收用户需要删除的学号inti;longflength;fseek(fp,0,SEEK_END);//把文件指针移到文件尾flength=ftell(fp)/sizeof(structstudent);//计算文件中有多少条记录printf(/t请输入您要删除的学号:);scanf(%s,message);i=check(message);longoffset=sizeof(stu)*i;//记录要删除的学号的位置if(flength==0){printf(文件记录为空!/n);return;}elseif(iflength){printf(没有该学生信息!/n);return;}else{//将要删除的字符串全部置为空strcpy(stu.ID,);strcpy(stu.name,);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);}}/******************查找数据***************************************/voidSearch(){if((fp=fopen(StudentMessage,rb))==NULL)//以只读方式打开StudentMessage文件{printf(/t文件打开失败!/n);return;}else{charmessage[10];//接收用户需要查找的信息inti;longflength,offset;fseek(fp,0,SEEK_END);//将文件指针移文件尾flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少条记录printf(/t请输入您要查找的学号:);scanf(%s,message);i=check(message);offset=sizeof(structstudent)*i;if(flength==0){printf(/t文件记录为空!/n);return;}elseif(iflength){printf(/t/t查找失败,没有找到相应信息!/n);return;}else{//输出查找到的内容rewind(fp);fseek(fp,offset,SEEK_SET);fread(&stu,sizeof(structstudent),1,fp);printf(学号:%s,stu.ID);printf(姓名:%s,stu.name);printf(性别:%s,stu.sex);printf(籍贯:%s,stu.nation);printf(电话:%s,stu.phone);printf(民族:%s/n,stu.nativePlace);}fclose(fp);}}/******************修改记录********************************/voidAlter(){printf(修改相应记录!/n);if((fp=fopen(StudentMessage,rb+))==NULL){printf(文件打开失败!/n);exit(1);}else{charmessage[10];//存储用户要修改的学号inti;longflength,offset;fseek(fp,0,SEEK_END);//移动文件指针到文件尾flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少条记录printf(/t请输入您要修改的学号:);scanf(%s,message);i=check(message);offset=sizeof(structstudent)*i;//记录要修改的记录在文件中的位置if(flength==0){printf(文件记录为空!/n);return;}elseif(iflength){printf(没有该学生信息!/n);return;}else{rewind(fp);fseek(fp,offset,SEEK