1、 课程设计课程设计 课课 程:程: 数据结构课程设计数据结构课程设计 题题 目:目: 1.综合应用综合应用 2.折半查找折半查找 3.快速排序快速排序 2012 年年 6 月月 26 日日 设计题目设计题目 1:综合应用综合应用 一、问题描述一、问题描述 有 N 名学生,每名学生含有如下信息:学号、姓名、某四门课的成绩,并计算其总分,用 一结构数组表示之。然后实现以下功能: (1) 将这些数据存放至文件 stuf.dat 中; (2)将文件中的数据读出至结构数组中,并显示之; (3)输出总分最高分和最低分的名字; (4)输出总分在 340 分,单科成绩不低于 80 分的名单; (5)求出各科平
2、均分数; (6)按总分排名; (7)输出补考名单。 二、解决问题的算法思想描述二、解决问题的算法思想描述 (1)子函数:首先确定需要的子函数,总共 7 个,对应的功能分别是题目要求的七项 (2)主函数:主函数中,要设计出易于使用的人机界面,就必须要用到 switch 。 (3)文件的存放读取,必须要用到文件的函数,fopen,fread,fclose 等。 (4)把每个学生的信息定义在一个结构数组中,利用结构数组更加方便。 (5)各科成绩排名用冒泡排序即可。 (6)输出总分,补考名单,各科的平均分都比较简单。 三、设计三、设计 1. 1. 数据结构的设计和说明数据结构的设计和说明 /定义结构体
3、 typedef struct int num; /学号 char name10; /姓名 int score1; /语文 int score2; /数学 int score3; /物理 int score4; /化学 student; student stuMAX; /结构数组 2 2模块结构图及各模块的功能:模块结构图及各模块的功能: 3. 3. 关键算法的设计(必须画出流程图)关键算法的设计(必须画出流程图) 学生成绩管理系统 将这 些数 据存 放至 文件 stuf.da t 中; 将文 件中 的数 据读 出至 结构 数组 中; 输出 总分 最高 分和 最低 分的 名字; 求出 各科 平
4、均 分数; 总分 在 340 分,单 科成 绩不 低于 80分 的; 输出 补考 名单 按总 分排 名; 开始 定义 整型 i,字符 p 输入 i 判断 i 将这 些数 据存 放至 文件 stuf.da t 中; 将文 件中 的数 据读 出至 结构 数组 中; 输出 总分 最高 分和 最低 分的 名字; 总分 在 340 分,单 科成 绩不 低于 80分 的; 求出 各科 平均 分数; 按总 分排 名; 输出 补考 名单; 退出; 输入 p 判断 p Y 0 1 2 3 45 6 7 结束 N 开始 按总分排名算法流程:按总分排名算法流程: 图:图: 定义变量 sum4,i,j,m,n 求出四
5、门总分 sum4 读取文件 isumm; sumn与 summ交换; stun与 stum交换; mrhigh rlow与 rhigh交换 low+; t+; m=high; rmhigh) return 0; if(low=high) return low; r0=rlow; /*缓存支点记录*/ while(lowhigh) while(low=r0.key) high-; /查看 high 记录 if(lowhigh) rlow=rhigh; low+; while(lowhigh if(lowhigh) rhigh=rlow; high-; rlow=r0; /*支点记录最终位置*/ return low; void Quick_sort(RecNode r, int m, int n) /*对顺序表 rmn作快速排序,m 初值为 1*/ int i; i= Partition(r,m,n); if(mi) Quick_sort(r,m,i-1); if(in) Quick_sort(r,i+1,n);