课程设计目录和正文模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1 问题描述 (1)
2 需求分析 (1)
3 概要设计 (1)
3.1设计思路 (1)
3.2模块划分 (2)
3.3流程图 (2)
4 详细设计 (3)
4.1数据类型的定义 (3)
4.2程序分析 (3)
4.3程序清单 (6)
5 测试分析 (8)
6 课程设计总结 (9)
参考文献 (10)
1 问题描述
设计一个职工管理程序,输出10个职工的姓名和职工号,按职工号由大到小排序,姓名顺序也随之调整,要求输入一个职工号,用折半查找法找出该职工的姓名。从主函数输入要查找的职工号,输出该职工姓名。
2 需求分析
从问题描述中可知:要编写一个职工数据管理程序,输入职工号和姓名并按职工号由大到小排序,则需建立一个子函数input-e(),其功能是输入职工的数据。输入完成后,我们需对职工信息进行排序,此时需用到sort函数。为提高效率,sort函数是用选择法进行排序。排序后就是查找,题目要求输入一个职工号,用折半查找找出该职工的姓名。所以查找需建立子函数search,用来查找职工的信息。那么,整个程序主函数main就包括三个子函数,分别是输入函数input-e、排序函数sort和查找函数search。
3 概要设计,
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
不查找了?
F Flag=0
图 3.3 实验系统N-S图
4 详细设计
4.1数据类型的定义
(1)数组类型
#define N 10
char 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 { printf("\n shu ru zhi gong hao: "); scanf("%d",&num[i]);/*输入职工号*/ printf("\n shu ru zhi gong ming: "); getchar(); gets(name[i]);/*输入职工的姓名*/ } } (3)选择法排序部分(sort) void sort(num,name) int num[]; char name[N][8]; { int i,j,max,temp1; char temp2[8]; for(i=0;i { max=i; for(j=i;j if(num[max]>num[j])/*选择*/ max=j; temp1=num[i];/*排序*/ strcpy(temp2,name[i] );/*交换*/、 num[i]=num[max]; strcpy(name[i],name[max]); num[max]=temp1;