c语言 成绩管理程序

c语言 成绩管理程序,第1张

#include<stdioh>

#include <stringh>

#define Num_score 6 // 此处为6门的成绩

#define Num_stu 3 // 此处为3个学生 可自己修改个数

#define score_H 90 //用于成绩筛选

#define score_L 60

typedef struct

{

int id; //编号

char name[30]; //姓名

char gender[10]; //性别

float sc[Num_score]; //存储Num_score门课的分数

float sum; //总成绩

} stu;

int main()

{

stu s[Num_stu];

int i,j;

for(i = 0; i < Num_stu; i++)

{

printf("请输入学生学号\n");

scanf("%d", &s[i]id);

printf("请输入姓名\n");

scanf("%s",s[i]name);

printf("请输入性别\n");

scanf("%s",s[i]gender);

printf("请输入%d门课的成绩\n",Num_score);

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

scanf("%f",&s[i]sc[j]);

s[i]sum = 0; //计算成绩总和;

for(int k = 0 ; k < Num_score; k++)

s[i]sum = s[i]sum + s[i]sc[k];

// s[i]ave = s[i]sum / Num_score; //平均成绩

}

for(i = 0; i < Num_stu; i++)

{

printf("学号%d的同学%s(%s)的总分为:%2f \n",s[i]id, s[i]name,s[i]gender,s[i]sum);

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

{

printf("第%d门成绩为:%2f \n", j + 1, s[i]sc[j]);

}

}

//按总成绩升序排列

stu stu_temp;

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

{

for (j = 0; j < Num_stu - i; j++)

{

if (s[j]sum > s[j + 1]sum)

{

stu_temp = s[j];

s[j] = s[j + 1];

s[j + 1] = stu_temp;

}

}

}

//output

printf("按总成绩排序后:\n");

for(i = 0; i < Num_stu; i++)

{

printf("学号%d的同学%s(%s)的总分为:%2f \n",s[i]id, s[i]name,s[i]gender,s[i]sum);

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

{

printf("第%d门成绩为:%2f \n", j + 1, s[i]sc[j]);

}

}

// 成绩查询

int sid;

printf("请输入学号进行查询:\n");

scanf("%d",&sid);

int flag = 0;

for (i = 0; i < Num_stu; i++)

{

if (sid == s[i]id)

{

flag = 1;

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

{

printf("%s同学第 %d 门课程成绩为:%2f \n", s[i]name, j + 1, s[i]sc[j]);

}

printf("该同学的总分为:%2f \n",s[i]sum);

break;

}

}

if (flag == 0)

{

printf("你输入的信息有误\n");

}

//成绩筛选 >90 || < 60

for (i = 0 ; i < Num_score; i++)

{

printf("第%d门成绩高于%d的同学\n", i + 1, score_H);

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

{

if (s[j]sc[i] > score_H)

{

printf("%s %2f \n", s[j]name, s[j]sc[i]);

}

}

}

for (i = 0; i < Num_score; i++)

{

printf("第%d门成绩低于%d的同学\n", i + 1, score_L);

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

{

if (s[j]sc[i] < score_L)

{

printf("%s %2f \n", s[j]name, s[j]sc[i]);

}

}

}

return 0;

}

附录 综合实例——学生成绩查询系统

这是一个用c语言编写的小软件——学生成绩查询系统,同学们可以将其作为一个综合实例,对其进行仔细的阅读和研究,体验编程处理问题的过程,加深对编程语言的理解,提高处理问题的综合能力。

1、程序的功能:

1)可以根据用户输入的输入、输出文件名,读入学生成绩,完成数据的初始化。

2)可以查询指定学生的成绩,可以是指定科目的成绩,也可以是全部科目的成绩。

3)友好退出。

2、使用说明:

1)将输入文件放到指定的目录下(即/student/)

图1

2)启动管理程序studentexe

3)在程序的使用界面,首先输入输入文件名和输出文件名,完成程序的初始化, *** 作如下图所示

图2

然后,按照按照提示,输入学生姓名和需要程序的成绩(此软件暂时只设置了五成成绩,同学们可以按照需要扩展)科目代码,也可以输入查询所有成绩的代码。程序成绩,如下图所示

图3

4)输入代码“q”退出程序。

3、程序代码

#include

#include

#include

FILE f1,f2;

char file1[20],file2[20],name[200][20],name1[15];

int n,m,data[200][10];

void init(){

int i,j;

char ch=' ';

printf("%20c欢迎使用班级成绩管理系统\n\n",ch);

printf("请输入输入和输出文件名(中间用一个空格隔开):\n");

scanf("%s %s",file1,file2);// 1)该条语句的功能是什么?

f1=fopen(file1,"r");

f2=fopen(file2,"w");

fscanf(f1,"%d%d",&n,&m); // 2)该条语句的功能是什么?

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

{

fscanf(f1,"%s",name[i]); // 3)该条语句的功能是什么?

data[i][0]=0; // 4)该条语句的功能是什么?没有这条语句可不可以?

for(j=1;j<=m;j++)

{

fscanf(f1,"%d",&data[i][j]);

data[i][0]+=data[i][j]; // 5)该条语句的功能是什么?

}

}

fprintf(f2,"name\tyuwen\tshuxue\tyingyu\twuli\thuaxue\tzongfen\n ");

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

{

fprintf(f2,"%s\t",name[i]);

for(j=1;j<=m;j++)

fprintf(f2,"%d\t",data[i][j]);

fprintf(f2,"%d\n",data[i][0]);

}

fclose(f1);// 6)问什么可以在这关闭输入文件?

fclose(f2);

}

void search(char na[],char num){

int i=1,j;

while((i<=n)&&(strcmp(na,name[i])!=0))i++;

if(i<=n){

switch(num){

case '1':printf("%s的语文成绩为%d!\n",na,data[i][1]);break;

case '2':printf("%s的数学成绩为%d!\n",na,data[i][2]);break;

case '3':printf("%s的英语成绩为%d!\n",na,data[i][3]);break;

case '4':printf("%s的物理成绩为%d!\n",na,data[i][4]);break;

case '5':printf("%s的化学成绩为%d!\n",na,data[i][5]);break;

case 'a':

printf("%s的各科成绩为:\n",name[i]);

printf("语文\t数学\t英语\t物理\t化学\t总成绩\n");

for(j=1;j<=m;j++)

printf("%d\t",data[i][j]);

printf("%d\n",data[i][0]);

break;

default: printf("没有这种查询方式,请确认后再次输入!\n");

}

}

else printf("查无此人,请确认后再次查询!\n");

printf("\n\n");

}

main(){

init();//数据初始化

printf("数据初始化结束!\n\n");

printf("------------------------------------------------\n\n");

char na[20];

char num;

while(1){ // 7)该条语句的功能是什么?

//scanf("%s%c%c",na,&num,&num); // 8)此处的输入可不可以用这条语句?

printf("请输入学生的姓名和要查询成绩的科目代码(中间用一个空格隔开):\n(1 语文 2 数学 3 英语 4 物理 5 化学 a 所有科目成绩 q 退出)\n");

scanf("%s",na);

if(strcmp(na,"q")==0)break; // 9)问什么要用这条语句strcmp(na,"q")==0?

scanf("%c%c",&num,&num); // 10)为什么用了两次&num?

search(na,num);

printf("------------------------------------------------\n\n");

printf("\n请输入新的查询:\n\n");

}

system("pause");

}

这是我以前的一个程序,你改改吧,应该很好改

#include "stdioh"

#include "stringh"

struct student

{

char num[10];

int cscore;//yu wen

int iscore;//ying yu

char name[20]

};

void main()

{

struct student qq[3];

int i;

for(i = 0;i < 3;i++)

{

printf("请输入 语文成绩 英语成绩 学号 姓名:\n");

scanf("%d %d %s %s",&qq[i]cscore,&qq[i]iscore,qq[i]num,qq[i]name);

printf("语文成绩%d 英语成绩%d 学号%s 姓名%s\n",qq[i]cscore,qq[i]iscore,qq[i]num,qq[i]name);

printf("---%d ---%d --%s --%s\n",qq[i]cscore,qq[i]iscore,qq[i]num,qq[i]name);

}

//下面是查询

char nnm[10];

printf("请输入 学号:\n");

scanf("%s",nnm);

for(i = 0;i < 3;i++)

{

if(memcmp(nnm,qq[i]num,strlen(nnm)) == 0)

{

printf("语文成绩%d 英语成绩%d 学号%s 姓名%s\n",qq[i]cscore,qq[i]iscore,qq[i]num,qq[i]name);

break;

}

else

printf("未找到\n");

}

}

这个是我自己做的类式的,你可以按自己的要求改下·不难的和你的差不多,给分哦

#include<stdlibh>

#include<stdioh>

#include<stringh>

#include<conioh>

#define N 10

/定义结构体/

typedef struct students /标记为students/

{

char num[10]; /学生学号/

char name[10]; /学生姓名/

int age; /年龄/

char sex[10]; /性别/

float cyy; /C语言成绩/

float computer; /计算机成绩/

float english; /英语成绩/

float pj; /平均成绩/

}STU;

STU temp;

void sort(STU students[],int n); //排序

void save(STU students[] ,int n);//导出

int Locate(STU students[],int n);//查询

/--------------显示菜单--------------------/

char displaymenu()

{

char k;

system("cls");

printf(" 学生成绩管理 \n");

printf("-----------------------------------应用菜单-------------------------------------\n");

printf(" 1 输入学生成绩\n\n");

printf(" 2 输出学生成绩\n\n");

printf(" 3 查询学生成绩\n\n");

printf(" 4 修改学生成绩\n\n");

printf(" 5 查看成绩排序\n\n");

printf(" 6 查看成绩统计\n\n");

printf(" 7 保存数据\n\n");

printf(" 8 读取数据\n\n");

printf(" 9 退出系统\n\n");

printf(" 请选择你想进行的 *** 作:");

k=getchar();

return k;

}

/定义输出函数/

void printheader() /格式化输出表头/

{

printf("\n\n学生成绩管理系统\n\n\n");

printf("| 学号 | 姓名 | 年龄 | 性别 | C语言成绩 |计算机成绩 | 英语成绩| 平均成绩 | \n");

}

void printdata(STU pp) /格式化输出表中数据/

{

STU p;

p=&pp;

printf("| %-5s| %-5s | %-4d| %-4s| %-60f| %-60f| %-50f| %-60f|\n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);

}

/添加学生信息/

int add(STU students[] ,int n)

{

int i=0;

system("cls");

printf(" \n");

printf(" 请输入学生信息 \n");

printf(" 退出请在学生号处输入:0 \n");

printf("请输入学生学号:\n ");

scanf("%s",students[i]num);

while(strcmp(students[i]num,"0") )//当输入的学号为0时结束输入

{

printf("请输入学生姓名:\n ");

scanf("%s",students[i]name);

printf("\n\n\n");

printf("请输入学生年龄:\n ");

scanf("%d",&students[i]age);

printf("\n\n\n");

printf("请输入学生性别:\n");

scanf("%s",students[i]sex);

printf("\n\n\n");

printf("请输入C语言成绩:\n ");

scanf("%f",&students[i]cyy);

printf("\n\n\n");

printf("请输入计算机成绩:\n ");

scanf("%f",&students[i]computer);

printf("\n\n\n");

printf("请输入英语成绩:\n ");

scanf("%f",&students[i]english);

printf("\n\n\n");

students[i]pj=(students[i]cyy+students[i]computer+students[i]english)/3;

printf("学生平均成绩: %-80f\n",students[i]pj);

i++;

printf("\n\n\n");

printf("请输入学生学号:\n ");

scanf("%s",students[i]num);

}

n=i;

save(students ,i);

return i;

}

/查询学生信息函数/

int Locate(STU students[],int n)

{

int k,m=-1;

char num[10],name[20];

int i=0;

system("cls");

printf(" 退出请输入:0 \n");

printf("请选择以什么方式查询:1)按学生学号查询 2)按学生姓名查询 \n");

scanf("%d",&k);

if(k==1)

{

printf("请输入你要查询的学生学号:\n");

scanf("%s",num);

while(i<n)

{

if(strcmp(students[i]num,num)==0) /若找到学号/

{

printf(">>学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n>C语言成绩:%-80f\n>计算机成绩:%-80f\n>>英语成绩:%-80f\n>>平均成绩:%-80f\n",students[i]num,students[i]name,students[i]age,students[i]sex,students[i]cyy,students[i]computer,students[i]english,students[i]pj);

m=i;

getchar();

break;

}

i++;

}

if(i>=n)

printf("没有所找学生信息\n");

getchar();

}

else if(k==2)

{

printf("请输入你要查询的学生姓名:\n");

scanf("%s",name);

while(i<n)

{

if(strcmp(students[i]name,name)==0) /若找到姓名/

{ printf("学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n学生C语言成绩:%-80f\n计算机成绩:%-80f\n英语成绩:%-80f\n平均成绩:%-80f\n",students[i]num,students[i]name,students[i]age,students[i]sex,students[i]cyy,students[i]computer,students[i]english,students[i]pj);

m=i;

getchar();

break;

}

i++;

}

if(i>=n)

printf("没有所找学生信息\n");

}

return m;/返回一个根m便于修改学生信息/

getchar();

}

/显示函数/

void input(STU students[],int n)

{

int i;

system("cls"); //清屏

if(n==0) /表示没有学生信息记录/

{

printf("\n没有学生记录!\n");

}

printf("\n\n");

printheader(); /输出表格头部/

i=0;

while(i<n) /逐条输出数组中存储的学生信息/

{

printdata(students[i]);

i++;

}

getchar();

}

/修改子程序/

void Modify(STU students[],int n)

{

int i;

if(n<=0)

{

system("cls");

printf(" \n退出请输入:0 \n");

printf("\n----------not found!----------\n");

getchar();

return ;

}

system("cls");

printf("修改学生信息");

input(students,n);

i=Locate(students,n); /查询到该数组元素,并返回下标值/

if(i!=-1) /若i!=-1,表明已经找到该数组元素/

{

printf("请输入新的学生信息: \n");

printf(" 学号: ");

scanf("%s",students[i]num);

printf(" 姓名: ");

scanf("%s",students[i]name);

printf(" 年龄: ");

scanf("%d",&students[i]age);

printf(" 性别: ");

scanf("%s",students[i]sex);

printf(" C语言: ");

scanf("%f",&students[i]cyy);

printf(" 英语: ");

scanf("%f",&students[i]english);

printf(" 计算机: ");

scanf("%f",&students[i]computer);

students[i]pj=(students[i]cyy+students[i]english+students[i]computer)/3;

printf("平均成绩: %-90f\n",students[i]pj);

save(students ,n);

printf("\n-------------修改成功!-------------\n");

}

else

printf("not found!\n");

getchar();

}

/学生成绩排序子程序/

void sort(STU students[],int n)

{

int i,j,a,b,c,d,e,f,k;

float p;

printf(" \n退出请输入:0 \n");

printf("成绩排序方式选择: 1按C语言 2按英语 3按平均 \n ");

scanf("%d",&k);

if(k==1) /用选择法对C语言排序/

{

for(i=0; i<n; i++)

for(j=0;j<n-1;j++)

{

if(students[i]english<students[j+1]english)

{

temp=students[i];

students[i]=students[j+1];

students[j+1]=temp;

}

}

}

else if(k==2)/英语用冒泡法/

{

for(a=0; a<n-1; a++)

{

c=a;

for(b=a+1; b<n; b++)

if(students[b]cyy>students[c]cyy)

c=b;

if (c!=a)

{

temp=students[a];

students[a]=students[c];

students[c]=temp;

}

}

}

if(k==3) /平均成绩用插入法/

{

for(d=1;d<n;d++)

{

p=students[d]pj;

for(e=0;e<d;e++)

if(students[e]pj<p)

break;

if(e==d)

continue;

for(f=d;f>e;f--)

students[f]=students[f-1];

students[e]=temp;

}

}

input(students,n); /显示排序后的所有记录/

save(students ,n);

printf("\n 排序完成!\n");

}

/统计学生分数在各等级的人数子程序/

void Tongji(STU students[],int n)

{

int count6085=0,count85=0,count60=0;

int i=0;

system("cls");

printf(" \n退出请输入:0 \n");

input(students,n);

i=0;

while(i<n)

{

if(students[i]pj>85) {count85++;i=i+1;continue;} /平均成绩=>85/

if(students[i]pj>=60&&students[i]pj<=85) {count6085++;i=i+1;continue;} /60<平均成绩<85/

if(students[i]pj<60) {count60++;i=i+1;continue;} /平均成绩<60/

}

printf("\n统计结果\n\n");

printf("平均成绩高于85分的人数:%d \n",count85);

printf(" \n");

printf("平均成绩在65分和80分之间的人数:%d \n",count6085);

printf(" \n");

printf("平均成绩低于60分的人数:%d \n",count60);

printf(" \n");

printf("\n\n统计结束");

getchar();

}

/导出或保存数据/

void save(STU students[],int n)

{

FILE fp;

int i=0;

fp=fopen("students","wb+");/以读写方式打开创建一个二进制文件/

if(fp==NULL) /打开文件失败/

{

printf("\n打开文件错误!\n");

return ;

}

for(i=0;i<n;i++)

{

if(fwrite(&students[i],sizeof(STU),1,fp)==1)/每次写一条记录或一个结构数组元素至文件/

{

continue;

}

else

{

break;

}

}

if(i>0)

{

getchar();

printf("\n\n共导出%d个学生信息\n",i);

getchar();

}

else

{

system("cls");

printf("没有信息导出\n");

getchar();

}

fclose(fp); /关闭此文件/

}

/导入数据/

void Read(STU students[],int n)

{

FILE fp;

int i=0;

fp=fopen("students","rb");/以只读方式打开一个已有的二进制文件/

if(fp==NULL) /打开文件失败/

{

printf("\n打开文件错误!\n");

exit(0);

}

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

{

if(fread(&students[i],sizeof(STU),1,fp)==1)/每次读一条记录或一个结构数组元素至文件/

continue;

else

break;

}

n=i;

if(i>0)

{

printf("\n\n共导入:%d 个学生信息 \n",i);

getchar();

}

else

{ system("cls");

printf("没有信息导入!\n");

getchar();

}

getchar();

fclose(fp); /关闭此文件/

}

/主函数/

void main()

{

STU students[N];

int n;

char s1[3],s2[3]={"1"};

int i,k;

printf("\n\n");

printf("\n");

printf("^ < 欢迎使用本软件> ^\n\n");

printf("^ <版本 : oooo> ^\n\n\n");

printf("^ <姓名>:卢景光 <班级>: 09623 <学号>:34 ^\n");

printf("^ ^\n");

printf("\n");

printf("\n\n");

for(i=0;i<3;i++)

{

printf("\n请输入密码:");

gets(s1);

if(strcmp(s1,s2)==0)

break;

else

printf("\n>密码错误,请重新输入");

}

if(i>2)

{

printf("\n您已连续3次输错,系统将退出!\n");

exit(0);

}

else

{

while(1)

{

k=displaymenu();

switch(k)

{

case '1' : add(students,&n); break;

case '2' : Read(students,&n);input(students,n) ;break;

case '3' : Read(students,&n);Locate(students,n);break;

case '4' : Read(students,&n);Modify(students,n);;break;

case '5' : Read(students,&n);sort(students,n);break;

case '6' : Read(students,&n);Tongji(students,n); break;

case '7' : save(students,n) ;break;

case '8' : Read(students,&n);break;

case '9' : system("cls");

printf("\n 谢谢您的使用\n");exit(0);break;

default : printf("\n\n输入错误,输入必须是0~9之间的一个数字!请重新输入\n");getchar();getchar();

}

}

}

}

以上就是关于c语言 成绩管理程序全部的内容,包括:c语言 成绩管理程序、C语言 学生成绩管理系统、C语言,按学号查询学生成绩等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10058145.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存