代码实例(学生证管理程序).doc_第1页
代码实例(学生证管理程序).doc_第2页
代码实例(学生证管理程序).doc_第3页
代码实例(学生证管理程序).doc_第4页
代码实例(学生证管理程序).doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论