用c语言编写学生成绩管理系统.docx

上传人:b****7 文档编号:9384684 上传时间:2023-02-04 格式:DOCX 页数:16 大小:18.15KB
下载 相关 举报
用c语言编写学生成绩管理系统.docx_第1页
第1页 / 共16页
用c语言编写学生成绩管理系统.docx_第2页
第2页 / 共16页
用c语言编写学生成绩管理系统.docx_第3页
第3页 / 共16页
用c语言编写学生成绩管理系统.docx_第4页
第4页 / 共16页
用c语言编写学生成绩管理系统.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

用c语言编写学生成绩管理系统.docx

《用c语言编写学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《用c语言编写学生成绩管理系统.docx(16页珍藏版)》请在冰豆网上搜索。

用c语言编写学生成绩管理系统.docx

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

#include//编译预处理指令

#include//定义处理字符串函数

#include//宏指令的声明

#include//定义通过控制台进行数据输入以及输出

#defineN2000//最多的人数人

#defineM3//统计成绩

typedefstructstudent//定义类型

{charnumber[10];//保存所有人的学号

charname[20];//保存学生姓名

charsex[10];//保存性别

floatscore[M];//保存所有课程成绩

floataver;//保存每个人的平均成绩

floattotal;//总计成绩

}STU;

STUstu[N];

intn;

voidinputscore(void);//学生成绩新建

voidsavescore(void);//学生成绩保存

voidavergescore(void);//学生平均成绩

voidtotal(void);//学生成绩总计

voidmodifyscore(void);//学生成绩修改

voidlookscore(void);//学生成绩查看

voidsearchscore(void);//学生成绩查询

voidstatistic(void);//学生成绩统计

voidadd(void);//学生成绩添加

voidmodify(void);//学生成绩修改

voiddelscore(void);//学生成绩删除

voidmenu(void);//学生成绩菜单

voidmain()

{shortintflag=0;

menu();

do

{flag=1;

switch(getch())

{case'1':

inputscore();break;//在菜单界面输入1,调用i函数nputscore()实现输入学生成绩信息功能

case'2':

lookscore();break;//在菜单界面输入2,调用函数lookscore()实现学生成绩按平均分高低排序输出,同时lookscore()函数调用avregescore()函数实现各个学生的平均分计算

case'3':

searchscore();break;//在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能

case'4':

statistic();break;//在菜单界面输入4,调用statistic()函数输出每一门课程的最高分,平均分以及不及格人员

case'5':

modify();break;//在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能

case'6':

add();break;//在菜单界面输入6,调用add()函数实现添加学生成绩

case'7':

delscore();break;//在菜单界面输入7,调用delscore()函数实现删除指定学生的成绩

case'8':

savescore();break;//在菜单界面输入8,调用savescore()函数将学生成绩信息保存

case'9':

exit(0);break;//在菜单界面输入9,退出成绩管理系统

default:

printf("输入有误\n");

}

printf("按任意键继续\n");

getch();//按任意键继续,起到暂停的作用,函数头文件conio.h已经定义过

menu();//菜单

}while(flag==1);

}

 

voidmenu(void)

{

system("cls");//清屏

printf("\n");

printf("★★★★★★★欢迎进入学生成绩管理系统★★★★★★★\n");

printf("菜单\n");

printf("☆输入成绩-------------------------------------1\n");

printf("☆查看成绩及成绩排序---------------------------2\n");

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

printf("☆成绩统计-------------------------------------4\n");

printf("☆修改成绩-------------------------------------5\n");

printf("☆添加成绩-------------------------------------6\n");

printf("☆删除成绩-------------------------------------7\n");

printf("☆保存成绩-------------------------------------8\n");

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

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

printf("请输入您的选择(1~9)\n");

}

 

/***************输入各个同学的学生信息******************************/

voidinputscore(void)//输入成绩

{inti,j;

system("cls");//清屏专用,以下出现位置作用相同

printf("已经转到输入成绩菜单\n");

printf("请输入学生总数:

\n");

scanf("%d",&n);

printf("提示:

输入学号时请输入9位学生编号:

图书借阅证上的学号\n");//因二维表上下需对正故有此要求

for(i=0;i

{printf("\n");

printf("请输入第%d位学生的学号:

\n",i+1);

scanf("%s",stu[i].number);//输入学生学号

printf(":

\n");

scanf("%s",stu[i].name);//输入学生名字

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

scanf("%s",stu[i].sex);//输入性别

printf("请输入学生成绩:

\n");

printf("高数分\t英语分\tC语言分\n");

for(j=0;j

scanf("%f",&stu[i].score[j]);//输入高数、英语、C语言的成绩

}

printf("成功输入(按任意键继续后请输入8进行保存)\n");

}

/*****************计算各个同学的总分*****************************/

voidtotal(void)

{inti,j;//定义变量i,j;i用来表示学生个数,j则用来表示学生每门课的分数

for(i=0;i

{stu[i].total=0;

for(j=0;j

{

stu[i].total+=stu[i].score[j];

}

}

}

/*****************计算各个同学的平均分*****************************/

voidavergescore(void)

{inti,j;//定义变量i,j;i用来表示学生个数,j则用来表示学生每门课的分数

for(i=0;i

{stu[i].aver=0;

for(j=0;j

{

stu[i].aver+=stu[i].score[j];

}

stu[i].aver=stu[i].aver/M;//计算平均分

}

}

/************查看学生成绩及根据平均分对学生进行排序*********************/

voidlookscore(void)

{inti,j,k;//i,j,k都表示学生成绩比较用来调换顺序

STUt;

total();//此处用来对调用函数的声明

avergescore();

system("cls");//清屏专用

printf("已经转到查看成绩及成绩排序菜单\n");

for(i=0;i

{for(k=i,j=i+1;j

if(stu[j].aver>stu[k].aver)

k=j;

if(k!

=j)

{t=stu[k];

stu[k]=stu[i];

stu[i]=t;

}

}

printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n");

for(i=0;i

{printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex);

for(j=0;j

printf("%4.2f\t",stu[i].score[j]);

printf("%4.2f\t",stu[i].total);

printf("%4.2f",stu[i].aver);

printf("\n");

}

}

/*****************通过输入学号查找学生成绩***************************/

voidsearchscore(void)

{chara[10];//定义数组a的类型可输入数字,字母或字符

inti,j;

system("cls");//清屏

printf("已经转到查询学生成绩菜单\n");

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

scanf("%s",a);

for(i=0;i

{if(strcmp(a,stu[i].number)==0)//如果输入的学号为真则输出相关信息

{printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n");

printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex);

for(j=0;j

printf("%4.2f\t",stu[i].score[j]);

printf("%4.2f\t",stu[i].total);

printf("%4.2f",stu[i].aver);

printf("\n");

break;//找到该学生成绩信息后跳出for循环

}

else

printf("未找到该学生信息\n");

}

}

/*******统计学生成绩信息,计算出每一门课的最高分****************/

voidstatistic()

{

inti,j=0,k=0,c1;

charstr[2];

floataverage[M],sum=0;printf("没有可被查找的记录\n");//

system("cls");

if(M==0)//如果没有输入成绩则输出没有可查找的记录

printf("没有可被查找的记录\n");

else

{

while

(1)

{

printf("下面将统计考试成绩\n");

printf("请选择你要统计哪科的成绩1.高数\t2.英语\t3.C语言\n");

scanf("%d",&c1);

printf("\t一共有%d个记录\n",M);/*总共记录数*/

switch(c1)

{

case1:

//用来判断高数的最高分,平均分,输出不及格人员名单

for(i=0;i

{

sum+=stu[i].score[0];

if(stu[k].score[0]>stu[i].score[0])k=i;

if(stu[j].score[0]

}

average[0]=sum/M;

printf("\t高数的最高分:

\n");

printf("\t\t学号:

%s:

%s分数:

%.2f\n",stu[j].number,stu[j].name,stu[j].score[0]);

printf("\t高数的最低分是:

\n");

printf("\t\t学号:

%s:

%s分数:

%.2f\n",stu[k].number,stu[k].name,stu[k].score[0]);

printf("\t高数的平均分是%5.2f\n",average[0]);

printf("平均分低于60分的学生成员名单\n");

for(i=0;i

{

if(stu[i].score[0]<60)

printf("%s\n",stu[i].name);

}

break;

case2:

//用来判断英语的最高分,平均分,输出不及格人员名单

for(i=0;i

{

sum+=stu[i].score[1];

if(stu[k].score[1]>stu[i].score[1])k=i;

if(stu[j].score[1]

}

average[1]=sum/M;

printf("\t英语的最高分:

\n");

printf("\t\t学号:

%s:

%s分数:

%.2f\n",stu[j].number,stu[j].name,stu[j].score[1]);

printf("\t英语的最低分是:

\n");

printf("\t\t学号:

%s:

%s分数:

%.2f\n",stu[k].number,stu[k].name,stu[k].score[1]);

printf("\t英语的平均分是%5.2f\n",average[1]);

printf("平均分低于60分的学生成员名单\n");

for(i=0;i

{

if(stu[i].score[1]<60)

printf("%s\n",stu[i].name);

}

break;

case3:

//用来判断C语言的最高分,平均分,输出不及格人员名单

for(i=0;i

{

sum+=stu[i].score[2];

if(stu[k].score[2]>stu[i].score[2])k=i;

if(stu[j].score[2]

}

average[2]=sum/M;

printf("\tC语言的最高分:

\n");/*最高分*/

printf("\t\t学号:

%s:

%s分数:

%.2f\n",stu[j].number,stu[j].name,stu[j].score[2]);

printf("\tC语言的最低分是:

\n");/*最低分*/

printf("\t\t学号:

%s:

%s分数:

%.2f\n",stu[k].number,stu[k].name,stu[k].score[2]);

printf("\tC语言的平均分是%5.2f\n",average[2]);

printf("平均分低于60分的学生成员名单\n");

for(i=0;i

{

if(stu[i].score[2]<60)

printf("%s\n",stu[i].name);

}

break;

default:

//如果输入的数字不符合要求则显示错误信息

printf("输入错误!

请输入1~3之间的数\n");

}

sum=0;

getchar();

printf("是否继续进行统计?

(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')statistic();

elsebreak;

}

}

}

/***************修改学生成绩*****************/

voidmodify(void)

{

chara[10];

inti,j;

system("cls");

printf("已经转到修改成绩菜单\n");

printf("请输入需要修改成绩的学生学号\n");

scanf("%s",a);

for(i=0;i

{if(strcmp(a,stu[i].number)==0)

{printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n");

printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex);

for(j=0;j

printf("%4.2f\t",stu[i].score[j]);

printf("%4.2f",stu[i].total);

printf("%4.2f",stu[i].aver);

printf("\n");

printf("请重新输入该学生的姓名:

\n");

scanf("%%s",stu[i].number);

printf("\n");

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

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

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

printf("请重新输入该学生成绩:

\n");

printf("高数分\t英语分\tC语言分\n");

for(j=0;j

scanf("%f",&stu[i].score[j]);

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

break;//找到该学生成绩后进行修改,跳出for循环

}

else

printf("请确认该学生是否为该校学生!

\n");

}

}

/*****************添加学生成绩********************/

voidadd(void)

{

inta,i,j;//i定义为学生,j为学生分数,a代表加入学生的数量

system("cls");

printf("已经转到添加成绩菜单\n");

printf("请输入新增加的学生人数:

\n");

scanf("%d",&a);

n=n+a;

for(i=n-a;i

{printf("\n");

printf("请输入第%d位学生的学号:

\n",i+1);

scanf("%s",stu[i].number);

printf(":

\n");

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

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

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

printf("请输入学生成绩:

\n");

printf("高数分\t英语分\tC语言分\n");

for(j=0;j

scanf("%f",&stu[i].score[j]);

printf("添加成功\n");

}

}

/*******************删除学生成绩*************************/

voiddelscore(void)

{

inti,j,c;

charm,a[10];//m用来存放后面输入删除的字母y或n

system("cls");

printf("已经转到删除成绩菜单\n");

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

scanf("%s",a);

for(i=0;i

{if(strcmp(a,stu[i].number)==0)

{printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n");

printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex);

for(j=0;j

printf("%4.2f\t",stu[i].score[j]);

printf("%4.2f\t",stu[i].total);

printf("%4.2f",stu[i].aver);

printf("\n");

c=i;

break;

}

else

printf("未找到该学生信息\n");

}

printf("是否删除该学生成绩(y/n)\n");

scanf("%s",&m);

if(m=='y')

{

for(i=c;i

stu[i]=stu[i+1];//结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置

n=n-1;//删除该学生信息后学生总数减一

printf("删除成绩成功\n");

}

else

printf("删除成绩失败\n");

}

/******************保存学生成绩************************/

voidsavescore(void)

{

FILE*fp;//定义指针

inti,flag=1;

charm;

system("cls");

printf("已经转到保存成绩菜单\n");

puts("是否保存学生成绩(y/n)");

scanf("%s",&m);

if(m=='y')

{if((fp=fopen("score.dat","wb"))==NUL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1