好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

课程设计数据结构之 折半查找职工信息管理.doc

11页
  • 卖家[上传人]:206****923
  • 文档编号:75542984
  • 上传时间:2019-01-31
  • 文档格式:DOC
  • 文档大小:192.50KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 目 录1 问题描述 12 需求分析 13 概要设计 13.1设计思路 13.2模块划分 23.3流程图 24 详细设计 34.1数据类型的定义 34.2程序分析 34.3程序清单 65 测试分析 86 课程设计总结 9参考文献 10101 问题描述设计一个职工管理程序,输出10个职工的姓名和职工号,按职工号由大到小排序,姓名顺序也随之调整,要求输入一个职工号,用折半查找法找出该职工的姓名从主函数输入要查找的职工号,输出该职工姓名2 需求分析由题目分析可知道:要编写一个职工数据管理程序,输入职工号和姓名并按职工号由大到小排序,则需建立一个子函数input-e(),其功能是输入职工的数据输入完成后,我们需对职工信息进行排序,此时需用到sort函数为提高效率,sort函数是用选择法进行排序排序后就是查找,题目要求输入一个职工号,用折半查找找出该职工的姓名所以查找需建立子函数search,用来查找职工的信息那么,整个程序主函数main就包括三个子函数,分别是输入函数input-e、排序函数sort和查找函数search3 概要设计,3.1设计思路(1)首先建立主函数main,在main中有三个子函数,输入、排序、查找。

      Main函数中用flag作为循环开关变量先赋值flag=1,输入要查找的职工号,显示查找结果,当不再继续查找时,flag=0. 循环结束否则flag=1.(2)接下来分析第一个子函数---输入函数input-e用一个一维数组存储职工号,为整型职工的姓名用一个二维数组存储,为字符串定义一个变量i用i的循环递增输入职工号和职工姓名3)接着用选择法进行排序,建立子函数sort每趟排序从待排记录中找到最大的记录,并与第一个记录进行交换这样就完成了从大到小排序,是整个记录成递减序列4)建立一个查找函数search功能为对指定的职工号查找出职工的姓名用loca作为开关变量,赋值loca=0用一个if语句判断待查的职工号与输入的职工姓名是否相符若待查找的变量n不在查找范围,则loca=-1.结束折半查找算法思想是考察表中中间记录,其关键字与给定的信息相符,则查找成功若大于给定值,则在前半部分再实施折半查找;若小于给定值,则下一步在后半部分查找一直到查找成功,或确定关键字与所给信息不存在3.2模块划分本程序包括四个模块:(1)主程序模块,void main(){初始化;输入职工号和职工姓名;按职工号从大到小排序;输入职工号查找职工姓名;}(2)输入模块——实现职工号与职工姓名的输入(3)排序模块——实现将职工号从大到小排序(4)查找模块——实现输入一个职工号查找该职工的姓名3.3 N-S图调用input_e函数输入职工的数量调sort函数进行排序循环开关变量flag=1输入要查找的职工号调search函数进行查找并显示结果T不查找了?FFlag=0图 3.3 实验系统N-S图4 详细设计4.1数据类型的定义(1)数组类型#define N 10char name[N][8](2)整数类型int i,j,min,temp1,top,bott,loca;4.2程序分析此程序分为四个部分:(1)主函数部分;(2)输入部分;(3)选择排序部分;(4)查找部分。

      1)主函数void main(){ int num[N],number,flag,c,; char name[N][8];/*定义num[]来存储职工号,name[N][8]来存储职工的姓名*/input_e(num,name);/*输入职工信息*/ sort(num,name);/*由大到小排序*/ for(flag=1;flag;) { printf("\n qing shu ru yao cha zhao de zhi gong ming :"); scanf(“%d”,&number);/*从键盘输入要查找的职工号*/ search(number,num,name);/*通过职工号查找职工姓名*/ printf(" shi fou ji xu cha zhao? y/n!"); getchar(); c=getchar(); if(c=='N'||c=='n')/*判断是否继续查找*/ flag=0; }}(2)输入职工号与职工姓名部分(input_e)void input_e(num,name)int num[];char name[N][8];/*定义num[]来存储职工号,name[N][8]来存储职工的姓名*/{ int i; for(i=0;inum[j])/*选择*/max=j;temp1=num[i];/*排序*/strcpy(temp2,name[i] );/*交换*/、num[i]=num[max];strcpy(name[i],name[max]);num[max]=temp1;strcpy(name[min],temp2);}printf("\n pai xu jie guo ru xia: \n");for(i=N-1;;i>0;i--)/*由大到小依次输出职工信息*/ printf("\n%5d%10s",num[i],name[i]);}(4)查找部分(search)void search(n,num,name)int n,num[];char name[N][8];{ int top,bott,min,loca; loca=0; top=0; bott=N-1; if((nnum[N-1]))/*所要查找的记录不在输入的职工信息范围*/ loca=-1;/*loca重新赋值*/ while((loca==0)&&(top<=bott))/*条件为真就循环*/ { min=(bott+top)/2;/*折半查找,取中间值*/ if(n==num[min])/*比较*/ { loca=min;/*查找成功*/ printf("%d hao zhi gong de xing ming shi %s\n",name[loca]);/*根据职工号输出职工姓名*/ } else if(nnum[j])max=j;temp1=num[i];strcpy(temp2,name[i] );num[i]=num[max];strcpy(name[i],name[max]);num[max]=temp1;strcpy(name[max],temp2);}printf("\n pai xu jie guo ru xia: \n");for(i=N-1;i>0;i--) printf("\n%5d%10s",num[i],name[i]);}void search(n,num,name)int n,num[];char name[N][8];{ int top,bott,min,loca; loca=0; top=0; bott=N-1; if((nnum[N-1])) loca=-1; while((loca==0)&&(top<=bott)) { min=(bott+top)/2; if(n==num[min]) { loca=min; printf("%d hao zhi gong de xing ming shi:%s\n",n,name[loca]); } else if(n

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.