欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:33579381       资源大小:48.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    如有侵权,请联系网站删除,仅供学习与交流成绩统计系统数据结构课程设计【精品文档】第 6 页洛 阳 理 工 学 院课 程 设 计 报 告 课程名称 数据结构课程设计 设计题目 成绩统计系统 专 业 计算机科学与技术 课 程 设 计 任 务 书设计题目:给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名以及各科成绩组成。对学生的考试成绩进行有关统计,并打印统计表。设计内容与要求:(1) 按总数高低次序,打印出名次表,分数相同的为同一名次;(2) 按名次打印出每个学生的学号、姓名、总分以及各科成绩。 课 程 设 计 评 语 成绩: 指导教师:_ 年 月 日1. 问题描述给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名以及各科成绩组成。对学生的考试成绩进行有关统计,并打印统计表。2. 基本要求(1) 按总数高低次序,打印出名次表,分数相同的为同一名次;(2) 按名次打印出每个学生的学号、姓名、总分以及各科成绩。3、数据结构类型定义struct Student char m_Name20; unsigned int m_ID; float m_Scorem;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();5. 详细设计1.声明一个结构体:typedef struct Student Node;2录入数据将复制形式修改为指针访问形式,计算成绩总和写入到sum中。 3打印,按名次从第一名到最后一名。4.下直接插值排序法会用到"哨兵",nSize表示grade中实际元素的个数。5.处理相同成绩的名次将sumn中的不重复的元素放到graden中,函数返回grade中实际元素的个数。测试数据:姓 名语 文数 学英 语物 理黄54535251赵98979695李 1009999986. 测试与调试 1、输入数据:2.打印成绩7. 源程序清单#include <stdio.h>#include <string>#include <float.h>#include <iostream>#include <iomanip>#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,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 scorem; int i,j; for(i=0;i<n;+i) printf("请输入第%d/%d名学生的信息:n ",i+1,n); printf("请输入姓名: "); scanf("%s",name); printf("n请输入学号: "); scanf("%d",&id); for(j=0;j<m;+j) printf("n录入第 %d/%d 门课程成绩:",j+1,m); scanf("%f",&scorej); printf("n"); /-赋值过程- strcpy(stu+i)->m_Name,name);/修改成指针访问形式. (stu+i)->m_ID=id; for(j=0;j<m;j+) (stu+i)->m_Scorej=scorej; /-计算成绩总和写入到sum中- *(Asum+i)=0.0; for(j=0;j<m;+j) (*(Asum+i)+=(stu+i)->m_Scorej); /for(n) printf("成功!数据录入完毕! "); return stu;void Display(Node* stu,int nN,float* Asum,int nSum,float* Agrade,int nGreadeSize)/打印。按名次从第一名到最后一名。 cout<<endl<<"="<<endl; cout<<"=打印名次信息="<<endl; cout<<"="<<endl; cout<<"名次=学号=姓名=总分=名 科 成 绩="<<endl;for(int i=0;i<nGreadeSize;+i) for(int j=0;j<n;+j) if(Asumj=Agradei) cout<<setw(10)<<left<<i+1/名次。 <<setw(10)<<left<<stuj.m_ID/学号。 <<setw(10)<<left<<stuj.m_Name/姓名。 <<setw(10)<<left<<Asumj;/总分。 for(int k=0;k<m;+k) cout<<setw(10)<<left<<stuj.m_Scorek;/名科成绩。 /cout<<endl;float* Sort(float* Agrade,int nSize)/练习一下直接插值排序法。会用到"哨兵"。nSize表示grade中实际元素的个数。 for(int i=1;i<nSize;+i) AgradenSize=Agradei;/将它放到哨兵里 for(int j=i-1;j>=0;) if(AgradenSize>Agradej)/从大到小的顺序。一定要注意,是拿"哨兵"来与之比较才对的。 Agradej+1=Agradej; j-; else break; /for内 Agradej+1=AgradenSize;/ 从哨兵中取出这个值来 /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;i<nSum;+i)/sum for(int j=0;j<nElem;+j)/grade if(Asumi=Agradej)/判断两个浮点数相等条件。 Find=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语言写很简单。如果想把本学期数据结构的知识应用到程序中还是很有挑战性的。我采用的是直接插入排序法,刚开始把书上的程序照搬过来,结果发现有许多的错误。改了很久才改对。最难的是相同成绩处理的函数,我刚开始以为很简单,但是前面各个成绩采用的是指针结构体,很难处理,最后在网上查找了一下才对照着改正过来。最后我学会的是可以先把数据输入数组内,在用指针直接指向数据就可以了,这样比输入数据时就用指针要简单的多。

    注意事项

    本文(成绩统计系统数据结构课程设计.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开