学生成绩统计程序
- 格式:doc
- 大小:54.50 KB
- 文档页数:8
本题要求编写程序输入n个学生的mooc成绩统计优秀合格证书的数量以及没有获得题目要求编写程序,输入n个学生的mooc成绩,统计优秀和合格证书的数量,并计算没有获得证书的学生数量。
首先,我们需要明确本题的输入和输出要求。
根据题目描述,我们需要输入n个学生的mooc成绩,然后统计出优秀和合格证书的数量,以及没有获得证书的学生数量。
输出包括优秀证书数量、合格证书数量和没有获得证书的学生数量。
接下来,我们可以开始思考解题的思路和步骤。
1.首先,获取学生数量n。
2.创建一个空列表,用来存储学生的成绩。
3. 使用一个循环,从用户那里获取n个学生的mooc成绩,并将这些成绩添加到列表中。
4.创建三个变量,用于计数优秀、合格和没有获得证书的学生数量。
初始化时都为0。
5.使用循环遍历列表中的每个成绩。
5.1如果成绩大于等于90分,则认为学生获得了优秀证书,优秀证书数量加15.2如果成绩大于等于60分,则认为学生获得了合格证书,合格证书数量加15.3如果成绩低于60分,则认为学生没有获得证书,没有获得证书的学生数量加16.打印输出统计结果,即优秀证书数量、合格证书数量和没有获得证书的学生数量。
下面是一个Python代码示例:```pythonn = int(input("请输入学生数量: "))scores = []for i in range(n):score = float(input("请输入第{}个学生的mooc成绩:".format(i+1)))scores.append(score)excellent_count = 0pass_count = 0no_cert_count = 0for score in scores:if score >= 90:excellent_count += 1elif score >= 60:pass_count += 1else:no_cert_count += 1print("优秀证书数量: ", excellent_count)print("合格证书数量: ", pass_count)print("没有获得证书的学生数量: ", no_cert_count)```这样,我们就完成了输入n个学生的mooc成绩,并统计优秀、合格和没有获得证书的学生数量的程序。
一、介绍Excel表格学生成绩的统计重要性学生成绩的统计是教育工作中非常重要的一环。
通过对学生成绩的统计,学校和教师可以全面、客观地了解学生的学习情况,及时发现问题并采取相应的措施加以改进。
而Excel表格作为一种强大的数据处理工具,可以帮助教师们快速、准确地进行学生成绩的统计分析,为教学工作提供有力的支持。
二、学生成绩的Excel表格统计步骤1. 收集学生成绩数据教师需要收集学生的考试成绩数据,包括考试科目、每位学生的得分等信息。
这些数据可以通过试卷、考试记录册等途径获取。
2. 创建Excel表格在收集到学生成绩数据后,教师需要利用Excel软件创建一个新的工作表格,将学生成绩数据输入到表格中。
在创建Excel表格时,应该注意合理的表格结构,例如每一列代表一个不同的考试科目,每一行代表一个学生。
3. 数据的录入与整理在Excel表格中录入学生成绩数据后,教师需要对数据进行整理,包括检查数据的准确性和完整性,并进行必要的修正。
另外,还需要添加一些必要的数据信息,例如学生尊称、班级、考试日期等。
4. 进行统计分析完成学生成绩数据的整理后,Excel软件提供了丰富的统计分析功能,例如可以计算每个学生的总分、平均分,以及不同科目的平均分、最高分、最低分等。
通过这些统计分析,教师可以直观地了解学生的学习情况,找出学习中存在的问题和特点。
5. 制作数据可视化图表除了进行数值上的统计分析外,Excel还提供了丰富的图表工具,可以帮助教师将学生成绩数据呈现出直观的可视化图表,例如折线图、柱状图等。
利用图表工具,教师可以更加清晰直观地看到学生的学习成绩情况,并据此进行针对性的教学工作。
6. 结果输出根据统计分析和图表呈现的结果,教师可以输出相应的学生成绩报告,以便及时向学校管理部门和学生家长进行反馈。
这些学生成绩报告也是学生学习情况管理和教学评估的重要依据。
三、Excel表格学生成绩统计的优势1. 准确性通过Excel表格进行学生成绩统计,可以提高统计过程的准确性。
填写说明:1、同一名教师在不同教学班教授的同一门课程只须填写一份教学日历;由不同教师教授的同一门课程每人填写一份教学日历。
2、“作业、实验”栏中的作业,是指教师计划布置的,应该批改的作业.3、法定假日不安排教学内容,其课次顺延安排。
系统开发语言作业现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下:1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课。
2、完成成绩排序:按单科成绩排序、按平均分排序;3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60—79分,80以上);4、用结构体完成学生姓名和成绩的输入:5、完成成绩查询:单科查询、平均分查询、按姓名查询、分段查询等;6、完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数7、完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金名单等;.作业要求第1、2、3周、完成成绩录入、排序和统计第4、5、6周、完成菜单和函数编制第2、8、9周、完成成绩查询和统计第10、11周、完成查询输出第12、13周、讲程序进行函数化、模块化第14、15周、应用指针、指针函数以及函数指针等第16周,完善程序、验收。
最后打印出完整代码清单代码如下:#include<stdio。
h〉struct student{float math;float Chinese;float English;float average;char name[5];};void inputgread(struct student stu) //输入成绩{int a=0;scanf("%s”,stu。
name);printf(”按顺序输入数学成绩,语文成绩,英语成绩");scanf(”%f%f%f",&stu。
math,&stu.Chinese,&stu.English);}void Chinesecompositor(struct student stu[])//按语文排序{int num=0,num2=0;struct student p;for(num2;num2〈9;num2++){for(num;num<9;num++){if(stu[num]。
移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
《微机原理与接口技术》课程设计(学年论文)说明书课题名称:学生课程成绩统计程序设计(A1 难度系数1)学生学号:专业班级:学生姓名:学生成绩:指导教师:课题工作时间:2013-6-13 至2013-6-18填写说明:1. 一、二、三项由指导教师在课程设计(学年论文)开始前填写并交由学生保管;2. 第五项由学生在完成课程设计后填写,并将此表与课程设计一同装订成册交给指导教师;3. 成绩评定由指导教师按评定标准评分。
4. 此表格填写好后与正文一同装订成册。
课程设计评审标准(指导教师用)学生课程成绩统计程序设计说明书1、方案论证(1)汇编程序设计步骤、要点(2)DOS系统调用2、程序设计(1)总体设计设计分析与思路说明总体框图(框图中每一个模块的功能说明)(2)程序设计流程图程序代码及注释3、程序调试步骤与结果(1)编辑源程序(2)汇编源程序(3)连接程序(4)在TD中调试程序(5)程序运行结果截屏图片结果说明4、结论用结果说明设计成功之处,对某些问题进行分析、展望。
1.方案论证(1)汇编程序设计步骤、要点1 引言汇编语言能充分利用计算机所有的硬件特性并对硬件进行直接控制,汇编语言编制的程序比使用其它语言编制的程序执行速度快、资源占用少,所以,汇编语言在工业自动化控制和智能化产品的生产上有着十分广泛的用途。
但是,汇编语言是一种低级符号语言,与机器指令有着一一对应的关系,与高级语言相比不太符合人的思维习惯,它向寄存器、内存单元,必须通过一种具体的计算机来学习,同时要求初学者应具有一定的硬件基础,真正掌握起来有一定的难度。
2 汇编语言程序设计技巧808618088汇编语言程序设计中一般说来遵循以下几个步骤:首先分析题意,确定解题算法。
然后根据算法由粗到精画程序流程图,最后编写程序。
3 寻址方式的准确使用程序设计的目的是将输入数据加工处理转换成输出数据,获取正确的数据是保证程序处理正确的前提,而获取正确的数据又与正确地使用寻址方式关系密切,所以有必要先从寻址方式谈起。
Python实现学生考试成绩循环监控统计简介本文档旨在介绍如何使用Python编程语言实现学生考试成绩的循环监控和统计功能。
通过编写一个简单的程序,您可以轻松地记录、监控和分析学生的考试成绩,提供了一个方便的工具来帮助教师或者辅导员进行学生管理和考试评估工作。
程序设计本程序设计采用面向对象的编程思想,主要由以下几个类组成:1. 学生类(Student)学生类保存了学生的基本信息,包括学号、姓名和所在班级等。
每个学生对象可以包含多个考试成绩。
2. 考试类(Exam)考试类用于保存考试信息,包括考试名称、科目和考试时间等。
每个考试对象会保存各个学生的得分情况。
3. 成绩管理类(GradeManager)成绩管理类用于管理学生和考试信息。
可以添加学生信息、添加考试信息,录入学生的考试成绩,并计算学生的总分和平均分等。
还可以根据学号或者考试名称等条件进行查询和统计。
4. 用户界面类(UI)用户界面类用于提供与用户的交互功能,可以通过命令行或者图形界面来展示学生成绩和进行各种操作,例如添加学生、添加考试、录入成绩和查询统计等。
程序实现示例以下是一个简单的示例代码,展示了如何通过调用成绩管理类和用户界面类来使用本程序:class Student:def __init__(self, student_id, name, class_name): self.student_id = student_id = nameself.class_name = class_nameself.grades = {}def add_grade(self, exam_name, score):self.grades[exam_name] = scoreclass Exam:def __init__(self, exam_name, subject, date): self.exam_name = exam_nameself.subject = subjectself.date = date___ {}def add_score(self, student_id, score):self.scores[student_id] = scoreclass GradeManager:def __init__(self):self.students = {}self.exams = {}def add_student(self, student):self.students[student.student_id] = studentdef add_exam(self, exam):self.exams[exam.exam_name] = examdef add_score(self, student_id, exam_name, score):if student_id in self.students and exam_name in self.exams: self.exams[exam_name].add_score(student_id, score)def calculate_total_score(self, student_id):total_score = 0if student_id in self.students:for ___():if student_id ___:total_score += exam.scores[student_id]return total_scoredef calculate_average_score(self, student_id):total_score = self.calculate_total_score(student_id) if student_id in self.students and len(self.exams) > 0: return total_score / len(self.exams)return 0class UI:def __init__(self, grade_manager):self.grade_manager = grade_managerdef add_student(self, student_id, name, class_name): student = Student(student_id, name, class_name) self.grade_manager.add_student(student)def add_exam(self, exam_name, subject, date): exam = Exam(exam_name, subject, date)self.grade_manager.add_exam(exam)def add_score(self, student_id, exam_name, score):self.grade_manager.add_score(student_id, exam_name, score)def show_total_score(self, student_id):total_score = self.grade_manager.calculate_total_score(student_id) print(f"学生 {student_id} 的总分是:{total_score}")def show_average_score(self, student_id):average_score =self.grade_manager.calculate_average_score(student_id)print(f"学生 {student_id} 的平均分是:{average_score}")使用示例grade_manager = GradeManager()ui = UI(grade_manager)添加学生信息ui.add_student('xxxxxxxx', '张三', '一年级')ui.add_student('xxxxxxxx', '李四', '一年级')ui.add_student('xxxxxxxx', '王五', '一年级')添加考试信息ui.add_exam('期中考试', '数学', '2021-05-10')ui.add_exam('期中考试', '语文', '2021-05-10')录入成绩ui.add_score('xxxxxxxx', '期中考试', 80)ui.add_score('xxxxxxxx', '期中考试', 85)ui.add_score('xxxxxxxx', '期中考试', 90)查询成绩ui.show_total_score('xxxxxxxx') # 输出:学生 xxxxxxxx 的总分是:80ui.show_average_score('xxxxxxxx') # 输出:学生 xxxxxxxx 的平均分是:85总结通过本文档,您学习了如何使用Python编程语言实现学生考试成绩循环监控和统计功能。
#include<stdio.h>#include<string.h>#include<process.h>#include<conio.h>#include<stdlib.h>#define N 30#define M 3typedef struct student{ char number[10];char name[20];float score[M];float aver;float total;}STU;STU stu[N];int n;void inputscore(void);void savescore(void);void avergescore(void);void total(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);void main(){ short int flag=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);}void menu(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");}/********输入各个同学的学生信息(王超)**********/void inputscore(void){ int i,j;system("cls");printf("请输入学生总数: \n");scanf("%d",&n);printf("提示:*输入学号时请输入由1位大写字母和8位数字组成的学号,如P0********\n"); /*因二维表上下需要对正故有此要求*/for(i=0;i<n;i++){ printf("请输入学生%d的学号姓名:\n",i+1);scanf("%s%s",stu[i].number,stu[i].name);printf("高数\t物理\tC语言\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);}printf("成功输入\n");}/***********计算各个同学的总分(孙友)**************/void total(void){ int i,j;for(i=0;i<n;i++){ stu[i].total=0;for(j=0;j<M;j++){stu[i].total+=stu[i].score[j];}}}/***********计算各个同学的平均分**********/void avergescore(void){ int i,j;for(i=0;i<n;i++){ stu[i].aver=0;for(j=0;j<M;j++){stu[i].aver+=stu[i].score[j];}stu[i].aver=stu[i].aver/M;}}/*******查看学生成绩及平均分对学生进行排序*********/void lookscore(void){int i,j,k;STU t;total();avergescore();system("cls");for(i=0;i<n-1;i++){for(k=i,j=i+1;j<n;j++)if(stu[i].aver<stu[j].aver){t=stu[j];stu[j]=stu[i];stu[i]=t;}}printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n");for(i=0;i<n;i++){printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f\t",stu[i].aver);printf("\n");}}/********通过输入学号查找学生成绩**********/void searchscore(void){char a[10];int i,j;system("cls");printf("请输入需要查询的学生学号\n");scanf("%s",a);for(i=0;i<n;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<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f\t",stu[i].aver);printf("\n");break; /*找到该学生的成绩信息后跳出for循环*/ }else if (i<n-1)continue;elseprintf("未找到该学生信息\n");}}/******统计学生成绩信息,平均分及格率,优秀率*********/void statistic(void){STU *p=stu;int i,j;float count=0.0,sum=0.0;system("cls");for(i=0;i<n;i++){sum+=(p=i)->aver;}printf("该班级平均分为%4.2f\n",sum/n); /*平均分计算*/for(i=0;i<n;i++){if((p+1)->aver>=60)count++;}printf("该班级及格率为%4.2f%%\n",count/n*100); /*及格率计算*/ count=0.0;for(i=0;i<n;i++){if((p+1)->aver>=90)count++;}printf("该班级优秀率为%4.2f%%\n",count/n*100); /*优秀率计算*/ printf("平均分低于60的学生名单\n");for(i=0;i<n;i++){if(stu[i].aver<60)printf("%s\n",stu[i].name);} /*统计不及格学生的名单*/}/************修改学生成绩********/void modify(void){char a[10];int i,j;system("cls");printf("请输入需要修改成绩的学生学号\n");scanf("%s",a);for(i=0;i<n;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<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f\t",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<M;j++)scanf("%f",&stu[i].score[j]); /*找到该学生成绩后进行修改,跳出for循环*/printf("修改成功\n");break;}else if (i<n-1)continue;elseprintf("请确认该学生是否喂本班级学生!\n");}}/**********添加学生成绩**********/void add(void){int a,i,j;system("cls");printf("请输入新增加的学生人数:\n");scanf("%d",&a);n=n+a;for(i=n-a;i<n;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<M;j++)scanf("%f",&stu[i].score[j]);printf("添加成功\n");}}/******************删除学生成绩***********************/void delscore(void){int i,j,c;char m,a[10];system("cls");printf("请输入学生学号\n");scanf("%s",a);for(i=0;i<n;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<M;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;}elseprintf("未找到该学生信息\n");}printf("是否删除该学生成绩(y\n)\n");scanf("%s",&m);if(m=='y'){for(i=c;i<n-1;i++)stu[i]=stu[i+1]; /*结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/n=n-1; /*删除该学生信息后学生总数减一*/printf("删除成绩成功\n");}elseprintf("删除成绩失败\n");}/*****************保存学生成绩************************/ void savescore(void){FILE*fp;int i,flag=1;char m;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<n;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1){printf("保存失败\n");flag=0;}if(flag==1)printf("保存成功!\n");fclose(fp);}elsereturn 0;}。
填写说明:1、同一名教师在不同教学班教授的同一门课程只须填写一份教学日历;由不同教师教授的同一门课程每人填写一份教学日历。
2、“作业、实验”栏中的作业,是指教师计划布置的,应该批改的作业。
3、法定假日不安排教学内容,其课次顺延安排。
系统开发语言作业现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下:1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课。
2、完成成绩排序:按单科成绩排序、按平均分排序;3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60-79分,80以上);4、用结构体完成学生姓名和成绩的输入:5、完成成绩查询:单科查询、平均分查询、按姓名查询、分段查询等;6、完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数7、完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金名单等;.作业要求第1、2、3周、完成成绩录入、排序和统计第4、5、6周、完成菜单和函数编制第2、8、9周、完成成绩查询和统计第10、11周、完成查询输出第12、13周、讲程序进行函数化、模块化第14、15周、应用指针、指针函数以及函数指针等第16周,完善程序、验收。
最后打印出完整代码清单代码如下:#include<stdio.h>struct student{float math;float Chinese;float English;float average;char name[5];};void inputgread(struct student stu) //输入成绩{int a=0;scanf("%s",);printf("按顺序输入数学成绩,语文成绩,英语成绩");scanf("%f%f%f",&stu.math,&stu.Chinese,&stu.English); }void Chinesecompositor(struct student stu[]) //按语文排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++)if(stu[num].Chinese<stu[num+1].Chinese){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].Chinese); }}void mathcompositor(struct student stu[]) //按数学排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++)if(stu[num].math<stu[num+1].math){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].math);}}void Englishcompositor(struct student stu[]) //按英语排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++)if(stu[num].English<stu[num+1].English){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].English); }}void Average(struct student stu) //平均分{int num=0;stu.average=(stu.Chinese+stu.English+stu.math)/3; }void Averagecompositor(struct student stu[])//按平均分排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++){if(stu[num].average<stu[num+1].average){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].average);}}void namecheck(struct student stu[],char *na) //按姓名查询{int num=0;for(num;num<10;num++){if (na==stu[num].name){printf("姓名:%s 数学:%f 语文:%f 英语:%f",stu[num].name,stu[num].math,stu[num].English);}}}void scholarship(struct student stu[]) //奖学金{int num=0,count=0;printf("一等奖学金名单:\n");for(num;num<10;num++){if(stu[num].Chinese>=90&&stu[num].English>=90&&stu[n um].math>=90){printf("%s ",stu[num].name);count++;}}printf("\n二等奖学金名单:\n");for(num;num<10;num++){if(stu[num].Chinese>=80&&stu[num].English>=80&&stu[n um].math>=80){printf("%s ",stu[num].name);count++;}}printf("奖学金人数:%d",count);}void scorecut(struct student stu[],int n)//分数段{int num=0,count=0;switch(n){case 1:{printf("语文成绩分数段:\n");printf("90分以上:\n");for(num;num<10;num++){if(stu[num].Chinese>=90){printf("%s\n",stu[num].name);}}printf("80---90: \n");for(num=0;num<10;num++){if(stu[num].Chinese>=80&&stu[num].Chinese<90) {printf("%s\n",stu[num].name);}}printf("70--80: \n");for(num=0;num<10;num++){if(stu[num].Chinese>=70&&stu[num].Chinese<80) {printf("%s\n",stu[num].name);}}printf("60--70: \n");for(num=0;num<10;num++){if(stu[num].Chinese>=60&&stu[num].Chinese<70) {printf("%s\n",stu[num].name);}}printf("不及格: \n");for(num=0;num<10;num++){if(stu[num].Chinese<60){printf("%s\n",stu[num].name);}}}case 2:{printf("平均分成绩分段:\n");printf("90分以上:\n");for(num;num<10;num++){if(stu[num].average>=90){printf("%s\n",stu[num].name);}}printf("80---90: \n");for(num=0;num<10;num++){if(stu[num].average>=80&&stu[num].average<90) {printf("%s\n",stu[num].name);}}printf("70--80: \n");for(num=0;num<10;num++){if(stu[num].average>=70&&stu[num].average<80) {printf("%s\n",stu[num].name);}}printf("60--70: \n");for(num=0;num<10;num++){if(stu[num].average>=60&&stu[num].average<70) {printf("%s\n",stu[num].name);}}printf("不及格: \n");for(num=0;num<10;num++){if(stu[num].average<60){printf("%s\n",stu[num].name);}}}}}void menu(){printf(" 1.成绩录入\n");printf(" 2.成绩查询\n");printf(" 3.分数段查询\n");printf(" 4.奖学金查询\n");printf(" 5.成绩排序\n");}main(){struct student stu[10];int num=0,n;char *na;while(1){menu();scanf("%d",&n);switch(n){case 1:for(num;num<10;num++){printf("输入第%d个学生姓名",num+1);inputgread(stu[num]);Average(stu[num]);}break;case 2:{printf(" 1.按姓名查询\n");printf(" 2.查询平均分\n");printf(" 3.退出查询\n");scanf("%d",&n);switch(n){case 1:{printf("输入学生姓名:");scanf("%s",&na);namecheck(stu,na);}case 2:{for(num=0;num<10;num++){printf("3科平均分:\n");printf("%c:%f\n",stu[num].name,stu[num].average);}}case 3: break;}}case 3:{}case 4:{printf(" 1.语文单科成绩分段\n");printf(" 2.平均分分段\n");scanf("%d",&n);switch(n){case 1:scorecut(stu,n);case 2:scorecut(stu,n);case 3:break;}}case 5:{printf("按数学成绩排序:\n");mathcompositor(stu);printf("按语文成绩排序: \n");Chinesecompositor(stu);printf("按英语成绩排序: \n");Englishcompositor(stu);printf("按平均分排序: \n");Averagecompositor(stu);}}}}。