文件读取 学生成绩管理系统的设计与实现
来源:互联网 发布:手机网络变成2g 编辑:程序博客网 时间:2024/05/16 04:51
实现对数据录入、查询、增加、删除、修改、排序、统计的功能
#include <stdio.h>#define SIZE 10#include<string.h>#include<stdlib.h>#include<conio.h>struct student { int num; char name[10]; int Yuwen; int Maths; int En; int CScore; int Sum; double Avarage;}stu[SIZE];/*1查看数据(向文件fp中录入信息)*/void ck(){FILE *fp;fp=fopen("data.dat","wb");if(fp==NULL){printf(" cannot open file data.dat\n");exit(0);}printf("输入要录入的学生数目:");int N;scanf("%d", &N); printf("学号 姓名 语文 英语 数学 C语言\n");for (int i = 0; i < N; i++){scanf("%d%s%d%d%d%d",&stu[i].num,&stu[i].name,&stu[i].Yuwen,&stu[i].Maths,&stu[i].En,&stu[i].CScore);stu[i].Sum = stu[i].Yuwen + stu[i].Maths + stu[i].En + stu[i].CScore;stu[i].Avarage = stu[i].Sum / 4.0;}for (int i = 0; i < N; i++)if (fwrite(&stu[i], sizeof(struct student),1,fp)!=1)printf("file write error!\n");fclose(fp);}/*/*2输出文件fp中的数据*/void flist(){FILE *fp; int i; fp=fopen("data.dat","rb"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 成绩列表\n"); printf("-----------------------------------------------------------------------------------\n"); printf("学号 姓名 语文 数学 英语 C语言成绩 总成绩 平均成绩\n"); printf("-----------------------------------------------------------------------------------\n"); for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)//for(i=0;fread(&stu[i],6,1,fp)==1;i++){printf("%d%6s%6d%6d%6d%6d%6d %.2lf\n",stu[i].num,stu[i].name,stu[i].Yuwen,stu[i].Maths,stu[i].En,stu[i].CScore,stu[i].Sum,stu[i].Avarage);} printf("-----------------------------------------------------------------------------------\n\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); fclose(fp);}/*3查找数据*/void fsearch(){FILE *fp; int num; fp=fopen("data.dat","rb"); printf("请输入要查找的学号:"); scanf("%d",&num); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 查询结果\n"); printf("-----------------------------------------------------------------------------------\n"); printf("学号 姓名 语文 数学 英语 C语言 总成绩 平均成绩\n"); printf("-----------------------------------------------------------------------------------\n"); for(int i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++) if(stu[i].num==num) {printf("%d%6s%6d%6d%6d%6d%6d %.2lf\n",stu[i].num,stu[i].name,stu[i].Yuwen,stu[i].Maths,stu[i].En,stu[i].CScore,stu[i].Sum,stu[i].Avarage); } printf("-----------------------------------------------------------------------------------\n\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n\n"); fclose(fp);}/*4增加文件fp中的数据*/void fadden(){ FILE *fp; fp=fopen("data.dat","ab+"); // rewind(fp); for(int i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++); int N; printf("请输入要添加学生信息数目:"); scanf("%d", &N); for(int i = 0; i < N; i++){ printf("请输入要增加的学号,姓名,语文成绩,数学成绩,英语成绩 c语言成绩:\n"); scanf("%d%s%d%d%d%d",&stu[i].num, stu[i].name,&stu[i].Yuwen,&stu[i].Maths,&stu[i].En,&stu[i].CScore); stu[i].Sum = stu[i].Yuwen + stu[i].Maths + stu[i].En + stu[i].CScore; stu[i].Avarage = stu[i].Sum / 4.0; fwrite(&stu[i],sizeof(struct student),1,fp);} fclose(fp); return;}/*5修改文件fp中的数据*/void fchange(){FILE *fp;fp=fopen("data.dat","rb"); int i,num,n; int flag=0; printf("请输入要修改学生的学号:"); scanf("%d",&num); for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++) if(stu[i].num==num){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 成绩列表\n"); printf("-----------------------------------------------------------------------------------\n"); printf("学号 姓名 语文 数学 英语 C语言 总成绩 平均成绩\n"); printf("-----------------------------------------------------------------------------------\n"); printf("%d%6s%6d%6d%6d%6d%6d %.2lf\n",stu[i].num,stu[i].name,stu[i].Yuwen,stu[i].Maths,stu[i].En,stu[i].CScore,stu[i].Sum,stu[i].Avarage); printf("-----------------------------------------------------------------------------------\n\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); n=i; flag=1; }fclose(fp); if(flag==0){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 输入错误!\n"); printf(" 请返回!\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); return; } printf("\n\n\n"); fp=fopen("data.dat","rb+"); fseek(fp,n*sizeof(struct student),0); printf("请输入新的学号,姓名,语文成绩,数学成绩,英语成绩,c语言成绩:"); scanf("%d%s%d%d%d%d",&stu[i].num,stu[i].name,&stu[i].Yuwen,&stu[i].Maths,&stu[i].En,&stu[i].CScore); stu[i].Sum = stu[i].Yuwen + stu[i].Maths + stu[i].En + stu[i].CScore;stu[i].Avarage = stu[i].Sum / 4.0; fwrite(&stu[i],sizeof(struct student),1,fp); fclose(fp); fp=fopen("data.dat","rb"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 成绩列表\n"); printf("-----------------------------------------------------------------------------------\n"); printf("学号 姓名 语文 数学 英语 C语言 总成绩 平均成绩\n"); printf("-----------------------------------------------------------------------------------\n"); for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++){ printf("%d%6s%6d%6d%6d%6d%6d %.2lf\n",stu[i].num,stu[i].name,stu[i].Yuwen,stu[i].Maths,stu[i].En,stu[i].CScore,stu[i].Sum,stu[i].Avarage);} printf("-----------------------------------------------------------------------------------\n\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); fclose(fp);}/*6成绩排序*/void ftaxis(){int i,j,n; FILE *fp; struct student t; fp=fopen("data.dat","rb"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 成绩列表\n"); printf("-----------------------------------------------------------------------------------\n"); printf("学号 姓名 语文 数学 英语 C语言 总成绩 平均成绩\n"); printf("-----------------------------------------------------------\n"); for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++){ printf("%d%6s%6d%6d%6d%6d%6d %.2lf\n",stu[i].num,stu[i].name,stu[i].Yuwen,stu[i].Maths,stu[i].En,stu[i].CScore,stu[i].Sum,stu[i].Avarage);} printf("-----------------------------------------------------------------------------------\n\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); fclose(fp); n=i; for(i=0;i<n;i++) for(j=i+1;j<n;j++) if(stu[i].Sum<stu[j].Sum) { t=stu[i]; stu[i]=stu[j]; stu[j]=t; } fp=fopen("data.dat","wb"); printf("\n\n\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 成绩列表 \n"); printf("-----------------------------------------------------------------------------------\n"); printf("学号 姓名 语文 数学 英语 C语言 总成绩 平均成绩\n"); printf("-----------------------------------------------------------------------------------\n"); for(i=0;i<n;i++){fwrite(&stu[i],sizeof(struct student),1,fp); printf("%d%6s%6d%6d%6d%6d%6d %.2lf\n",stu[i].num,stu[i].name,stu[i].Yuwen,stu[i].Maths,stu[i].En,stu[i].CScore,stu[i].Sum,stu[i].Avarage);} printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); fclose(fp);}/*7删除*/void delet() { FILE *fp; fp=fopen("data.dat","r+"); printf("请输入要删除的学生学号:"); int i, num; scanf("%d", &num);for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++){ } fp=fopen("data.dat","w+"); for(int j=0;j<i;j++) { if (num != stu[j].num) { fwrite(&stu[j],sizeof(struct student),1,fp); } } fclose(fp);} /*8统计*/void tongji2(){ int x,k; printf("********************输入统计选项**********************\n"); /*选择功能菜单*/ printf("统计语文成绩不及格率请按:1\n"); printf("统计数学成绩不及格率请按:2\n"); printf("统计英语成绩不及格率请按:3\n"); scanf("%d",&x);/*用户选择变量 */ FILE *fp; fp=fopen("data.dat","rb"); if(x==1) { k=0; for(int i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)/*统计语文成绩不及格率*/ { if(stu[i].Yuwen<60) k++,printf("不及格的分数为%d\n",stu[i].Yuwen); } printf("共%d人语文未及格\n",k); printf(" **********************************************************"); } if(x==2) { k=0; for(int i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)/*统计数学成绩不及格率*/ { if(stu[i].Maths<60) k++, printf("不及格的分数为%d\n",stu[i].Maths); } printf("共%d人数学未及格\n",k); printf(" **********************************************************"); } if(x==3) { k=0; for(int i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)/*统计英语成绩不及格率*/ { if(stu[i].En<60) k++, printf("不及格的分数为%d\n",stu[i].En); } printf("共%d人英语不及格\n",k); printf(" **********************************************************"); } if(x==4) { k=0; for(int i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)/*统计英语成绩不及格率*/ { if(stu[i].CScore<60) k++, printf("不及格的分数为%d\n",stu[i].CScore); } printf("共%d人C语言成绩不及格\n",k); printf(" **********************************************************"); }}/*主函数*/ int main(){int n; for(;;){printf("\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※ ※\n"); printf("※ 欢迎来到学生信息管理系统 ※\n"); printf("※ ※\n"); printf("※ 系部:建筑环境工程学院 专业:建筑电气与智能化 ※\n"); printf("※ 姓名: 学号: ※\n"); printf("※ 序号: 指导老师: ※\n"); printf("※ ※\n"); 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("※ ▲8.统计不及格▲ ※\n"); printf("※ ▲9.退出系统▲ ※\n"); printf("※ ※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("请输入选择项(1-9):"); scanf("%d",&n); printf("\n\n\n\n"); if(n>0&&n<9){switch(n){ case 1:ck();break; case 2:flist();break; case 3:fsearch();break; case 4:fadden();break; case 5:fchange();break; case 6:ftaxis();break; case 7:delet();break; case 8:tongji2();break; case 9:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※ ※\n"); printf("※ 谢谢使用! ※\n"); printf("※ 再见! ※\n"); printf("※ ※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); exit(0); }} else { printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※ ※\n"); printf("※ 输入错误! ※\n"); printf("※ 请退出! ※\n"); printf("※ ※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");break;}}return 0;}/*2013 hu 32 54 87 542014 rt 35 54 87 982015 ko 96 54 87 222016 lo 65 84 78 45*/
举一个例子
查询:
阅读全文
1 0
- c语言文件读取 学生成绩管理系统的设计与实现
- 文件读取 学生成绩管理系统的设计与实现
- 学生成绩管理系统的设计与实现:1
- 一个学生成绩管理系统的设计与实现:2
- 用文件实现学生成绩管理系统
- C语言实现学生成绩管理系统设计
- 学生成绩管理系统设计
- 学生成绩管理系统数据库设计
- 学生成绩管理系统设计
- 学生成绩管理系统总体设计
- 汇编程序设计--学生成绩管理系统
- 学生成绩管理系统(链表的实现)
- 学生成绩管理系统的初步实现(C)
- c++实现简单的学生成绩管理系统
- 学生成绩管理系统的链表实现
- 类实现学生成绩管理系统
- 简单的学生成绩管理系统
- 简单的学生成绩管理系统
- Algorithm Arrays-3 Max Sum Contiguous Subarray
- log4j日志写入redis扩展实现(log4j-redis-appender)
- JNotify JNI动态库在Linux下的编译
- Ocacle修改表
- vue公共样式3 theme.scss
- 文件读取 学生成绩管理系统的设计与实现
- Minimum Time Difference不复杂
- JAVA基础-多线程(一)
- 多项式的各种操作
- 轮播组件vue
- Java对象序列化详解
- Jury Compromise
- pthread_cleanup_push()/pthread_cleanup_pop()
- winform设置DataGridView某行某列单元格为可编辑状态