个人通讯录管理c语言课程设计 2.docx

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

个人通讯录管理c语言课程设计 2.docx

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

个人通讯录管理c语言课程设计 2.docx

个人通讯录管理c语言课程设计2

安徽工业大学

《C语言课程设计》实习综合报告

课题名称:

个人通讯录管理系统

实习成员:

王刚

学号:

109074372

专业班级:

网络工程103班

指导教师:

郑啸老师

一.问题描述……………………………………………..2

二.各功能流程图与设计思路…………………………..3

2.1显示模块……………………………………….……3

2.2查找模块……………………………………………4..

2.3添加模块…………………………………………..…6

2.4删除模块………………………………………..……8

2.5修改模块…………………………………………..…9

三、文件的读取与保存…………………………………….11

四、程序源代码……………………………………….……12

五、调试与运行结果…………………………………….…18

六、计算机学院课程设计评定意见……………………….24

一.问题描述

设计通讯录包含以下功能:

(1)通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。

(2)输入功能:

可以一次完成若干条信息的输入。

(3)显示功能:

完成全部通讯录信息的显示。

(4)查找功能:

可以按姓名等多种方式查找通讯信息。

(5)增加、删除、修改功能:

完成通讯录信息的多种更新。

二.各功能流程图与设计思路

Menu菜单:

运用switch()进行操作:

case'1':

显示功能,list()函数

说明:

利用for循环,逐个输出已保存的内容

代码如下:

//*****************显示通讯录中的内容*************

voidlist()

{printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

for(i=0;i

{if(rec[i].name[0])

{printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,

rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);

}

}printf("\t\t\t----------------END--------------\n");

}

case'2':

查找功能,search()函数

说明:

先用switch让操作者选择是按姓名查找还是按编号查找,然后再按操作者的输入,逐个判断是否有操作者要查的联系人信息,若有则输出此人信息,若没有则输出“通讯录中没有您要查找的联系人”

代码如下:

//*****************查找联系人的信息********************

voidsearch()

{charxm[10];

charch;

intd;

printf("→1.按姓名查找\n");

printf("→2.按编号查找\n");

printf("请选择...\n");

ch=getchar();

getchar();

switch(ch)

{case'1':

printf("输入查找的姓名\n");

gets(xm);

for(i=0;i

{if(strcmp(xm,rec[i].name)==0)

{printf("\t\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆☆\n\n");

printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,

rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);

break;}

}

if(i==m)

printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n");

break;

case'2':

printf("输入查找的编号\n");

scanf("%d",&d);

for(i=0;i

{if(d==rec[i].num)

{printf("\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆\n\n");

printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,

rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);

break;

}

}

if(i==m)

printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n");

break;

default:

printf("输入错误!

");

}

getchar();

}

case'3':

增加功能,app()函数

说明:

按照屏幕的提示,依次输入要添加联系人的各项信息,并保存到结构体当中,输入完成后,提示是否继续添加,若是,则进入循环,若否,则结束。

代码如下:

//*******************添加联系人*******************

voidapp()

{charan;

puts("当前通讯录中的内容\n");

list();

do

{rec[m].num=m+1;

printf("请按照提示输入新添加记录的各项信息\n");

printf("姓名:

");

gets(rec[m].name);

printf("\n电话:

");

gets(rec[m].tel);

printf("\n手机:

");

gets(rec[m].celtel);

printf("\n工作单位:

");

gets(rec[m].dw);

printf("\nEMAIL:

");

gets(rec[m].email);

printf("\nQQ:

");

gets(rec[m].qq);

puts("\n这是新添加联系人的信息!

\n");

printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[m].num,rec[m].name,

rec[m].tel,rec[m].celtel,rec[m].dw,rec[m].email,rec[m].qq);

m++;

puts("\t\t\t☆☆☆☆☆新纪录输入完成!

☆☆☆☆☆\n");

puts("☆继续添加吗?

(y/n)");

an=getchar();

getchar();

}while(an=='y');

}

case'4':

删除功能,dele()函数;

说明:

输入要删除的编号,判断是否存在,若不存在就要重新输入,若存在,则利用循环进行删除操作,从要删除的编号开始,逐个由后一项往前一项覆盖。

代码如下:

//*****************删除联系人的记录********************

voiddele()

{inta;

intn=0;

list();

do

{n++;

if(n>1)

{printf("没有此记录,请重新输入...\n");}

printf("删除几号记录?

\n");

scanf("%d",&a);

}while(a>m&&a>0||a<0);

if(a!

=m+1)

{for(i=a;i

{rec[i-1]=rec[i];

rec[i-1].num=i;

}

m--;

list();

printf("\t\t\t☆☆☆☆☆完成删除!

☆☆☆☆☆\n");

}

getchar();

}

case'5':

修改功能,correct()函数;

说明:

输入修改的编号,判断是否存在,若存在则输出此人初始信息,再按提示输入修改后的新信息,若不存在,则结束操作。

代码如下:

//*******************修改联系人的信息*****************

voidcorrect()

{charxm[10];

boolk=1;

list();

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

");

gets(xm);

for(i=0;i

{if(strcmp(xm,rec[i].name)==0)

{k=0;

printf("\n这是您要修改联系人的初始信息\n\n");

printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,

rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);

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

");

gets(rec[i].tel);

printf("\n请输入修改后的手机:

");

gets(rec[i].celtel);

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

");

gets(rec[i].dw);

printf("\n请输入修改后的EMAIL:

");

gets(rec[i].email);

printf("\n请输入修改后的QQ:

");

gets(rec[i].qq);

list();

printf("\t\t\t☆☆☆☆☆修改完成!

☆☆☆☆☆\n");

break;}

}

if(k)

printf("输入有误,通讯录中没有此联系人信息\n");

}

三.文件的读取与保存

读取:

//***************从文件读记录到通讯录中*****************

voidload()

{FILE*fp;

if((fp=fopen("tongxunlu.txt","rb"))==NULL)

{printf("Can'topenfile\n");

exit(0);}

for(i=0;i

{if(fread(&rec[i],sizeof(structrecord),1,fp)!

=1)

{if(feof(fp))break;

printf("Filereaderror!

\n");}

rec[i].num=i+1;

m++;

}

list();

printf("\t\t\t☆☆☆☆☆读取成功!

☆☆☆☆☆\n");

fclose(fp);

}

保存:

//******************保存通讯录内容到文件中*************

voidsave()

{FILE*fp;

if((fp=fopen("tongxunlu.txt","wb"))==NULL)

{printf("Can'topenfile");

exit(0);}

list();

for(i=0;i

if(fwrite(&rec[i],sizeof(structrecord),1,fp)!

=1)

printf("Filewreteerror!

\n");

fclose(fp);

printf("\t\t\t☆☆☆☆☆保存成功!

☆☆☆☆☆\n");

}

四.程序源代码

#include

#include

#include

#defineSIZE100

inti,m=0;//m为当前通讯录中的记录数

charmenu();//选单

voidlist();//显示

voidsearch();//查找

voidapp();//增加

voiddele();//删除

voidcorrect();//修改

voidsave();//保存

voidload();//读入

structrecord//结构体包含的联系人信息

{intnum;//在通讯录中的编号

charname[10];//联系人姓名

chartel[12];//联系人电话号码

charceltel[12];//联系人手机号码

chardw[20];//联系人工作单位

charemail[20];//联系人邮箱

charqq[12];//联系人QQ

}rec[SIZE];

voidmain()

{charchoice;

charan;

while

(1)

{choice=menu();

switch(choice)

{case'1':

printf("显示通讯录中的内容\n");

list();break;

case'2':

printf("查找联系人\n");

search();break;

case'3':

printf("增加联系人记录\n");

app();break;

case'4':

printf("删除记录\n");

dele();break;

case'5':

printf("修改联系人信息\n");

correct();break;

case'6':

printf("保存通讯录到TXT文件\n");

save();break;

case'7':

printf("从TXT文件中读取记录\n");

load();break;

case'8':

printf("即将退出通讯录管理系统...\n");

printf("是否保存刚才进行的操作y/n?

\n");

an=getchar();

if(an=='y')

{save();}

printf("(按任意键退出)");

break;

default:

printf("输入错误!

");

}

if(choice=='8')break;

printf("\n按任意键返回....\n");getchar();

}

}

//*********************菜单**********************

charmenu()

{charc;

printf("------------☆欢迎使用☆------------\n\n");

printf("*************简易通讯录*************\n");

printf("☆1.显示通讯录\n");

printf("☆2.查找联系人\n");

printf("☆3.增加联系人\n");

printf("☆4.删除联系人\n");

printf("☆5.修改通讯录\n");

printf("☆6.保存到文件\n");

printf("☆7.从文件读取\n");

printf("☆8.退出此系统\n");

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

printf("\n请选择………\n\n");

c=getchar();

getchar();

returnc;

}

//*****************显示通讯录中的内容*************

voidlist()

{printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

for(i=0;i

{if(rec[i].name[0])

{printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,

rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);

}

}printf("\t\t\t----------------END--------------\n");

}

//*******************添加联系人*******************

voidapp()

{charan;

puts("当前通讯录中的内容\n");

list();

do

{rec[m].num=m+1;

printf("请按照提示输入新添加记录的各项信息\n");

printf("姓名:

");

gets(rec[m].name);

printf("\n电话:

");

gets(rec[m].tel);

printf("\n手机:

");

gets(rec[m].celtel);

printf("\n工作单位:

");

gets(rec[m].dw);

printf("\nEMAIL:

");

gets(rec[m].email);

printf("\nQQ:

");

gets(rec[m].qq);

puts("\n这是新添加联系人的信息!

\n");

printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[m].num,rec[m].name,

rec[m].tel,rec[m].celtel,rec[m].dw,rec[m].email,rec[m].qq);

m++;

puts("\t\t\t☆☆☆☆☆新纪录输入完成!

☆☆☆☆☆\n");

puts("☆继续添加吗?

(y/n)");

an=getchar();

getchar();

}while(an=='y');

}

//*****************查找联系人的信息********************

voidsearch()

{charxm[10];

charch;

intd;

printf("→1.按姓名查找\n");

printf("→2.按编号查找\n");

printf("请选择...\n");

ch=getchar();

getchar();

switch(ch)

{case'1':

printf("输入查找的姓名\n");

gets(xm);

for(i=0;i

{if(strcmp(xm,rec[i].name)==0)

{printf("\t\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆☆\n\n");

printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,

rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);

break;}

}

if(i==m)

printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n");

break;

case'2':

printf("输入查找的编号\n");

scanf("%d",&d);

for(i=0;i

{if(d==rec[i].num)

{printf("\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆\n\n");

printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,

rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);

break;

}

}

if(i==m)

printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n");

break;

default:

printf("输入错误!

");

}

getchar();

}

//*****************删除联系人的记录********************

voiddele()

{inta;

intn=0;

list();

do

{n++;

if(n>1)

{printf("没有此记录,请重新输入...\n");}

printf("删除几号记录?

\n");

scanf("%d",&a);

}while(a>m&&a>0||a<0);

if(a!

=m+1)

{for(i=a;i

{rec[i-1]=rec[i];

rec[i-1].num=i;

}

m--;

list();

printf("\t\t\t☆☆☆☆☆完成删除!

☆☆☆☆☆\n");

}

getchar();

}

//*******************修改联系人的信息*****************

voidcorrect()

{charxm[10];

boolk=1;

list();

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

");

gets(xm);

for(i=0;i

{if(strcmp(xm,rec[i].name)==0)

{k=0;

printf("\n这是您要修改联系人的初始信息\n\n");

printf("编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n");

printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,

rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);

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

");

gets(rec[i].tel);

printf("\n请输入修改后的手机:

");

gets(rec[i].celtel);

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

");

gets(rec[i].dw);

printf("\n请输入修改后的EMAIL:

");

gets(rec[i].email);

printf("\n请输入修改后的QQ:

");

gets(rec[i].qq);

list();

printf("\t\t\t☆☆☆☆☆修改完成!

☆☆☆☆☆\n");

break;}

}

if(k)

printf("输入有误,通讯录中没有此联系人信息\n");

}

//******************保存通讯录内容到文件中*************

voidsave()

{FILE*fp;

if((fp=fopen("tongxunlu.txt","wb"))==NULL)

{printf("Can'topenfile");

exit(0);}

list();

for(i=0;i

if(fwrite(&rec[i],sizeof(structrecord),1,fp)!

=1)

printf("Filewreteerror!

\n");

fclo

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

当前位置:首页 > 高等教育 > 管理学

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

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