版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
洛阳理工学院
课程设计报告
课程名称数据构造课程设计____________
设计题目_________成绩记录系统______________
专业计算机科学与技术____________
课程设计任务书
设计题目:给出n个学生m门考试成绩表,每个学生信息由学号、姓名以及
各科成绩构成。对学生考试成绩进行关于记录,并打印登记表。
设计内容与规定:
(1)按总数高低顺序,打印出名次表,分数相似为同一名次;
(2)按名次打印出每个学生学号、姓名、总分以及各科成绩。
课程设计评语
成绩:
指引教师:_______________
年月日
1.问题描述
给出n个学生m门考试成绩表,每个学生信息由学号、姓名以及各科成绩构成。
对学生考试成绩进行关于记录,并打印登记表。
2.基本规定
(1)按总数高低顺序,打印出名次表,分数相似为同一名次;
(2)按名次打印出每个学生学号、姓名、总分以及各科成绩。
3、数据构造类型定义
structStudent
(
charm_Name[20];
unsignedintn_lD;
floatmScore[m];
);
4.总体设计
(1)模块划分:
<1>初始化函数:Node*Init();
<2>直接插入法排序函数:float*Sort();
<3>相似名次解决函数:intDel_Samet);
<4>打印函数voidDisplay();
<5>主函数:voidmain()
2、构成框图:
3、流程图
<1>初始化函数:Node*Init();<2>直接插入法:float*Sort():
T
<3>相似名次解决:intDelSame();<4>打印函数voidDisplay();
I
♦
5.详细设计
1.声明一种构造体:
typedefstructStudentNode;
2.录入数据
将复制形式修改为指针访问形式,计算成绩总和写入到sum口中。
3.打印,按名次从第一名到最后一名。
4.下直接插值排序法
会用至「哨兵〃,nSize表达grade[]中实际元素个数。
5.解决相似成绩名次
将sum[n]中不重复元素放到grade[n]中,函数返回grade口中实际元素个数。
测试数据:
姓名语文数学英语物理
黄54535251
赵98979695
李100999998
6.测试与调试
1、输入数据:
■•C:\USERS\ADMINETRATOR\D..,〔0I回I区
请辄人第1/3名至生的信息:
请酶人姓名:I
请输入学号:。7
不入第1/4门课程成绩”4
,入第
2/4门课程成绩;53
9入第
3/4门课程成绩:53
麋入第
4/4门课程成绩
i叫霍翁萨的信息:
;青输入学号:。4
in
2.打印成绩
■'C:\USERS\ADMINISTRATOR\DESKTOP\ZZZ\Debug\zzzz.exe"
录入第2/4门课程成绩:99
录入第3/4门课程成绩:99
录入第4/4门课程成绩:98
成功!啜据录入完毕!
打印名次信息
总
次
科
成
学
姓
名
名
绩
号
13李699
239
4赵989?965
37黄545353
51
1t
7.源程序清单
#include<stdio.h>
#include<string>
include<float.h>
^include<iostre<un>
#include<iomanip>
ttdcfinon3/*学生数*/
ftdefinem4/*课程数*/
usingnamespacestd;
//—声明一种构造----
structStudent
(
charmName[20];
unsignedintm_ID;
floatmScore[m];
};
typedefstructStudentNode;
//------函数声明-----------------------------
Node*Init(Node*stu,constintcN,float*Asum,intnSum);
float*Sort(float*Agrade,intnSize);
intDelSame(float*Asum,intnSum,float*Agrade,intnGreade);
voidDisplay(Student*stu,intnN,float*Asum,intnSum,float*Agrade,int
nGreadeSize);
//------函数实现----------------------------
//——录入数据------
Node*Init(Node*stu,constintcN,float*Asum,intnSum)
charname[20];
unsignedintid;
floatscore[m];
inti,j;
for(i=0;i<n;++i)
(
printf("请输入第%d/%d名学生信息:\n”,
printf(”请输入姓名:");
scanfname);
printf(〃\n请输入学号:”);
scanf&id);
for(j=0;j<m;++j)
(
printf("\n录入第%d/%d门课程成绩:",j+1,m);
scanf&score[j]);
printf('\n");
//—赋值过程---------------
strcpy((stu+i)->m_Name,name);//修改成指针访问形式.
(slu+i)->二id;
for(j=0;j<m;j++)
(
(stu+i)->m_Score[j]=scorG[j];
}
//-------计算成绩总和写入到sum口中--------
*(Asum+i)=O.0;
for(j=0;
(
(*(Asuni+i))+=((stu+i)->m_Score[j]);
}
)//for(n)
printf("成功!~数据录入完毕!〃);
returnstu;
)
voidDisplay(Node*stu,intnN,float*Asum,intnSum,float*Agrade,intnGroadcSize)
{//打印。按名次从第一名到最后一名。
cout((end]〈<=================================================================
======/z«cndl;
cout<<"======================41印名次信息
================================<<end]:
cout<<========================================================================
"<<endl;
cout<<〃名次=====学号======姓名=二==总分===名科成绩
===*<<endl;
for(inti=0;i<nGreadeSize;++i)
(
for(intj=0;j<n;++j)
(
if(Asum[j]==Agrade[i])
(
cout«setw(10)<<left«i+l〃名次。
«setw(10)«left«stu[j].m」D〃学号。
«setw(10)«left«stu[j].m_Name〃姓名。
«sotw(10)<<left«Asum[j];〃总分。
for(intk=0;k<m;++k)
cout«setw(10)«left«stu[j].m_Score[k];//名科成绩。
)
//cout«cndl;
}
)
}
float*Sort(float*Agrade,intnSize)
(〃练习一下直接插值排序法。会用到"哨兵"。nSize表达grade口中实际元素个数.
for(inti=l;i<nSize;++i)
(
Agrade[nSize]=Agrade[i]://将它放到哨兵里
for(intj=i-l;j>=0;)
if(Agradc[nSize]>Agrade[j])〃从大到小顺序。一定要注意,是拿“哨兵”来与
之比较才对。
Agrade[j+l]=Agrado[j];
}
else
(
break;
}
}//for内
Agrade[j+1]=Agrade[nSize];//从哨兵中取出这个值来
)//for外
returnAgrade;
}
intDel_Same(float*Asurn,intnSum,float*Agrade,intnGreade)
{〃将sum[n]中不重复元素放到gradein]中,函数返回grade口中实际元素个数。
intFind;〃有无重复标记:1为有,0为无。
intnElem=l;〃gread口中实际元素个数。
Agrade[O]=Asum[O];
for(inti=0;i<nSum;++i)//sum[]
(
for(intj=0;j<nElem;++j)//grade[]
{
if(Asum[i]==Agradc[j])〃判断两个浮点数相等条件。
(
Find=l;
break;
)
else
(
Find=0;
)
}
if(Find==0)
Agrade[nElem]=Asum[i];
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经皮冠状动脉介入治疗指南重点2026
- 植树节活动总结怎么写5篇
- 发动机活塞项目企业经营管理方案
- 生物实验室安全管理规范
- 方便食品罐头项目财务管理方案
- 虚拟实境游戏制作流程
- 宏观深度研究:如果油价居高不下…
- 第3章:微信小程序组件详解
- “在建工程”和“无形资产”的财务分析
- 执业药师管理现状分析
- 整理我的小书桌(课件)小学劳动二年级通用版
- 猴王出世PPT模板:孙悟空的诞生传奇
- 锯床日常点检表
- 安徽卓润新材料科技有限公司特种工程塑料合成项目环境影响报告
- 采购成本分析与控制培训课程
- DL-T 736-2021 农村电网剩余电流动作保护器安装运行规程
- MT/T 420-1995高水充填材料
- 非体外循环下冠状动脉搭桥术的麻醉课件
- 《使用电子产品对幼儿生长发育的影响研究【论文】》
- 异步电机的工作原理-课件
- 癫痫发作应急预案课件
评论
0/150
提交评论