数据结构课程设计
更新时间:2024-02-28 16:58:01 阅读量: 综合文库 文档下载
福 建 工 程 学 院
课程设计
课 程: 数据结构课程设计 题 目: 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.模块结构图及各模块的功能:
学生成绩管理系统 将这将文输出些数件中总分据存的数最高放至据读分和文件出至最低stuf.da结构分的t中; 数组名字; 中;
3. 关键算法的设计(必须画出流程图)总分在340分,单科成绩不低于80分的; 求出各科平均分数; 按总分排名; 输出补考名单
开始 定义 整型 i,字符p 输入 i 判断 i 0 将这些数据存放至文件stuf.dat中; 1 将文件中的数据读出至结构数组中; 2 输出总分最高分和最低分的名字; 3 总分在340分,单科成绩不低于80分的; 4求出各科平均分数; 5 按总分排名; 6 输出补考名单; 7 退出; 输入 p 判断 p Y N 结束
按总分排名算法流程:图: 开始 读取文件 定义变量sum[4],i,j,m,n 求出四门总分sum[4] i++; i 打印最高成绩和最低成绩的名单算法流程图: 开始 定义变量 sum[MAX] 求出各人分数总和 并保存到数组 sum[]中 min=max=sum[0]; sum[i]>=max sum[i]<=min Y Y N max与sum[i]交换 min与sum[i]交换 传递下表给传递下表给 stu[MAX]; stu[MAX]; i 输出 结束 i++ 四、测试数据及测试结果: 五、课程设计总结 注意细节方面,任何一个小问题都不能忽视,才能最终解决问题。 六、关键源程序的清单 关键算法一: 按照总成绩排名: 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 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(\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(\最高分: %s 总分%d\\n\ printf(\最低分: %s 总分%d\\n\\n\} 设计题目2:折半查找 一、问题描述 用折半查找法,实现对任意一组数据的查找。(任意一组数据,意味着需要先对数据列 进行排序,然后才能用折半方法查找) 二、解决问题的算法思想描述 任意一组数据,意味着需要先对数据列进行排序,然后才能用折半方法查找,所以先用快速排序将数据从小到大排序,在运用折半查找方法。 三、设计 1. 数据结构的设计和说明 (1)快速排序; (2)折半查找; 在有序表中,取中间元素作为比较的对象,若给定值与中间元素的关键码相等,则查找成功;若给定值小于中间元素的关键码,则在中间元素的左半区急速查找;若给定值大于中间元素的关键码,则在中间元素的右半区继续查找。不断重复,直到查找成功。 2. 关键算法的设计(必须画出流程图) 快速排序的流程图: 开始 high,low,r[n]; 定义 high=n,low=0; N high>low high=low Y Y return low; low=high t=low; t++; r[t]>r[high] N Y r[low]与r[high]交换 low++; N return 0; m=high; r[m] 折半查找流程图: 开始 输入要查找的数kx; int low,high,r[n]; low=1,high=n; mid=(high+low)/2 low Y kx>r[mid] Y low=mid+1; N high=mid-1; 四、测试数据及测试结果: 五、课程设计总结 折半查找必须要先排序。 六、关键源程序的清单 int binsearch(Sq_Table st,KeyType kx) { int mid,low=1,high=st.length; while(low<=high) { mid=(low+high)/2; if(kx==st.r[mid].key) return mid; if(kx>st.r[mid].key) low=mid+1; else high=mid-1; } return 0; } 设计题目3:快速排序 一、问题描述 实现对任意一组数据的快速排序。 二、解决问题的算法思想描述 运用快速排序的算法就可解决问题。 三、设计 1. 数据结构的设计和说明 快速排序:快速排序是交换排序的一种,实际上是冒泡排序的一种改进。快速排序的基本思想是:以某个记录(一般去第一个记录)为标准,也就是支点,通过划分,将待排序序列分成两组,其中一组中所有记录的关键码均大于等于记录的关键码,另一组中的左右记录的关键码均小于支点记录的关键码。 2. 关键算法的设计(必须画出流程图) 快速排序流程图见上面一题。 四、测试数据及测试结果: 六、关键源程序的清单 int Partition(RecNode r[],int low,int high) /*r[low..high]存放待排记录,算法返回支点最终位置*/ { if(low>high) return 0; if(low==high) return low; r[0]=r[low]; /*缓存支点记录*/ while(low r[low]=r[0]; /*支点记录最终位置*/ return low; } void Quick_sort(RecNode r[], int m, int n) /*对顺序表r[m..n]作快速排序,m初值为1*/ { int i; i= Partition(r,m,n); if(m Quick_sort(r,m,i-1); if(i Quick_sort(r,i+1,n); }
正在阅读:
数据结构课程设计02-28
数据结构课程设计05-04
2022年计提福利费税前扣除标准03-27
世界人口老龄化现状趋势及政策实践05-16
2013年高考真题—文综地理(北京卷)答案精析 - 图文04-24
闽教版小学五年级英语下册-期末试卷04-28
圣诞节的由来,英文02-24
船舶检验技术档案管理暂行办法05-06
2012年国家公务员报考的基本步骤03-22
经典八年级物理浮力计算题(含答案)08-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数据结构
- 课程
- 设计
- VIP会员卡办理须知
- 2013年技术经理认证网上理论考试 - VW
- 绵阳市卫生局救灾防病应急预案
- XX公司年度工作总结与计划
- 综合布线试卷
- 光纤激光器行业市场发展现状调研及投资预测分析报告—灵核网发布
- 磁场的测定(霍尔效应法) - 图文
- 2015年广西贺州市中考数学试卷 人教版 - 图文
- 留学加拿大毕业后想移民该如何操作?
- 英语翻译下
- 红歌演唱会主持词
- 三年级语文论文
- 关于采用单一来源采购方式进行政府购买服务的说明
- 跑与游戏 原地摆臂练习与游戏 张洪江
- 新会计准则下的四大魔法 - 图文
- 本科论文实例:大学生消费支出影响因素分析
- 八年级数学下册第十八章平行四边形测评新版新人教版
- C++课程设计 模拟计算器程序
- 江苏技术师范学院 - 数据结构复习题及答案
- 23、日月潭的传说