900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 学生成绩管理系统(C语言实现)大作业不会?快来看看吧!

学生成绩管理系统(C语言实现)大作业不会?快来看看吧!

时间:2022-06-08 20:56:09

相关推荐

学生成绩管理系统(C语言实现)大作业不会?快来看看吧!

目录

一,简述二,注意三,代码1.结构体及函数声明menu函数in函数(录入)search_函数(查询)del函数(删除)modify函数(修改)insert函数(插入)show函数(查看全部学生)order函数(排序)showclass函数(按班级查看)showorder函数(查看排名)showflunk函数(查看不及格)order2函数(此函数是当初老师要求添加的函数,于整个程序可有可无)

一,简述

学生成绩管理系统是很多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].averagestruct 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("\n\n\n\n");printf("\t\t\t\t|-------------------学生成绩管理系统--------------------|\n");printf("\t\t|\t\t| \t\t\t\t\t\t|\n");printf("\t\t\t\t|1.录入学生信息\t\t\t\t\t\t|\n");printf("\t\t\t\t|2.查看全部学生信息\t\t\t\t\t|\n");printf("\t\t\t\t|3.修改学生信息\t\t\t\t\t\t|\n");printf("\t\t\t\t|4.查询学生信息\t\t\t\t\t\t|\n");printf("\t\t\t\t|5.删除学生信息\t\t\t\t\t\t|\n");printf("\t\t\t\t|6.查看不及格学生信息\t\t\t\t\t|\n");printf("\t\t\t\t|7.分班查看成绩\t\t\t\t\t\t|\n");printf("\t\t\t\t|8.查看排名情况\t\t\t\t\t\t|\n");printf("\t\t\t\t|0.退出系统\t\t\t\t\t\t|\n\t\t\t\t-------------------学生成绩管理系统----------------------\n\n");printf("\t\t\t\t|请选择您需要的操作:");}

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|学号 |姓名 |学年|班级|语文|数学 |英语 |总分 |平均分|\t\n");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("\n\n\n\n请输入要插入的位置:");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("|学号 |姓名 |学年|班级|语文|数学 |英语 |总分 |平均分|\t\n");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("|学号 |姓名 |学年|班级|语文|数学 |英语 |总分 |平均分|\t\n");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("|排名 |学号 |姓名 |学年|班级|语文|数学 |英语 |总分 |平均分|\t\n");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("\n\n\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^以下为各科不及格学生名单^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n\n\n\n\n语文不及格学生名单:\n_____________________________________________________________________________________________________________\n");printf("|学号 |姓名 |学年|班级|语文|数学 |英语 |总分 |平均分|\t\n");for(i=0;i<m;i++){if(stu[i].chinese<60){printf(FORMART,DATA);c++;}}if(c==0)printf("|无| 无 |无 | 无| 无| 无 | 无 |无| 无 |\n");//shuxprintf("\n数学不及格学生名单:\n\n_____________________________________________________________________________________________________________\n");printf("|学号 |姓名 |学年|班级|语文|数学 |英语 |总分 |平均分|\t\n");for(i=0;i<m;i++){if(stu[i].math<60){printf(FORMART,DATA);m1++;}}if(m1==0)printf("|无| 无 |无 | 无| 无| 无 | 无 |无| 无 |\n");//yinyprintf("\n英语不及格学生名单:\n\n_____________________________________________________________________________________________________________\n");printf("|学号 |姓名 |学年|班级|语文|数学 |英语 |总分 |平均分|\t\n");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");}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。