计算机编程设计报告模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机编程设计报告题目:学生成绩管理系统
专业名称:信息与计算科学
班级:17信计(1)班
学号:28 09 16 23
26 34 20223
姓名:刘奇熊鹏王策李进
石锦锋杨炳坤李俊华
指导教师:***
组织单位:数理学院
时间:2018.5.14—2018.5.27
目录
1.题目要求 (2)
2. 题目分析 (2)
3. 编写程序 (3)
4.运行结果 (8)
1.题目要求
作为教师,考试之后对试卷进行分析和研究是必须要做的一项工作,下列图表某学校要求老师在考试之后填写的一个表格,并要求教师根据考试分数分布情况画出直方图。下面就来解决这个实际问题。
某高校试卷分析表
分类
项目不及格60~69分70~79分80~89分90~100分平均分标准差人数86163511
比例10.53%7.89%21%46%14%人数2011141912
比例26%14%18%25%16%人数1213191913
比例16%17%25%25%17%
15.04
19.11
17.97
期末考试卷面及格率:73.68% 期末考试卷面最高分:97 期末考试卷面最低分:28总评=平时*20%+考试*80% 学生总人数76名
平时成绩期末成绩总评77.371.572.6
2. 题目分析
(1)程序运行时,首先必须接收总评成绩的计算比例,应为针对不同的课程,平时成绩和期末考试成绩所占的比例可能不同。
(2)接收若干同学的平时成绩和期末考试成绩,计算出总评成绩,总评成绩的计算方法是“平时成绩所占比例乘以平时成绩+期末成绩所占比例乘以期末成绩”。 (3)根据考试成绩计算分数段的分布情况,画出直方图。
(4)计算平时成绩,期末成绩和总评成绩的平均分和标准差,以及期末考试卷面的及格率,最高分和最低分等。
由于针对一个学生有3个有关成绩的数据,因此最简单的方式就是使用结构体数组。
本题使用的存储结构如图14.1所示。第一列为学生的学号,第二列为学生的平时
成绩,第3列为学生的期末成绩,第4列为学生的总评成绩。 图 14.1
本例使用模块化程序思想,将程序分解为几个函数,函数的功能和调用关系如图14.2所示。
图 14.2
这里需要说明一下标准差的概念:标准差描述一组数据离散程度或个别差异程度。例如A,B 两班学生各34人,其C 语言考试成绩都是80分,但A 班最高分为98分,最低42分,而B 班最高分数为86分,最低60分。初步分析,两班考试成绩不一样,A 班学生的成绩个别差异程度大、水平参差不齐,而B 班学生成绩个别差异程度小,整齐度大些。标准差就可以刻画一组数据的差异程度,标准差的计算公式: 错误!未找到引用源。
其中,错误!未找到引用源。为某个同学的成绩;错误!未找到引用源。为平均成绩。 在本例中,一个同学的情况可以用一个结构体变量来表示,100个同学的情况可以就可以用一个结构体数组来储存了。
3. 编写程序
学生的结构体类型可以用类型定义表示为:
1 80 90 87
2 70 80 77
3 80 77 66
4 88 69 7
5 5
99
78
84
主函数
accept_data()
读入若干数据
show_data()
显示数据
draw() 画直方图
count() 计算
show_data2() 显示数据2
typedef struct student //学生数据结构体声明
{int number; //学号
int score[3]; //平时、期末和总评成绩
}STUDENT;
其中,number是学号或是排列序号(可以简单一点)。score数组表示一个学生的3个成绩,
score[0]为平时成绩,score[1]为期末成绩,score[2]为总评成绩
// 计算机编程设计.c.cpp : 定义控制台应用程序的入口点。
#include
#include"string.h"
#include"conio.h"
#include"math.h"
#define SIZE 300
typedef struct student
{int number;
int score[3];}STUDENT;
typedef enum boolen
{False,True}FLAG;
int accept_data(STUDENT stu[],int grade[]);
void show_data(STUDENT stu[],int sum,int grade[]);
void draw(int grade[]);
void count(int *max,int* min,double *pass,double ave[],double f[],STUDENT stu[],int sum); void show_data2(int max,int min,double pass,double ave[],double f[]);
int main()
{int sum,max,min;
double pass=0;
int grade[11]={0};
STUDENT stu[SIZE];
double ave[SIZE],f[SIZE];
sum=accept_data(stu,grade);
show_data(stu,sum,grade);
draw(grade);
count(&max,&min,&pass,ave,f,stu,sum);
show_data2(max,min,pass,ave,f);
return 0;
}
int accept_data(STUDENT stu[],int grade[])