学生成绩管理系统是很多C语言初学者在大一都会有机会接触到的一个大作业,其中会涉及到文件的读写和创建,作者在这里会放出本实验的相关代码,总代码量大概600多行,其题目本身不难,各个函数之中的代码重复度较高,只要熟练掌握运用“数组,排序,查找字段,文件的读写”,则本题即可轻松过关!! 以下代码资源仅作为学习参考!!!目录
一,简述
二,注意
三,代码
1.结构体及函数声明
```c #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<dos.h> #define LEN sizeof(struct student) #define FORMART "|%-7d|%-15s|%-10d|%-9d|%-10.1f|%-12.1f|%-12.1f|%-12.1f|%-12.1f|n" #define DATA stu[i].num,stu[i].name,stu[i].term,stu[i].classnum,stu[i].chinese,stu[i].math,stu[i].engnish,stu[i].sum,stu[i].average struct student { int num; char name[20]; int classnum; int term; float chinese; float math; float engnish; float average; float sum; }; void in();//录入成绩信息 void show();//输出全部学生信息以及不及格学生名单 void order();//排序函数 void del();//删除学生信息 void menu();//菜单 void modify();//修改学生信息 void insert_();//插入学生信息 void search_();//查询以一位学生信息 void showclass();//按班输出学生信息 void showorder();//查看排名信息 void showflunk();//查看不及格名单 void order2(); struct student stu[1000];//定义一个容量为1000的临时存放文件内容
menu函数
void menu() { system("cls"); printf("nnnn"); printf("tttt|-------------------学生成绩管理系统--------------------|n"); printf("tt|tt| tttttt|n"); printf("tttt|1.录入学生信息tttttt|n"); printf("tttt|2.查看全部学生信息ttttt|n"); printf("tttt|3.修改学生信息tttttt|n"); printf("tttt|4.查询学生信息tttttt|n"); printf("tttt|5.删除学生信息tttttt|n"); printf("tttt|6.查看不及格学生信息ttttt|n"); printf("tttt|7.分班查看成绩tttttt|n"); printf("tttt|8.查看排名情况tttttt|n"); printf("tttt|0.退出系统tttttt|ntttt-------------------学生成绩管理系统----------------------nn"); printf("tttt|请选择您需要的操作:"); }
in函数(录入)
void in() { int i,m=0; char ch[2]; FILE *fp; if((fp=fopen("data.txt","ab+"))==NULL) { printf("无法找到此文件n"); return; } while(!feof(fp)) { if(fread(&stu[m],LEN,1,fp)==1) { m++; } } fclose(fp); if(m==0) { printf("此文件为空!n"); } else { system("cls"); show(); } if((fp=fopen("data.txt","wb"))==NULL) { printf("文件不存在!n"); return; } for(i=0;i<m;i++) fwrite(&stu[i],LEN,1,fp); printf("n是否要录入学生信息?(y/n):"); scanf("%s",ch); while(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0) { printf("学号:"); scanf("%d",&stu[m].num); for(i=0;i<m;i++) if(stu[i].num==stu[m].num) { printf("此学号已存在,按任意键继续"); getch(); fclose(fp); return; } printf("姓名:"); scanf("%s",stu[m].name); printf("班级:"); scanf("%d",&stu[m].classnum); printf("学年:"); scanf("%d",&stu[m].term); printf("语文成绩:"); scanf("%f",&stu[m].chinese); printf("数学成绩:"); scanf("%f",&stu[m].math); printf("英语成绩:"); scanf("%f",&stu[m].engnish); stu[m].sum=stu[m].chinese+stu[m].math+stu[m].engnish; stu[m].average=(stu[m].chinese+stu[m].math+stu[m].engnish)*1.0/3; if(fwrite(&stu[m],LEN,1,fp)!=1) { printf("存储失败(任意键继续)"); getch(); } else { printf("保存成功!n"); m++; } printf("继续录入?n"); scanf("%s",ch); } fclose(fp); printf("全部操作已完成!n"); }
search_函数(查询)
void search_() { system("cls"); FILE *fp; int snum,i,m=0; if((fp=fopen("data.txt","rb"))==NULL) { printf("未找到该文件!(warning!)n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; fclose(fp); if(m==0) { printf("文件为空!n"); return; } printf("………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………n请输入需要查询学生学号:"); scanf("%d",&snum); for(i=0;i<m;i++) { if(stu[i].num==snum) { printf("n|学号 |姓名 |学年 |班级 |语文 |数学 |英语 |总分 |平均分 |tn"); printf(FORMART,DATA); break; } } if(i==m) { printf("未查找到此学生相关信息!n"); } }
del函数(删除)
void del() { system("cls"); show(); FILE *fp; int snum,i,j,m=0; char ch[2]; if((fp=fopen("data.txt","r+"))==NULL) { printf("此文件不存在!n"); return; } while(!feof(fp)) { if(fread(&stu[m],LEN,1,fp)) m++; } fclose(fp); printf("n请输入您想要删除学生的学号:"); scanf("%d",&snum); for(i=0;i<m;i++) { if(snum==stu[i].num) { printf("目标找到,确认删除?(y/n)"); scanf("%s",ch); if(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0) { for(j=i;j<m;j++) stu[j]=stu[j+1]; m--; if((fp=fopen("data.txt","wb"))==NULL) { printf("文件不存在!n"); return; } for(j=0;j<m;j++) if(fwrite(&stu[j],LEN,1,fp)!=1) { printf("保存失败!n"); getch(); } fclose(fp); printf("删除成功!"); show(); } else { printf("成功找到目标,取消删除操作!n"); } break; } } if(i==m) { printf("已删除!n"); } getch(); }
modify函数(修改)
void modify() { FILE *fp; int i=0,j=0,m=0,snum; struct student t; if((fp=fopen("data.txt","r+"))==NULL) { printf("文件不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) { m++; } if(m==0) { printf("此文件为空!n"); fclose(fp); return; } show(); printf("请输入要修改信息学生的学号:"); scanf("%d",&snum); for(i=0;i<m;i++) if(snum==stu[i].num) { printf("目标查找成功!可以继续操作:n"); printf("姓名:"); scanf("%s",stu[i].name); printf("学年:"); scanf("%d",&stu[i].term); printf("语文:"); scanf("%f",&stu[i].chinese); printf("数学:"); scanf("%f",&stu[i].math); printf("英语:"); scanf("%f",&stu[i].engnish); printf("n修改成功!n"); if((fp=fopen("data.txt","wb"))==NULL) { printf("无法正确打开文件!n"); return; } for(j=0;j<m;j++) if(fwrite(&stu[j],LEN,1,fp)!=1) { printf("保存失败!n"); getch(); } fclose(fp); break; } if(i==m) { printf("没有找到这名学生信息!n"); } }
insert函数(插入)
void insert_() { FILE *fp; int i,j,k,m=0,snum; show(); if((fp=fopen("data.txt","ab+"))==NULL) { printf("文件不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) { m++; } fclose(fp); if(m==0) { printf("此文件为空!n"); fclose(fp); return; } printf("nnnn请输入要插入的位置:"); scanf("%d",&snum); for(i=0;i<m;i++) if(snum==stu[i].num) break; if(i<m) { printf("查找到目标:可以继续!n"); printf("姓名:"); scanf("%s",&stu[i+1].name); printf("班级:"); scanf("%d",&stu[i+1].classnum); printf("学年:"); scanf("%d",&stu[i+1].term); printf("语文:"); scanf("%f",&stu[i+1].chinese); printf("数学:"); scanf("%f",&stu[i+1].math); printf("英语:"); scanf("%f",&stu[i+1].engnish); } else { printf("插入位置错误!n"); getch(); return; } if((fp=fopen("data.txt","wb+"))==NULL); { printf("此文件无法打开!n"); return; } for(k=0;k<m+1;k++) if(fwrite(&stu[k],LEN,1,fp)!=1) { printf("保存失败!n"); getch(); } printf("插入成功!n"); fclose(fp); }
show函数(查看全部学生)
void show() { system("cls"); order2(); FILE *fp; int i,m=0,c=0,m1=0,e=0; fp=fopen("data.txt","rb"); while(!feof(fp)) { if(fread(&stu[m],LEN,1,fp)==1) m++; } fclose(fp); printf("|学号 |姓名 |学年 |班级 |语文 |数学 |英语 |总分 |平均分 |tn"); for(i=0;i<m;i++) { printf(FORMART,DATA); } }
order函数(排序)
void order() { FILE *fp; int i=0,j=0,m=0; struct student t; if((fp=fopen("data.txt","r+"))==NULL) { printf("文件不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) { m++; } if(m==0) { printf("此文件为空!n"); fclose(fp); return; } if((fp=fopen("data.txt","wb"))==NULL) { printf("此文件不存在!n"); return; } for(i=0;i<m-1;i++) for(j=i+1;j<m;j++) if(stu[i].average<stu[j].average) { t=stu[i]; stu[i]=stu[j]; stu[j]=t; } if((fp=fopen("data.txt","wb"))==NULL) { printf("文件不存在!n"); return; } for(i=0;i<m;i++) { if(fwrite(&stu[i],LEN,1,fp)!=1) { printf("保存失败!n"); getch(); } } fclose(fp); printf("保存成功!n"); show(); }
showclass函数(按班级查看)
void showclass() { system("cls"); FILE *fp; int i,j,m=0,c; if((fp=fopen("data.txt","r+"))==NULL) { printf("此文件不存在!n"); return; } while(!feof(fp)) { if((fread(&stu[m],LEN,1,fp))==1) m++; } if(m==0) { printf("此文件为空!n"); fclose(fp); return; } if((fp=fopen("data.txt","rb"))==NULL) { printf("文件不存在!n"); return; } printf("请输入您需要查看成绩的班级:"); scanf("%d",&c); printf("n%d班成绩如下:n",c); printf("|学号 |姓名 |学年 |班级 |语文 |数学 |英语 |总分 |平均分 |tn"); for(j=0;j<m;j++) { if(stu[j].classnum==c) printf(FORMART,stu[j].num,stu[j].name,stu[j].term,stu[j].classnum,stu[j].chinese,stu[j].math,stu[j].engnish,stu[j].sum,stu[j].average); } }
showorder函数(查看排名)
void showorder() { order(); system("cls"); FILE *fp; int i,m=0,c=0,m1=0,e=0; fp=fopen("data.txt","rb"); while(!feof(fp)) { if(fread(&stu[m],LEN,1,fp)==1) m++; } fclose(fp); printf("|排名 |学号 |姓名 |学年 |班级 |语文 |数学 |英语 |总分 |平均分 |tn"); for(i=0;i<m;i++) { printf("|%-7d|%-7d|%-15s|%-10d|%-9d|%-10.1f|%-12.1f|%-12.1f|%-12.1f|%-12.1f|n",i+1,DATA); } }
showflunk函数(查看不及格)
void showflunk() { system("cls"); FILE *fp; int i,m=0,c=0,m1=0,e=0; fp=fopen("data.txt","rb"); while(!feof(fp)) { if(fread(&stu[m],LEN,1,fp)==1) m++; } fclose(fp); printf("nnn^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^以下为各科不及格学生名单^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^nnnnnnn语文不及格学生名单:n_____________________________________________________________________________________________________________n"); printf("|学号 |姓名 |学年 |班级 |语文 |数学 |英语 |总分 |平均分 |tn"); for(i=0;i<m;i++) { if(stu[i].chinese<60) { printf(FORMART,DATA); c++; } } if(c==0) printf("|无 | 无 |无 | 无 | 无 | 无 | 无 |无 | 无 |n"); //shux printf("n数学不及格学生名单:nn_____________________________________________________________________________________________________________n"); printf("|学号 |姓名 |学年 |班级 |语文 |数学 |英语 |总分 |平均分 |tn"); for(i=0;i<m;i++) { if(stu[i].math<60) { printf(FORMART,DATA); m1++; } } if(m1==0) printf("|无 | 无 |无 | 无 | 无 | 无 | 无 |无 | 无 |n"); //yiny printf("n英语不及格学生名单:nn_____________________________________________________________________________________________________________n"); printf("|学号 |姓名 |学年 |班级 |语文 |数学 |英语 |总分 |平均分 |tn"); for(i=0;i<m;i++) { if(stu[i].engnish<60) { printf(FORMART,DATA); e++; } } if(e==0) printf("|无 | 无 |无 | 无 | 无 | 无 | 无 |无 | 无 |n"); }
order2函数(此函数是当初老师要求添加的函数,于整个程序可有可无)
void order2() { FILE *fp; int i=0,j=0,m=0; struct student t; if((fp=fopen("data.txt","r+"))==NULL) { printf("文件不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) { m++; } if(m==0) { printf("此文件为空!n"); fclose(fp); return; } if((fp=fopen("data.txt","wb"))==NULL) { printf("此文件不存在!n"); return; } for(i=0;i<m-1;i++) for(j=i+1;j<m;j++) if(stu[i].num>stu[j].num) { t=stu[i]; stu[i]=stu[j]; stu[j]=t; } if((fp=fopen("data.txt","wb"))==NULL) { printf("文件不存在!n"); return; } for(i=0;i<m;i++) { if(fwrite(&stu[i],LEN,1,fp)!=1) { printf("保存失败!n"); getch(); } } fclose(fp); printf("保存成功!n"); }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算