成绩统计系统大数据结构课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

洛阳理工学院课程设计报告

课程名称数据结构课程设计

设计题目成绩统计系统

专业计算机科学与技术

1. 问题描述

给出n个学生的m门考试的成绩表,每个学生的信息由学号、以及各科成绩组成。对学生的考试成绩进行有关统计,并打印统计表。

2.基本要求

(1)按总数高低次序,打印出名次表,分数相同的为同一名次;

(2)按名次打印出每个学生的学号、、总分以及各科成绩。

3、数据结构类型定义

struct Student

{

char m_Name[20];

unsigned int m_ID;

float m_Score[m];

};

4. 总体设计

(1)模块划分:

<1>初始化函数:Node* Init();

<2>直接插入法排序函数:float* Sort();

<3>相同名次处理函数:int Del_Same();

<4>打印函数void Display();

<5>主函数:void main()

2、组成框图:

3、流程图

<1>初始化函数:Node* Init(); <2>直接插入法:float* Sort();

<3>相同名次处理:int Del_Same(); <4>打印函数void Display();

1.声明一个结构体:

typedef struct Student Node;

2.录入数据

将复制形式修改为指针访问形式,计算成绩总和写入到sum[]中。3.打印,按名次从第一名到最后一名。

4.下直接插值排序法

会用到"哨兵",nSize表示grade[]中实际元素的个数。

5.处理相同成绩的名次

将sum[n]中的不重复的元素放到grade[n]中,函数返回grade[]中实际元素的个数。

测试数据:

6. 测试与调试

1、输入数据:

2.打印成绩

7. 源程序清单

#include

#include

#include

#include #include #define n 3/*学生数*/ #define m 4/*课程数*/ using namespace std; //---声明一个结构---- struct Student

{

char m_Name[20];

unsigned int m_ID;

float m_Score[m];

};

typedef struct Student Node;

//------函数声明---------------------------

Node* Init(Node* stu,const int cN,float* Asum,int nSum);

float* Sort(float* Agrade,int nSize);

int Del_Same(float* Asum,int nSum,float* Agrade,int nGreade);

void Display(Student* stu,int nN,float* Asum,int nSum,float* Agrade,int nGreadeSize);

//------函数实现---------------------------

//----录入数据------

Node* Init(Node* stu,const int cN,float* Asum,int nSum)

{

char name[20];

unsigned int id;

float score[m];

int i,j;

for(i=0;i

{

printf("请输入第%d/%d名学生的信息:\n ",i+1,n); printf("请输入: ");

scanf("%s",name);

printf("\n请输入学号: ");

scanf("%d",&id);

for(j=0;j

{

printf("\n录入第%d/%d 门课程成绩:",j+1,m); scanf("%f",&score[j]);

}

printf("\n");

//---赋值过程---------------

strcpy((stu+i)->m_Name,name);//修改成指针访问形式. (stu+i)->m_ID=id;

for(j=0;j

{

(stu+i)->m_Score[j]=score[j];

}

//-------计算成绩总和写入到sum[]中--------

*(Asum+i)=0.0;

for(j=0;j

{

(*(Asum+i))+=((stu+i)->m_Score[j]);

}

}//for(n)

printf("成功!~数据录入完毕!");

return stu;

}

void Display(Node* stu,int nN,float* Asum,int nSum,float* Agrade,int nGreadeSize) {//打印。按名次从第一名到最后一名。

cout<

cout<<"============================打印名次信息

================================="<

cout<<"================================================ ========================="<

cout<<"名次======学号============总分=====名科成

绩===="<

for(int i=0;i

{

for(int j=0;j

{

if(Asum[j]==Agrade[i])

{

相关文档
最新文档