课程设计 数据结构用C语言描述.docx
- 文档编号:27356774
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:9
- 大小:49.34KB
课程设计 数据结构用C语言描述.docx
《课程设计 数据结构用C语言描述.docx》由会员分享,可在线阅读,更多相关《课程设计 数据结构用C语言描述.docx(9页珍藏版)》请在冰豆网上搜索。
课程设计数据结构用C语言描述
课程设计--数据结构—用C语言描述
洛阳理工学院
课程设计说明书
课程名称数据结构—用C语言描述
设计课题统计成绩
专业计算机科学与技术
班级B110502
学号B11050209
姓名张淑慧
完成日期2013年6月13号
课程设计任务书
设计题目:
统计成绩
设计内容与要求:
内容:
练习各种数据结构,存储结构和一些基本运算的实现,锻炼数据结构与算法的结合,本次实习采用了结构体数组,包括学生基本信息。
要求:
运用所学的知识进行实际问题的分析,系统的设计,以及程序的编写,测试,独立的解决问题。
本次设计要求完成一个成绩统计系统。
输入学生的基本信息,进行成绩统计,计算出每个学生的总成绩,进行有序的排列,并打印出名次
指导教师:
王伟静
2013年6月13号
课程设计评语
成绩:
指导教师:
年月日
【问题描述】
给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名以及各科成绩组成。
对学生的考试成绩进行有关统计,并打印统计表。
【基本要求】
(1)按总数高低次序,打印出名次表,分数相同的为同一名次;
(2)按名次打印出每个学生的学号、姓名、总分以及各科成绩。
【测试数据】
(1)输入5(n)个学生的学号,姓名基本信息以及3(m)课考试成绩;
(2)对每个学生的各科考试成绩进行求和,求出总成绩;
(3)对5(n)个学生的总成绩按成绩降序打印出来。
【算法思想】
(1)首先定义一个structstudent类型的结构体,包含学生的学号,姓名,名次,各科成绩等基本信息;
(2)从键盘输入学生的基本信息,输入完毕打印所输入的基本信息,检查是否有错;
(3)总分统计:
计算出每个学生的三科成绩的总分并打印出来学号,姓名,总分;
(4)排序:
调用直插排序算法,对学生的总成绩进行从低到高的排序,最后按从高分到低分的顺序打印出来,并列出名次,若有总分相同的为同一个名次。
【模块划分】
(1)学生信息输入模块,包括学号姓名,成绩进本信息;
(2)总分计算模块,计算出学生各科成绩总和;
(3)成绩排序模块,总成绩从高到低排列出来。
【数据结构】
structproject
{
floatyuwen;
floatshuxue;
floatyingyu;
};
structstudent
{
intnum;
charname[30];
structprojectscore;
floatzong;
intmingci;
}stu[5];
【测试情况】
(1)输入学生基本信息及各科考试成绩并打印;
(2)求出每个学生的各科成绩之和并打印;
(3)按总成绩从低到高进行排序打印出各科成绩及总分,总成绩相同的为同一个名次。
【心得】
通过一个周的课程设计,我对数据结构有了更深的认识,加深了对结构体定义的掌握,了解了系统的设计的一些知识,对于简单系统的设计有了进一步的认识和了解。
课程设计的过程中也遇到了很多问题,例如:
在对学生成绩进行排序时,由于刚开始写函数时,只是一味的照搬课本上的算法,忽视了实际问题,导致排序时出现了重复排序的现象,后来在自己上网搜索以及同学的帮助下解决了问题,最终能正确的运行出程序。
课程设计是对我们一学期学习知识的一次检验,设计的过程中会遇到很多问题,我们应该积极地与老师同学进行交流,认真的思考,才能解决问题,提高我们发现问题解决问题的能力,引导我们把课本上所学习到的知识运用到生活中去。
这次课程设计我要感谢王伟静老师以及帮助我的同学,在他们的帮助下,我才能顺利的完成此次课程设计。
【源程序】
#include
structproject
{
floatyuwen;
floatshuxue;
floatyingyu;
};
structstudent
{
intnum;
charname[30];
structprojectscore;
floatzong;
intmingci;
}stu[5];
voidinput(structstudentstu[5])//信息输入
{
printf("学号姓名yuwenshuxueyingyu\n");
for(inti=0;i<5;i++)
{
scanf("%d",&stu[i].num);
scanf("%s",stu[i].name);
scanf("%f",&stu[i].score.yuwen);
scanf("%f",&stu[i].score.shuxue);
scanf("%f",&stu[i].score.yingyu);
}
}
voidcount(structstudentstu[5])//总分计算
{
printf("学号姓名总分\n");
for(inti=0;i<5;i++)
{
stu[i].zong=stu[i].score.yuwen+stu[i].score.shuxue+stu[i].score.yingyu;
printf("%d%s%f\n",stu[i].num,stu[i].name,stu[i].zong);
}
}
voidsort(structstudentstu[5])//直插排序法降序排列
{
structstudenttemp;//定义一个structstudent类型的变量
inti,j;
intk=1;
for(i=2;i<=5;i++)
{
temp=stu[i];//将要排序的元素赋给temp
j=i-1;//j表示已经排好序的元素中的最后一个元素stu[j]
while(temp.zong { stu[j+1]=stu[j];//如果要排序的元素temp的关键字小于stu[j]的关键字,则把temp与stu[j]的前一个元素比较 j--; } stu[j+1]=temp; } printf("名次学号姓名yuwenshuxueyingyu总分\n");//按成绩从高到低打印 for(intp=5;p>0;p--) { if(p! =5)//此程序只定义了5个学生的成绩,p=5时,就没有上一个元素 if(stu[p].zong==stu[p+1].zong) k--; stu[p].mingci=k; printf("%d%d%s%f%f%f%f\n",stu[p].mingci,stu[p].num,stu[p].name,stu[p].score.yuwen,stu[p].score.shuxue,stu[p].score.yingyu,stu[p].zong); k++; } } voidprint(structstudentstu[5]) { for(inti=0;i<5;i++) { printf("学号姓名yuwenshuxueyingyu\n"); printf("%d%s%f%f%f\n",stu[i].num,stu[i].name,stu[i].score.yuwen,stu[i].score.shuxue,stu[i].score.yingyu); } } voidmain() { structstudentstu[5]; intt; printf("-----------------成绩统计------------------\n"); do { printf("---------------选择操作----------------\n"); printf(" (1)信息输入 (2)总分统计(3)总分排序\n"); printf("请做出选择,t="); scanf("%d",&t); switch(t) { case1: printf("请输入学生的信息: \n"); input(stu); print(stu); break; case2: printf("每个学生的三科的总分为: \n"); count(stu); break; case3: printf("将学生的成绩按总分由高到低排序为: \n"); sort(stu); break; default: printf("重新输入\n"); } }while(t! =0); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 数据结构用C语言描述 数据结构 语言 描述