数据结构课程设计
更新时间: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
谈心谈话记录大全07-30
LTE OFDM & SC-FDMA技术简介08-24
小学语文教案《一个苹果》10-30
阅读理解09-11
党支部自查问题工作汇报模版03-26
5 高锰酸钾标准溶液的配制标定及水样中COD的测定10-19
属于我的自信作文700字06-19
高中物理重点公式集锦06-07
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 数据结构
- 课程
- 设计
- VIP会员卡办理须知
- 2013年技术经理认证网上理论考试 - VW
- 绵阳市卫生局救灾防病应急预案
- XX公司年度工作总结与计划
- 综合布线试卷
- 光纤激光器行业市场发展现状调研及投资预测分析报告—灵核网发布
- 磁场的测定(霍尔效应法) - 图文
- 2015年广西贺州市中考数学试卷 人教版 - 图文
- 留学加拿大毕业后想移民该如何操作?
- 英语翻译下
- 红歌演唱会主持词
- 三年级语文论文
- 关于采用单一来源采购方式进行政府购买服务的说明
- 跑与游戏 原地摆臂练习与游戏 张洪江
- 新会计准则下的四大魔法 - 图文
- 本科论文实例:大学生消费支出影响因素分析
- 八年级数学下册第十八章平行四边形测评新版新人教版
- C++课程设计 模拟计算器程序
- 江苏技术师范学院 - 数据结构复习题及答案
- 23、日月潭的传说