简单个人电话号码查询系统

时间:2019-05-15 10:39:55下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《简单个人电话号码查询系统》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《简单个人电话号码查询系统》。

第一篇:简单个人电话号码查询系统

/**********************************************************/

/*人们在日常生活中经常需要查找某个人或某个单位的电话号码, */

/*本程序将实现一个简单的个人电话号码查询系统,根据用户输入*/

/*的信息(例如姓名等)进行快速查询。*/

/**********************************************************/

#include

#include

#include

using namespace std;

int x=0;

char a;

int j=1;

struct TeleNumber//电话号码类

{

char name[10];//姓名

int phoneNumber;//固定电话号码

int mobileNumber;//移动电话号码

char email[10];//电子邮箱

int s;

TeleNumber * Next;//下一指针

void ReadFile(istream & in);//读取数据文件

void input();//数据输入函数

void display();//数据显示函数

};

void TeleNumber::ReadFile(istream & in)//从文件把数据读入到程序 {

in>>name>>phoneNumber>>mobileNumber>>email;//将文件信息读到相关变量里面 }

void TeleNumber::input()//信息输入

{

cout<<“请输入姓名”<

cin>>name;

cout<<“请输入固定电话号码”<

cin>>phoneNumber;

cout<<“请输入移动电话号码”<

cin>>mobileNumber;

cout<<“请输入电子邮箱”<

cin>>email;

s=j++;//记录插入的人的信息的数量

}

void TeleNumber::display()//信息输出

{

cout<<“姓名:”<<<“移动电话号码:”<

}

class TeleMessage//功能类

{

public:

TeleMessage();//构造数据结构

~TeleMessage();//释放单链表析构函数

void Save();//数据保存到文件

TeleNumber * Search(char *);//信息查找

void Sort();//排序

void Insert();//插入

void Remove();//删除

void Change();//更改

void Show();//显示

void Swap(TeleNumber *,TeleNumber *);//两个TeleNumber对象交换数据域private:

TeleNumber * End,* Head;

ifstream in;//定义读,写文件对象

ofstream out;

};

TeleMessage::TeleMessage()//构造函数初始化

{

Head=new TeleNumber;//头插法建立单链表

Head->Next=new TeleNumber;

End=Head->Next;

in.open(“TeleNumber.text”);//打开外存文件,看是否有数据存在if(!in)

cout<<“电话系统中没有任何号码,请输入号码”<

else

{

while(!in.eof())//如果有,则打开,并将数据读取到程序

{

End->ReadFile(in);

if(End->name[0]=='')break;//如果名字为空

End->Next=new TeleNumber;//为下一个指针分配内存End=End->Next;//指针下移

}

in.close();//in对象关闭

cout<<“读取电话号码系统成功!”<

}

cout<<“输入任意字母继续”<

cin>>a;

TeleMessage::~TeleMessage()//析构函数释放单链表

{

TeleNumber * temp;//定义一个当前的指针

while(Head->Next!=End)

{

temp=Head->Next;

Head=Head->Next;

delete temp;//逐个释放内存空间

}

delete Head,End;//删除头尾指针

}

void TeleMessage::Save()//保存文件

{

out.open(“TeleNumber.txt”);//建立外存文件TeleNumber.txtfor(TeleNumber *p=Head->Next;p!=End;p=p->Next)

out<

name<<“t”<

phoneNumber<<“t”<

mobileNumber<<“t”<

email<

out.close();

cout<<“保存成功!”<

}

void TeleMessage::Swap(TeleNumber *p1,TeleNumber *p2)//两个类对象数据域进行交换 {

TeleNumber * temp=new TeleNumber;//定义一个中转指针strcpy(temp->name,p1->name);//将当前要交换指针中间的一个的name值赋值给中间变量

strcpy(temp->email,p1->email);

temp->mobileNumber=p1->mobileNumber;

temp->phoneNumber=p1->phoneNumber;

temp->s=p1->s;

strcpy(p1->name,p2->name);

strcpy(p1->email,p2->email);

p1->mobileNumber=p2->mobileNumber;

p1->phoneNumber=p2->phoneNumber;

p1->s=p2->s;

strcpy(p2->name,temp->name);

strcpy(p2->email,temp->email);

p2->mobileNumber=temp->mobileNumber;

p2->phoneNumber=temp->phoneNumber;

p2->s=temp->s;//将p1,p2的各个成员变量交换

}

void TeleMessage::Sort()//起泡排序

TeleNumber *p=NULL,*q=NULL;

int exchange=j-1;//要排序的电话号码的条数int bound;//

int i;

while(exchange)

{

bound=exchange;

exchange=0;

for(p=Head->Next,i=1;iNext)

if(p->mobileNumber>p->Next->mobileNumber)

{

Swap(p,p->Next);//调用交换函数exchange=p->s;

}

}

Show();

}

void TeleMessage::Insert()//插入

{

End->input();//从单链表尾部插入

End->Next=new TeleNumber;

End=End->Next;

cout<

}

void TeleMessage::Remove()//删除

{

char name[20];

TeleNumber * p=new TeleNumber,*temp=NULL;

cout<<“请输入要删除人的姓名:”<

cin>>name;

p->Next=Search(name);//先进行查找,找到所要删除的结点

if(Search(name))

{

temp=p->Next;

p->Next=p->Next->Next;//摘链

delete temp;

cout<<“tt删除成功!”<

}

else

{

cout<<“tt没有找到!”<

}

TeleNumber * TeleMessage::Search(char * name)

{

for(TeleNumber *p=Head->Next;p!=End;p=p->Next)

if(!strcmp(p->name,name))

{

if(x==4)

{

p->display();

return p;

}

else

return p;

}

if(x==4)

cout<<“查无此人”<

return 0;

}

void TeleMessage::Change()//修改信息

{

char name[20];

cout<<“请输入要修改的人的姓名:”;

cin>>name;

if(Search(name))

{

cout<<“tt已找到个人的信息,请输入新的信息!”<input();

cout<<“修改成功!”<

}

else

{

cout<<“tt没有找到!”<

}

}

void TeleMessage::Show()

{

for(TeleNumber * p=Head->Next;p!=End;p=p->Next)p->display();

}

int main()

{

bool flag=true;

TeleMessage tele;

} while(flag){system(“cls”);cout<<“简单个人电话号码查询系统”<>x;switch(x){case 0:flag=false;break;case 1:tele.Insert();break;case 2:tele.Show();break;case 3:tele.Sort();break;case 4:cout<<“请输入欲查找认得姓名”<>name;tele.Search(name);break;case 5:tele.Remove();break;case 6:tele.Change();break;case 7:tele.Save();break;}cout<<“输入任意字母返回”<>a;} return 0;

第二篇:个人征信系统查询授权委托书

个人征信系统查询授权委托书

汉口银行宜昌分行:

鉴于借款人于年月日向你行申请金额为万元的授信(贷款、承兑、贴现、信用证)业务,由提供担保或由授权人担任法定代表人,借款人及担保人或法定代表人同意你行遵照《个人信用信息基础数据库管理暂行办法》规定的查询用途,自本授权书签发之日起至上述申请业务终结(包括业务申请被驳回或根据该申请发放的信贷业务全部结清)之日止,可以通过中国人民银行个人征信系统查询本人的个人信用报告,并将本人的身份识别、职业和居住地址等个人基本信息,本人在上述业务和担保等信用活动中形成的交易记录等个人信贷交易信息,以及其他有关信用信息报送中国人民银行个人信用信息基础数据库。

本次业务的申请书和合同书中有关征信条款所言的“有关征信机构”、“征信系统”等均指中国人民银行个人信用信息基础数据库。特此授权

授权人(借款人):

授权人(担保人或法定代表人):

签发日期:

第三篇:个人征信系统查询授权书

个人征信系统查询授权书

授 权 人(甲方): 被授权人(乙方):

一、甲方因自身需要,向乙方申请办理

□贷款 □贷记卡 □准贷记卡 □贷款担保 □其他业务

二、甲方特授权乙方在本次业务过程中(从业务申请至业务终止),可以通过中国人民银行个人信用信息基础数据库查询并使用甲方的信用报告,并同意将甲方的身份识别、职业和居住地址等个人基本信息,甲方在个人贷款、各类信用卡和对外担保等信用活动中形成的交易记录等个人信贷交易信息及其他相关信息保送中国人民银行征信服务中心。甲方授权乙方查询使用个人信用报告的用途包括:

(一)乙方审核甲方贷款(含贷款授信)申请的;

(二)乙方审核甲方贷记卡、准贷记卡申请的;

(三)乙方审核甲方作为担保人的;

(四)乙方对已放给甲方的贷款进行贷后风险管理的;

(五)法人或其他组织向乙方提出贷款申请或作为贷款担保人时,甲方在其中担任法定代表人或出资人的,乙方需要查询甲方信用状况。

授权人(签章)

年 月 日

第四篇:系统档案查询

基础档案 索证管理 卖场管理

口部类编码 口设置证书种內 口POS机登记 口供应商档案 口证书登记 口POS机设置

口货位编码 口商品证书查验 口支付类型定义 口品牌编码 口收款员设置 口商品建档 口营业员设置

口商品修改或删除 口商品促销方案 口组合商品销售商品设置 口买立减方案

口下传电子秤 口商品销售控制 口设置商品提成率 口POS机数据下载 口标准商品档案 口POS机消息广播

口设置商品黑名单 口POS机交易流水

口条码签打印 口POS机时段销售查询 口标价签打印 口POS机销售图示 口商品改编码

口POS机对账报表

口POS机结账控制

口POS机进销存日结

日常处理 口商品台帐查询 口库存限量报警

口商品定时优惠 口批量销售优惠 口商品保质期预警 口在途商品查询 口会员限量优惠 口商品销售控制 口进货批次查询 口商品验收汇总 口基础数据下载 口商品资料下载

口定时优惠下载 口会员资料下载 口POS机消息广播 口条码签打印

口标价签打印 口POS机结账控制 口进销存日结

分店处理 销售查询 口分店要货 口配送收货

口协配收货 口分店退货申请 口支付类型对账报表

口配送退货 口商品协退 口收款员对账报表 口营业员对账报表 口分店间调入 口分店间调出 口商品对账报表 口部门对账报表 口通讯参数设置 口上传数据生成 口供应商对账报表 口供应商支付类型 口上传数据 口接受数据 口收款员销售汇总 口营业员销售汇总 口接受数据予处理 口数据通讯日志 口支付类型汇总 口商品销售汇总 口分店要货单查询 口配送收货单查询 口部门销售汇总 口品类销售汇总 口协配收货单查询 口退货申请单查询 口供应商销售汇总 口按税率销售汇总

口配送退货单查询 口协配退货单查询 口按日期查询部门销售 口按日期查询品类销售 口分店间调入查询 口分店间调出查询 口按日期查询供应商销售口指定商品销售查询 口待处理协配采购单 口待处理商品配送单 口不动销商品查询 口商品销售预测 口待处理分店间调入单 口待处理分店间调出单 口部门销售预测 口品类销售预测 口待处理变价通知单

业务处理 业务查询

口补货申请 口采购订货 口基本档案查询 口供应商信息查询 口采购单审核 口商品验收 口供应商应付款查询 口供应商台帐查询 口供应商退货 口供应商结算 口客户信息查询 口客户应收款查询 口售价调整 口进价调整 口客户台帐查询 口商品批发汇总 口仓库调拨 口部门调拨 口品类批发汇总 口部门批发汇总

口商品损益 口加工领料 口进销存业务速报 口部门进销存报表 口加工退料 口成品入库 口系统日志 口保存盘存数据 口账面库存查询 口商品盘存 口POS机盘存控制

口POS机盘存数据汇总 口漏盘商品查询 口盘存结果查询 口批发报价查询 口批发销货查询 口批发退货查询 口客户结算查询 口制定客户批发价

会员管理 联营管理 口新会员注册 口会员日常处理 口供应商联营合同 口设置个别商品扣点 口会员辅助处理 口会员存款 口月度联营费用核算 口联营供应商结算 口会员取款 口会员批量存款 口月度联营费用查询 口联营结算单查询

口磁卡会员卡制作 口IC卡会员卡制作 口联营商品销售汇总 口联营供应商销售汇总 口会员积分设置 口会员返利结算 口联营商品信息查询 口会员信息查询 口会员业务台帐 口存款单查询 口取款单查询 口返利单查询 口业务统计报表 口支付记录查询 口会员购物明细 口IC卡余额查询

第五篇:软件工程 通讯录查询系统

《数据结构》课程设计报告

计算机学院 软件工程专业

题目: 通信录查询系统(查找应用)

班级:软件102班 第11组

组长:

姓名:李伟

学号:1006550222 组员:

姓名:李呢

学号:1006550219 姓名:李强

学号:1006550221

指导老师:xxx

日期:2011 年 12月 30日

程序设计书目录

一、程序设计目标

二、问题描述

三、需求分析(说明课程设计的任务)

四、概要设计(说明课程设计中用到的抽象数据类型的定义、主程序的流程以及各程序模块之间的调用关系等)

五、详细设计(实现程序模块的具体算法)

六、软件说明书(给出软件应如何使用,使用时的注意事项)

七、源程序清单(要求400行以上,要有注释说明)

八、测试报告(调试过程中遇到的问题及解决方法,并列出测试结果,包括输入和输出)

九、课程设计总结

一、程序设计目标

通过本次课设进一步的了解哈希表函数及哈希表等有关概念,2 掌握哈希表查找的过程及方法。复习巩固大一时期学过的c语言知识。进一步加深对c语言、数据结构、离散数学等基础技能的理解和掌握。

让我们有一个既动手又动脑,独立实践的机会,可以让我们将课本上的理论知识和实际邮寄的结合起来,锻炼我们的分析解决实际问题的能力。提高我们实践编程能力。

通过本项课程设计,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相 结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。

二、问题描述

设计散列表实现通讯录查找系统。

(1)设每个记录有下列数据项:电话号码、用户名、地址;

(2)从键盘输入各记录,分别以电话号码为关键字建立散列表;

(3)采用二次探测再散列法解决冲突;(4)查找并显示给定电话号码的记录;(5)通讯录信息文件保存;

(6)要求人机界面友好,使用图形化界面;

三、需求分析

一.查询:用户有一个电话号码,但不知道此电话号码是谁的,则需要输入号码来查询该号码是不是此通讯录中已记录的人的 号码,若是即显示该号码及姓名、所在地,若不是则显示“无记录”。

进入主菜单界面,输入4,进入通讯录查询模块。输入你想要搜索通讯人的电话号码。屏幕输出所搜通讯人的先关信息。二.通讯录信息添加:

若要向通讯录中添加新号码,也分两种情况:1若该通讯录是新的,既没有任何通讯记录的,则直接往里添加,需先输入姓名,随即输入号码和所在地,用于存储。2若通讯录不是空的,再添加新号码时则需在最后一个号码后面进行添加(输入姓名、电话号码及所在地),以此类推。

进入主菜单,输入1,进入通讯录信息添加模块。按照要求依次输入姓名、电话号码、住址。三.通讯录信息删除:

若要对通讯录中的内容进行删除: 然后输入所要删除的号码进行删除

删除成功。出现提示信息。按任意键回到主菜单。

四、概要设计

对功能键相对应的函数分别对各个函数在程序中进行定义如下:

void Menu()void Create()void Append()void CreateHash()void Find()void Delete()void Alter()void List()void Save()

void Load()

然后根据各功能键的选择主函数分别调用功能键相对应 4 的函数来实现通讯录的查询系统。

五、详细设计

1、定义结构体变量

typedef struct people //记录 { NA name;NA tel;//关键字

NA add;}Record;//查找表中记录类型

typedef struct //建立哈希表 { Record *elem[HASHSIZE];//数据元素存储基址 int count;//当前数据元素个数 int size;//当前容量 }HashTable;

2、定义显示函数 void Menu()

3、定义建立时间的函数 void benGetTime()

4、定义创建新的通讯录并添加信息的函数

void Create(Record* a)

5、定义关键字比较函数

Status eq(NA x,NA y)

6、定义添加信息函数

void Append(Record* a)

7、定义显示通讯录中所有信息函数

void List(Record* a)

8、定义哈希函数

int Hash(NA str)

9、定义冲突处理函数

Status collision(int p,int &c)

10、定义建立散列表的函数

void CreateHash(HashTable* H,Record* a)

11、定义通讯录查找的函数

void Find(HashTable* H,int &c)

12、定义修改信息的函数

void Alter(HashTable* H,int &c)

13、定义删除信息的函数

void Delete(HashTable* H,int &c)

14、定义保存信息到指定文件的函数

void Save(HashTable* H)

15、定义从指定文件中读取信息的函数

void Load()

16、定义主函数

int main(int argc, char* argv[]){ system(“color FO”);system(“CLS”);int c,flag=1;HashTable *H;H=(HashTable*)malloc(LEN);for(int i=0;ielem[i]=NULL;H->size=HASHSIZE;H->count=0;Record a[MAXSIZE];donghua();while(1){ face();printf(“请输入一个任务选项>>>”);printf(“n”);int num;scanf(“%d”,&num);getchar();switch(num){ case 1:Create(a);break;case 2:Append(a);break;case 3:CreateHash(H,a);break;case 4:c=0;Find(H,c);break;case 5:c=0;Delete(H,c);break;case 6:c=0;Alter(H,c);break;case 7:List(a);break;case 8:Save(H);break;case 9:Load();break;

case 0:Quit();return 0;break;case 10:;;break;default: printf(“你输错了,请重新输入!”);printf(“n”);}

system(“CLS”);} return 0;}

六、软件说明书

双击程序,程序运行后,进入通信录查询系统菜单的操作界面,然后采用键盘进行操作。各功能键的选择如下:

1、创建新的通讯录并写入新的信息

2、添加某人的信息

3、以电话号码建立散列表

4、查找并显示给定电话号码的记录

5、删除某人的信息

6、修改某人的信息

7、显示通讯录中所有记录

8、保存通讯录所有记录到指定文件

9、从指定文件中读取通讯录中的记录 0、退出选单

选择1,建立新的通讯录,通讯录创建成功,按Enter键进入添加信息界面,界面会出现

根据系统提示进行相应的添写,添加成功之后,按Enter键返回主菜单。

选择2,在通讯录的末尾写入新的信息,与上诉添加信息操作相同。同样按Enter键返回主菜单。

选择3,会立即调用冲突处理函数以及建立散列表,界面上会显示冲突次数,哈希表容量和当前储存记录的个数,按Enter键返回主菜单。3功能键必须在4、5、6功能键之前选择,才能使4、5、6功能键派上用场。

选择4,查找某人信息,写入查找的电话号码,如果通讯录中有则会出现查找成功否则出现此人不存在,查找不成功。按Enter键返回主菜单。

选择5,删除某人信息,写入删除的电话号码,如果通讯录中有则会出现删除成功否则出现此人不存在,删除不成功。按Enter键返回主菜单。

选择6,修改某人信息,写入修改的电话号码,通过查找函数找到要修改的信息,在对找的的信息进行修改,如果通讯录中 有则会出现原信息让用户输入修改后的信息,根据系统的提示输入修改后的信息,按Enter键会出现修改成功,否则出现此人不存在,修改不成功。按Enter键返回主菜单。

选择7,界面会输出全部成员的信息。按Enter键返回主菜单。选择8,利用存盘函数保存数据到指定文件,界面会出现保存成功,按Enter键返回主菜单。

选择9,载入存储过的电话、姓名、地址,界面会出现指定文件所存储的所有信息。按Enter键返回主菜单。选择0,显示再见,按Enter键退出系统。

七、源程序清单

#include #include #include #include #include #include using namespace std;#define MAXSIZE 20 //电话薄记录数量 #define MAX_SIZE 20 //人名的最大长度 #define HASHSIZE 60 //定义表长 #define SUCCESS 1 #define UNSUCCESS-1 #define LEN sizeof(HashTable)//为建立的对象定义长度 typedef int Status;//为现有类型添加一个同义字 typedef char NA[MAX_SIZE];// typedef 掩饰数组类型 static int m=0;

typedef struct people //记录 { NA name;NA tel;//关键字 NA add;}Record;//查找表中记录类型

typedef struct //建立哈希表

{ Record *elem[HASHSIZE];//数据元素存储基址 int count;//当前数据元素个数 int size;//当前容量 }HashTable;int i;void Menu(){ printf(“

n”);printf(“ ## ttt ―――――― ttt ##n”);printf(“

# ttt

1.创建

丨 # n”);printf(“

# ttt

―――――― #n”);printf(“

# ttt

2.写入

丨 #n”);printf(“

# ttt

―――――― #n”);printf(“

# ttt

3.建表

丨 #n”);printf(“

# ttt

―――――― #n”);printf(“

# ttt

4.查找

丨 #n”);printf(“

# ttt

―――――― #n”);printf(“

# ttt

5.删除

丨 #n”);printf(“

# ttt

―――――― #n”);printf(“

# ttt

6.修改

丨 #n”);printf(“

# ttt

―――――― #n”);printf(“

# ttt

7.查看

丨 #n”);printf(“

# ttt

―――――― #n”);printf(“

# ttt

8.保存

#n”);printf(“

# ttt

―――――― #n”);printf(“

# ttt

9.读取

丨 #n”);printf(“

# ttt

―――――― #n”);printf(“

# ttt

0.退出

丨 #n”);printf(“

## ttt

―――――― ##n”);printf(“

n”);}

void benGetTime()//建立时间函数 { SYSTEMTIME sys;GetLocalTime(&sys);printf(“%4d/%02d/%02d %02d:%02d:%02d.%03d n”,sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds);}

Status NUM_BER;//记录的个数 Status NUM_BER1;

void Create(Record* a)//创建新的通讯录 { system(“CLS”);//调用DOS命令CLS能够清屏

FILE *fp1,*fp2;if((fp1=fopen(“record.txt”,“r”))!=NULL)//打开文件

{ fclose(fp1);//关闭文件

} else {

fp2=fopen(“record.txt”,“w”);//如果不存在record.txt就创建一个

fclose(fp2);11 }

printf(“n”);

printf(“

#####n”);printf(“==================== → 创建成功 ← ===================n”);

printf(“

#####n”);

printf(“n”);printf(“◇◆请按ENTER进入添加通讯信息菜单◇◆n”);getchar();system(“CLS”);system(“CLS”);//调用DOS命令CLS能够清屏

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);printf(“输入要添加的个数:n”);scanf(“%d”,&NUM_BER);for(i=0;i

{ printf(“请输入第%d个记录的用户名:n”,i+1);scanf(“%s”,a[i].name);printf(“请输入%d个记录的电话号码:n”,i+1);scanf(“%s”,a[i].tel);printf(“请输入第%d个记录的地址:n”,i+1);scanf(“%s”,a[i].add);

} getchar();

printf(“

#n”);

printf(“添加成功!!n”);

benGetTime();printf(“~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n”);printf(“◇◆请按ENTER返回功能操作菜单◇◆n”);printf(“

#n”);12 getchar();}

Status eq(NA x,NA y)//关键字比较,相等返回SUCCESS;否则返回UNSUCCESS { if(strcmp(x,y)==0){ return SUCCESS;} else return UNSUCCESS;}

void Append(Record* a)//键盘输入各人的信息 { system(“CLS”);//调用DOS命令CLS能够清屏

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);printf(“输入要添加的个数:n”);scanf(“%d”,&NUM_BER1);int j=i;for(i;i

printf(“

#n”);

printf(“添加成功!!n”);

benGetTime();13 printf(“~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n”);printf(“◇◆请按ENTER返回功能操作菜单◇◆n”);printf(“

#n”);getchar();}

void List(Record* a)//显示通讯录中所有记录 { Record *p;p=a;int i;system(“CLS”);//调用DOS命令CLS能够清屏

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);if(a!=NULL){

printf(“nn姓名t电话号tt地址n”);

printf(“_____________________________________________________n”);for(i=0;i

{

printf(“%st%stt%sn”,a[i].name,a[i].tel,a[i].add);

printf(“_____________________________________________________n”);

} } else { printf(“对不起!没有任何联系人记录!nn”);

printf(“===============n”);} benGetTime();printf(“

#####n”);14 printf(“◇◆请按ENTER返回功能操作菜单◇◆n”);printf(“

#####n”);getchar();}

int Hash(NA str)//哈希函数 { system(“CLS”);//调用DOS命令CLS能够清屏 long n;int m;n = atoi(str);//整型数.m=n%HASHSIZE;//造哈希函数

return m;//}

Status collision(int p,int &c)//用二次探测再散列法解决冲突 { int i,q;i=c/2+1;while(i=0)

{

return q;

} else

{

i=c/2+1;

} } else { q=(p-i*i)%HASHSIZE;把字符串转换成用除留余数法构并返回模值 冲突处理函数,采15 c++;if(q>=0)

{

return q;

} else

{ i=c/2+1;

} } } return UNSUCCESS;}

void CreateHash(HashTable* H,Record* a)//建表,以电话号码为关键字,建立相应的散列表 { system(“CLS”);//调用DOS命令CLS能够清屏

int i,p=-1,c,pp;for(i=0;ielem[pp]!=NULL)

{ pp=collision(p,c);//若哈希地址冲突,进行冲突处理 if(pp<0)

{

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);printf(“第%d记录无法解决冲突”,i+1);//需要显示冲突次数时输出

continue;

} //无法解决冲突,跳入下一循环

} H->elem[pp]=&(a[i]);//求得哈希地址,将信息存入 H->count++;

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);printf(“第%d个记录冲突次数为%d。n”,i+1,c);//需要显示冲突次数时输出

} printf(“n建表完成!n此哈希表容量为%d,当前表内存储的记录个数为%d.n”,HASHSIZE,H->count);benGetTime();printf(“

#####n”);printf(“◇◆请按ENTER返回功能操作菜单◇◆n”);printf(“

#####n”);getchar();}

void Find(HashTable* H,int &c)//在通讯录里查找电话号码关键字,若查找成功,显示信息 { system(“CLS”);//调用DOS命令CLS能够清屏

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);benGetTime();17 NA tele;printf(“n请输入要查找记录的电话号码:n”);scanf(“%s”,tele);int p,pp;p=Hash(tele);pp=p;while((H->elem[pp]!=NULL)&&(eq(tele,H->elem[pp]->tel)==-1))pp=collision(p,c);if(H->elem[pp]!=NULL&&eq(tele,H->elem[pp]->tel)==1){

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);printf(“n查找成功!n查找过程冲突次数为%d.以下是您需要要查找的信息:nn”,c);// printf(“姓

名:%sn电话号码:%sn联系地址:%sn”,H->elem[pp]->name,H->elem[pp]->tel,H->elem[pp]->add);

printf(“nn姓名t电话号tt地址n”);

printf(“_____________________________________________________n”);

printf(“%st%stt%sn”,H->elem[pp]->name,H->elem[pp]->tel,H->elem[pp]->add);

printf(“_____________________________________________________n”);} else

printf(“n此人不存在,查找不成功!n”);benGetTime();getchar();printf(“

#####n”);printf(“◇◆请按ENTER返回功能操作菜单◇◆n”);printf(“

#####n”);getchar();}

void Alter(HashTable* H,int &c)//在通讯录里修改某人信息 { system(“CLS”);//调用DOS命令CLS能够清屏

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);benGetTime();NA tele;printf(“n请输入要修改记录的电话号码:n”);scanf(“%s”,tele);int p,pp;p=Hash(tele);pp=p;while((H->elem[pp]!=NULL)&&(eq(tele,H->elem[pp]->tel)==-1))pp=collision(p,c);if(H->elem[pp]!=NULL&&eq(tele,H->elem[pp]->tel)==1){

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);

printf(“n以下是您需要修改的信息:”);

printf(“n”);

printf(“nn姓名t电话号tt地址n”);

printf(“_____________________________________________________n”);

printf(“%st%stt%sn”,H->elem[pp]->name,H->elem[pp]->tel,H->elem[pp]->add);

printf(“_____________________________________________________n”);

(H->elem)[pp]->tel[0]='';

printf(“请输入修改后记录的用户名:n”);scanf(“%s”,H->elem[pp]->name);printf(“请输入修改后记录的电话号码:n”);scanf(“%s”,H->elem[pp]->tel);printf(“请输入修改后记录的地址:n”);scanf(“%s”,H->elem[pp]->add);

printf(“修改成功!!”);} else {

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);

benGetTime();

printf(“n此人不存在,修改不成功!n”);} getchar();printf(“

#####n”);printf(“◇◆请按ENTER返回功能操作菜单◇◆n”);printf(“

#####n”);getchar();}

void Delete(HashTable* H,int &c)//在通讯录里查找电话号码关键字,若查找成功,显示信息然后删除 { system(“CLS”);//调用DOS命令CLS能够清屏

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);benGetTime();NA tele;printf(“n请输入要删除记录的电话号码:n”);m++;scanf(“%s”,tele);int p,pp;p=Hash(tele);pp=p;while((H->elem[pp]!=NULL)&&(eq(tele,H->elem[pp]->tel)==-1))pp=collision(p,c);if(H->elem[pp]!=NULL&&eq(tele,H->elem[pp]->tel)==1){

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);printf(“n以下是您需要要删除的信息:nn”,c);

printf(“nn姓名t电话号tt地址n”);

printf(“_____________________________________________________n”);

printf(“%st%stt%sn”,H->elem[pp]->name,H->elem[pp]->tel,H->elem[pp]->add);

printf(“_____________________________________________________n”);

printf(“n”);

(H->elem)[pp]->tel[0]='';

printf(“删除成功!!”);} else

printf(“n此人不存在,删除不成功!n”);benGetTime();getchar();printf(“

#####n”);printf(“◇◆请按ENTER返回功能操作菜单◇◆n”);21 printf(“

#####n”);getchar();}

void Save(HashTable * H)//将记录保存到指定文件 {

system(“CLS”);

FILE* fp;

if((fp=fopen(“record.txt”,“w”))!=NULL)

{

fprintf(fp,“

#####n”);fprintf(fp,“==================== → 用户信息记录表 ← ===================n”);

fprintf(fp,“

#####n”);for(int i=0;i

{

if((H->elem)[i]!='')

{

fprintf(fp,“======n”);fprintf(fp,“联系人姓名:%sn”,H->elem[i]->name);fprintf(fp,“联系人电话:%sn”,H->elem[i]->tel);fprintf(fp,“联系人地址:%sn”,H->elem[i]->add);

fprintf(fp,“======n”);

}

}

fclose(fp);

printf(“

#####n”);printf(“==================== → 用户信息记录表 ← ===================n”);

printf(“

#####n”);

benGetTime();22

printf(“nn恭喜你!成功储存,你能在record.txt找到相应纪录n”);

printf(“

#####n”);

system(“pause”);

}

else

{

benGetTime();

printf(“抱歉,保存记录失败!”);

system(“pause”);

} }

void Load(){ system(“CLS”);ifstream inFile;inFile.open(“record.txt”);// 打开文件 string str;// 行字符串缓存

if(inFile.is_open())// 若成功打开文件

{ while(!inFile.eof())// 若未到文件结束

{ getline(inFile, str, 'n');// 读取一行内容,并存入缓存str中,'n'表示一行结束的回车符

cout << str << endl;// 把缓存内容输出到屏幕

} } inFile.close();printf(“

#####n”);printf(“◇◆请按ENTER返回功能操作菜单◇◆n”);printf(“

#####n”);getchar();}

void Quit()//结束 {

system(“cls”);23

system(“color F0”);

printf(“

n”);

printf(“☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★n”);

printf(“ 谢谢使用!再见!!n”);

printf(“☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★n”);

printf(“

n”);}

int main(int argc, char* argv[]){ system(“color F0”);system(“CLS”);//调用DOS命令CLS能够清屏 int c,flag=1;HashTable *H;H=(HashTable*)malloc(LEN);for(int i=0;ielem[i]=NULL;H->size=HASHSIZE;H->count=0;Record a[MAXSIZE];while(1){ Menu();printf(“请输入一个任务选项>>>”);int num;scanf(“%d”,&num);getchar();switch(num){ case 1:Create(a);break;case 2:Append(a);break;case 3:CreateHash(H,a);break;case 4:c=0;Find(H,c);break;case 5:c=0;Delete(H,c);break;case 6:c=0;Alter(H,c);break;case 7:List(a);break;case 8:Save(H);break;24 case 9:Load();break;

case 0:Quit();return 0;break;case 10:;;break;default: printf(“你输错了,请重新输入!”);printf(“n”);}

system(“CLS”);} return 0;}

八、测试报告

首先在编程过程中最先遇到的问题是用int整形定义电话号只能存10位,而现在手机号都为11位,用double双精度浮点型在进行哈希函数时会有错误,我们组最后经查询与询问老师后确定的解决办法是以字符串形式进行存储,哈希函数进行计算时把字符串转换成整型数。

起初我们在进行本地保存和读取是数据时是以数据块的形式进行存储但是后期遇到问题在进行修改和删除时过于复杂和繁琐,违背了程序的本意,经网上与书籍查询和老师的指导最后换为以字符进行存储.在建立哈希函数后进行的二次探测在散列的(1,-1,4,-4,9,-9。。。)的算法没有及时总结出来,最后经我组讨论以如下方法解决:

Status collision(int p,int &c)//冲突处理函数,采用二次探测再散列法解决冲突

{ int i,q;i=c/2+1;while(i=0)

{

return q;

} else

{

i=c/2+1;

} } else { q=(p-i*i)%HASHSIZE;c++;if(q>=0)

{

return q;

} else

{ i=c/2+1;

} } } return UNSUCCESS;} 第一次c传进来的值为0运行时i为1,c%2=0,c++(c为1),p+i*i(i*i=1)。

第二次c传进来的值为1运行时i仍然为1(因为i是整型),c%2不等于0,p-i*i(i*i=1),c++(c为2)。下面为程序的运行测试:

进入界面首先输入1创建通讯录;

提示创建成功输入回车直接进入添加功能;

输入添加数1,姓名电话和地址然后回车确认,提示添加成功;

回车退回选单输入2进入追加通讯信息功能;

输入2添加两个记录提示添加成功按回车回到选单;

输入3进入建表功能提示有三个记录冲突数为2,***与***冲突;

回车回到选单是,输入4进入查询功能;

输入电话号回车显示查询成功,显示信息;

如果不存在这显示不成功;

回车返回选单输入5进入删除功能,输入电话号;

显示删除信息,提示删除成功;

回车返回选单,输入6进入修改功能,输入电话号;

查询到信息则显示并提示输入新信息人,输入后提示成功;

没有提示侧人不存在;

回车返回选单,输入7查看所有信息;

回车返回选单,输入8保存信息到record.txt中;

record.txt文件中的信息;

输入9读取信息,显示所有已存信息;

回车返回选单,输入0显示再见,退出程序。

下载简单个人电话号码查询系统word格式文档
下载简单个人电话号码查询系统.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C++同学录查询系统

    #include #include #include #include #include。 #include #include using namespace std; const int N=100; int i; struct person{ char sex[5]; //性别 char tel......

    个人查询授权书

    查 询 授 权 书XX银行: 本人授权贵行在受理和管理以下涉及到本人的融资业务时,可以向中国人民银行个人信用信息基础数据库查询本人信用报告,并将包括本人的个人基本信息、信贷......

    住房公积金网上系统增减员及查询操作简单说明

    公积金网上申报系统增减员及查询操作简单说明 ——以北京为例 北京市住房公积金网站右上角有一个“住房公积金网上业务系统”,点击进入,在电脑上插入数字移动证书后,自动就识别......

    人民银行个人征信查询系统个人信用报告解读

    人民银行个人征信查询系统:个人信用报告解读 一、信用报告中的“查询时间”和“报告时间”有什么区别? 信用报告中显示的“查询时间”是指系统收到查询者提出查询请求的时间;“......

    客户信息管理查询系统服务

    客户信息管理查询系统服务;在公司官网开设客户信息服务系统,客户通过账号和密码进入个人信息系统,时时查看自己账户中的盈利情况,同时可以监督资金动向。客户可以选择资金到期之......

    车票查询系统可行性报告

    汽车客运售票系统可行性分析报告 1. 引言 引言 1.1 编写目的 对汽车客运售票系统进行可行性分析研究。 1.2 项目背景 1.2.1 名称 :汽车客运售票系统 1.2.2 开发团队:XXX,XXX,XX......

    新系统辅助查询系统开发与应用

    [内容提要:税务机关加快信息化建设是征管改革形势发展的客观需要,目前北京市地税系统信息化建设已经迈上了新的发展阶段。在推进信息化建设的过程中,顺义地税局紧密结合实际工......

    档案信息查询系统使用说明

    三门峡水力发电厂 档案查询系统使用说明 登陆网址 http://10.231.172.7/进入档案查询系统页面 在用户登录栏输入用户名,密码(都默认为个人工号) 登陆后,在页面左侧选择资料类别......