对C语言中文件操作函数的使用实例,曾经的一道作业题。

现在用Java比较多,回过头才发现曾经学习的C已经忘却了不少┭┮﹏┭┮

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100typedef struct{long int sto;char stun[20];float goal[3];float aver;float sum;} STU;void manu(){printf("***************************************************************************\n");printf("***                       学生信息管理菜单                       ***\n");printf("***            1、录入学生信息                               ***\n");printf("***            2、查询学生信息                               ***\n");printf("***            3、添加学生信息                               ***\n");printf("***            4、学生信息排序                               ***\n");printf("***            5、插入学生信息                               ***\n");printf("***            6、修改学生信息                               ***\n");printf("***            7、删除学生信息                               ***\n"); printf("***            0、输入0退出程序                             ***\n"); printf("***************************************************************************\n");
} void insert(FILE *fp,STU s[]){//录入数据 int num=0;printf("请依次输入学号、用户名、语数英三科成绩:\n"); if((fp=fopen("timu.dat","w"))==NULL){printf("cannot open the file!");}scanf("%ld%s%f%f%f",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);fprintf(fp,"%ld  %s  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);   fclose(fp);
}void secret(FILE *fp,STU s[]){int f;printf("请选择查询方式:\n");printf("1、按学号顺序查询\n");printf("2、查询所有学生信息\n");scanf("%d",&f);switch(f){case 1:{long int stoo;printf("请输入学号:");scanf("%ld",&stoo);int num=0;if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");}for(num;num<rows(fp);num++){fscanf(fp,"%ld  %s  %f  %f  %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);s[num].aver=(s[num].goal[0]+s[num].goal[1]+s[num].goal[2])/3;s[num].sum=s[num].goal[0]+s[num].goal[1]+s[num].goal[2]; if(s[num].sto==stoo){printf("%ld  %s  %7.2f  %7.2f  %7.2f  %7.2f  %7.2f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2],s[num].aver,s[num].sum);}}fclose(fp);break;}case 2:{int num=0;if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");}for(num;num<rows(fp);num++){fscanf(fp,"%ld  %s  %f  %f  %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);s[num].aver=(s[num].goal[0]+s[num].goal[1]+s[num].goal[2])/3;s[num].sum=s[num].goal[0]+s[num].goal[1]+s[num].goal[2];  printf("%ld  %s  %7.2f  %7.2f  %7.2f  %7.2f  %7.2f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2],s[num].aver,s[num].sum);}fclose(fp);break;}default: printf("输入有错\n");}
}int add(FILE *fp,STU s[]){//添加信息 long int stoo;int num=0;char stunn[20];float goall[3];if((fp=fopen("timu.dat","a"))==NULL){printf("cannot open the file!");return 0; }scanf("%ld%s%f%f%f",&stoo,stunn,&goall[0],&goall[1],&goall[2]);for(num;num<rows(fp);num++){fscanf(fp,"%ld  %s  %f  %f  %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);   if(stoo==s[num].sto){printf("学号重复,不能重新录入!\n");return 0;}}fprintf(fp,"%ld  %s  %f  %f  %f\n",stoo,stunn,goall[0],goall[1],goall[2]);printf("添加成功!\n");      fclose(fp);
}int sort(FILE *fp,STU s[]){int num=0;if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");return 0;    }for(num;num<rows(fp);num++){fscanf(fp,"%ld  %s  %f  %f  %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);s[num].aver=(s[num].goal[0]+s[num].goal[1]+s[num].goal[2])/3;s[num].sum=s[num].goal[0]+s[num].goal[1]+s[num].goal[2];//  printf("%f",s[num].aver);//   printf("%ld  %s  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);} STU tmp;int t,y;int o;printf("请选择排序方式:\n");printf("1、按学号顺序排列;\n");printf("2、按语文成绩排列;\n");printf("3、按数学成绩排列;\n");printf("4、按英语成绩排列;\n"); printf("5、按平均成绩排列;\n");printf("6、按总成绩排列;\n");scanf("%d",&o);switch(o){case 1:{for(t=0;t<rows(fp)-1;t++){for(y=0;y<rows(fp)-t-1;y++){if(s[y+1].sto<s[y].sto){tmp=s[y];s[y]=s[y+1];s[y+1]=tmp;}}}for(num=0;num<rows(fp);num++){   printf("%ld  %s  %f  %f  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2],s[num].aver,s[num].sum);}          break;}case 2:{for(t=0;t<rows(fp)-1;t++){for(y=0;y<rows(fp)-t-1;y++){if(s[y+1].goal[0]<s[y].goal[0]){tmp=s[y];s[y]=s[y+1];s[y+1]=tmp;}}}for(num=0;num<rows(fp);num++){   printf("%ld  %s  %f  %f  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2],s[num].aver,s[num].sum);}                      break;}case 3:{for(t=0;t<rows(fp)-1;t++){for(y=0;y<rows(fp)-t-1;y++){if(s[y+1].goal[1]<s[y].goal[1]){tmp=s[y];s[y]=s[y+1];s[y+1]=tmp;}}}for(num=0;num<rows(fp);num++){   printf("%ld  %s  %f  %f  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2],s[num].aver,s[num].sum);}                      break;}case 4:{for(t=0;t<rows(fp)-1;t++){for(y=0;y<rows(fp)-t-1;y++){if(s[y+1].goal[2]<s[y].goal[2]){tmp=s[y];s[y]=s[y+1];s[y+1]=tmp;}}}for(num=0;num<rows(fp);num++){   printf("%ld  %s  %f  %f  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2],s[num].aver,s[num].sum);}                      break;}case 5:{for(t=0;t<rows(fp)-1;t++){for(y=0;y<rows(fp)-t-1;y++){if(s[y+1].aver<s[y].aver){tmp=s[y];s[y]=s[y+1];s[y+1]=tmp;}}}for(num=0;num<rows(fp);num++){ printf("%ld  %s  %f  %f  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2],s[num].aver,s[num].sum);}                      break;}case 6:{for(t=0;t<rows(fp)-1;t++){for(y=0;y<rows(fp)-t-1;y++){if(s[y+1].sum<s[y].sum){tmp=s[y];s[y]=s[y+1];s[y+1]=tmp;}}}for(num=0;num<rows(fp);num++){   printf("%ld  %s  %f  %f  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2],s[num].aver,s[num].sum);}                      break;}} //重新写入fclose(fp);return 0;
}int charu(FILE *fp,STU s[]){long int cha;int num,t,tmp; printf("请输入想要插入位置,在学号为多少的学生前插入:\n");scanf("%d",&cha);if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");}for(num=0;num<rows(fp);num++){fscanf(fp,"%ld  %s  %f  %f  %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);    printf("!!!!%ld  %s  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);}fclose(fp);int just;for(num=0;num<rows(fp);num++){if(s[num].sto==cha){for(t=rows(fp);t>num;t--){s[t]=s[t-1];printf("@@@@@%ld  %s  %f  %f  %f\n",s[t].sto,s[t].stun,s[t].goal[0],s[t].goal[1],s[t].goal[2]);}printf("请输入插入的学生信息:\n");scanf("%ld %s %f %f %f",&s[t].sto,s[t].stun,&s[t].goal[0],&s[t].goal[1],&s[t].goal[2]);//         for(num=0;num<rows(fp)+1;num++){
//              printf("%ld  %s  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);
//          }tmp=rows(fp);//printf("%d\n",tmp);if((fp=fopen("timu.dat","w"))==NULL){printf("cannot open the file!");} for(num=0;num<tmp+1;num++){//  printf("%ld  %s  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);fprintf(fp,"%ld  %s  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);}fclose(fp);printf("插入成功!\n");break;}} return 0;
}int delet(FILE *fp,STU s[]){long int cha;int num,t,tmp; printf("请输入想要删除的信息学号:\n");scanf("%d",&cha);if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");}for(num=0;num<rows(fp);num++){fscanf(fp,"%ld  %s  %f  %f  %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]); }fclose(fp);int just;for(num=0;num<rows(fp);num++){if(s[num].sto==cha){for(t=num;t<rows(fp);t++){s[t]=s[t+1];}break;}}tmp=rows(fp);if((fp=fopen("timu.dat","w"))==NULL){printf("cannot open the file!");} for(num=0;num<tmp-1;num++){fprintf(fp,"%ld  %s  %f  %f  %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);}printf("删除成功!\n");fclose(fp);return 0;
}int rows(FILE *fp){char buf[1000];int lineCnt = 0;if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");return 0;    }while (fgets(buf, 1000, fp)) // fgets循环读取,直到文件最后,才会返回NULLlineCnt++; // 累计行数fclose(fp);//printf("file line count = %d\n", lineCnt);return lineCnt;
}int xiugai(FILE *fp,STU s[]){int q,num,fs,tmp;char sr[20];long int xiu;FILE *fpq;printf("请输入想要修改的学生学号:\n");scanf("%ld",&xiu);printf("1、修改姓名;\n");printf("2、修改语文成绩;\n");printf("3、修改数学成绩;\n");printf("4、修改英语成绩;\n");scanf("%d",&q);switch(q){case 1:{printf("输入新姓名:\n");scanf("%s",sr);if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");return 0;    }for(num=0;num<rows(fp);num++){fscanf(fp,"%ld %s %f %f %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);if(s[num].sto==xiu){strcpy(s[num].stun,sr);}}fclose(fp);tmp=rows(fp);if((fp=fopen("timu.dat","w"))==NULL){printf("cannot open the file!");return 0;    }for(num=0;num<tmp;num++){fprintf(fp,"%ld %s %f %f %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);}fclose(fp);   break;}case 2:{printf("输入新语文成绩:\n");scanf("%d",&fs);if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");return 0;    }for(num=0;num<rows(fp);num++){fscanf(fp,"%ld %s %f %f %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);if(s[num].sto==xiu){s[num].goal[0]=fs;}}fclose(fp);tmp=rows(fp);if((fp=fopen("timu.dat","w"))==NULL){printf("cannot open the file!");return 0;    }for(num=0;num<tmp;num++){fprintf(fp,"%ld %s %f %f %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);}fclose(fp);   break;}case 3:{printf("输入新数学成绩:\n");scanf("%d",&fs);if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");return 0;    }for(num=0;num<rows(fp);num++){fscanf(fp,"%ld %s %f %f %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);if(s[num].sto==xiu){s[num].goal[1]=fs;}}fclose(fp);tmp=rows(fp);if((fp=fopen("timu.dat","w"))==NULL){printf("cannot open the file!");return 0;    }for(num=0;num<tmp;num++){fprintf(fp,"%ld %s %f %f %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);}fclose(fp);   break;}case 4:{printf("输入新英语成绩:\n");scanf("%d",&fs);if((fp=fopen("timu.dat","r"))==NULL){printf("cannot open the file!");return 0;    }for(num=0;num<rows(fp);num++){fscanf(fp,"%ld %s %f %f %f\n",&s[num].sto,s[num].stun,&s[num].goal[0],&s[num].goal[1],&s[num].goal[2]);if(s[num].sto==xiu){s[num].goal[2]=fs;}}fclose(fp);if((fp=fopen("timu.dat","w"))==NULL){printf("cannot open the file!");return 0;    }for(num=0;num<tmp;num++){fprintf(fp,"%ld %s %f %f %f\n",s[num].sto,s[num].stun,s[num].goal[0],s[num].goal[1],s[num].goal[2]);}fclose(fp);     break;}             }
}int main(){STU s[N];FILE *fp;int i;while(1){manu();printf("请输入以上操作序号:");scanf("%d",&i);switch(i){case 1:insert(fp,s);break;case 2:secret(fp,s);break;   case 3:add(fp,s);break; case 4:sort(fp,s);break;    case 5:charu(fp,s);break;   case 6:xiugai(fp,s);break;  case 7:delet(fp,s);case 0:exit(0);}}return 0;
}

【C/C++】文件操作实例——学生信息管理相关推荐

  1. 基于文件操作的学生信息管理系统(含登录验证)

    本人C++大一小白,最近有闲着的时间,就写了个学生信息管理系统,全文件操作,有些地方复杂度太大,还有很大的修改空间. 功能结构图 后期关于成绩修改和信息修改实现没写,思想跟已经实现的修改密码一样,你若 ...

  2. Java最全文件操作实例汇总

    本文实例汇总了Java文件操作.分享给大家供大家参考,具体如下: 1.创建文件夹 ? 1 2 3 4 5 6 7 8 9 10 11 //import java.io.*; File myFolder ...

  3. php分页实例下载,PHP文件操作实例总结【文件上传、下载、分页】

    本文实例讲述了PHP文件操作.分享给大家供大家参考,具体如下: 1.文件上传 上传域: input type="file" 普通文本框(text.password.textarea ...

  4. Python tkinter+文件操作 实现学生信息管理系统

    选题:学生信息管理系统 项目介绍: 这个项目主要包含了UI界面和后台程序,该项目是通过文件存储的方式来保存学生信息的,主要包含的操作有学生信息的增删改查功能,还有用户的登录功能,涵盖的信息有学生的学号 ...

  5. python对文件的读操作方法有哪些-Python文件操作实例大全

    目录: 一.打开文件 二.文件对象的方法 三.文件的关闭 四.文件的读取和定位 五.文件的写入 六.课时28课后习题及答案 大多数程序都遵循着:输入->处理->输出的模型,首先接受输入数据 ...

  6. Linux共享文件夹中毒,Linux find命名快速查找中毒文件操作实例

    电脑中毒是不可避免的,Linux系统也是如此,在得知系统中毒后,首要任务是找到病毒文件并将其清除,在Linux系统下可使用find命令查找病毒,下面通过实例讲解下find如何查找病毒. 例子 find ...

  7. python对文件操作实例_Python对文件文件夹的操作实例

    代码背景: 最近老看视频教程,我需要知道一部教程,需要多久能看完.win下文件夹里,多选视频文件,可以直接在属性中查看一共需要的时间.不过在网上下载的很多视频教程每一章都分布在不同的文件夹下,无法快捷 ...

  8. 用Python写个空课表生成器-Excel文件操作实例

    用Python写个空课表生成器 开发背景 刚入大学的CYQ加入了我们学校的学生会,面对繁杂的工作,能"偷懒"就"偷懒".这不,最近要举办几场活动,部门要安排人员 ...

  9. C语言文件操作实例代码

    C语言文件读写 字符.字符串.数字 int main() {FILE* fp;char ch;int num = 0;float a = 0;char str[100];fp = fopen(&quo ...

  10. ASP.NET 文件操作实例

    //文件使用FileUpload打开 if (FileUpload1.HasFile)         {             try             { //流读取            ...

最新文章

  1. win7下80端口被(Pid=4)占用的解决方法
  2. win2012 R2的ntp时间同步设置解析
  3. ASP.NET验证控件
  4. 监控页面后退前进,浏览器文档加载事件之pageshow、pagehide
  5. idea 编码扫描插件_代码神器:拒绝重复编码,这款IDEA插件了解一下
  6. flutter 图解_Flutter 54: 图解基本生命周期
  7. springboot使用thymeleaf完成数据的页面展示
  8. Struts2 + Hibernate + Spring 以及javaweb模块问题解决(1)
  9. cv2.error: opencv(4.4.0)_【OpenCV 4开发详解】图像连通域分析
  10. FFmpeg之YUV420排列原理(二十三)
  11. 中保车服灾备云,为保险公司“上保险”
  12. 【架构】高可用高并发系统设计原则
  13. 技术分享 | 开发板网口热插拔自动获取IP地址
  14. editplus5激活码 文件下载 汉化包
  15. 学术派 |用深度学习实现2D到3D的转换
  16. git合并冲突【you have not concluded your merge】
  17. 对战平台虚拟War3局域网的原理
  18. 自己动手写三层代码生成器学习总结
  19. 记录一次Spark小问题的求证过程
  20. python连接SQL Server:Pymssql模块

热门文章

  1. box-sizing概述
  2. django CACHES
  3. 《走出强迫的泥潭——森田疗法指导集锦》
  4. java工作愿景_2018年年终总结以及来年目标愿景
  5. 计算机云什么不同步,微云同步盘和腾讯微云的区别!微云只上传不同步-太平洋电脑网...
  6. 信息系统项目管理师考试后多久出成绩?
  7. 中国移动互联网半年大报告解析
  8. 555定时器组成的应用之流水灯
  9. 【ESP8266+STM32】获取B站粉丝数,并在STM32屏上显示出来(物联网小项目)
  10. 怎么导出微信聊天的记录到Word