c语言通讯录管理系统

阅读: 评论:0

2024年2月4日发(作者:)

c语言通讯录管理系统

C语言课程设计:

通讯录管理系统

C语言课程设计

目录

一、

需求分析………………………………………………………2

二、

概要设计………………………………………………………2

三、

详细设计………………………………………………………3

四、

上机操作………………………………………………………14

五、

实习心得………………………………………………………19

六、

源程序 ………………………………………………………20

- 1 -

C语言课程设计

一、需求分析

具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。

(1) 数据包括:人名、工作单位、电话号码和E-MAIL地址。

(2) 可对记录中的姓名和电话号码进行修改。

(3) 可增加和删除记录。

(4) 可显示所有的保存记录。

(5) 可按人名或电话号码进行查询。

[提示]

建议采用结构体数组和文件系统实现。结构体成员包括人名、工作单位、电话号码和E-MAIL地址。

根据题目的要求程序应该采用结构体数组和文件系统实现。应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。

二、概要设计

根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。

通讯录管理系统

插入 显示 删除 查询 修改 保存 退出

- 2 -

C语言课程设计

三、详细设计

1、 主函数;

主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。

流程图

开始

显示一系列功能选项

输入n,判断是否是0~6

N

Y

根据n的值调用各功能模块函数

【程序】

结束

int main() //主函数

{

Man man[500],*pman=man;;

char control;

int size;

printf("tt**********************************************n"); //窗口初始化

printf("tt********** 欢迎使用通讯录管理系统! ***********n");

printf("tt*--------------------------------------------*n");

printf("tt* 请按回车键继续! *n");

printf("tt**********************************************n");

- 3 -

C语言课程设计

scanf("%c",&control);

if(control)

{

size=Scan(pman); //判断文件是否存在

printf("ttt请输入相应操作数操作n");

for(;;) //菜单生成

{

printf("tt**********************************************n");

printf("tt* 1--插入信息 *n");

printf("tt* 2--按姓名查找 *n");

printf("tt* 3--按电话查找 *n");

printf("tt* 4--删除信息 *n");

printf("tt* 5--显示信息 *n");

printf("tt* 6--修改信息 *n");

printf("tt* 0--退出系统 *n");

printf("tt**********************************************n");

scanf("%s",&control);

switch(control)

{

case '1': size=Insert(pman,size);break; //插入新的通讯录

case '2': S_asname(pman,size);break; //按姓名查找

case '3': S_astel(pman,size);break; //按电话查找

case '4': Delete(pman,size);break; //删除信息

case '5': Display(pman,size);break; //显示所有信息

case '6': Modify(pman,size);break; //修改信息

case '0': printf("**************谢谢使用!再见!**************n"); //退出系统

return 0;

default: printf("**********输入数字有误,请重新输入**********n");break;

}

}

}

return 0;

}

2、 插入模块

此模块为插入信息模块,插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。

流程图

- 4 -

C语言课程设计

开始

输入要插入的记录个数n

i从0到n-1调用Insert函数

Y保存调用Save函数

i!=0吗?

N

返回主菜单

结束

【程序】

int Insert(Man * pMan,int Size) //插入模块

{

int i,n;

printf("tt***********请输入要插入数据的个数.************n");

printf("tt**********************************************n");

scanf("%d",&n);

for(i=0;i

{ printf("您将要录入第%d条记录(共有%d条)n",i+1,n);

printf("请输入姓名:n");

scanf("%s",&pMan[Size+i].Name);

printf("请输入工作单位:n");

scanf("%s",&pMan[Size+i].Depart);

printf("请输入电话号码:n");

scanf("%s",&pMan[Size+i].TEL);

printf("请输入Email地址:n");

scanf("%s",&pMan[Size+i].Email);

}

if(Save(pMan,Size+n))

{

printf("tt*********** 恭喜!数据插入成功! ***********n");

}

else

{

printf("tt*********** 操作失败,请稍后再试 !***********n");

- 5 -

C语言课程设计

}

}

return Size+n;

3、 显示模块

此模块为显示所有记录,流程图如下:

选择显示功能

显示所有记录

自动返回主菜

【程序】

void Display(Man * pMan,int Size) //显示所有记录

{

int i;

printf("t人名t 工作单位t 电话号码t E-mail地址n");

printf("t************************************************************n");

for(i=0;i<=Size;i++,pMan++)//依次输出文件中的信息

{

printf("t%stt%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("t-----------------------------------------------------------n");

}

}

4、 查找模块

- 6 -

C语言课程设计

本模块分为按姓名查找和按电话查找两个子模块。

4.1按姓名查找模块,流程图如下:

开始

输入姓名

Y

显示找到的记录

是否找到此姓名

N

提示没有找到

结束,返回主菜单

【程序】

void S_asname(Man * pMan,int Size) //查找信息

{

int i=0;

char name[8];

printf("tt***********请输入要查询信息的姓名:***********n");

printf("tt**********************************************n");

scanf("%s",name);

while(iName,name))//查找

{

pMan++;

i++;

}

if(!strcmp(pMan->Name,name))//找到后输出

{

printf("tt***************查到的信息为: ***************n");

printf("t*************************************************************n");

printf("t人名t 工作单位t 电话号码t E-mail地址n");

printf("t*************************************************************n");

printf("t%stt%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("t*************************************************************n");

}

- 7 -

C语言课程设计

else

{

printf("tt***********抱歉,没有找到相关数据 ************n");

printf("tt**********************************************n");

}

}

4.2按电话查找模块,此模块与按姓名查找模块相似,流程图略。

【程序】

void S_astel(Man * pMan,int Size) //按电话查找模块

{

int i=0;

char tel[12];

printf("tt***********请输入要查询信息的电话:************n");

printf("tt**********************************************n");

scanf("%s",tel);

while(iTEL,tel)) //查找信息

{

pMan++;

i++;

}

if(!strcmp(pMan->TEL,tel)) //输出找到的信息

{

printf("tt****************查到的信息为: ****************n");

printf("t*******************************************************n");

printf("t人名t 工作单位t 电话号码t E-mail地址n");

printf("t*******************************************************n");

printf("t%stt%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("t*******************************************************n");

}

else

{

printf("tt************抱歉,没有找到相关数据 ************n");

printf("tt**********************************************n");

}

}

5、 删除模块

此模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息,此种调用到Save函数。其流程图如下:

- 8 -

C语言课程设计

开始

输入要修改信息的姓名

Y

显示找到的信息

是否找到信息

N

提示没有找到信息

Y

提示删除成功

提示是否删除

N

提示未删除

结束

【程序】

void Delete(Man * pMan,int Size)//删除信息

{

char name[8],control;

int i=0;

printf("tt***********请输入要删除信息的姓名: ***********n");

printf("tt**********************************************n");

scanf("%s",name);

while(iName,name))//同查找,找到后跳出

{

pMan++;

i++;

}

if(!strcmp(pMan->Name,name)) //找到了,删除信息!做出判断.

{

printf("您要删除的信息为:n");

printf("%stt%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("是否确认删除?(Y/N)n");

scanf("%s",&control);

switch(control)

{

case 'y':

pMan->Name[0]='0';

pMan->Depart[0]='0';

pMan->TEL[0]='0';

pMan->Email[0]='0';

- 9 -

C语言课程设计

}

if(Save(pMan,Size))//将新信息写入文件

{

printf("tt**************恭喜!信息删除成功!**************n");;

printf("tt**********************************************n");break;

}

else

{

printf("tt************操作失败,请稍后再试! *************n");

printf("tt**********************************************n");break;

}

case 'n':printf("信息未删除!n");break;

default:printf("选择有误!n");break;

}

}

else

{

printf("tt*********抱歉,没有找到相关信息! *********n");

printf("tt******************************************n");

}

6、 修改模块

此模块先调用查找函数查找到所要修改的信息,然后用户根据需要来修改信息。流程图如下:

开始

输入要修改记录的姓名

Y

显示要修改的信息

是否找到信息

N

提示未找到信息

修改需要修改的条目,并保存

结束

- 10 -

C语言课程设计

【程序】

void Modify(Man * pMan,int Size) //修改模块

{

void Display();

int i=0;

char name[8];

char depart[20];

char tel[12];

char email[30];

printf("tt************输入要修改信息的姓名:************n");

printf("tt**********************************************n");

scanf("%s",name);

while(iName,name))//遍历数组,查找数据,若查到跳出循环

{

pMan++;

i++;

}

if(!strcmp(pMan->Name,name))//如果找到,则开始修改

{

printf("请输入修改后的姓名:n");

scanf("%s",name);

strcpy(pMan->Name,name);

printf("请输入修改后的工作单位:n");

scanf("%s",depart);

strcpy(pMan->Depart,depart);

printf("请输入修改后的电话号码:n");

scanf("%s",tel);

strcpy(pMan->TEL,tel);

printf("请输入修改后的E-mail地址:n");

scanf("%s",email);

strcpy(pMan->Email,email);

if(Save(pMan,Size)) //将修改信息写入文件,并判断是否写入成功

{

printf("tt**************恭喜!信息修改成功!**************n");;

printf("tt**********************************************n");

}

else

{

printf("tt*************操作失败,请稍后再试!*************n");

printf("tt**********************************************n");

}

}

else

- 11 -

C语言课程设计

}

{

printf("tt************抱歉,没有找到相关信息!************n");

printf("tt**********************************************n");

}

7、 其他模块

7.1结构体定义

【程序】

struct Man //定义结构体

{

char Name[8]; //名字

char Depart[20]; //工作单位

char TEL[12]; //电话号码

char Email[30]; //邮箱

};

7.2保存模块

【程序】

int Save(Man * pMan,int Size) //把数据写入文件

{

int i;

FILE * out;

out=fopen("","w");

if(out==NULL)//判断文件打开成功与否

{

printf("tt************文件打开失败 !************n");

printf("tt**********************************************n");

return 0;

}

for(i=0;i

{

fprintf(out,"%st%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

}

fclose(out);

return 1;

}

7.3浏览模块

【程序】

- 12 -

C语言课程设计

int Scan(Man * pMan) //从文本中读取数据

{

printf("tt**********正在读取文件信息,请稍后! ***********n");

int i;

FILE * in=fopen("","r");

if(in==NULL) //判断文件是否打开成功

{

printf("tt*********** 文件打开失败 ! ***********n");

return 0;

}

for(i=0;!feof(in);i++,pMan++)//打开成功后一一读取,直到读完为止

fscanf(in,"%s%s%s%s",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

fclose(in);

printf("tt************* 文件数据读入成功 !*************n");

return (i-1);

}

7.4 getch()函数

【程序】

void getch()

{

char stop;

printf("n确认?(按任意键并回车返回!)n");

getchar();

scanf("%c",&stop);

return;

}

四、上机操作

1、已有文件信息 ()

name depart phone email

kongcug71092152******************

gong

cug71092159******************2、要插入的信息

- 13 -

C语言课程设计

name depart phone email

lijicug71091138******************chencug71091139******************3、各模块功能的实现

(1)窗口的初始化

(2)主菜单

(3)显示所有信息

(4)插入信息

第一条

- 14 -

C语言课程设计

第二条

(6) 按姓名查找模块

- 15 -

C语言课程设计

(7) 按电话查找模块

(8) 删除没有的信息

删除已有信息

- 16 -

C语言课程设计

取消删除

确认删除

- 17 -

C语言课程设计

(9)退出系统

五、实习心得

在老师的带领下进行了C语言程序实践学习。在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。在这之前,我们已经对C语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。

C语言是需要有一定基础、而且动手能力强的学科。上机实验是学习程 - 18 -

C语言课程设计

序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、巩固贯穿系统知识、掌握程序设计方法、提高程序设计能力,这些都必须通过充分的实际上机操作才能完成。

课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。

这次上机实习让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。相信对以后初步掌握开发一个小型实用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。

我认为,这次实习对于我是非常有意义的,对我个人的影响比较大,对我的动手能力有了很大的提高。在体会到程序成功后的快乐后,发现自己也逐步喜欢上了这门语言,对以后的专业知识的学习也会很有帮助。最后感谢在实习过程中帮助过我的老师和同学,正是你们的帮助才有了这次实习的成功!

- 19 -

C语言课程设计

#include

#include

struct Man

{

char Name[8];

char Depart[20];

char TEL[12];

char Email[30];

};

void getch()

{

六、源程序 //定义结构体

//名字

//工作单位

//电话号码

//邮箱

- 20 -

C语言课程设计

char stop;

printf("n确认?(按任意键并回车返回!)n");

getchar();

scanf("%c",&stop);

return;

}

int Scan(Man * pMan) //从文本中读取数据

{

printf("tt**********正在读取文件信息,请稍后! ***********n");

int i;

FILE * in=fopen("","r");

if(in==NULL) //判断文件是否打开成功

{

printf("tt*********** 文件打开失败 ! ***********n");

return 0;

}

for(i=0;!feof(in);i++,pMan++)//打开成功后一一读取,直到读完为止

fscanf(in,"%s%s%s%s",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

fclose(in);

printf("tt************* 文件数据读入成功 !*************n");

return (i-1);

}

int Save(Man * pMan,int Size) //把数据写入文件

{

int i;

FILE * out;

out=fopen("","w");

if(out==NULL)//判断文件打开成功与否

{

printf("tt************文件打开失败 !************n");

printf("tt**********************************************n");

return 0;

}

for(i=0;i

{

fprintf(out,"%st%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

}

fclose(out);

return 1;

}

- 21 -

C语言课程设计

int Insert(Man * pMan,int Size) //插入模块

{

int i,n;

printf("tt***********请输入要插入数据的个数.************n");

printf("tt**********************************************n");

scanf("%d",&n);

for(i=0;i

{ printf("您将要录入第%d条记录(共有%d条)n",i+1,n);

printf("请输入姓名:n");

scanf("%s",&pMan[Size+i].Name);

printf("请输入工作单位:n");

scanf("%s",&pMan[Size+i].Depart);

printf("请输入电话号码:n");

scanf("%s",&pMan[Size+i].TEL);

printf("请输入Email地址:n");

scanf("%s",&pMan[Size+i].Email);

}

if(Save(pMan,Size+n))

{

printf("tt*********** 恭喜!数据插入成功! ***********n");

}

else

{

printf("tt*********** 操作失败,请稍后再试 !***********n");

}

return Size+n;

}

void Modify(Man * pMan,int Size) //修改模块

{

void Display();

int i=0;

char name[8];

char depart[20];

char tel[12];

char email[30];

printf("tt************输入要修改信息的姓名:************n");

printf("tt**********************************************n");

scanf("%s",name);

while(iName,name))//遍历数组,查找数据,若查到跳出循环

{

- 22 -

C语言课程设计

pMan++;

i++;

}

if(!strcmp(pMan->Name,name))//如果找到,则开始修改

{

printf("请输入修改后的姓名:n");

scanf("%s",name);

strcpy(pMan->Name,name);

printf("请输入修改后的工作单位:n");

scanf("%s",depart);

strcpy(pMan->Depart,depart);

printf("请输入修改后的电话号码:n");

scanf("%s",tel);

strcpy(pMan->TEL,tel);

printf("请输入修改后的E-mail地址:n");

scanf("%s",email);

strcpy(pMan->Email,email);

if(Save(pMan,Size)) //将修改信息写入文件,并判断是否写入成功

{

printf("tt**************恭喜!信息修改成功!**************n");;

printf("tt**********************************************n");

}

else

{

printf("tt*************操作失败,请稍后再试!*************n");

printf("tt**********************************************n");

}

}

else

{

printf("tt************抱歉,没有找到相关信息!************n");

printf("tt**********************************************n");

}

}

void Delete(Man * pMan,int Size)//删除信息

{

char name[8],control;

int i=0;

printf("tt***********请输入要删除信息的姓名: ***********n");

printf("tt**********************************************n");

scanf("%s",name);

while(iName,name))//同查找,找到后跳出

- 23 -

C语言课程设计

{

pMan++;

i++;

}

if(!strcmp(pMan->Name,name)) //找到了,删除信息!做出判断.

{

printf("您要删除的信息为:n");

printf("%stt%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("是否确认删除?(Y/N)n");

scanf("%s",&control);

switch(control)

{

case 'y':

pMan->Name[0]='0';

pMan->Depart[0]='0';

pMan->TEL[0]='0';

pMan->Email[0]='0';

if(Save(pMan,Size))//将新信息写入文件

{

printf("tt**************恭喜!信息删除成功!**************n");;

printf("tt**********************************************n");break;

}

else

{

printf("tt************操作失败,请稍后再试! *************n");

printf("tt**********************************************n");break;

}

case 'n':printf("信息未删除!n");break;

default:printf("选择有误!n");break;

}

}

else

{

printf("tt*********抱歉,没有找到相关信息! *********n");

printf("tt******************************************n");

}

}

void Display(Man * pMan,int Size) //显示所有记录

{

int i;

printf("t人名t 工作单位t 电话号码t E-mail地址n");

printf("t************************************************************n");

- 24 -

C语言课程设计

for(i=0;i<=Size;i++,pMan++)//依次输出文件中的信息

{

printf("t%stt%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("t-----------------------------------------------------------n");

}

}

void S_asname(Man * pMan,int Size) //查找信息

{

int i=0;

char name[8];

printf("tt***********请输入要查询信息的姓名:***********n");

printf("tt**********************************************n");

scanf("%s",name);

while(iName,name))//查找

{

pMan++;

i++;

}

if(!strcmp(pMan->Name,name))//找到后输出

{

printf("tt***************查到的信息为: ***************n");

printf("t*************************************************************n");

printf("t人名t 工作单位t 电话号码t E-mail地址n");

printf("t*************************************************************n");

printf("t%stt%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("t*************************************************************n");

}

else

{

printf("tt***********抱歉,没有找到相关数据 ************n");

printf("tt**********************************************n");

}

}

void S_astel(Man * pMan,int Size) //按电话查找模块

{

int i=0;

char tel[12];

printf("tt***********请输入要查询信息的电话:************n");

printf("tt**********************************************n");

scanf("%s",tel);

- 25 -

C语言课程设计

while(iTEL,tel)) //查找信息

{

pMan++;

i++;

}

if(!strcmp(pMan->TEL,tel)) //输出找到的信息

{

printf("tt****************查到的信息为: ****************n");

printf("t*******************************************************n");

printf("t人名t 工作单位t 电话号码t E-mail地址n");

printf("t*******************************************************n");

printf("t%stt%st%st%sn",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("t*******************************************************n");

}

else

{

printf("tt************抱歉,没有找到相关数据 ************n");

printf("tt**********************************************n");

}

}

int main() //主函数

{

Man man[500],*pman=man;;

char control;

int size;

printf("tt**********************************************n"); //窗口初始化

printf("tt********** 欢迎使用通讯录管理系统! ***********n");

printf("tt*--------------------------------------------*n");

printf("tt* 请按回车键继续! *n");

printf("tt**********************************************n");

scanf("%c",&control);

if(control)

{

size=Scan(pman); //判断文件是否存在

printf("ttt请输入相应操作数操作n");

for(;;) //菜单生成

{

printf("tt**********************************************n");

printf("tt* 1--插入信息 *n");

printf("tt* 2--按姓名查找 *n");

printf("tt* 3--按电话查找 *n");

- 26 -

C语言课程设计

printf("tt* 4--删除信息 *n");

printf("tt* 5--显示信息 *n");

printf("tt* 6--修改信息 *n");

printf("tt* 0--退出系统 *n");

printf("tt**********************************************n");

scanf("%s",&control);

switch(control)

{

case '1': size=Insert(pman,size);break; //插入新的通讯录

case '2': S_asname(pman,size);break; //按姓名查找

case '3': S_astel(pman,size);break; //按电话查找

case '4': Delete(pman,size);break; //删除信息

case '5': Display(pman,size);break; //显示所有信息

case '6': Modify(pman,size);break; //修改信息

case '0': printf("**************谢谢使用!再见!**************n"); //退出系统

return 0;

default: printf("**********输入数字有误,请重新输入**********n");break;

}

}

}

return 0;

}

- 27 -

c语言通讯录管理系统

本文发布于:2024-02-04 09:36:40,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170701060153124.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信息   C语言   修改   输入   文件   删除   模块   查找
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23