利用折半查找和冒泡排序实现个人电话号码查询系统资料Word文档下载推荐.docx
- 文档编号:13357389
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:25
- 大小:217.42KB
利用折半查找和冒泡排序实现个人电话号码查询系统资料Word文档下载推荐.docx
《利用折半查找和冒泡排序实现个人电话号码查询系统资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《利用折半查找和冒泡排序实现个人电话号码查询系统资料Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
(5)至少要有1000个电话号码,每个号码至少包括手机、固定电话、电子邮件、姓名等。
2.2输入的数据
姓名:
wang姓名:
li
电话:
1234电话:
5678
Email:
1234Email:
5678
输入qq号:
1234输入qq号:
分组:
1分组:
2
2.3达到的功能
三、数据结构设计
structrecord//建立结构体
{
charname[20];
chartel[20];
charemail[20];
charqq[20];
charrela[20];
}student[1000];
//变量定义
typedefstruct
{
intlast;
}recordlist;
staticintnum=0;
FILE*fp;
//文件数据结构
intn1=0;
四、算法设计
4.1概要设计
首先由于程序中要有对学生信息的增加和减少,定义一个全局变量n,在此程序的任意的模块中均可以使用。
宏定义,用LEN来代替开辟地址空间,定义一个结构体变量,record,来存储联系人信息
设计实现主要功能的函数有:
1.主菜单函数:
voidmainmenu();
2.查找菜单函数:
voidsearchmenu();
3.新添记录:
voidenter();
4.查找记录:
voidsee();
5.显示所有记录:
voiddisplay();
6.打开文件:
voidload();
7.保存文件:
voidsave();
程序运行中,为了保持屏幕的清楚和美观,时刻进行清屏也是必要的。
4.2软件模块结构图
4.3mainmenu()函数流程图
4.4addinfo函数流程图
addinfo()函数流程图
F
T
4.5显示所有函数display()流程图
显示所有函数流程图
4.6查询菜单
五、调试分析及测试数据
从上面的算法和调用关系可以看出,这个程序的基本样子已经非常的清楚,但是真正的程序中还要考虑各种限制条件。
例如在查找的过程中,可能不存在要查找的信息,就要给出不存在此信息的提示等。
还有就是涉及到返回值得问题和程序中所要用到的变量的问题。
在调试的过程中所遇到的问题很多,其中最难的两个问题是给出的六个警告错误,在5.0的版本下就是两个使得程序无法运行的错误。
其中五个是因为在变量的声明中因为使用了浮点型和双精度型两种而造成在某些模块中两个变量相互赋值时类型不匹配。
另一个是在查找的子函数中忘记了需要的返回语句。
5.1新添加记录
输入数据:
5.2保存退出
没有出错,可正常保存退出
5.3查找联系人
5.3.1查找菜单的显示
5.3.2显示所有
正常显示
5.3.3按姓名查找
开始时输入姓名,程序结果一闪而过,后来经过老师的帮助发现是因为在查找时传入了回车,后经改进,利用字符串输入将回车消除,成功运行结果。
5.4删除联系人
5.5保存退出
保存后程序产生一个txt文件供打开通讯录是调用。
5.6打开通讯录
通讯录中没有保存的信息时的界面:
当有文件保存时的界面:
在调试时的通讯录无法打开上次保存的文件。
一直显示通讯录不存在。
经检查是代码中打开语句时,.txt文件被误以为.bin文件,所以程序无法找到文件
六、心得体会
以前做实验题目的时候总是感觉很难,因为根本就不知道从哪里开始。
这次课程设计让我对编程有了新的认识。
拿到题目的时候也是很困惑,后来看了很多有关的例子,仔细看了书上的线性表部分的知识,觉得就是上课讲到的一些内容,不怎么难,是自己先把自己吓住了。
后来,参照书上的和网上的诸多例子,一个模块一个模块的编写,调试,一个功能一个功能去完善。
发现越做越顺利。
特别要感谢指导老师的指导,当运行程序出现bug时,找遍同学都解决不了的时候,多谢老师得耐心指导,最终帮助我成功的解决问题。
七、参考文献
C语言程序设计教程张磊编著中国铁道出版社
数据结构-用c语言描述耿国华/张同德编著高等教育出版社
数据结构C语言版吴伟民编著清华大学出版社
八、附录源代码
附录、(源代码)
#include<
stdio.h>
stdlib.h>
string.h>
conio.h>
voidmainmenu();
voidsearchmenu();
voidaddinfo();
voiddisplay();
voidload();
voidsave();
voiddelet();
intbinsrch();
voidsee();
intmain()
load();
while
(1)
mainmenu();
return0;
}
voidload()
if((fp=fopen("
student.dat"
"
rb"
))==NULL)//以读文本的方式打开文件student.dat,并使fp指向该文件。
{
printf("
\n\t\t通讯录文件不存在"
);
//通讯录不存在
if((fp=fopen("
wb"
))==NULL)//以写文本方式打开文件student,并使fp指向该文件。
{
printf("
\n\t\t建立失败"
//建立失败
exit(0);
}
else
printf("
\n\t\t通讯录文件已建立"
\n\t\t按任意键进入主菜单"
getch();
return;
exit(0);
}
fseek(fp,0,2);
//将位置指针从文件尾移动0个字符
if(ftell(fp)>
0)//流式文件中的指针的当前位置大于零
rewind(fp);
for(num=0;
!
feof(fp)&
&
fread(&
student[num],sizeof(structrecord),1,fp);
num++);
//在fp所指向文件读入一个数据存储到数组student中直到文件结束
\n\t\t文件导入成功"
\n\t\t按任意键返回主菜单"
\n\t\t通讯录文件中无任何纪录"
}
voidmainmenu()//主菜单
charchoic;
system("
cls"
//清屏
\n\t\t***************欢迎进入通讯录系统***************"
\n\t\t******************1-新添纪录******************"
\n\t\t******************2-查找联系人****************"
\n\t\t******************3-删除联系人***************"
\n\t\t******************4-保存退出*****************"
\n\t\t******************5-不保存退出***************"
\n\t\t************************************************"
\n\t\t请选择:
"
choic=getch();
switch(choic)
case'
1'
:
addinfo();
break;
2'
searchmenu();
3'
delet();
4'
save();
5'
exit(0);
default:
mainmenu();
}/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 折半 查找 冒泡 排序 实现 个人 电话号码 查询 系统 资料