收藏 分销(赏)

成绩统计系统数据结构专业课程设计.doc

上传人:a199****6536 文档编号:2797204 上传时间:2024-06-06 格式:DOC 页数:17 大小:116.54KB
下载 相关 举报
成绩统计系统数据结构专业课程设计.doc_第1页
第1页 / 共17页
成绩统计系统数据结构专业课程设计.doc_第2页
第2页 / 共17页
成绩统计系统数据结构专业课程设计.doc_第3页
第3页 / 共17页
成绩统计系统数据结构专业课程设计.doc_第4页
第4页 / 共17页
成绩统计系统数据结构专业课程设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、洛 阳 理 工 学 院课 程 设 计 报 告 课程名称 数据构造课程设计 设计题目 成绩记录系统 专 业 计算机科学与技术 课 程 设 计 任 务 书设计题目:给出n个学生m门考试成绩表,每个学生信息由学号、姓名以及各科成绩构成。对学生考试成绩进行关于记录,并打印登记表。设计内容与规定:(1) 按总数高低顺序,打印出名次表,分数相似为同一名次;(2) 按名次打印出每个学生学号、姓名、总分以及各科成绩。 课 程 设 计 评 语 成绩: 指引教师:_ 年 月 日1. 问题描述给出n个学生m门考试成绩表,每个学生信息由学号、姓名以及各科成绩构成。对学生考试成绩进行关于记录,并打印登记表。2. 基本规

2、定(1) 按总数高低顺序,打印出名次表,分数相似为同一名次;(2) 按名次打印出每个学生学号、姓名、总分以及各科成绩。3、数据构造类型定义struct Student char m_Name20; unsigned int m_ID; float m_Scorem;4. 总体设计(1)模块划分:初始化函数: Node* Init();直接插入法排序函数: float* Sort();相似名次解决函数: int Del_Same();打印函数void Display();主函数:void main() 语文数学英语物理解决相似分数排序输入成绩输入学号输入姓名欢迎进入成绩记录系统2、构成框图:3、

3、流程图初始化函数: Node* Init(); 直接插入法:float* Sort();相似名次解决:int Del_Same(); 打印函数void Display();5. 详细设计1.声明一种构造体:typedef struct Student Node;2录入数据将复制形式修改为指针访问形式,计算成绩总和写入到sum中。 3打印,按名次从第一名到最后一名。4.下直接插值排序法会用到哨兵,nSize表达grade中实际元素个数。5.解决相似成绩名次将sumn中不重复元素放到graden中,函数返回grade中实际元素个数。测试数据:姓 名语 文数 学英 语物 理黄54535251赵989

4、79695李 1009999986. 测试与调试 1、输入数据:2.打印成绩7. 源程序清单#include #include #include #include #include #define n 3/*学生数*/#define m 4/*课程数*/using namespace std;/-声明一种构造-struct Student char m_Name20; unsigned int m_ID; float m_Scorem;typedef struct Student Node;/-函数声明-Node* Init(Node* stu,const int cN,float* Asum

5、,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 name20; unsigned int id; float

6、scorem; int i,j; for(i=0;in;+i) printf(请输入第%d/%d名学生信息:n ,i+1,n); printf(请输入姓名:); scanf(%s,name); printf(n请输入学号:); scanf(%d,&id); for(j=0;jm_Name,name);/修改成指针访问形式. (stu+i)-m_ID=id; for(j=0;jm_Scorej=scorej; /-计算成绩总和写入到sum中- *(Asum+i)=0.0; for(j=0;jm_Scorej); /for(n) printf(成功!数据录入完毕! ); return stu;vo

7、id Display(Node* stu,int nN,float* Asum,int nSum,float* Agrade,int nGreadeSize)/打印。按名次从第一名到最后一名。 coutendl=endl; cout=打印名次信息=endl;cout=endl; cout名次=学号=姓名=总分=名 科 成 绩=endl;for(int i=0;inGreadeSize;+i) for(int j=0;jn;+j) if(Asumj=Agradei) coutsetw(10)lefti+1/名次。 setw(10)leftstuj.m_ID/学号。 setw(10)leftstu

8、j.m_Name/姓名。 setw(10)leftAsumj;/总分。 for(int k=0;km;+k) coutsetw(10)leftstuj.m_Scorek;/名科成绩。 /coutendl; float* Sort(float* Agrade,int nSize)/练习一下直接插值排序法。会用到哨兵。nSize表达grade中实际元素个数。 for(int i=1;i=0;) if(AgradenSizeAgradej)/从大到小顺序。一定要注意,是拿哨兵来与之比较才对。 Agradej+1=Agradej; j-; else break; /for内 Agradej+1=Agr

9、adenSize;/ 从哨兵中取出这个值来 /for 外 return Agrade;int Del_Same(float* Asum,int nSum,float* Agrade,int nGreade)/将sumn中不重复元素放到graden中,函数返回grade中实际元素个数。 int Find;/有无重复标记:1为有,0为无。 int nElem=1;/gread中实际元素个数。 Agrade0=Asum0; for(int i=0;inSum;+i)/sum for(int j=0;jnElem;+j)/grade if(Asumi=Agradej)/判断两个浮点数相等条件。 Fin

10、d=1; break; else Find=0; if(Find=0) AgradenElem=Asumi; nElem+; /for(最外) return nElem;/-void main() Node Stun; Node* pStu; pStu=Stu;/声明n个Student对象一种数组。 float sumn,graden+1;/由于想在grade中用到直接插值排序法,要用到哨兵。因此构造n+1. pStu=Init(pStu,n,sum,n); int nGrade_size; nGrade_size=Del_Same(sum,n,grade,n+1); float* pGrade=0; pGrade=Sort(grade,nGrade_size); Display(pStu,n,sum,n,grade,nGrade_size);八、心得体会这次我抽到题目很简朴,但是这是指用基本C语言写很简朴。如果想把本学期数据构造知识应用到程序中还是很有挑战性。我采用是直接插入排序法,刚开始把书上程序照搬过来,成果发既有许多错误。改了好久才改对。最难是相似成绩解决函数,我刚开始觉得很简朴,但是前面各个成绩采用是指针构造体,很难解决,最后在网上查找了一下才对照着改正过来。最后我学会是可以先把数据输入数组内,在用指针直接指向数据就可以了,这样比输入数据时就用指针要简朴多。

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服