当前位置:新励学网 > 奖学金 > C学生成绩与奖学金管理系统

C学生成绩与奖学金管理系统

发表时间:2024-07-11 10:30:38 来源:网友投稿

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#defineN50/*定义符号常量,代表学生人数最大值*/

intcount=0;/*全局变量,用于记录数组的当前位置*/

structstudent/*定义结构体类型,代表学生信息*/

{

charname[9];/*学生姓名*/

charnumber[10];/*学生学号*/

floatmath;/*数学成绩*/

floatenglish;/*英语成绩*/

};

voidinput(structstudent*arr);/*函数声明,输入学生信息*/

voidsort(structstudent*arr);/*函数声明,按总分排序*/

voidfind(structstudent*arr);/*函数声明,查找某位学生信息*/

voidmain()

{

charselmenu;/*定义局部变量,用于记录用户选择的功能编号*/

structstudentstud[N];/*定义结构体数组,用于记录学生信息*/

do/*利用循环显示界面*/

{

system(cls);/*清屏函数*/

printf(\n\n);

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

printf(\t\t\t\t1.输入学生成绩\n);

printf(\t\t\t\t2.按总分排榜\n);

printf(\t\t\t\t3.查找学生信息\n);

printf(\t\t\t\t4.退出\n\n);

printf(\t\t\t请输入功能选择编号(1-4):);

fflush(stdin);/*清空输入缓冲区*/

scanf(%c,&selmenu);/*接受用户选择的功能编号*/

switch(selmenu)/*输入不同功能编号调用相应函数来完成功能*/

{

case'1':

input(stud);/*调用输入学生信息函数,参数为学生信息数组名*/

break;

case'2':

sort(stud);/*调用按总分排榜函数,参数是数组名*/

break;

case'3':

find(stud);/*调用按学号和姓名查找学生信息函数*/

break;

}

}while(selmenu!='4');/*判断是否退出*/

printf(\n\n\t\t\t----------------谢谢使用----------------\n\n);/*输出告别词*/

}

voidinput(structstudent*arr)/*定义输入学生信息函数*/

{

charch;/*用于接收用户指令*/

do/*利用循环,由用户控制输入学生成绩*/

{

system(cls);

printf(\n输入第%d个学生的信息:\n输入学生姓名:,count+1);

scanf(%s,arr[count].name);

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

scanf(%s,arr[count].number);

printf(\n输入数学成绩:);

scanf(%f,&arr[count].math);

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

scanf(%f,&arr[count].english);

count++;/*记录当前输入的学生资料的个数*/

printf(\n是否继续输入(y/n)\n);

fflush(stdin);/*清空输入缓冲区*/

ch=getchar();

}while(ch=='y'||ch=='Y');/*判断用户指令,是否继续输入*/

}

voidsort(structstudent*arr)/*定义按总分排榜函数*/

{

inti,j,k;/*定义循环变量i,j,最小数位置k*/

structstudentt;/*定义交换临时变量*/

if(count==0)/*判断数组中学生成绩是否存在*/

printf(无学生成绩,请先录入学生信息\n);

else

{

for(i=0;i<count-1;i++)/*用选择法按总分对学生成绩排序*/

{

k=i;

for(j=i+1;j<count;j++)/*k为arr[i]到arr[count-1]中最小数的位置*/

if((arr[k].math+arr[k].english)<(arr[j].math+arr[j].english))

k=j;

if(k!=i)/*如果最小数不是比较数列中第一个,对调*/

{

t=arr[k];

arr[k]=arr[i];

arr[i]=t;

}

}

printf(\n总分排榜:\n\n);

printf(\t姓名\t学号\t数学\t英语\t总分\t名次\n);

for(j=0;j<count;j++)/*输出按总分排榜后的学生成绩和名次*/

printf(\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-5d\n,

arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].math+arr[j].english,

j+1);

}

printf(\n回车键返回主程序\n);

fflush(stdin);

getchar();

}

voidfind(structstudent*arr)/*定义查找函数*/

{

intj;

charname[9];/*用于接收用户输入的学生姓名*/

charnumber[10];/*用于接收用户输入的学生学号*/

system(cls);/*清屏函数*/

printf(\n请输入要查找的学生资料:\n);

printf(\n学生姓名:);

scanf(%s,name);

printf(\n学生学号:);

scanf(%s,number);

for(j=0;j<count;j++)/*使用字符串比较函数查找兵书出符合条件的学生成绩*/

{

if((strcmp(name,arr[j].name)==0)&&(strcmp(number,arr[j].number)==0))

{

printf(\n\t姓名\t学号\t数学\t英语\t总分\n);

printf(\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\n,

arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].math+arr[j].english);

break;

}

}

if(j>=count)/*如果没找到,会从循环条件退出*/

printf(\n未找到该学生纪录,请核对后重新查找!\n);

fflush(stdin);/*清空输入缓冲区*/

printf(\n回车键返回上一功能菜单\n);

getchar();

}

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!