c语言通讯录管理系统课程设计文档格式.docx

上传人:b****5 文档编号:20492408 上传时间:2023-01-23 格式:DOCX 页数:48 大小:437.91KB
下载 相关 举报
c语言通讯录管理系统课程设计文档格式.docx_第1页
第1页 / 共48页
c语言通讯录管理系统课程设计文档格式.docx_第2页
第2页 / 共48页
c语言通讯录管理系统课程设计文档格式.docx_第3页
第3页 / 共48页
c语言通讯录管理系统课程设计文档格式.docx_第4页
第4页 / 共48页
c语言通讯录管理系统课程设计文档格式.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

c语言通讯录管理系统课程设计文档格式.docx

《c语言通讯录管理系统课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《c语言通讯录管理系统课程设计文档格式.docx(48页珍藏版)》请在冰豆网上搜索。

c语言通讯录管理系统课程设计文档格式.docx

循环顺序查找插入结点的位置,其中p1指向待插入位置的前一个结点。

4、查找通讯录成员信息

查找模块search():

在通讯录中查找某人通讯信息的子函数

输入要查找的通讯者的编号或姓名,从表头顺序访问表中结点。

如果查找成功,则输出查找到的通讯者信息,返回p。

若查找失败,则输出查找失败,返回p。

5、修改通讯录成员信息

利用查找函数查找到需要修改的结点,进行修改。

6、删除通讯录成员信息

利用查找函数查找到需要修改的结点,进行删除。

7、多条件查询通讯录成员信息

关键词类型分为:

姓名,性别,地址,分组四种;

选择第一个关键词类型之后,进行相关查询;

之后第二个关键词,不需要输入相应类型,而是根据输入数据之间的差别进行匹配,从而进行相关的查询操作;

8、显示已有通讯录成员分组信息

原理同outputF();

9、添加通讯录成员分组信息

原理同insertF();

10、删除通讯录成员分组信息

原理同DeleteF();

11、退出通讯录管理系统

四、程序设计

1、本程序中所有用到的数据结构定义

//Group的单链表存储结构

structGroupInfo

{

intGnum;

charGname[20];

};

structGroup

structGroupInfoGInfo;

Group*next;

typedefGroup*GInfoList;

//Friend的单链表存储结构

structFriendInfo

charFnum[5];

charFname[8];

charsex[3];

charbirthday[11];

chartelephone1[12];

chartelephone2[12];

chartelephone3[9];

charaddr[20];

structGroupInfoFGInfo;

structFriend

structFriendInfoFInfo;

Friend*next;

typedefFriend*FInfoList;

2、基本操作

①建表:

/*尾插法建带头结点的通讯录链表createF()*/

FInfoListcreateF()

{

FILE*pRead,*pWrite;

intnCount=0;

FInfoListhead=(Friend*)malloc(sizeof(Friend));

/*申请头结点*/

Friend*p,*rear;

rear=head;

pRead=fopen(Ffilename,"

r"

);

if(NULL==pRead)exit(0);

pWrite=fopen("

friend_bin.txt"

"

wb"

if(NULL==pWrite)

fclose(pRead);

exit(0);

}

while(!

feof(pRead))

p=(Friend*)malloc(sizeof(Friend));

fscanf(pRead,"

%s%s%s%s%s%s%s%s%d\n"

p->

FInfo.Fnum,p->

FInfo.Fname,p->

FInfo.sex,p->

FInfo.birthday,p->

FInfo.telephone1,p->

FInfo.telephone2,p->

FInfo.telephone3,p->

FInfo.addr,&

p->

FInfo.FGInfo.Gnum);

fwrite(p,sizeof(structFriend),1,pWrite);

//printf("

%s\t%s\t%s\t%s\t%s\t%s\n\n%s\t%s\t%d\n\n"

FInfo.addr,p->

FInfo.groupnum);

rear->

next=p;

rear=p;

fclose(pRead);

fclose(pWrite);

Fflag=1;

rear->

next=NULL;

returnhead;

}

/*尾插法建带头结点的通讯录成员分组信息表链表createG()*/

GInfoListcreateG()

FILE*gRead,*gWrite;

intgCount=0;

GInfoListhead=(Group*)malloc(sizeof(Group));

Group*p,*rear;

gRead=fopen(Gfilename,"

if(NULL==gRead)exit(0);

gWrite=fopen("

group_bin.txt"

if(NULL==gWrite)

fclose(gRead);

feof(gRead))

p=(Group*)malloc(sizeof(Group));

fscanf(gRead,"

%d%s\n"

&

GInfo.Gnum,p->

GInfo.Gname);

fwrite(p,sizeof(structGroup),1,gWrite);

fclose(gRead);

fclose(gWrite);

Gflag=1;

②显示通讯录已有成员信息

/*输出模块outputF():

输出通讯录中联系人通讯信息的子函数*/

voidoutputF(FInfoListFhead)

Friend*p;

p=Fhead->

next;

printf("

\n\n%20s\n"

通讯录"

\n编号\t姓名\t性别\t生日\t电话号码1\t电话号码2\n\n电话号码3\t住址\t分组\n\n"

while(p!

=NULL)

printf("

p=p->

③添加通讯录成员信息

/*添加模块insertF():

向通讯录中添加某人通讯信息的子函数*/

//链表结点的插入,按编号次序有序插入

//使用两个指针变量p1和p2分别指向当前访问过的结点和下一结点。

//循环顺序查找插入结点的位置,其中p1指向待插入位置的前一个结点。

voidinsertF(FInfoListFhead,Friend*Fp)

Friend*p1,*p2;

p1=Fhead;

p2=p1->

while(p2!

=NULL&

&

strcmp(p2->

FInfo.Fnum,Fp->

FInfo.Fnum)<

0)

p1=p2;

//p1指向刚访问过的结点

p2=p2->

//p2指向下一个结点

p1->

next=Fp;

//插入p所指向的结点

Fp->

next=p2;

④查找通讯录成员信息

/*查找模块search():

在通讯录中查找某人通讯信息的子函数*/

//输入要查找的通讯者的编号或姓名,从表头顺序访问表中结点。

//如果查找成功,则输出查找到的通讯者信息,返回p。

//若查找失败,则输出查找失败,返回p。

//把汉字转化为拼音缩写的函数,如李勇->

ly

boolIn(wchar_tstart,wchar_tend,wchar_tcode)

if(code>

=start&

code<

=end)

returntrue;

returnfalse;

charconvert(wchar_tn)

if(In(0xB0A1,0xB0C4,n))return'

a'

;

if(In(0XB0C5,0XB2C0,n))return'

b'

if(In(0xB2C1,0xB4ED,n))return'

c'

if(In(0xB4EE,0xB6E9,n))return'

d'

if(In(0xB6EA,0xB7A1,n))return'

e'

if(In(0xB7A2,0xB8c0,n))return'

f'

if(In(0xB8C1,0xB9FD,n))return'

g'

if(In(0xB9FE,0xBBF6,n))return'

h'

if(In(0xBBF7,0xBFA5,n))return'

j'

if(In(0xBFA6,0xC0AB,n))return'

k'

if(In(0xC0AC,0xC2E7,n))return'

l'

if(In(0xC2E8,0xC4C2,n))return'

m'

if(In(0xC4C3,0xC5B5,n))return'

n'

if(In(0xC5B6,0xC5BD,n))return'

o'

if(In(0xC5BE,0xC6D9,n))return'

p'

if(In(0xC6DA,0xC8BA,n))return'

q'

if(In(0xC8BB,0xC8F5,n))return'

r'

if(In(0xC8F6,0xCBF0,n))return'

s'

if(In(0xCBFA,0xCDD9,n))return'

t'

if(In(0xCDDA,0xCEF3,n))return'

w'

if(In(0xCEF4,0xD188,n))return'

x'

if(In(0xD1B9,0xD4D0,n))return'

y'

if(In(0xD4D1,0xD7F9,n))return'

z'

return'

\0'

}

char*TransformToSpell(charname[]){

charchr[3];

wchar_twchr=0;

char*Spell=newchar[strlen(name)/2];

memset(Spell,0x00,sizeof(char)*strlen(name)/2+1);

for(unsignedinti=0,j=0;

i<

(strlen(name)/2);

++i)

memset(chr,0x00,sizeof(chr));

chr[0]=name[j++];

chr[1]=name[j++];

chr[2]='

wchr=0;

wchr=(chr[0]&

0xff)<

<

8;

wchr|=(chr[1]&

0xff);

Spell[i]=convert(wchr);

returnSpell;

voidsearch(FInfoListFhead)

{

charnamekey[8];

chartelephonekey[12];

charnamespell[5];

intm;

\n请选择(1:

按姓名查找2:

按姓名首字母拼音查找3:

按电话查找):

"

scanf("

%d"

m);

if(m==1)

\n请输入要查找的姓名:

%s"

namekey);

intflag=0;

//判断是否找到

inti=0,count=0;

charnum[20][5];

while(p)

{

if(strcmp(namekey,p->

FInfo.Fname)==0)

{

flag=1;

strcpy(num[i],p->

FInfo.Fnum);

i++;

count++;

}

p=p->

}

if(flag==0)printf("

\n对不起,通讯簿中没有此人的记录。

\n"

if(flag==1)

\n已查到%d条记录,分别为:

\n\n"

count);

p=Fhead->

i=0;

printf("

编号\t姓名\t性别\t生日\t电话号码1\t电话号码2\n\n电话号码3\t住址\t分组\n\n"

while(p)

if(strcmp(num[i],p->

FInfo.Fnum)==0)

{

printf("

%s\t%s\t%s\t%s\t%s\t%s\n\n%s\t%s\t%d\n"

}

p=p->

elseif(m==3)

\n请输入要查找的电话号码:

telephonekey);

if(strlen(telephonekey)==11)

while(p&

strcmp(telephonekey,p->

FInfo.telephone1)!

=0&

FInfo.telephone2)!

=0)p=p->

if(strlen(telephonekey)==8)

FInfo.telephone3)!

if((p==NULL))printf("

if((p!

=NULL))

\n已查到,记录为:

elseif(m==2)

\n输入要查找联系人的姓名缩写:

namespell);

if(strcmp(namespell,TransformToSpell(p->

FInfo.Fname))==0)

⑤修改通讯录成员信息

/*修改模块modify():

在通讯录中修改某人通讯信息的子函数*/

voidmodify(FInfoListFhead)

charch;

charkind[10],NewInfo[15];

\n没有找到要修改的通讯者!

charnum2[5];

\n请输入所要修改的通讯者的编号:

scanf("

num2);

if(strcmp(num2,p->

\n真的要修改该结点吗?

(是:

y否:

n):

scanf("

ch);

while(ch=='

{

inti=0,n;

intflag=0;

printf("

\n请输入所需修改的信息类别:

s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1