数据结构课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
福建工程学院课程设计
课程:数据结构课程设计
题目: 1.综合应用
2.折半查找
3.快速排序
专业:软件工程
班级:1101
座号:3110305129
姓名:潘聪
2012 年 6 月26 日
设计题目1:综合应用
一、问题描述
有N名学生,每名学生含有如下信息:学号、姓名、某四门课的成绩,并计算其总分,用一结构数组表示之。然后实现以下功能:
(1)将这些数据存放至文件stuf.dat中;
(2)将文件中的数据读出至结构数组中,并显示之;
(3)输出总分最高分和最低分的名字;
(4)输出总分在340分,单科成绩不低于80分的名单;
(5)求出各科平均分数;
(6)按总分排名;
(7)输出补考名单。
二、解决问题的算法思想描述
(1)子函数:首先确定需要的子函数,总共7个,对应的功能分别是题目要求的七项(2)主函数:主函数中,要设计出易于使用的人机界面,就必须要用到switch 。
(3)文件的存放读取,必须要用到文件的函数,fopen,fread,fclose等。
(4)把每个学生的信息定义在一个结构数组中,利用结构数组更加方便。
(5)各科成绩排名用冒泡排序即可。
(6)输出总分,补考名单,各科的平均分都比较简单。
三、设计
1. 数据结构的设计和说明
//定义结构体
typedef struct
{
int num; //学号
char name[10]; //姓名
int score1; //语文
int score2; //数学
int score3; //物理
int score4; //化学
}student;
student stu[MAX]; //结构数组
2.模块结构图及各模块的功能:
3. 关键算法的设计(必须画出流程图)
打印最高成绩和最低成绩的名单算法流程图:
四、测试数据及测试结果:
五、课程设计总结
注意细节方面,任何一个小问题都不能忽视,才能最终解决问题。
六、关键源程序的清单
关键算法一:
按照总成绩排名:
void paiming()
{
read();
student x;
int sum[MAX],t=0,i,m,n,j;
for(i=0;i { sum[i]=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4; } for(m=0;m for(n=m+1;n if(sum[n]>sum[m]) { t=sum[n]; sum[n]=sum[m]; //总成绩交换 sum[m]=t; x=stu[n]; stu[n]=stu[m]; //总成绩对应的学生也要同时交换 stu[m]=x; } printf("学号\t姓名\t语文\t数学\t英语\t物理\t总分\t名次\n"); for(j=0;j { printf("%-8d%-8s%-8d%-8d%-8d%-8d%-8d%-8d\n",stu[j].num,stu[j].name,stu[j].score1,stu[j].sc ore2,stu[j].score3,stu[j].score4,sum[j],j+1); } } 关键算法二: 打印出最高成绩和最低成绩的姓名: void maxmin() { int sum[MAX],i,j,m=0,n=0,max,min; read(); for(i=0;i { sum[i]=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4; } //求书每个人的总分 max=min=sum[0]; //用一维数组保存成绩,并且先令第一位学生的成绩作为最高分和最低分 for(j=0;j { if(sum[j]>max) { m=j; max=sum[j]; //定义变量m,n分别保存最高分和最低分的下标} else if(sum[j] { n=j; min=sum[j]; } } printf("\n最高分:%s 总分%d\n",stu[m].name,sum[m]); printf("\n最低分:%s 总分%d\n\n",stu[n].name,sum[n]); } 设计题目2:折半查找 一、问题描述 用折半查找法,实现对任意一组数据的查找。(任意一组数据,意味着需要先对数据列 进行排序,然后才能用折半方法查找) 二、解决问题的算法思想描述 任意一组数据,意味着需要先对数据列进行排序,然后才能用折半方法查找,所以先用快速排序将数据从小到大排序,在运用折半查找方法。 三、设计 1. 数据结构的设计和说明 (1)快速排序; (2)折半查找; 在有序表中,取中间元素作为比较的对象,若给定值与中间元素的关键码相等,则查找成功;若给定值小于中间元素的关键码,则在中间元素的左半区急速查找;若给定值大于中间元素的关键码,则在中间元素的右半区继续查找。不断重复,直到查找成功。 2. 关键算法的设计(必须画出流程图)