数据结构课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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. 关键算法的设计(必须画出流程图)

相关文档
最新文档