成绩统计系统数据结构课程设计_第1页
成绩统计系统数据结构课程设计_第2页
成绩统计系统数据结构课程设计_第3页
成绩统计系统数据结构课程设计_第4页
成绩统计系统数据结构课程设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、印出名次表,分数相同的为同一名次; (2) 按名次打印出每个学生的学号、姓名、总分以及各科成绩。 3、数据结构类型定义 struct Stude nt char m_Name20; un sig ned int m_ID; float m_Scorem; ; 4总体设计 (1 )模块划分: 初始化函数:Node* In it(); 直接插入法排序函数:float* Sort(); 相同名次处理函数:int Del_Same(); 打印函数 void Display。; 主函数:void main() 2、组成框图: 3、流程图 欢迎进入成绩统计系统 排 序 处理相同分数 初始化函数:Node*

3、 Ini t(); 直接插入法:float* Sort(); print!广沾输入第验L- Multiplei Multipkx I prinrtT成功数?_ retiirnAradt. +i Aradlej I A(rad nSi Agf ., 相同名次处理:int Del_Same(); 打印函数 void Display。; 5. 详细设计 1. 声明一个结构体: typedef struct Stude nt Node; 2. 录入数据 将复制形式修改为指针访问形式,计算成绩总和写入到sum中 3. 打印,按名次从第一名到最后一名。 4. 下直接插值排序法 会用到哨兵,nSize表示g

4、rade中实际元素的个数。 5. 处理相同成绩的名次 将sumn中的不重复的元素放到graden中,函数返回grade中实际元素的个 数。 测试数据: 姓名 语 文 数学 英 语 物理 黄 54 53 52 51 赵 98 97 96 95 李 100 99 99 98 6. 测试与调试 1、输入数据: USERSADM1NISTRATORD.,J =回 请駄第儿兀名宝生的信息; 请籥入姓名: 请输入学号:0? 录入第1/4门课程成绩汚4 录入第2/4门课程成绩汚3 录入第3/4门课程成绩:盟 录人第4/4门课程咸绩:1 请敷递會冬名学生的信息: 请騎姓名:赵 请输入学号二胴 2.打印成绩 C

5、:USERSADMINSTKATORDESICrOFVZZDebugzzzzxe 录入第4门课程成绩:鹑 录入第3/4门课程成绩:肝 录入第4/4门课程成绩:弼 成功!嘖龙据录人完毕! =打E卩名次信息一“ 名nu 姓李赵Irt1 - n 0 0 8 4 名1 9 5 =8 5 =9 9 一- 绩 7. 源程序清单 #in elude #in elude #in elude #in elude #in elude #define n 3/*学生数 */ #define m 4/*课程数 */ using n amespaee std; /- 声明一个结构- struet Stude nt ch

6、ar m_Name20; un sig ned int m_ID; float m_Scorem; ; typedef struct Stude nt Node; /-函数声明 Node* Init(Node* stu,const int cN,float* Asum,int nSum); float* Sort(float* Agrade,int nSize); int Del_Same(float* Asum,i nt n Sum,float* Agrade,i nt n Greade); void Display(Student* stu,int nN,float* Asum,int n

7、Sum,float* Agrade,int n GreadeSize); /-函数实现 /-录入数据 Node* Init(Node* stu,const int cN,float* Asum,int nSum) char n ame20; un sig ned int id; float scorem; int i,j; for(i=0;i n;+i) printf(请输入第d/%d名学生的信息:n ”,i+1,n); printf(请输入姓名:”); sea nf(%s, name); printf(n请输入学号:”); sea nf(%d, for(j=0;jm_Name, name);

8、/修改成指针访问形式 (stu+i)- mD=id; for(j=0;jm_Scorej=scorej; / 计算成绩总和写入到sum中 *(Asum+i)=O.O; for(j=0;jm_Scorej); /for( n) printf(”成功! 数据录入完毕!”); return stu; void Display(Node* stu,int nN,float* Asum,int nSum,float* Agrade,int nGreadeSize) /打印。按名次从第一名到最后一名。 coutendl= =e ndl; cout=打印名次信息 =e ndl; cout= e ndl; c

9、out名次=学号=姓名=总分=名科成绩 =e ndl; for(i nt i=0;i nGreadeSize;+i) for(i nt j=O;j n;+j) if(Asumj=Agradei) coutsetw(10)lefti+1名次。 setw(10)leftstuj.mD学号。 setw(10)leftstuj.m_Name姓名。 setw(10)leftAsumj;/总分。 for(i nt k=0;km;+k) coutsetw(10)leftstuj.m_Scorek;名科成绩。 coute ndl; float* Sort(float* Agrade,int nSize) /练

10、习一下直接插值排序法。会用到 ”哨兵”。nSize表示grade中实际元素的个数。 for(i nt i=1;i =0;) if(AgradenSizeAgradej)从大到小的顺序。一定要注意,是拿”哨兵” 来与之比较才对的。 Agradej+1=Agradej; j-; else break; /for内 Agradej+1=Agrade nSize;/从哨兵中取出这个值来 /for 外 retur n Agrade; int Del_Same(float* Asum,i nt n Sum,float* Agrade,i nt n Greade) /将sumn中的不重复的元素放到grade

11、n中,函数返回grade中实际元素的个数。 int Find;/有无重复的标记:1为有,0为无。 int nElem=1;/gread中的实际元素个数。 Agrade0=Asum0; for(i nt i=0;i n Sum;+i)/sum for(i nt j=0;j nElem;+j)/grade if(Asumi=Agradej)/判断两个浮点数相等条件。 Fin d=1; break; else Fin d=0; if(Fi nd=0) Agrade n Elem=Asumi; n Elem+; /for(最外) return n Elem; / void mai n() Node S

12、tu n; Node* pStu; pStu=Stu; 声明n个Student对象的一个数组。 float sumn,graden+1;因为想在grade中用到直接插值排序法,要用到 ”哨兵”。所 以构造n+1. pStu=I nit(pStu, n,sum, n); int n Grade_size; n Grade_size=Del_Same(su m,n, grade ,n+1); float* pGrade=0; pGrade=Sort(grade ,n Grade_size); Display(pStu ,n,sum,n, grade ,n Grade_size); 八、心得体会 这次我抽到的题目很简单,但是这是指用基础的 C语言写很简单。如果想把 本学期

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论