1.Append()的功能:在通讯录的末尾写入新的信息,并返回选单.
开始定义局部变量和标志位,接收通讯录数据Flg==’y’?No记录通讯录记录的个数yes输出提示语句结束接收输入的数据将数据存入通讯录将电话号转换为关键字哈希表探测未完毕并且无可用位置?yes二次探测再散列no在哈希表中找到可用位置了吗?no将电话号和在电话本中的位置存入哈希表Yes提示哈希表中已无可用位置提示是否继续添加记录接收选择 2.Find():查询某人的信息,如果找到了,则显示该人的信息, 如果没有则提示通讯录中没有此人的信息.
开始Char phoneNum[12],int i=0,key,addr;提示输入电话号用phoneNum接收输入的电话号Key=chenge(phoneNum),将电话号转换为关键字没找到并且哈希表未探测完?noYes二次探测找到了吗yes输出查找到的信息No提示无此人记录结束并返回查找结果
3.Alter()的功能:修改某人的信息,如果未找到要修改的人, 则提示通讯录中没有此人的信息.
开始查找要修改的记录在电话本中的位置提示无此记录NoAddr>=0?yes询问是否修改姓名接收选择Flag==’y’yes提示输入姓名接收输入覆盖原来姓名no询问是否修改通讯地址接收选择Flag==’y’yes提示输入姓名接收输入覆盖原来姓名No结束
4.Delete()的功能:删除某人的信息,如果未找到要删除的人, 则提示通讯录中没有此人的信息.
开始在电话本中查找要删除的记录提示是否删除接收选择提示操作已取消noFlag==’y’Yes删除此记录在哈希表中的记录将该记录后面的记录前移计数器减一提示记录已删除结束 5.Menu()的功能:显示英文提示选单。 6.Quit()的功能:退出选单。
7.Create()的功能:创建新的通讯录。
8.List()的功能:显示通讯录中的所有记录。
9.Save()的功能:保存通讯录中的所有记录到指定文件中。 10.Load()的功能:从指定文件中读取通讯录中的记录。
(三)详细设计(重要函数、存储结构、类型定义): //--------通讯录数据类型定义------------------- typedefstruct Information {
char Name[20];
char PhoneNO[12]; //以电话号码为关键字建立散列表 char Address[30]; }Inform;
//--------电话本结构设计---------------- typedefstruct Record {
Inform *base; intnum; //记录记录的个数 }Record;
//---------哈希表结构定义------------------- typedefstruct Hash {
char key[12]; int address; }Hash;
Record record; //将记录设置为全局变量 Hash *f; //将哈希表设置为全局变量 //-----------二次探测再散列数组定义--- int research[MOD/2];
//-----------二次探测数组初始化-------
void ArrayIni() //±12,±22,±32,±42……±(MOD/2)2. { inti,j;
for (i=0,j=-1;i //---------------菜单数据定义--------------------- typedefenum{Create,Append,Find,Alter,Delete,List,Save,Load,Quit}DO;