资源简介
《数据结构与算法分析》课程设计教学任务书
通讯录系统设计:
设计要求
设计以姓名为关键字的散列表(哈希表),实现通讯录查找系统,完成相应的建表和查表程序。
(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共享版
- 下一篇:微机原理与接口技术期末试题及答案
相关资源
- 数据结构年终考题范围和答案 耿国华
- 数据结构 朱战力 习题解答 数据结构
- 数据结构课程设计 6 1 彩票系统
- 教学计划编制系统
- 大数(链表、数组)实现
- 单循环链表(带头结点和不带头结点
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- 航空订票系统_数据结构课程设计
- 多项式求和(数据结构C 版)
- 带头结点的单链表的c算法实现
- 尚观培训linux董亮老师关于数据结构的
- 数据结构 知识点总结
- 华南理工大学数据结构复习提纲二
- 华南理工大学数据结构复习提纲一
- 数据结构用C 写的停车场系统源代码
- 建立一个单链表并进行升序排列
- 数据结构(河北科技大学)
- 数据结构考前习题 清华大学出版社
- 数据结构课件(北邮)
- 数据结构实验 基于栈的表达式求值
- 数据结构课程设计——图书管理系统
- 成绩管理系统(数据结构)
- 数据结构-最小通信网问题
- 数据结构课程设计同学通讯录系统
- 数据结构课程设计 公园导游图
- 选课系统c (指针与链表)
- 数据结构殷人昆版的课后答案
- 2006年湖北工业大学409数据结构试题
- 数据结构实验-魔王语言-源码加实验报
评论
共有 条评论