
课程设计数据结构之 折半查找职工信息管理.doc
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;i












