C语言通讯X录程序设计.docx

上传人:b****8 文档编号:29725087 上传时间:2023-07-26 格式:DOCX 页数:62 大小:360.24KB
下载 相关 举报
C语言通讯X录程序设计.docx_第1页
第1页 / 共62页
C语言通讯X录程序设计.docx_第2页
第2页 / 共62页
C语言通讯X录程序设计.docx_第3页
第3页 / 共62页
C语言通讯X录程序设计.docx_第4页
第4页 / 共62页
C语言通讯X录程序设计.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

C语言通讯X录程序设计.docx

《C语言通讯X录程序设计.docx》由会员分享,可在线阅读,更多相关《C语言通讯X录程序设计.docx(62页珍藏版)》请在冰豆网上搜索。

C语言通讯X录程序设计.docx

C语言通讯X录程序设计

《程序设计综合实习[软]》

实习报告

 

学号

159074210

姓名

吴师庆

班级

软152

指导教师

潘祥

 

安徽工业大学

2016年9月

课程设计题目:

个人通讯录管理系统

一、需求分析

个人通讯录管理系统的制作,为了实现数据的输入、输出、修改、删除、查询、存、取功能。

程序的基本功能为:

1.建立联系人信息,包括姓名、电话、地址、QQ;

2.添加新的联系人信息(通讯录信息输入功能);

3.可按姓名、电话、地址、QQ排序输出显示通讯录的所有信息(显示通讯录信息功能);

4.按姓名、电话、地址、QQ查询某个联系人的信息(通讯录记录查询功能);

5.输入联系人姓名以修改某个联系人的信息(修改通讯录信息功能);

6.按姓名删除某个联系人的信息(删除通讯录信息功能);

7.将数据以文件的形式存储在磁盘上(保存通讯录信息功能)。

二、总体设计

各模块流程框图

1.main()

 

2.voidinput(PEOPLEpHead,intx)

3.voidsearch(PEOPLEpHead)

4.intshow(PEOPLEpHead)

 

开始

选显示排序依据

调用

address_

sort()

函数

调用

phone_

sort()

函数

调用

name_

sort()

函数

调用

QQ_

sort()

函数

其他键

4

3

2

1

 

按姓名顺序显示

按电话顺序显示

按地址顺序显示

按QQ顺序显示

输入错误

 

 

输出所有联系人信息

结束

 

5.voidmodify(PEOPLEpHead)

6.voiddelete_name(PEOPLEpHead,intx)

7.voidsave(PEOPLEpHead)

8.voidquit()

三、详细设计

1.新建联系人功能主控函数voidinput(PEOPLEpHead,intx)

实现添加新的联系人的功能。

voidinput(PEOPLEpHead,intx)

{

inti=0;

PEOPLEp=pHead;

while(p!

=NULL&&i

{

p=p->pNext;

++i;

}

PEOPLEpNew=(PEOPLE)malloc(sizeof(people));

if(pNew==NULL)

{

printf("动态分配内存失败!

");

exit(-1);

}

printf("\n*************************************************************************\n\n");

printf("\t\t请创建并添加联系人信息\n\n");

printf("\t\t请输入联系人姓名:

");

gets(pNew->name);

printf("\t\t请输入联系人电话:

");

gets(pNew->phone);

printf("\t\t请输入联系人地址:

");

gets(pNew->address);

printf("\t\t请输入联系人QQ:

");

gets(pNew->QQ);

printf("\n\t\t成功添加了联系人信息!

!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

PEOPLEq=p->pNext;

p->pNext=pNew;

pNew->pNext=q;

}

2.查询功能主控函数voidsearch(PEOPLEpHead)

实现可按姓名、电话、地址、QQ查询某联系人的功能,会分别调用相应的查询函数。

voidsearch(PEOPLEpHead)

{

intnum;

printf("\n*************************************************************************\n\n");

printf("\t\t\t1.按姓名查找\n");

printf("\t\t\t2.按电话查找\n");

printf("\t\t\t3.按地址查找\n");

printf("\t\t\t4.按QQ查找\n");

printf("\n\t\t选择你需要操作的功能号码(1-4):

");

num=getchar();

getchar();

switch(num)

{

case'1':

name_search(pHead);

break;

case'2':

phone_search(pHead);

break;

case'3':

address_search(pHead);

break;

case'4':

QQ_search(pHead);

break;

default:

printf("\t\t\t输入错误!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

break;

}

}

3.显示功能主控函数intshow(PEOPLEpHead)

先调用排序函数,再按相应顺序将全部联系人的信息显示到屏幕。

intshow(PEOPLEpHead)

{

intnum;

printf("\n*************************************************************************\n\n");

printf("\t\t\t1.按姓名顺序显示\n");

printf("\t\t\t2.按电话顺序显示\n");

printf("\t\t\t3.按地址顺序显示\n");

printf("\t\t\t4.按QQ顺序显示\n");

printf("\n\t\t选择你需要操作的功能号码(1-4):

");

num=getchar();

getchar();

switch(num)

{

case'1':

name_sort(pHead);

break;

case'2':

phone_sort(pHead);

break;

case'3':

address_sort(pHead);

break;

case'4':

QQ_sort(pHead);

break;

default:

printf("\t\t\t输入错误!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

return0;

}

intlen=number(pHead);

PEOPLEp=pHead->pNext;

inti;

printf("\n*************************************************************************\n");

printf("====================→用户信息记录表←===============================");

printf("\n*************************************************************************\n\n");

if(p!

=NULL)

{

for(i=0;ipNext)

{

printf("\t\t联系人姓名:

%s\n",p->name);

printf("\t\t联系人电话号码:

%s\n",p->phone);

printf("\t\t联系人地址:

%s\n",p->address);

printf("\t\t联系人QQ:

%s\n",p->QQ);

printf("\n");

if(i!

=0&&(i+1)%5==0)

{

printf("\n\t\t\t输入任意键显示下一页\n");

printf("\n*************************************************************************\n");

getchar();

}

}

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

else

{

printf("\t\t对不起!

!

没有任何人的记录!

!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

return0;

}

4.修改功能主控函数voidmodify(PEOPLEpHead)

输入要修改联系人的姓名,可显示该联系人信息,并输入该联系人新的信息。

voidmodify(PEOPLEpHead)

{

inti;

intmark=0;

intlen=number(pHead);

charname[25];

PEOPLEp=pHead->pNext;

printf("\n*************************************************************************\n");

printf("====================→用户信息修改功能←=============================");

printf("\n*************************************************************************\n\n");

printf("\t\t输入要修改联系人的姓名:

");

gets(name);

if(p!

=NULL)

{

for(i=1;i<=len;++i,p=p->pNext)

{

if(strcmp(name,p->name)==0)

{

printf("*************************以下是您要修改的用户信息******************\n\n");

printf("联系人姓名:

%s\n",p->name);

printf("联系人电话号码:

%s\n",p->phone);

printf("联系人地址:

%s\n",p->address);

printf("联系人QQ:

%s\n",p->QQ);

printf("\n*************************************************************************\n\n");

++mark;

}

break;

}

if(mark>0)

{

printf("\t\t请输入修改联系人信息\n\n");

printf("\t\t请输入联系人姓名:

");

scanf("%s",p->name);

printf("\t\t请输入联系人电话:

");

scanf("%s",p->phone);

printf("\t\t请输入联系人地址:

");

scanf("%s",p->address);

printf("\t\t请输入联系人QQ:

");

scanf("%s",p->QQ);

getchar();

printf("\n\t\t成功修改了联系人信息!

!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

else

{

printf("\n\t\t对不起!

!

没有该用户的记录!

!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

}

else

{

printf("\n\t\t对不起!

!

没有任何人的记录!

!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

}

5.删除功能主控函数voiddelete_name(PEOPLEpHead,intx)

输入要删除联系人的姓名,可显示该联系人信息,并提示是否确认删除,确认后会删除该联系人信息。

voiddelete_name(PEOPLEpHead,intx)

{

inti,pos;

intmark=0;

intlen=number(pHead);

charname[25];

PEOPLEp=pHead->pNext;

printf("\n*************************************************************************\n");

printf("====================→用户信息删除功能←=============================");

printf("\n*************************************************************************\n\n");

printf("\t\t输入要删除联系人的姓名:

");

gets(name);

if(p!

=NULL)

{

for(i=1;i<=len;++i,p=p->pNext)

{

if(strcmp(name,p->name)==0)

{

printf("*************************以下是您要删除的用户信息************************\n\n");

printf("num:

%d\n",mark+1);

printf("联系人姓名:

%s\n",p->name);

printf("联系人电话号码:

%s\n",p->phone);

printf("联系人地址:

%s\n",p->address);

printf("联系人QQ:

%s\n",p->QQ);

printf("\n*************************************************************************\n");

pos=i;

++mark;

}

}

if(mark>0)

{

printf("\n\t\t是否确定删除?

(y/n)");

if(getchar()=='y')

{

getchar();

Delete(pHead,pos);//删除节点

printf("\n\t\t删除成功!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

else

{

printf("\n\t\t已取消\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

}

else

{

printf("\n\t\t对不起!

!

没有该用户的记录!

!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

}

else

{

printf("\n\t\t对不起!

!

没有任何人的记录!

!

\n\n");

printf("请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

}

6.保存功能主控函数voidsave(PEOPLEpHead)

将所有联系人的信息保存为文本文件,用户可随时打开txt文件查看所有联系人信息。

voidsave(PEOPLEpHead)//保存函数

{

FILE*fp;

PEOPLEp=pHead->pNext;

fp=fopen("address_list.txt","w");

fprintf(fp,"*************************************************************************\n\n");

fprintf(fp,"==============→用户信息记录表←================\n");

while(p!

=NULL)

{

fprintf(fp,"\n====================================================\n\n");

fprintf(fp,"联系人姓名:

%s\n",p->name);

fprintf(fp,"联系人电话号码:

%s\n",p->phone);

fprintf(fp,"联系人地址:

%s\n",p->address);

fprintf(fp,"联系人QQ:

%s\n",p->QQ);

p=p->pNext;

}

fprintf(fp,"\n\n*************************************************************************\n");

fclose(fp);

printf("\n\t恭喜你!

!

成功储存,你能在address_list.txt找到相应纪录\n");

printf("\n请按Enter键继续");

printf("\n*************************************************************************\n");

getchar();

}

7.退出功能主控函数voidquit()

退出通讯录系统。

voidquit()

{

printf("\n\t\t感谢使用个人通讯录管理系统,再见!

\n\n");

exit(0);

}

四、调试与测试

1.显示函数intshow(PEOPLEpHead);原本设计为void型函数,但当用户没有输入任何联系人信息时,程序在显示“没有任何人信息后”,还会继续执行该函数,导致该信心重复输出。

后改为int型,用return0;控制函数结束运行。

2.删除函数voiddelete_name(PEOPLEpHead,intx);原本没有x参数。

但在main函数中,定义了i来记录联系人个数,调用voidinput(PEOPLEpHead,intx)函数时,联系人数i会加一,但删除时并没有对i进行操作,导致i只加不减,在运行删除功能后再

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

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

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