1、 C语言学生成绩管理系统课程设计报告 23 2020年4月19日 文档仅供参考 C语言课程设计报告 一 .问题描述: 题目七:学生成绩管理系统设计 学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。 主要功能: (1) 能按学期、按班级完成对学生成绩的录入、修改 (2) 能按班级统计学生的成绩,求学生的总分及平均分 (3) 能查询学生成绩,不及格科目及学生名单 (4) 能按班级输出学生的成绩单 要求:使用二进制文件方式存储数据,系统以菜单方式工作 学生成绩信息包括:学期,学号,班别,姓
2、名,四门课程成绩(语文、数学、英语和计算机)等。要求使用二进制文件方式存储数据,系统以菜单方式工作,实现对学生成绩的录入,修改,统计,排序,查询,输出等功能。 二 .设计目的 设计“学生成绩管理系统”使其具有以下功能: (1) 能完成对学生成绩的录入 (2) 能按班级统计学生的成绩,求学生的总分及平均分,排序 (3) 能按班级,学期输出学生的成绩单和不及格科目及学生名单 (4) 能查询单个学生成绩 (5) 能修改单个学生信息 三 . 要求 系统以菜单方式工作 四 . 功能 1 输入功能:能够一次完成无数条信息的输入。 2 输出功能:能按班级输出学生的成绩单。
3、 3 修改功能:完成对单个学生成绩的修改。 4 查找功能:完成对单个学生信息查找,并显示。 5 排序功能:按学生成绩进行排序,并显示。 6 有一个清晰美观界面来调用各个功能 五.模块图 修 改 void monify 修改单个学生信息 主 流 程 学期int term 班级int classes 信息录入void input 成绩统计void sort 查询 void search 姓名char name[10] 学号int num 成绩int score[4] 学号stu
4、[i].num、班级stu[i].classes,姓名stu[i].name、四门课成绩stu[i].score
能按学号查询单个学生成绩
按班级统计学生的成绩,求学生的总分及平均分,排序
成绩输出void print
能按班级,学期输出学生成绩单和不及格科目及学生名单
结构数组struct student
六 . 详细内容
整个系统除了主函数外,另外还有5个函数,实现六大功能:输入功能、输出功能、修改功能,查找并显示功能、排序并显示功能。各个函数的详细设计说明分别如下:
1 . 定义结构体及宏定义
#include
5、
#include
6、完每一个函数功能后,按任一键回到主界面也要经过这个函数来实现! void main() { zcd(); } /*主函数界面*/ void zcd() { int n=0; char m; system("cls");/*清屏*/ printf("按任一键进入主菜单\n "); /*按任一键进入主菜单*/ printf("********************************************************************************\n"); printf("\t\t
7、华中科技大学文华学院欢迎您\n"); printf("\n\t\t\t--------- 欢迎使用学生管理系统\n\n\t\t\t\t\t-----------\n"); printf("*************************************MENU***************************************\n"); printf("\t\t\t1. 输入学生成绩记录 Input the record\n"); /*输入学生成绩记录*/ printf("\t\t\t2. 排序并显示 Sort t
8、o make new a file\n"); /*排序*/ printf("\t\t\t3. 按班级显示成绩单 Print the record\n"); /*显示*/ printf("\t\t\t4. 查找个人成绩 Search record on name\n"); /*查找*/ printf("\t\t\t5. 修改 Modify a record\n"); /*修改*/ printf("\t\t\t6. 退出 Quit\n"); /*退出*/ printf("*********************
9、\n"); printf("\n\t\t\t输入你的选择Enter your choice(1~7):"); fflush(stdin); m=getchar(); do {switch(m) { case '1':input();zcd();break; case '2':sort();system("pause");zcd();break; case '3':p
10、rint();system("pause");break; case '4':search();zcd();break; case '5':modify();system("pause");zcd();break; case '6':exit(0); /*如菜单返回值为7则程序结束*/ default:printf("错误命令"); getchar();zcd(); } } while(1); } 3输入信息函数 void input() { system("cl
11、s");
int i;
char a;
for(i=0;i 12、 stu[i].name) ;
printf("\n请输入学生的语文成绩:");
scanf("%d",&stu[i].score[0]);
printf("\n请输入学生的数学成绩:");
scanf("%d", &stu[i].score[1]);
printf("\n请输入学生的英语成绩:");
scanf("%d", &stu[i].score[2]);
printf("\n请输入学生的计算机成绩:");
scanf("%d", &stu[i].score[3]);
13、
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;
printf("是否要继续添加(按N&n退出)");
fflush(stdin);
a=getchar();
if(a=='n'||a=='N')
break;
}
}
4、排序并显示函数
void sort()
{
int i,j=0;
float 14、temp;
for(i=0;i 15、 stu[i].sum=stu[j].sum;
stu[j].sum=temp;
}
}
}
printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
for(i=0;i 16、score[3],stu[i].sum,stu[i].average);
/*输出学生信息*/
}
}
}
system("pause");system("cls");print();
}
5查找并显示一个记录
void search()
{
system("cls");/*清屏*/
int number=0,i;
printf("\t\t\t 请输入要查找学生的学号:");
scanf("%d",&number);
printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n"); 17、
for(i=0;i 18、f("没找到该学生的信息\n");
system("pause");
}
6.按学期、按班级输出成绩函数
void print()
{
system("cls");
char a;
printf("1、按学期输出\n");
printf("2、按班级输出\n");
printf("3、返回\n");
fflush(stdin);
a=getchar();
switch(a)
{
case '1':print1();
case '2':print2();
case '3':zcd();
defaul 19、t:print();
}
}
void print1()//按学期
{
int i,m;
printf("请输入学期:\n");
scanf("%d",&m);
printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
for(i=0;i 20、tu[i].score[1],stu[i].score[2], stu[i].score[3],stu[i].sum,stu[i].average); /*输出学生信息*/
}
system("pause");system("cls");print();
}
void print2()//按班级
{
int i,j,k;
printf("请输入班级:\n");
scanf("%d",&k);
printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
for(i=0;i 21、[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;
printf("%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 22、[3],stu[i].sum,stu[i].average); /*输出学生信息*/
}
}
printf("输出不及格学生名单及成绩:\n");
printf("学号\t姓名\t班级 语文 数学 英语 计算机 \n");
for(i=0;i 23、5d%6d\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]);
break;
}
}
system("pause");system("cls");print();
}
7修改成绩函数
void modify()
{
system("cls");
int number,i;
printf("\t\t\t请输入要修改信息的学生 24、学号:");
scanf("\t\t\t%d",&number);
for(i=0;i 25、sh(stdin);
scanf("%d",&stu[i].num);
printf(" \n请输入学生的班级:");
scanf("%d",&stu[i].classes);
printf("\n请输入学生的姓名:");
scanf("%s", stu[i].name) ;
printf("\n请输入学生的语文成绩:");
scanf("%d",&stu[i].score[0]);
printf("\n请输入学生的数学成绩:" 26、);
scanf("%d", &stu[i].score[1]);
printf("\n请输入学生的英语成绩:");
scanf("%d", &stu[i].score[2]);
printf("\n请输入学生的计算机成绩:");
scanf("%d", &stu[i].score[3]);
}
else
printf("没找到该学生的信息\n");
system("paues");system("cls");zcd();
}
七.运行过 27、程
主菜单
成绩录入
统计排序
按学期输出成绩
按班级输出成绩
查找个人成绩
修改单个学生信息
八.设计总结
经过几周的课程设计,我学到了很多东西:
①巩固和加深了对编程的理解,提高综合运用本课程所学知识的能力。
②培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。
③经过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
④能够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。
课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。
在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!
(后附完整程序)






