c语言学生成绩管理系统

author author     2023-04-13     367

关键词:

学生成绩管理系统
学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。
系统的主要功能包括:
1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后将学生成绩信息存储到一个二进制文件中。
2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求继续保存至原文件,并提示用户选择是否继续进行增加操作。
3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。
5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。
(1) 按学号查询,输入学号。
(2) 按姓名查询,输入全名。
6. 按不同条件对学生成绩进行统计工作。
(1) 按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。
(3) 分别找出3门课程成绩最高的学生,并输出他们的信息。
(4) 分别统计出3门课程的不及格率,并输出。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

#define MAX 80 //学生最大人数

#define max 3 //科目数量

struct classname //科目结构体,科目名称,该科目分数

char name[20];
float score;
;

struct student //学生结构体,学号,学生姓名,科目,平均分,总分

char no[20];
char std_name[20];
struct classname km[max];
float ave;
float sum;
int save; //检验数,没有添加删除函数,此变量没有作用,可删除,但是注意删除要把初始函数里的初始语句也删除
;

struct student stu[MAX];//全局变量,结构体数组

int nu=0;//全局变量 文件已存人数

void chushi()//程序初始化函数,对全局变量stu初始化

int i,j;
for(i=0;i<MAX;i++)

for(j=0;j<20;j++)

stu[i].no[j]='\0';
stu[i].std_name[j]='\0';
stu[i].km[j].name[j]='\0';
stu[i].km[j].score=0;

stu[i].ave=0;
stu[i].sum=0;
stu[i].save=0;



void av()/*求平均值*/

int i;
for(i=0;i<nu;i++)

stu[i].sum=stu[i].km[0].score+stu[i].km[1].score+stu[i].km[2].score;
stu[i].ave=stu[i].sum/3;



void first_check()

FILE *p;//文件指针
int i,j;
struct classname frist[max];//临时变量,接收第一次输入的科目名称
for(i=0;i<max;i++)

for(j=0;j<20;j++)
frist[i].name[j]='\0';
frist[i].score=0;

if ((p=fopen("e:\\kemu.txt","r"))==NULL)//如果文件不存在,执行下面语句

printf("您好,欢迎使用学生成绩管理系统\n\n因为您是第一次使用,请输入科目名称(三科)\n\n");
p=fopen("e:\\kemu.txt","w");//建立科目文件,保存c盘根目录
printf("输入课程1名称:");
scanf("%s",frist[0].name);
fprintf(p,"%s\n",frist[0].name);//课程写入文件
printf("输入课程2名称:");
scanf("%s",frist[1].name);
fprintf(p,"%s\n",frist[1].name);//同上
printf("输入课程3名称:");
scanf("%s",frist[2].name);
fprintf(p,"%s\n",frist[2].name);//同上

system("cls");//清屏函数
fclose(p);


void save_nu()//往人数文件写入人数信息

FILE *p;
p=fopen("e:\\renshu.txt","w");
fprintf(p,"%d\n",nu);
fclose(p);


void Save_add(int n)//写入成绩信息,成绩文件已存在,在文件内部末尾追加写入

FILE * p;
int i;
p= fopen("e:\\chengji.txt","at");
if (p == NULL)

printf("文件不存在!!\n");
exit(0);

save_nu();
for (i = 0;i<n;i++)
if(stu[i].save==1)

stu[i].sum=stu[i].km[1].score+stu[i].km[2].score+stu[i].km[3].score;
stu[i].ave=stu[i].sum/3;
fprintf(p,"%s %s %2.1f %2.1f %2.1f %2.1f %2.1f \n",stu[i].no,stu[i].std_name,stu[i].km[0].score,stu[i].km[1].score,stu[i].km[2].score,stu[i].ave,stu[i].sum);

fclose(p);


void Save()//写入成绩信息,成绩文件不存在,新建成绩文件并写入信息

FILE * p;
int i;
p= fopen("e:\\chengji.txt","w");
if (p == NULL)

printf("文件不存在!!\n");
exit(0);

save_nu();
for (i = 0;i<nu;i++)
if(stu[i].save==1)

av();
fprintf(p,"%s %s %2.1f %2.1f %2.1f %2.1f %2.1f \n",stu[i].no,stu[i].std_name,stu[i].km[0].score,stu[i].km[1].score,stu[i].km[2].score,stu[i].ave,stu[i].sum);

fclose(p);


int read_nu()//读取人数文件中存在的人数信息

FILE *p;
char ch,s[10]='\0';
int i=0;
p=fopen("e:\\renshu.txt","r");
if(p==NULL)

save_nu();
return 0;

ch=fgetc(p);
while(ch!='\n')

s[i]=ch;
ch=fgetc(p);
i++;

nu=atoi(s);
fclose(p);
return 0;


int read_km()//读取科目文件中存储的科目信息

FILE *p;
int i,j=0;
char s[20]='\0';
chushi();
p=fopen("e:\\kemu.txt","r");
if(p==NULL)

printf("ERROR read_km");
return 0;

fgets(s,20,p);
while(strlen(s)!=0)

for(i=0;i<strlen(s);i++)
if(s[i]==10)

s[i]='\0';
break;

for(i=0;i<=nu;i++)
strcpy(stu[i].km[j].name,s);
for(i=0;i<20;i++)
s[i]='\0';
j++;
fgets(s,20,p);

return 0;


void read()//重要函数!读取成绩文件中以存储的学生成绩信息并存入内存

FILE *p;
int i,j,n,k,z=0;
char s[50]='\0';
char o[10]='\0';
p=fopen("e:\\chengji.txt","r");
if(p==NULL)
printf("ERROR_read");
chushi();
read_km();
fgets(s,50,p);
while(strlen(s)!=0)

j=0;
for(i=0;i<50;i++)

if(s[i]!='\n')

n=0;
while(j==0)

if(s[i]!=' ')

stu[z].no[n]=s[i];
n++;i++;

else
break;

while(j==1)

if(s[i]!=' ')

stu[z].std_name[n]=s[i];
n++;i++;

else
break;

while(j==2)

if(s[i]!=' ')

o[n]=s[i];
n++;i++;

else

stu[z].km[0].score=atoi(o);
break;


while(j==3)

if(s[i]!=' ')

o[n]=s[i];
n++;i++;

else

stu[z].km[1].score=atoi(o);
break;


while(j==4)

if(s[i]!=' ')

o[n]=s[i];
n++;i++;

else

stu[z].km[2].score=atoi(o);
break;


while(j==5)

if(s[i]!=' ')

o[n]=s[i];
n++;i++;

else

stu[z].ave=atoi(o);
break;


while(j==6)

if(s[i]!=' ')

o[n]=s[i];
n++;i++;

else

stu[z].sum=atoi(o);
break;


for(k=0;k<10;k++)
o[k]='\0';

else
break;
j++;

for(i=0;i<50;i++)
s[i]='\0';
fgets(s,50,p);
z++;



void putin()//功能函数,录入学生成绩信息

int n,i=0;
char ch;
read_km();
do

printf("\t\t\t\t录入学生信息\n输入第%d个学生的信息\n",i+1);
printf("\n输入学生学号:");
scanf("%s",stu[i].no);
printf("\n输入学员姓名:");
scanf("%s",stu[i].std_name);
printf("\n输入语文%s的分数:",stu[0].km[0].name);
scanf("%f",&stu[i].km[0].score);
printf("\n输入数学%s的分数:",stu[0].km[1].name);
scanf("%f",&stu[i].km[1].score);
printf("\n输入英语%s的分数:",stu[0].km[2].name);
scanf("%f",&stu[i].km[2].score);
stu[i].save=1;
printf("\n\n");
i++;
n=i;
printf("是否继续输入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");

while(ch!='n'&&ch!='N');
system("cls");
if(nu==0)

nu=n;
Save();

else

nu=n+nu;
Save_add(n);



int putout()//功能函数,显示学生信息

int i;char s;
if(nu==0)

printf("学生信息为零!请录入...");
return 0;

read();
do

printf("学生成绩信息:\n\n");
for(i=0;i<nu;i++)
printf("学号:%s 姓名:%s\n%s分数:%2.1f\t%s分数:%2.1f\t%s 分数:%2.1f\n平均分数:%2.1f\t总成绩:%2.1f\n\n",stu[i].no,stu[i].std_name,stu[i].km[0].name,stu[i].km[0].score,stu[i].km[1].name,stu[i].km[1].score,stu[i].km[2].name,stu[i].km[2].score,stu[i].ave,stu[i].sum);
printf("\t\t按任意键返回主菜单");
fflush(stdin);
s=getch();

while(!s);
system("cls");
return 0;


int sort()/*排序数据函数*/

struct student temp;
int i,j;
char s;
if(nu==0)

printf("学生信息为零!请录入...");
return 0;

read();
for(i=1;i<nu;i++)

for(j=1;j<=nu-i;j++)

if(stu[j-1].ave<stu[j].ave)

temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;



do

printf("学生成绩信息:\n\n");
for(i=0;i<nu;i++)
printf("学号:%s 姓名:%s 平均成绩:%2.1f\n\n",stu[i].no,stu[i].std_name,stu[i].ave);
printf("\t\t按任意键返回主菜单");
fflush(stdin);
s=getch();

while(!s);
system("cls");
return 0;


int find()/*查询函数*/

int j,i=0;
int c=0;
char search[20]='\0';
char as;
if(nu==0)

printf("学生信息为零!请录入...");
return 0;

read();
do

printf("输入要查询课程名称:");
scanf("%s",search);
for(j=0;j<max;j++)
if(!strcmp(stu[i].km[j].name,search))

c=1;
printf("\n该课程不及格学生姓名:\n");
for(i=0;i<nu;i++)
if(stu[i].km[j].score<60)
printf("%s\n",stu[i].std_name);

if(c==0)
printf("无此课程!");
printf("\n\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();

while(!as);
system("cls");
return 0;


int tongji()//功能函数,统计学生成绩信息

int j,m,z,i=0;
char s;
if(nu==0)

printf("学生信息为零!请录入...");
return 0;

read();
for(z=0;z<max;z++)

m=stu[i].km[z].score;j=0;
printf("%s 最高分: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
if(m<stu[i].km[z].score)

m=stu[i].km[z].score;
j=i;

printf("%s\t",stu[j].std_name);
j=0;i=0;m=stu[i].km[z].score;
printf("%s 最低分: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
if(m>stu[i].km[z].score)

m=stu[i].km[z].score;
j=i;

printf("%s\t",stu[j].std_name);
m=0;j=0;i=0;
printf("%s 平均分: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
m=m+stu[i].km[z].score;
printf("%d\n",m/nu);
m=0;i=0;
printf("%s 分数低于的60人数: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
if(stu[i].km[z].score<60)
m++;
printf("%d\t",m);
m=0;j=0;i=0;
printf("%s 分数高于60的人数: ",stu[i].km[z].name);
for(i=0;i<nu;i++)
if(stu[i].km[z].score>60)
m++;
printf("%d\n\n",m);

do

printf("\t\t按任意键返回主菜单");
fflush(stdin);
s=getch();

while(!s);
system("cls");
return 0;


void main()/*主函数*/

int as;
first_check();
start: printf("\n\t\t\t欢迎使用学生成绩管理系统\n");
/*一下为功能选择模块*/
do

printf("\n\t\t\t\t1.录入学生信息\n\t\t\t\t2.显示学生信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.查询不及格学生\n\t\t\t\t5.统计信息\n\t\t\t\t6.退出\n");
printf("\t\t\t\t选择功能选项:");
fflush(stdin);
read_nu();
scanf("%d",&as);
switch(as)

case 1:system("cls");putin();break;
case 2:system("cls");putout();break;
case 3:system("cls");sort();break;
case 4:system("cls");find();break;
case 5:system("cls");tongji();break;
case 6:system("exit");exit(0);
default:system("cls");goto start;


while(1);
/*至此功能选择结束*/
参考技术A 主程序如下 希望可以帮到

#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define N 10
struct student

int num;
char name[12];
char sex[4];
char clas[20];
int a,b,c;
double pjf;
;

void main()

void shuru(struct student stu[N]);
void chuli(struct student stu[N]);
void xiugai(struct student stu[N]);
void shuchu(struct student stu[N]);
void paixu(struct student stu[N]);
void chaxun(struct student stu[N]);
void tongj(struct student stu[N]);
double pjf(struct student stu[N]);
void bjgkm(struct student stu[N]);
struct student stu[N];
int i=0,j=0,p=0,u=0;
char str[70][500];
FILE *fp1,*fp;
if((fp=fopen("学生信息.txt","r"))==NULL)
printf("注意:为免出错,第一次使用本程序,请选1 手动输入数据. \n");
else

for(i=1;i<=N;i++)

if(i==1)
fp=fopen("学生信息.txt","r");
fscanf(fp,"%d%s%s%s%d%d%d",&stu[i].num,stu[i].name,stu[i].sex,stu[i].clas,&stu[i].a,&stu[i].b,&stu[i].c);
if(1==N)
fclose(fp);


int choice;
do
for(i=0;i<14;i++)
printf("**");
printf("主菜单");
for(j=0;j<14;j++)
printf("**");
printf("\n");
printf("#请选择: 1 数据输入 2 数据修改 3 数据处理 4 数据输出 5 退出#\n");
for(i=0;i<20;i++)
printf("***");
printf("**\n");
scanf("%d",&choice);
switch(choice)

case 1 :
shuru(stu) ; break;
case 2 :
xiugai(stu) ; break;
case 3 :
chuli(stu) ; break;
case 4 :
shuchu(stu) ; break;
case 5 : break;
default : puts("error"); return;


while(choice!=5);
fp1=fopen("学生信息.txt","w");
for(i=1;i<=N;i++)


fprintf(fp1,"%d ",stu[i].num);
fprintf(fp1,"%s ",stu[i].name);
fprintf(fp1,"%s ",stu[i].sex);
fprintf(fp1,"%s ",stu[i].clas);
fprintf(fp1,"%d ",stu[i].a);
fprintf(fp1,"%d ",stu[i].b);
fprintf(fp1,"%d ",stu[i].c);
fprintf(fp1,"\n");

puts("信息已保存在“学生信息.txt”中 Thank you!!");
fclose(fp1);
参考技术B 有基本功能,可参考

参考资料:http://zhidao.baidu.com/question/183583385.html

c语言(学生成绩管理系统)

用C语言开发班级成绩管理系统,实现本版成绩的录入,查询,统计等功能。要求:有学生数,姓名,学号,各班成绩;每个学生有7门课:英语,高等数学,大学物理,C语言,机械制图,政治,体育。要求实现成绩读入,增加,... 查看详情

c语言大作业学生成绩管理系统

给个参考你:/*编制一个学生成绩管理系统,每个学生信息包括:学号、姓名、C语言、高数和英语成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询... 查看详情

c语言-学生成绩管理(代码片段)

文章目录前言一、题目信息二、生成测试数据-C语言三、学生成绩管理-C语言[1].除了文件导入功能的效果展示[2].文件导入功能展示[3].代码前言这篇文章和代码是专门针对下方学生成绩管理这个题目,使用的语言为C全部的代... 查看详情

c语言学生成绩管理系统

学生成绩管理系统学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。系统的主要功能包括:1.创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后... 查看详情

c语言学生成绩管理系统课程设计

...法为基础,以VC++6.0集成开发环境为工具,实现学生成绩管理系统的设计和开发。学生成绩管理系统要求实现如下功能:1、学生信息的录入。如:学生编号、学生姓名、学生成绩。2、学生信息的查询。如:按学号查询、按成绩查... 查看详情

[项目记录]用c语言完成的一个学生成绩管理系统

 一、要求:学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。使用链表编程实现如下菜单驱动的学生成绩管理系统。从文件读入每个学生个人信息... 查看详情

c语言学生成绩管理系统

...太复杂不行的我找的一个代码!试一下:c语言学生成绩管理系统#include"stdio.h"#include"stdlib.h"#include"string.h"intshoudsave=0;/**/structstudentcharnum[10];/*学号*/charname[20];charsex[4];intcgrade;intmgrade;integrade;inttotle;intave;charnear... 查看详情

c语言学生成绩管理系统

...太复杂不行的我找的一个代码!试一下:c语言学生成绩管理系统#include"stdio.h"#include"stdlib.h"#include"string.h"intshoudsave=0;/**/structstudentcharnum[10];/*学号*/charname[20];charsex[4];intcgrade;intmgrade;integrade;inttotle;intave;charnear... 查看详情

c语言编写一个学生成绩管理系统

不会写呀。。。尤其是用学生名字检索成绩的那一块,哪位大神能够帮帮忙,能给出代码的更好!谢谢各位了。以下是我做过的成品#include"stdio.h"#include"stdlib.h"#include"string.h"#defineN100 //最大学生数量#defin... 查看详情

学生成绩管理系统c(链表)语言(代码片段)

#include"stdio.h"#include"stdlib.h"#include"string.h"//用于调用一些函数structpersoncharname[20];intID;intchinese;intenglish;intmath;structperson*next;//连接处的指针;//由于create里面就有initialize所以先把initialize放在前面voidi 查看详情

c语言程序设计学生成绩管理信息系统

问题描述:通过开发一个学生成绩管理信息系统,掌握与数组有关的算法、函数的调用、结构体类型变量的定义和使用;文件打开、关闭、读、写等文件操作函数的使用,提高实际运用能力。基本要求:学生成绩管理信息系统实... 查看详情

用c语言实现一个简单的学生成绩管理系统,包括:学号,姓名,科目,成绩

用字符界面实现,比如按数字1,可以录入学生所有信息;按数字2,显示所有学生成绩;按数字3,进入查询,按学号或姓名查询该学生是否存在,如果存在显示他的所有信息,否则给出不存在提示。谢谢各位大神了,小弟确实不... 查看详情

c语言--班级管理系统

一,问题描述:对一个有N个学生的班级,每个学生有M门课程该系统实现对班级成绩的录入,显示,修改,排序保存等操作的管理。二,功能要求:1,本系统采用一个结构题数组每个数据的结构应当包括:学号,姓名,M门课程... 查看详情

c语言学生成绩管理系统

麻烦大家了阿要求:要求有多个学生、多门课程,可以求全班单科的平均分、某个人的多门课的平均分,其他功能自定(1)将数据存贮在单独的文件中(2)以菜单方式进行管理。菜单项包括:数据的输入、显示、编辑、修改、... 查看详情

c语言课程设计学生信息管理系统模拟

...ntselect;//选择标志(1--7间)system("cls");printf("\\t\\t\\t学员成绩管理系统\\n");printf("***************************\\n" 查看详情

寻求解答c语言做学生成绩管理系统

只需要1成绩输入2求平均成绩3平均成绩输出4平均成绩排序5退出程序/******头文件(.h)***********/#include"stdio.h"/*I/O函数*/#include"stdlib.h"/*其它说明*/#include"string.h"/*字符串函数*/#include"conio.h"/*屏幕操作函数*/#include"mem.h"/*内存操作函数... 查看详情

学生成绩管理系统

解析:最近帮朋友做的一个相当于课程设计的学生成绩管理系统,她们要求是用c语言写,对于一个用惯c++的孩子来说真是感觉写起来的各种限制真心感觉到无语,不说了直接上代码#include"student.h"voidmain(){ charch='0... 查看详情

跪求c语言程序代码“学生成绩管理”

...小弟来找错啊~~科目有:1数学,2英语,3物理,4化学,5C语言,我刚在网上搜了一个,正巧,我们做的是同一个,不过我搜的要求跟你们的有点不一样,我下了个EXE文件,直接就可以运行了,全中文界面,不过修改不了,一改就错,就算你把... 查看详情