资源描述
C语言课程设计报告项 目 名 称: 学生成绩单制作 所 在 班 级: #级#班 小 组 成 员: # 任 课 教 师: # 起 止 时 间: 2014.06.152014.06.26 项目基本信息项目名称学生成绩单制作项目简介制作一个学生成绩单,输入学生成绩、输入学生信息函数、输出单科成绩,最高学生信息输出三门课平均成绩最高的学生信息将学生按照平均成绩降幂排序,并输出之后求出各平均成绩。小组成员#任务分工独立完成课程实践评定成绩记录指导教师意见系统完成情况:优 良 中 差报告完成情况:优 良 中 差答辩评定成绩团队整体成绩:成员成绩综 合 成 绩一、 问题描述及分析输入学生成绩、输入学生信息函数、输出单科成绩,最高学生信息输出三门课平均成绩最高的学生信息将学生按照平均成绩降幂排序,并输出之后求出各平均成绩,形成一个成绩单。二、 功能模块及数据结构描述struct student/定义结构体void print(struct student awrry)/输出学生信息void printa(struct student awrry)/输出单科成绩最高学生信息void printb(struct student awrry)/输出三门课平均成绩最高的学生信息/主函数void main()struct student stu100;/定义结构体数组 shuru(stu);/输入学生信息print(stu);/输出学生全部信息printa(stu);/输出单科成绩最高学生信息printb(stu);/输出三门课平均成绩最高的学生信息sort(stu);/将学生按照平均成绩降幂排序,并输出三、 主要算法流程描述及部分核心算法流程图如下图所示。核心算法为:开始 开始定义变量输入输入单科成绩最高学生信息输出三门课平均成绩最高的学生信息输入学生信息输入学生信息函数、降幂,输出结束四、 系统使用说明1、 进入学生成绩制作2、 输入学生个数3、 输入三个学生的成绩及学号信息4求出全部学生信息5、结束程序五、 问题及解决办法1、输出时,有些信息显示不完整或布局不对称;通过对程序格式的进一步改进使其对称布局更美观。2、学生全部信息输出界面不协调,有待优化改良。3、再添加函数能实现更多功能。课外实践总结通过这个程序的实践我对管理系统有了深刻的了解,了解了怎样制作成绩单,通过自己的改造终于完成工作。 课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。六、 源程序#include#include/定义结构体 struct studentint num;char name20;float chinese;float math;float english;float average; int N;/输出学生信息void print(struct student awrry)printf(全部学生信息如下:n);printf(=n);for(int i=0;iN;i+)printf(number name math chinese english averagen); printf( %d %s %3.2f %3.2f %3.2f %3.2fn,awrryi.num,awrryi.name,awrryi.math,awrryi.chinese,awrryi.english,awrryi.average);printf(=n);/输入学生信息函数void shuru(struct student awrry) float sum; printf(=n);printf(请输入你想输入学生的个数:n);scanf(%d,&N);printf(输入 %d 个学生信息:n,N);for(int i=0;iN;i+) sum=0;printf(输入的 %d 个学生信息:n,i+1);printf(输入学号:n);scanf(%d,&awrryi.num);printf(输入姓名:n);scanf(%s,awrryi.name);printf(输入语文成绩:n);scanf(%f,&awrryi.chinese);sum=(float)(sum+awrryi.chinese);printf(输入数学成绩:n);scanf(%f,&awrryi.math);sum=(float)(sum+awrryi.math);printf(输入英语成绩:n);scanf(%f,&awrryi.english);sum=(float)(sum+awrryi.english);awrryi.average=(float)(sum/3.0);printf(=n);/输出单科成绩最高学生信息void printa(struct student awrry)printf(单科成绩最高学生信息n);printf(=n);int k1=0,k2=0,k3=0;for(int i=0;iN;i+)if(awrryk1.chineseawrryi.chinese)k1=i;for(int j=0;jN;j+)if(awrryk2.englishawrryj.english)k2=j;for(int p=0;pN;p+)if(awrryk3.mathawrryp.math)k3=p;printf(语文成绩最高者:n);printf(学号 姓名 语文成绩n);printf( %3d %3s %3.2fn,awrryk1.num,awrryk1.name,awrryk1.chinese);printf(数学成绩最高者:n);printf(学号 姓名 数学成绩n);printf( %3d %3s %3.2fn,awrryk3.num,awrryk3.name,awrryk3.math);printf(英语成绩最高者:n);printf(学号 姓名 英语成绩n);printf( %3d %3s %3.2fn,awrryk2.num,awrryk2.name,awrryk2.english); printf(=n);/输出三门课平均成绩最高的学生信息void printb(struct student awrry) printf(三门课平均成绩最高的学生信息n);printf(=n);float max=awrry0.average;int k=0;for(int i=0;iN;i+)if(max=awrryi.average)max=awrryi.average;k=i;printf(平均成绩最高者:n); printf(number name averagen); printf( %3d %3s %3.2fn,awrryk.num,awrryk.name,awrryk.average); printf(=n);/将学生按照平均成绩降幂排序,并输出void sort(struct student awrry) printf(平均成绩降幂排序n);printf(=n);float t1,t2,t3,t4;int i,j;char name20;for(i=0;iN;i+)for(j=0;jN-1;j+)if(awrryj.averageawrry(j+1).average)t1=awrryj.average;awrryj.average=awrryj+1.average;awrryj+1.average=t1;t2=awrryj.chinese;awrryj.chinese=awrryj+1.chinese;awrryj+1.chinese=t2;t3=awrryj.math;awrryj.math=awrryj+1.math;awrryj+1.math=t3;t4=awrryj.english;awrryj.english=awrryj+1.english;awrryj+1.english=t4;strcpy(name,awrryj.name);strcpy(awrryj.name,awrryj+1.name);strcpy(awrryj+1.name,name);printf(平均分降幂排序:n);printf(number name math chinese english averagen);for(i=0;iN;i+) printf( %d %s %3.2f %3.2f %3.2f %3.2fn,awrryi.num,awrryi.name,awrryi.math,awrryi.chinese,awrryi.english,awrryi.average); printf(=n);/主函数void main()struct student stu100;/定义结构体数组 shuru(stu);/输入学生信息print(stu);/输出学生全部信息printa(stu);/输出单科成绩最高学生信息printb(stu);/输出三门课平均成绩最高的学生信息sort(stu);/将学生按照平均成绩降幂排序,并输出
展开阅读全文