C语言学生成绩管理系统课程设计报告(共13页).doc
精选优质文档-倾情为你奉上C语言课程设计报告一 .问题描述:题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。主要功能:(1) 能按学期、按班级完成对学生成绩的录入、修改(2) 能按班级统计学生的成绩,求学生的总分及平均分(3) 能查询学生成绩,不及格科目及学生名单(4) 能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。要求使用二进制文件方式存储数据,系统以菜单方式工作,实现对学生成绩的录入,修改,统计,排序,查询,输出等功能。二 .设计目的设计“学生成绩管理系统”使其具有以下功能:(1) 能完成对学生成绩的录入(2) 能按班级统计学生的成绩,求学生的总分及平均分,排序(3) 能按班级,学期输出学生的成绩单和不及格科目及学生名单(4) 能查询单个学生成绩(5) 能修改单个学生信息三 . 要求系统以菜单方式工作四 . 功能1 输入功能:可以一次完成无数条信息的输入。2 输出功能:能按班级输出学生的成绩单。3 修改功能:完成对单个学生成绩的修改。4 查找功能:完成对单个学生信息查找,并显示。5 排序功能:按学生成绩进行排序,并显示。6 有一个清晰美观界面来调用各个功能五模块图修 改void monify修改单个学生信息主流程学期int term班级int classes信息录入void input 成绩统计void sort查询 void search姓名char name10学号int num成绩int score4学号stui.num、班级stui.classes,姓名stui.name、四门课成绩stui.score能按学号查询单个学生成绩 按班级统计学生的成绩,求学生的总分及平均分,排序成绩输出void print能按班级,学期输出学生成绩单和不及格科目及学生名单结构数组struct student六 . 详细内容整个系统除了主函数外,另外还有5个函数,实现六大功能:输入功能、输出功能、修改功能,查找并显示功能、排序并显示功能。各个函数的详细设计说明分别如下:1 . 定义结构体及宏定义 #include <stdlib.h>#include <stdio.h>#include <string.h>#define NUM 100struct student int term; int num; int classes; char name10; int score4; int sum; float average; stuNUM;2主函数 main()利用无限次循环for(;)和swithch()进行菜单选择来实现各函数的调用,系统根据输入的数字选项来调用相应的函数。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!void main() zcd();/*主函数界面*/ void zcd()int n=0;char m;system("cls");/*清屏*/ printf("按任一键进入主菜单n "); /*按任一键进入主菜单*/ printf("*n"); printf("tt华中科技大学文华学院欢迎您n"); printf("nttt- 欢迎使用学生管理系统nnttttt-n"); printf("*MENU*n"); printf("ttt1. 输入学生成绩记录 Input the recordn"); /*输入学生成绩记录*/ printf("ttt2. 排序并显示 Sort to make new a filen"); /*排序*/ printf("ttt3. 按班级显示成绩单 Print the recordn"); /*显示*/ printf("ttt4. 查找个人成绩 Search record on namen"); /*查找*/ printf("ttt5. 修改 Modify a recordn"); /*修改*/ printf("ttt6. 退出 Quitn"); /*退出*/ printf("*n"); printf("nttt输入你的选择Enter your choice(17):"); fflush(stdin); m=getchar(); doswitch(m) case '1':input();zcd();break; case '2':sort();system("pause");zcd();break; case '3':print();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("cls"); int i;char a;for(i=0;i<NUM;i+) printf(" n请输入学生的学期:"); scanf("%d",&stui.term); printf(" n请输入学生的学号:"); fflush(stdin); scanf("%d",&stui.num); printf(" n请输入学生的班级:"); scanf("%d",&stui.classes); printf("n请输入学生的姓名:"); scanf("%s", stui.name) ; printf("n请输入学生的语文成绩:"); scanf("%d",&stui.score0); printf("n请输入学生的数学成绩:"); scanf("%d", &stui.score1); printf("n请输入学生的英语成绩:"); scanf("%d", &stui.score2); printf("n请输入学生的计算机成绩:"); scanf("%d", &stui.score3); stui.sum=stui.score0+stui.score1+stui.score2+stui.score3;/算总分和平均 stui.average=(float)stui.sum/4.0; printf("是否要继续添加(按N&n退出)"); fflush(stdin); a=getchar(); if(a='n'|a='N') break;4、排序并显示函数 void sort() int i,j=0;float temp; for(i=0;i<NUM;i+) stui.sum=stui.score0+stui.score1+stui.score2+stui.score3; stui.average=(float)stui.sum/4.0; for(i=0;i<NUM-1;i+)for(j=i+1;j<NUM;j+)if(stui.sum<stuj.sum)temp=stui.sum; stui.sum=stuj.sum; stuj.sum=temp; printf("学号t姓名t班级 语文 数学 英语 计算机 总分 平均分n"); for(i=0;i<NUM;i+) printf("%dt%st%d%5d%5d%5d%6d%7d%8.2fn",stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2,stui.score3,stui.sum,stui.average); /*输出学生信息*/ system("pause");system("cls");print(); 5查找并显示一个记录 void search() system("cls");/*清屏*/ int number=0,i; printf("ttt 请输入要查找学生的学号:"); scanf("%d",&number); printf("学号t姓名t班级 语文 数学 英语 计算机 总分 平均分n"); for(i=0;i<NUM;i+) if(number=stui.num) break;/*查找判断*/ if(i<NUM)printf("%dt%st%d%5d%5d%5d%6d%7d%8.2fn",stui.num,stui.name,stui.classes,stui.score0,stui.score1,stui.score2, stui.score3,stui.sum,stui.average); /*输出学生信息*/ elseprintf("没找到该学生的信息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();default:print(); void print1()/按学期int i,m;printf("请输入学期:n");scanf("%d",&m);printf("学号t姓名t班级 语文 数学 英语 计算机 总分 平均分n");for(i=0;i<NUM;i+) if(m=stui.term) printf("%dt%st%d%5d%5d%5d%6d%7d%8.2fn",stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2, stui.score3,stui.sum,stui.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<NUM;i+) if(k=stui.classes) stui.sum=stui.score0+stui.score1+stui.score2+stui.score3; stui.average=stui.sum/4.0; printf("%dt%st%d%5d%5d%5d%6d%7d%8.2fn",stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2, stui.score3,stui.sum,stui.average); /*输出学生信息*/ printf("输出不及格学生名单及成绩:n");printf("学号t姓名t班级 语文 数学 英语 计算机 n");for(i=0;i<NUM;i+) for(j=0;j<4;j+) if(stui.scorej<60&&k=stui.classes) /*输出不及格学生名单及成绩*/ printf("%dt%st%d%5d%5d%5d%6dn",stui.num,stui.name,stui.classes, stui.score0,stui.score1,stui.score2, stui.score3); break; system("pause");system("cls");print();7修改成绩函数void modify() system("cls"); int number,i; printf("ttt请输入要修改信息的学生学号:"); scanf("ttt%d",&number); for(i=0;i<NUM;i+) if(number=stui.num) break;/*查找判断*/ if(i<NUM)/*查找判断*/ printf("请输入修改后的学生的信息:"); printf(" n请输入学生的学期:"); scanf("%d",&stui.term); printf(" n请输入学生的学号:"); fflush(stdin); scanf("%d",&stui.num); printf(" n请输入学生的班级:"); scanf("%d",&stui.classes); printf("n请输入学生的姓名:"); scanf("%s", stui.name) ; printf("n请输入学生的语文成绩:"); scanf("%d",&stui.score0); printf("n请输入学生的数学成绩:"); scanf("%d", &stui.score1); printf("n请输入学生的英语成绩:"); scanf("%d", &stui.score2); printf("n请输入学生的计算机成绩:"); scanf("%d", &stui.score3); elseprintf("没找到该学生的信息n");system("paues");system("cls");zcd(); 七运行过程主菜单成绩录入统计排序按学期输出成绩按班级输出成绩查找个人成绩修改单个学生信息八.设计总结经过几周的课程设计,我学到了很多东西:巩固和加深了对编程的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。经过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。能够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!(后附完整程序)专心-专注-专业