c语言学生成绩管理含源代码.docx

上传人:b****7 文档编号:11096063 上传时间:2023-02-25 格式:DOCX 页数:16 大小:51.08KB
下载 相关 举报
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语言学生成绩管理含源代码

C语言程序设计作业

姓名:

******

班级:

******

学号:

********

院系:

大连理工大学电信学院

电子邮箱:

*************

一设计工程:

学生成绩管理系统

二总体设计:

1程序设计组成框图:

2:

模块功能说明:

1输入功能:

输入学生姓名学号及成绩。

2查看功能:

输出姓名学号及各科成绩。

3查询功能:

通过学号查询学生姓名及各科成绩。

4统计功能:

统计班级学生及格率,优秀率,各个学生成绩方差等。

5修改功能:

通过输入学号修改指定学生的错误信息。

6添加功能:

添加学生信息。

7删除功能:

通过输入学号输入指定学生信息。

8保存功能:

将学生信息保存。

9退出系统。

3:

主要函数之间的调用关系及各自功能:

主要函数的函数原型

voidinputscore(void)。

voidsavescore(void)。

voidavergescore(void)。

voidmodifyscore(void)。

voidlookscore(void)。

voidsearchscore(void)。

voidstatistic(void)。

voidadd(void)。

voidmodify(void)。

voiddelscore(void)。

voidmenu(void)。

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

ii.在菜单界面2,调用函数lookscore()实现学生成绩按平均分高低排序输。

出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计算。

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

iv.在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生成绩方差,不及格学生名单。

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

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

vii.在菜单界面输入7,调用delscore()函数实现删除指定学生成绩。

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

ix.在菜单界面输入9,退出成绩管理系统。

三程序运行效果截图

1主菜单

2输入成绩

3查看成绩

4查询成绩

5统计成绩

6修改成绩

7添加成绩

8删除成绩

9保存成绩

四个人总结

整个程序主要运用了课本上的基础知识,并未有太大创新,通过for循环,循环输入学生成绩。

在学生成绩排序中运用选择法,同时实现学生名次的确定。

在删除指定学生成绩时,先确定信息存储位置即其在结构体数组中的序号,通过结构体变量的整体赋值将从指定位置以后的学生信息赋给前一个结构体变量,并将学生总数n减1,实现删除学生成绩信息。

源代码

#include

#include

#include

#include

#defineN30

#defineM3

typedefstructstudent

{charnumber[10]。

charname[20]。

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。

/*输入成绩*/

case'2':

lookscore()。

break。

/*查看成绩*/

case'3':

searchscore()。

break。

/*查找成绩*/

case'4':

statistic()。

break。

/*成绩统计*/

case'5':

modify()。

break。

/*修改成绩*/

case'6':

add()。

break。

/*添加成绩*/

case'7':

delscore()。

break。

/*删除成绩*/

case'8':

savescore()。

break。

/*保存成绩*/

case'9':

exit(0)。

/*退出程序*/

default:

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

}

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

getch()。

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("请输入您的选择\n")。

}

/***************输入各个同学的学生信息(王超)******************************/

voidinputscore(void)

{inti,j。

system("cls")。

printf("请输入学生总数:

\n")。

scanf("%d",&n)。

printf("提示:

*输入学号时请输入由1位大写字母和8位数字组成的学号,如P01214000*\n")。

/*因二维表上下需对正故有此要求*/

for(i=0。

i

i++)

{printf("请输入学生%d的学号姓名:

\n",i+1)。

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

printf("请输入学生成绩:

\n")。

printf("高数\t物理\tC语言\n")。

for(j=0。

j

j++)

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

}

printf("成功输入\n")。

}

/*****************计算各个同学的总分(孙友)*****************************/

voidtotal(void)

{inti,j。

for(i=0。

i

i++)

{stu[i].total=0。

for(j=0。

j

j++)

{

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

}

}

}

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

voidavergescore(void)

{inti,j。

for(i=0。

i

i++)

{stu[i].aver=0。

for(j=0。

j

j++)

{

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

}

stu[i].aver=stu[i].aver/M。

}

}

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

voidlookscore(void)

{inti,j,k。

STUt。

total()。

avergescore()。

system("cls")。

for(i=0。

i

i++)

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

j

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物理\tC语言\t总分\t平均分\n")。

for(i=0。

i

i++)

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

for(j=0。

j

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]。

inti,j。

system("cls")。

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

scanf("%s",a)。

for(i=0。

i

i++)

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

{printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n")。

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

for(j=0。

j

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(void)

{STU*p=stu。

inti,j。

floatcount=0.0,sum=0.0。

system("cls")。

for(i=0。

i

i++)

{sum+=(p+i)->aver。

}

printf("该班级平均分为%4.2f\n",sum/n)。

/*平均分计算*/

for(i=0。

i

i++)

{if((p+i)->aver>=60)

count++。

}

printf("该班级及格率为%4.2f%%\n",count/n*100)。

/*及格率计算*/

count=0.0。

for(i=0。

i

i++)

{if((p+i)->aver>=90)

count++。

}

printf("该班级优秀率为%4.2f%%\n",count/n*100)。

/*优秀率计算*/

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

for(i=0。

i

i++)

{

if(stu[i].aver<60)

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

}/*统计不及格学生名单*/

}

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

voidmodify(void)

{chara[10]。

inti,j。

system("cls")。

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

scanf("%s",a)。

for(i=0。

i

i++)

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

{printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n")。

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

for(j=0。

j

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%s",stu[i].number,stu[i].name)。

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

\n")。

printf("高数\t物理\tC语言\n")。

for(j=0。

j

j++)

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

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

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

break。

}

else

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

\n")。

}

}

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

voidadd(void)

{inta,i,j。

system("cls")。

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

\n")。

scanf("%d",&a)。

n=n+a。

for(i=n-a。

i

i++)

{printf("请输入学生%d的学号姓名:

\n",i+1)。

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

printf("请输入学生成绩:

\n")。

printf("高数\t物理\tC语言\n")。

for(j=0。

j

j++)

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

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

}

}

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

voiddelscore(void)

{inti,j,c。

charm,a[10]。

system("cls")。

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

scanf("%s",a)。

for(i=0。

i

i++)

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

{printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n")。

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

for(j=0。

j

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

i++)

stu[i]=stu[i+1]。

/*结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/

n=n-1。

/*删除该学生信息后学生总数减一*/

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

}

else

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

}

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

voidsavescore(void)

{FILE*fp。

inti,flag=1。

charm。

system("cls")。

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

scanf("%s",&m)。

if(m=='y')

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

{printf("文件打开失败\n")。

return。

}

for(i=0。

i

i++)

if(fwrite(&stu[i],sizeof(structstudent),1,fp)!

=1)

{printf("保存失败\n")。

flag=0。

}

if(flag==1)

printf("保存成功!

\n")。

fclose(fp)。

}

else

return。

}

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

当前位置:首页 > 工程科技 > 能源化工

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

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