C语言课程研究设计学生成绩管理系统Word格式.docx
《C语言课程研究设计学生成绩管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程研究设计学生成绩管理系统Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
四、源程序代码与调试
五、设计NS图
六、心得与体会
七、参考书目
一、课题要求
有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:
(1)主菜单
1、成绩录入
2、成绩查询
3、成绩统计
4、成绩排名
5、退出
(2)各菜单项功能
①成绩录入:
输入学生的学号、姓名及三门课的成绩;
②成绩查询:
查询不及格学生的记录。
③成绩统计:
l计算学生的平均分;
2根据学生的平均分高低,对学生的数据进行排序后输出;
(3)设计要求
1、用C语言实现系统;
2、利用结构体数组实现学生成绩统计管理的数据结构设计;
3、系统具有增加,查询,排序等基本功能;
4、系统的各个功能模块要求用函数的形式实现;
二、课题分析与设计
程序是数值计算型算法设计,设计出了学生成绩管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是结构体的相关操作,包括结构体数组的输入、输出、查找、删除、修改、计算等。
这个学生成绩管理系统也初步实现了学生成绩信息的显示、删除、查找、添加、修改等必要的功能。
三、程序介绍
学生成绩管理系统由8个函数组成,包括main函数、input函数、display函数、look函数、delete函数,其中change函数又包括一个sumandave子函数,paixu函数。
main函数主要是打印选择界面,选择并调用其他几个函数。
input函数是输入学生信息函数(包括姓名、学号、性别、5门学科的成绩)。
完成后调用display函数并返回界面选择。
。
display函数的功能是对输入学生的信息进行界面输出。
完成后返回main函数进行下一个功能的选择。
并返回界面选择。
look函数的功能是查找。
按提示信息输入学号和姓名两种方式可实现查找。
完成后调用display函数输出结果。
delete函数的功能是删除学生的信息,根据想删除的学号进行删除功能,删除的结果会显示在屏幕上。
然后再调用display函数显示结果。
Change函数功能是实现学生成绩的修改,其中对于每个想修改的工程(学号、性别、名字、分数)都有是否修改的提示。
选择并完成后再调用display函数输出修改后的结果。
Sumandave函数是计算每个学生成绩的总分、平均分。
完成后调用display函数输出所求结果。
Paixu函数是将所有学生成绩的总分降序排列,再是调用display函数。
四、源程序代码与调试
1.程序代码
#include<
stdio.h>
string.h>
conio.h>
structstudent
{charnum[10]。
charname[20]。
charsex[5]。
intgrade[5]。
floatv。
intsum。
}stu[50]。
intk=0。
voidinput()。
voiddisplay()。
voidlook()。
voidchange()。
voiddelete()。
voidsumandave()。
voidpaixu()。
voidmain()
{
inta。
do
printf("
\n\n******************************************************************\n"
)。
*"
printf("
\t\twelcomeenterthestudentmanagementsystem"
\t*"
\n******************************************************************\n"
\t1.Accessstudentinformation"
\t\t\t\t*\n"
\t2.lookstudentinformation"
\t3.Changestudentinformation"
\t4.deletestudentinformation"
\t5.BysumSortstudentinformationandoutput"
\t\t*\n"
\t6.exit"
\t\t\t\t\t\t*\n"
******************************************************************\n"
Enteryouchoice:
"
scanf("
%d"
&
a)。
switch(a)
case1:
\n"
input()。
break。
case2:
look()。
case3:
change()。
case4:
delete()。
case5:
paixu()。
case6:
exit(0)。
default:
\nThechoiceisbetween1to6.\n"
}
}while(a!
=0)。
voidinput()
{intj。
charch[20]。
\nenterstudentinformation:
{printf("
\nnum:
%s"
stu[k].num)。
\nname:
stu[k].name)。
\nsex:
stu[k].sex)。
for(j=0。
j<
5。
j++)
\ngrade%d:
j+1)。
stu[k].grade[j])。
}
k++。
\nifwantcontinueinputstudentinformation(y/n):
ch)。
}while(strcmp(ch,"
y"
)==0||strcmp(ch,"
Y"
)==0)。
sumandave()。
display()。
voiddisplay()
{inti。
thestudentinformationis:
for(i=0。
i<
k。
i++)
%-10s%-10s%-5s%2d%2d%2d%2d%2d%5d%5f\n"
stu[i].num,stu[i].name,stu[i].sex,stu[i].grade[0],stu[i].grade[1],stu[i].grade[2],stu[i].grade[3],stu[i].grade[4],stu[i].sum,stu[i].v)。
voidsumandave()
{inti,j。
{stu[i].sum=0。
stu[i].sum=stu[i].sum+stu[i].grade[j]。
stu[i].v=stu[i].sum/5.0。
}
voidlook()
{{inti。
chara[20]。
\nenteryouwantlookstudentnum:
"
a)。
if(strcmp(stu[i].num,a)==0)printf("
%-10s%-10s%-5s%2d%2d%2d%2d%2d%5d%5f\n"
\nenteryouwantlookstudentname:
if(strcmp(stu[i].name,a)==0)printf("
voidchange()
chara[20],ch[10]。
\nenteryouwantchangestudentnum:
scanf("
for(i=0。
if(strcmp(stu[i].num,a)==0)
\nyousurewantchangestudentnum(y/n):
if(strcmp(ch,"
)==0){printf("
stu[i].num)。
\nyousurewantchangestudentname(y/n):
stu[i].name)。
\nyousurewantchangestudentsex(y/n):