C语言学生成绩管理系统课程设计报告Word格式.docx
《C语言学生成绩管理系统课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统课程设计报告Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
2输出功能:
能按班级输出学生的成绩单。
3修改功能:
完成对单个学生成绩的修改。
4查找功能:
完成对单个学生信息查找,并显示。
5排序功能:
按学生成绩进行排序,并显示。
6有一个清晰美观界面来调用各个功能
五.模块图
六.详细内容
整个系统除了主函数外,另外还有5个函数,实现六大功能:
输入功能、输出功能、修改功能,查找并显示功能、排序并显示功能。
各个函数的详细设计说明分别如下:
1.定义结构体及宏定义
#include<
stdlib.h>
stdio.h>
string.h>
#defineNUM100
structstudent
{intterm;
intnum;
intclasses;
charname[10];
intscore[4];
intsum;
floataverage;
}stu[NUM];
2.主函数main()
利用无限次循环for(;
;
)和swithch()进行菜单选择来实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!
voidmain()
{
zcd();
}
/*主函数界面*/
voidzcd()
{
intn=0;
charm;
system("
cls"
);
/*清屏*/
printf("
按任一键进入主菜单\n"
/*按任一键进入主菜单*/
printf("
********************************************************************************\n"
\t\t华中科技大学文华学院欢迎您\n"
\n\t\t\t---------欢迎使用学生管理系统\n\n\t\t\t\t\t-----------\n"
*************************************MENU***************************************\n"
\t\t\t1.输入学生成绩记录Inputtherecord\n"
/*输入学生成绩记录*/
\t\t\t2.排序并显示Sorttomakenewafile\n"
/*排序*/
\t\t\t3.按班级显示成绩单Printtherecord\n"
/*显示*/
\t\t\t4.查找个人成绩Searchrecordonname\n"
/*查找*/
\t\t\t5.修改Modifyarecord\n"
/*修改*/
\t\t\t6.退出Quit\n"
/*退出*/
\n\t\t\t输入你的选择Enteryourchoice(1~7):
"
fflush(stdin);
m=getchar();
do
{switch(m)
{
case'
1'
:
input();
zcd();
break;
case'
2'
sort();
system("
pause"
3'
print();
4'
search();
5'
modify();
6'
exit(0);
/*如菜单返回值为7则程序结束*/
default:
错误命令"
getchar();
}
}while
(1);
3输入信息函数
voidinput()
inti;
chara;
for(i=0;
i<
NUM;
i++)
{printf("
\n请输入学生的学期:
scanf("
%d"
&
stu[i].term);
\n请输入学生的学号:
fflush(stdin);
stu[i].num);
\n请输入学生的班级:
stu[i].classes);
\n请输入学生的姓名:
%s"
stu[i].name);
\n请输入学生的语文成绩:
stu[i].score[0]);
\n请输入学生的数学成绩:
stu[i].score[1]);
\n请输入学生的英语成绩:
scanf("
stu[i].score[2]);
\n请输入学生的计算机成绩:
stu[i].score[3]);
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
//算总分和平均
stu[i].average=(float)stu[i].sum/4.0;
是否要继续添加(按N&
n退出)"
a=getchar();
if(a=='
n'
||a=='
N'
)
break;
}
4、排序并显示函数
voidsort()
inti,j=0;
floattemp;
for(i=0;
NUM-1;
{
for(j=i+1;
j<
j++)
if(stu[i].sum<
stu[j].sum)
{
temp=stu[i].sum;
stu[i].sum=stu[j].sum;
stu[j].sum=temp;
}
学号\t姓名\t班级语文数学英语计算机总分平均分\n"
%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n"
stu[i].num,stu[i].name,stu[i].classes,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);
/*输出学生信息*/
5查找并显示一个记录
voidsearch()
intnumber=0,i;
\t\t\t请输入要查找学生的学号:
number);
for(i=0;
if(number==stu[i].num)break;
/*查找判断*/
if(i<
NUM)
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);
else
printf("
没找到该学生的信息\n"
6.按学期、按班级输出成绩函数
voidprint()
1、按学期输出\n"
2、按班级输出\n"
3、返回\n"
switch(a)
{
case'
print1();
print2();
default:
voidprint1()//按学期
inti,m;
请输入学期:
\n"
m);
if(m==stu[i].term)
voidprint2()//按班级
inti,j,k;
请输入班级:
k);
if(k==stu[i].classes)
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
stu[i].average=stu[i].sum/4.0;
输出不及格学生名单及成绩:
学号\t姓名\t班级语文数学英语计算机\n"
{for(j=0;
4;
if(stu[i].score[j]<
60&
&
k==stu[i].classes)/*输出不及格学生名单及成绩*/
%d\t%s\t%d%5d%5d%5d%6d\n"
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
7修改成绩函数
voidmodify()
intnumber,i;
\t\t\t请输入要修改信息的学生学号:
\t\t\t%d"
if(number=stu[i].num)break;
NUM)/*查找判断*/
请输入修改后的学生的信息:
else
paues"
}
七.运行过程
主菜单
成绩录入
统计排序
按学期输出成绩
按班级输出成绩
查找个人成绩
修改单个学生信息
八.设计总结
经过几周的课程设计,我学到了很多东西:
①巩固和加深了对编程的理解,提高综合运用本课程所学知识的能力。
②培养了我选用参考书,查阅手册及文献资料的能力。
培养独立思考,深入研究,分析问题、解决问题的能力。
③经过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
④能够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。
课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。
在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。
在此对老师和同学们表示感谢!
(后附完整程序)