资源简介
《数据结构与算法分析》课程设计教学任务书
通讯录系统设计:
设计要求
设计以姓名为关键字的散列表(哈希表),实现通讯录查找系统,完成相应的建表和查表程序。
(1)设每个记录有下列数据项:用户名、电话号码、地址;
(2)从键盘输入各记录,分别以姓名为关键字建立散列表;
(3)人名可以采用汉语拼音形式。人名字符串转化为数字的方式自行决定。
(4)哈希函数用除留余数法构造,采用二次探测再散列法解决冲突;
(5)根据姓名查找,找到显示给定记录的电话号码和地址;找不到提示通讯录无此人。
(6)通讯录信息保存到文件。
=============================================================
以上为任务书,我的程序在其基础上又增加了以下功能:
1、通讯录信息以链表的形式进行存储。
2、可从文件读取之前保存的通讯录信息。
3、人名支持汉字。
===================================
文件说明:
contacts.c ——主程序文件
hash.c -- 支持哈希表操作的函数
hash.h -- 哈希类型接口文件
list.c -- 支持列表操作的函数
list.h——列表类型接口文件
menu.c —— 实现菜单的函数
menu.h —— 菜单函数的声明
contacts.dat —— 数据存储文件(二进制形式)
Contacts.cbp ——CodeBlocks工程文件,如有CodeBlocks,可直接打开工程。
代码片段和文件信息
#include
#include /* 为了使用exit()函数 */
#include “menu.h“
#include “list.h“
#include “hash.h“
static void showPeoples(Item item);
int main(void)
{
int i;
List peoples;
Item temp;
/* 初始化 */
InitializeList(&peoples);
if (ListIsFull(&peoples))
{
fprintf(stderr“没有可用的内存!\n“);
exit(1);
}
HashTable * H;
H = (HashTable*)malloc(sizeof(HashTable));
for(i=0;i {
H->elem[i]=NULL;
}
H->size=HASHSIZE;
H->count=0;
/* 由文件读取 */
LoadList(&peoples);
// LoadTXTList(&peoples);
int choice;
while((choice = getChoice()) != ‘q‘)
{
switch(choice)
{
case ‘a‘ :
{
if (ListIsEmpty(&peoples))
printf(“没有数据“);
else
{
printf (“通讯录如下:\n“
“%-25s%-25s%-60s\n“
“姓名“ “电话“ “地址“);
Traverse(&peoples showPeoples);
}
printf(“共计 %d 人\n“ ListItemCount(&peoples));
break;
}
case ‘b‘ :
{
puts(“请输入联系人的姓名:“);
while (gets(temp.name) != NULL && temp.name[0] != ‘\0‘)
{
puts(“请输入联系人的电话号码:“);
scanf(“%s“ temp.phonenum);
// 话说scanf()的参数不是要加“&”吗?这里怎么没有?
// 嘛,这个是数组名哦,已经是地址了,再加&不就成了地址的地址了吗
clearBuffer();
puts(“请输入联系人的地址:“);
scanf(“%s“ temp.address);
clearBuffer();
if (AddItem(temp &peoples)==false)
{
fprintf(stderr“添加失败\n“);
break;
}
if (ListIsFull(&peoples))
{
puts(“列表已满“);
break;
}
puts(“输入下一个联系人的姓名(输入空行结束输入):“);
}
break;
}
case ‘c‘ :
CreateHash(H &peoples);
break;
case ‘d‘ :
SearchHash(H);
break;
case ‘e‘ :
SaveList(&peoples);
break;
default :
puts(“\a输入有误!\n“);
break;
}
puts(“按回车继续.......“);
clearBuffer();
putchar(‘\n‘);
}
puts(“\n谢谢使用!再见!\n“);
/* 清空 */
EmptyTheList(&peoples);
printf(“再见!\n“);
getchar();
return 0;
}
static void showPeoples(Item item)
{
printf(“%-25s%-25s%-60s\n“
item.name
item.phonenum
item.address);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-01-07 17:38 Contacts\
文件 2296 2014-01-07 17:35 Contacts\contacts.c
文件 1617 2013-07-11 13:02 Contacts\Contacts.cbp
文件 16485 2013-07-11 13:00 Contacts\contacts.dat
文件 46023 2014-01-07 17:36 Contacts\Contacts.exe
文件 2984 2013-07-11 10:24 Contacts\hash.c
文件 914 2013-07-11 07:33 Contacts\hash.h
文件 3037 2013-07-11 12:58 Contacts\list.c
文件 2188 2013-07-11 12:52 Contacts\list.h
文件 830 2013-07-11 12:47 Contacts\menu.c
文件 152 2013-07-11 11:28 Contacts\menu.h
- 上一篇:大白鲨远控1.5共享版
- 下一篇:微机原理与接口技术期末试题及答案
相关资源
- 哈夫曼树--链表实现编码,解码
- 02331数据结构复习题及答案
- 数据结构停车管理系统
- 表达式求值问题 数据结构
- 数据结构与算法-AV阿霍 JE霍普克罗夫
- 杭电数据结构课设自选题
- 数据结构期末考试试卷
- “数据结构与算法”课程学习总
- 通讯录管理系统(c 链表)
- 表达式求值 数据结构
- 外排序初始游程的生成
- 数据结构课程设计之电梯模拟
- 大话数据结构原书+源代码.zip164041
- 《程序员代码面试指南》(高清PDF版
- 耿国华 数据结构 课后答案
- (答案)上海理工大学848真题数据结
- 数据结构作业习题精选 电子科技大学
- 数据结构及应用算法教程修订版
- 数据结构高分笔记
- 《数据结构》考研名校真题解析及典
- 数据结构与程序设计英文版答案.pdf
- 算法和数据结构:基本工具箱Kurt Me
- 华中科技大学数据结构实验报告1-4综
- 厦大数据结构考卷
- 数据结构 吴陈 科学出版社 课后答案
- 数据结构课程设计——哈夫曼编/译码
- 吉林大学《数据结构》实验全部代码
- 数据结构课程设计医院选址系统
- 严蔚敏,吴伟民编著《数据结构》课
- 湘潭大学数据结构二考研真题
评论
共有 条评论