资源简介

《数据结构与算法分析》课程设计教学任务书 通讯录系统设计: 设计要求 设计以姓名为关键字的散列表(哈希表),实现通讯录查找系统,完成相应的建表和查表程序。 (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

评论

共有 条评论