本文主要详细介绍了实现学生成绩管理系统的C语言代码。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
一个班在考试期间未参加考试的人数不超过30人(具体人数由键盘输入),考试科目不超过6门(具体人数由键盘输入,但不少于3门)。学生成绩管理系统是一个非常实用的程序,如果用户输入的数据能保存下来,下次运行时能读出,那就更有用了。增加读写文件的功能,即编程如下菜单驱动的学生成绩管理系统:
(1)输入每个学生的学号、姓名、各科考试成绩。
(2)计算各门课程的总分和平均分。
(3)计算每个学生的总分和平均分。
(4)按照每个学生的总成绩,从高到低排列名次表。
(5)按学生人数从小到大排出报告表。
(6)按照人名字典顺序,排出报表。
(7)根据学号,查看学生排名及其考试成绩。
(8)点名查看学生排名及其考试成绩。
(9)按照优秀(90-100分)、良好(80-89分)、一般(70-79分)、及格(60-69分)、不及格(0-59分)五个类别,统计每门课程每一类别的人数和百分比。
(10)输出每个学生的学号、姓名、各科考试成绩、总成绩、平均分以及每门课程的总成绩、平均分。
代码如下:
# includestdio.h
#includestring.h
#includestdlib.h
const int N=40
int i,j;
typedef结构控件
{
int号;
char name[20];
char name 1[20];
int CJ[7];
int all
inter lave;
} AVA;
//-函数
void menu();
void menu 1();
void menu 2();
void menu4(AVA stu[],int n,int n3);
//-
//-
void basic(AVA stu[]);
//-
//-信息输入功能
void键盘(AVA stu[],int n,int N2);
//-
void case1(AVA stu[],int n,int a);
//========================
//- Function函数
void function 4(AVA斯图[],AVAt,int n);//总分排序
void函数5(AVA斯图[],AVAt,int n);//对学生编号进行排序
void函数6(AVA斯图[],AVAt,int n);//名称排序
void function7(AVA stu[],AVA t,int n,int w);//学生ID查找
void function8(AVA stu[],AVA t,int n,char s[]);//名称查找
void function9(AVA stu[],int n,int a);//数据分析
void function10(AVA stu[],int n,int a,int b1[],int B2[]);//输出学生信息
void function11(AVA stu[],int n,int a);//保存在文件中
void exchange(AVA stu[],int a,int b);//文件读取功能
//-
int main()
{
AVA斯图;
for(I=0;i 30我)
{
斯图[我]。all=0;
斯图[我]。lave=0;
}
基础(stu);
返回0;
}
无效菜单()
{
printf(' _ _ \ n ');
printf(' | | \ n ');
printf(' \ n ');
printf(' \ n ');
Printf(“学生信息管理系统\ n”);
printf(' \ n ');
printf(' \ n ');
printf(' \ n ');
printf(' | | \ n ');
printf('---\ n ');
}
void菜单1()
{
Printf('-信息输入-\ n ');
Printf('-学习成绩-\ n ');
Printf('-学生成绩-\ n ');
Printf('-总分排序-\ n ');
Printf('-学号排序-\ n ');
Printf('-名称排序-\ n ');
Printf('-学号查询-\ n ');
Printf('-名称查询-\ n ');
Printf('-数据分析-\ n ');
Printf('-信息输出-\ n ');
打印(六)数据存档-\ n ';
}
请参见菜单2()
{
printf(" _ \ n ");
printf(| | \ n);
打印(六)功能代号-\ n ';
printf("-12345 678891011-\ n ");
printf(| | \ n);
printf("-\ n ");
}
见选单4(艾娃斯图[],int n,int n3/))读档函数总调用
{
printf('如果档案中没有存有足够的学科数,则可能提取乱码\ n ';
printf('如果文件中没有数据则会显示无法打开\ n ';
交换(stu,n,n3);
案例1( stu,n,n3);
}
//中转函数,菜单与功能的桥梁
参见基本(AVA斯图[])
{
menu();
printf('若无学生信息档案需要先录入\ n ';
printf('1-录入2-读档3-退出\ n ';
内部n、n1、n3;
-从
{
扫描文件(" %d,n1 ");
if(3n1||n11)
{
printf('数据输入错误,请重新输入\ n ';
}
}而(3n 1 | | n11);
printf('输入学生数量\ n ';
-从
{
扫描文件(" %d,n ");
if(30n||n1)
{
printf('数据输入错误,请重新输入1-30 \ n ';
}
}而(30n | | n1);
printf('输入学科数量\ n ';
-从
{
扫描文件(" %d,n3 ");
if(6n3||n33)
{
printf('数据输入错误,请重新输入3-6 \ n ';
}
}而(6n 3 | | n 33);
如果(n1==1)
{
键盘(stu,n,n3);
案例1( stu,n,n3);
}
else if(n1==2)菜单4(stu,n,n3);
其他语句
{
printf('欢迎再次使用\ n ';
退出(0);
}
}
=================================================================。功能函数调用的函数
见案例1(AVA斯图[],int n,int a)
{
艾娃t;
for(I=0);I n;(一)
{
for(j=0);(j)a;(j)
{
史都。全部stu[i].CJ[j];
}
史都lave=stu[i]全部/a;
}
内部x[10]={ 0 } y[10]={ 0 };
for(j=0);(j)a;(j)
{
for(I=0);I n;(一)
{
和斯图,斯图.CJ[j];
}
}
for(I=0);一a;(一)
{
x[I]=y[I]/n;
}
菜单1();
菜单2();
printf('数据录入成功\ n ';
printf('请输入你想选择的功能\ n ';
内部N2;
while(扫描f(% d,n2)n2!=0)
{
如果(n2==2)
{
for(I=0);一a;(一)
{
printf('第%d门总分为:%d,平均分为:%d\n,i 1,y[i],x[I];
}
菜单1();
菜单2();
printf('完成\ n ';
}
else if(n2==3)
{
内部f;
printf('计算完成,是否打印?一或0 \ n ';
扫描文件(" %d,f ");
如果(f==1)
{
for(I=0);I n;(一)
{
printf('第%d个同学的总分为:%d,平均分为用法:%d\n,i 1,stu[i]说明.史都.洗个澡:
}
printf('打印完成\ n ';
菜单2();
}
其他语句
{
菜单1();
菜单2();
}
printf('完成\ n ';
}
else if(n2==4)
{
功能4( stu,t,n);
菜单1();
菜单2();
printf('完成\ n ';
}
else if(n2==5)
{
函数5( stu,t,n);
菜单1();
菜单2();
printf('完成\ n ';
}
else if(n2==6)
{
功能6( stu,t,n);
菜单1();
菜单2();
printf('完成\ n ';
}
else if(n2==7)
{
内部w;
printf('输入你想查询的学号\ n ';
scanf("% d,w ");
功能7( stu,t,n,w);
菜单1();
菜单2();
printf('完成\ n ';
}
else if(n2==8)
{
坦克s[30];
printf('输入你想查询的名字\ n ';
扫描文件(" %s "," s ");
功能8(stu,t,n,s);
菜单1();
菜单2();
printf('完成\ n ';
}
else if(n2==9)
{
功能9(斯图,n,a);
菜单1();
菜单2();
printf('完成\ n ';
}
else if(n2==10)
{
函数10( stu,n,a,x,y);
菜单1();
菜单2();
printf('完成\ n ';
}
else if(n2==11)
{
功能11(斯图,n,a);
菜单1();
菜单2();
printf('完成\ n ';
}
其他菜单2();
}
}
=================================================================。信息录入函数
参见键盘(AVA斯图[],int n,int n2)
{
for(I=0);I n;(一)
{
printf('正在输入%d个学生信息\n,i1;//
printf('学号:\ n);
扫描f(% d,stu[i]).不要!
printf('姓名:\ n);
扫描文件(" %s ",stu[i]).名称;
printf('姓名拼音简写\ n ';
扫描f("% s ",stu[I]。姓名1);
printf('分别输入%d门学课成绩\n,N2;
for(j=0);N2;(j)
{
扫描f(% d,stu[i]).CJ(j));
}
}
}
参见函数4(AVA斯图[],AVAt,int n)/(r)总分排序
{
printf('总分排序\ n ';
*fp文件:
for(I=0);一年级学生型;(一)
for(j=0);j n-1-I;(j)
{
如果斯图,斯图.火种源[j 1].全部)
{
t=stu[j];
斯图[j]=[j 1]:
史都(J1)=t;
}
}
printf('正在生成文件\ n ';
printf('请及时拷贝文件,否则会造成数据丢失\ n ';
fp=fopen('总分排序. txt ',' w ';
if(fp==NULL)
{
printf('打开失败\ n ';
退出(0);
}
for(I=0);I n;(一)
{
fprinff(FP," %s %d\n ",stu[i].名字,史都。全部(全部);
}
fclose(FP);
}
参见函数5(AVA斯图[],AVAt,int n)/(r)学号排序
{
printf('学号排序\ n ';
*fp文件:
for(I=0);一年级学生型;(一)
for(j=0);j n-1-I;(j)
{
如果斯图,斯图.诺斯都[j 1].页:1
{
t=stu[j];
斯图[j]=[j 1]:
史都(J1)=t;
}
}
茶名称[n];
strcpy(名称,'学号为");
printf('正在生成文件\ n ';
printf('请及时拷贝文件,否则会造成数据丢失\ n ';
fp=fopen('学号排序. txt ',' w ';
if(fp==NULL)
{
printf('打开失败\ n ';
退出(0);
}
for(I=0);I n;(一)
{
fprinff(FP," %s%d\n ",名称斯图[我].不要!
fprinff(FP," %s%d\n ",stu[i].名字,史都。全部(全部);
}
fclose(FP);
}
参见函数6(AVA斯图[],AVAt,int n)/(r)姓氏排序
{
printf('姓名排序\ n ';
*fp文件:
for(I=0);一年级学生型;(一)
for(j=0);j n-1-I;(j)
{
if(stu[j].name 1[0]stu[J1]。名称1[0])
{
t=stu[j];
斯图[j]=[j 1]:
史都(J1)=t;
}
}
printf('正在生成文件\ n ';
printf('请及时拷贝文件,否则会造成数据丢失\ n ';
fp=fopen('姓名排序. txt ',' w ';
if(fp==NULL)
{
printf('打开失败\ n ';
退出(0);
}
for(I=0);I n;(一)
{
fprinff(FP," %s%d\n ",stu[i].名字,史都。全部(全部);
}
fclose(FP);
}
参见函数7(AVA斯图[]、AVAt、int n、int w)/(w)学号查找
{
int m=0;
for(I=0);一年级学生型;(一)
for(j=0);j n-1-I;(j)
{
如果斯图,斯图.火种源[j 1].全部)
{
t=stu[j];
斯图[j]=[j 1]:
史都(J1)=t;
}
}
for(I=0);I n;(一)
{
m。
如果斯图[我].无==w)
{
printf('学号为:%d\n,斯图[我].不要!
printf('姓名为:%s\n,斯图[我].名称;
printf('成绩为:%d\n,斯图[我].全部(全部);
printf('排名为:%d\n,m。
打断;打断;
}
}
}
参见函数8(AVA斯图[]、AVAt、int n、char s[])//姓名查找
{
int m=0;
for(I=0);一年级学生型;(一)
for(j=0);j n-1-I;(j)
{
如果斯图,斯图.火种源[j 1].全部)
{
t=stu[j];
斯图[j]=[j 1]:
史都(J1)=t;
}
}
for(I=0);I n;(一)
{
m。
if(strcmp(stu[i]).名称,s==0)
{
printf('学号为:%d\n,斯图[我].不要!
printf('姓名为:%s\n,斯图[我].名称;
printf('成绩为:%d\n,斯图[我].全部(全部);
printf('排名为:%d\n,m。
打断;打断;
}
}
}
参见函数9(AVA斯图[],int n,int a)/(p/)数据分析
{
printf('请在文件夹中查看\ n ';
for(I=0);一a;(一)
{
双k1=0,k2=0,k3=0,k4=0,K5=0;
for(j=0);(j)n;(j)
{
如果斯图,斯图.CJ[I]=90)k1;
else if(stu[j]).c[I]=80斯图[j]的缩写.CJ[I]=89)k2;
else if(stu[j]).c[I]=70斯图[j]的缩写.CJ[I]=79)k3;
else if(stu[j]).c[I]=60斯图[j]的缩写.CJ[I]=69)k4;
else if(stu[j]).CJ[I]=59)K5;
}
*fp文件:
fp=fopen('数据分析. txt ',' a ';
if(fp==NULL)
{
printf('打开失败\ n ';
退出(0);
}
坦克s[20];
strcpy(s,"主题");
s[7]=' 0 ' I;
S7-1200可编程控制器:
char name 1[20];
茶名称2[20];
茶名称3[20];
茶名称4[20];
茶名称5[20];
strcpy(名称1,'优:' % ';
strcpy(名称2,'良好:' % ';
strcpy(名称3,'中等:' % ';
strcpy(名称4,'及格:' % ';
strcpy(名称5,'不及格:' % ';
fprintf(fp,' \n%s\n ',s);
fprintf(fp,' %s%.2f\n ',name1,(k1 * 100)/n);
fprintf(fp,' %s%.2f\n ',name2,(k2 * 100)/n);
fprintf(fp,' %s%.2f\n ',name3,(k3 * 100)/n);
fprintf(fp,' %s%.2f\n ',name4,(k4 * 100)/n);
fprintf(fp,' %s%.2f\n ',name5,(K5 * 100)/n);
k1=0,k2=0,k3=0,k4=0,K5=0;
fclose(FP);
}
}
void function10(AVA stu[],int n,int a,int b1[],int b2[])//输出学生信息
{
for(I=0;I n;我)
{
printf('学号:%d\n ',stu[i].否);
printf('姓名:%s\n ',stu[i].姓名);
printf('总分:%d\n ',stu[i].所有);
printf('平均分:%d\n ',stu[i].lave);
printf('每科分数为:');
for(j=0;j a;j)
{
printf('%d ',stu[i].CJ[j]);
}
printf(' \ n ');
printf(' \ n ');
printf(' \ n ');
printf(' \ n ');
}
printf('学科平均分为:\ n’);
for(j=0;j a;j)
{
printf('第%d学科平均分为:%d\n ',j 1,B1[j]);
}
printf('学科总分:\ n’);
for(j=0;j a;j)
{
printf('第%d学科总分为:%d\n ',j 1,B2[j]);
}
}
空的函数11(AVA斯图[],int n,int a)//存进文件中
{
文件* fp
fp=fopen('学生信息存档. txt ',' a ');
if(fp==NULL)
{
printf('无法打开\ n’);
退出(0);
}
char name[30];
char name 1[30];
char name 2[30];
strcpy(名称,每科成绩:');
strcpy(名称1,总平均成绩:');
strcpy(名称2,总成绩:');
for(I=0;I n;我)
{
fprintf(fp,' \n%d %s\n ',stu[i].不,斯图[我]。姓名);
fprintf(fp,' %s %d\n ',name2,stu[i].所有);
fprintf(fp,' %s %d\n ',name1,stu[i].lave);
fprintf(fp,' %s\n ',name);
for(j=0;j a;j)
{
fprintf(fp,' %d ',stu[i].CJ[j]);
}
}
fclose(FP);
文件*fpk1、*fpk2、*fpk3、*fpk4、*fpk5、*fpk6、*fpk7、*fpk8、* fpk9
fpk1=fopen('学号. txt ',' a ');
fpk2=fopen('姓名. txt ',' a ');
fpk3=fopen('姓名简称. txt ',' a ');
fpk4=fopen('学科1.txt ',' a ');
fpk5=fopen('学科2.txt ',' a ');
fpk6=fopen('学科3.txt ',' a ');
fpk7=fopen('学科4.txt ',' a ');
fpk8=fopen('学科5.txt ',' a ');
fpk9=fopen('学科6.txt ',' a ');
if(FP k1==NULL | | FPK 2==NULL | | FPK 3==NULL | | FPK 4==NULL | | FPK 5==NULL | | FPK 6==NULL | | FPK 7==NULL | | FPK 8==NULL | | FPK 9==NULL)
{
printf('无法打开\ n’);
退出(0);
}
for(I=0;I n;我)
{
fprintf(fpk1,' %d\n ',stu[i].否);
fprintf(fpk2,' %s\n ',stu[i].姓名);
fprintf(fpk3,' %s\n ',stu[I]。姓名1);
fprintf(fpk4,' %d\n ',stu[i].CJ[0]);
fprintf(fpk5,' %d\n ',stu[i].CJ[1]);
fprintf(fpk6,' %d\n ',stu[i].CJ[2]);
如果(a==4||a==5||a==6)
{
fprintf(fpk7,' %d\n ',stu[i].CJ[3]);
}
如果(a==5||a==6)
{
fprintf(fpk8,' %d\n ',stu[i].CJ[4]);
}
如果(a==6)
{
fprintf(fpk9,' %d\n ',stu[i].CJ[5]);
}
}
fclose(FP k1);
fclose(FPK新协议);
fclose(FPK 3);
fclose(FPK 4);
fclose(FPK 5号);
fclose(FPK 6号);
fclose(FPK 7);
fclose(FPK八国集团);
fclose(FPK九大);
}
void exchange(AVA stu[],int a,int b)//读档函数a学生b学科
{
文件*fpk1、*fpk2、*fpk3、*fpk4、*fpk5、*fpk6、*fpk7、*fpk8、* fpk9
fpk1=fopen('学号. txt ',' r ');
fpk2=fopen('姓名. txt ',' r ');
fpk3=fopen('姓名简称. txt ',' r ');
fpk4=fopen('学科1.txt ',' r ');
fpk5=fopen('学科2.txt ',' r ');
fpk6=fopen('学科3.txt ',' r ');
fpk7=fopen('学科4.txt ',' r ');
fpk8=fopen('学科5.txt ',' r ');
fpk9=fopen('学科6.txt ',' r ');
if(FP k1==NULL | | FPK 2==NULL | | FPK 3==NULL | | FPK 4==NULL | | FPK 5==NULL | | FPK 6==NULL | | FPK 7==NULL | | FPK 8==NULL | | FPK 9==NULL)
{
printf('无法打开\ n’);
退出(0);
}
I=0;
char s1[N],s2[N],s3[N],s4[N],s5[N],s6[N],s7[N],s8[N],S9[N];
while(fgets(s1,40,fpk1)!=空)
{
int w;
w=斯特伦(S1);
如果(w==2)
{
斯图[我]。否=S1[0]-' 0 ';
}
else if(w==3)
{
斯图[我]。no=(S1[0]-0 ')* 10 S1[1]-0;
}
我;
如果(i==a)破;
}
I=0;
while(fgets(s2,40,fpk2)!=空)
{
strcpy(stu[i].名字,S2);
我;
如果(i==a)破;
}
I=0;
while(fgets(s3,40,fpk3)!=空)
{
strcpy(stu[i].name1,S3);
我;
如果(i==a)破;
}
I=0;
while(fgets(s4,40,fpk4)!=空)
{
int w;
w=斯特伦(S4);
如果(w==2)
{
斯图[我]。CJ[0]=S4[0]-" 0 ";
}
else if(w==3)
{
斯图[我]。CJ[0]=(S4[0]-' 0 ')* 10 S4[1]-' 0 ';
}
我;
如果(i==a)破;
}
I=0;
while(fgets(s5,40,fpk5)!=空)
{
int w;
w=strlen(S5);
如果(w==2)
{
斯图[我]。CJ[1]=S5[0]-' 0 ';
}
else if(w==3)
{
斯图[我]。CJ[1]=(S5[0]-' 0 ')* 10 S5[1]-' 0 ';
}
我;
如果(i==a)破;
}
I=0;
while(fgets(s6,40,fpk6)!=空)
{
int w;
w=strlen(S6);
如果(w==2)
{
斯图[我]。CJ[2]=S6[0]-" 0 ";
}
else if(w==3)
{
斯图[我]。CJ[2]=(S6[0]-' 0 ')* 10 S6[1]-' 0);
}
我;
如果(i==a)破;
}
if(b==4||b==5||b==6)
{
I=0;
while(fgets(s7,40,fpk7)!=空)
{
int w;
w=strlen(S7);
如果(w==2)
{
斯图[我]。CJ[3]=S7[0]-' 0 ';
}
else if(w==3)
{
斯图[我]。CJ[3]=(S7[0]-' 0 ')* 10 S7[1]-' 0 ';
}
我;
如果(i==a)破;
}
}
if(b==5||b==6)
{
I=0;
while(fgets(s8,40,fpk8)!=空)
{
int w;
w=strlen(S8);
如果(w==2)
{
斯图[我]。CJ[4]=S8[0]-" 0 ";
}
else if(w==3)
{
斯图[我]。CJ[4]=(S8[0]-' 0 ')* 10 S8[1]-' 0 ';
}
我;
如果(i==a)破;
}
}
如果(b==6)
{
I=0;
while(fgets(s9,40,fpk9)!=空)
{
int w;
w=strlen(S9);
如果(w==2)
{
斯图[我]。CJ[5]=S9[0]-' 0 ';
}
else if(w==3)
{
斯图[我]。CJ[5]=(S9[0]-' 0 ')* 10 S9[1]-' 0);
}
我;
如果(i==a)破;
}
}
fclose(FP k1);
fclose(FPK新协议);
fclose(FPK 3);
fclose(FPK 4);
fclose(FPK 5号);
fclose(FPK 6号);
fclose(FPK 7);
fclose(FPK八国集团);
fclose(FPK九大);
printf('读档完成\ n’);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。