c语言程序设计通讯录管理系统.docx
《c语言程序设计通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《c语言程序设计通讯录管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
c语言程序设计通讯录管理系统
文件排版存档编号:
[UYTR-OUPT28-KBNTL98-UYNN208]
c语言程序设计通讯录管理系统
1.需求分析
根据题目要求,通讯录保存在文件中,要提供文件的输入和输出功能;还有就是要提供通讯录添加(个人信息包括姓名、学号、年龄、住址、电子邮件等)、删除、显示、修改等基本功能。
2.概要设计
系统总体设计是信息的输入、信息的编辑和退出。
系统功能模块如下:
1.添加通讯录;
2.输出通讯录;
3.查找通讯录;
4.修改通讯录;
5.删除通讯录;
6.退出通讯录;
3.详细设计
1.通讯录里无信息,所以要添加信息。
用键盘逐个输入通讯录里联系人的信息。
2.输出通讯录用于让使用者观看通讯录里所有的信息。
3.查找通讯录是让使用者可以通过电话或姓名来查找通讯录里的联系人。
4.修改通讯录是让使用者通过姓名查找到通讯录里的联系人,然后其作出修改。
5.删除通讯录是用来按照联系人的姓名或电话来单独删除通讯录中一些不想要的联系人。
还可以集体删除通讯录中的联系人。
6.退出通讯录系统。
4.主要源程序代码
#include<>
#include<>
#include<>
#include<>
structrecord
{
charname[20];
charage[20];
charphone[20];
charadress[40];
charnumber[30];
chare_mail[20];
}contact[500];
intNO=0;
FILE*fp;
voidmainmenu();
voidnewrecord();
voidbrowsemenu();
voidsearchmenu();
voidsearchname();
voidsearchphone();
voidmodifymenu();
voiddeletemenu();
voiddeleteall();
voiddeletesingle();
voiddeletename();
voiddeletephone();
intloadfile();
voidsavefile();
voidmain()
{printf("\n\t\t:
)欢迎使用通讯录管理系统beta");
printf("\n\t\t文件导入中……请稍后……\n\n\n\n\n");
system("cls");
loadfile();
while
(1)
{
mainmenu();
}
}
voidmainmenu()
{
charchoice;
system("cls");
printf("\n\t\t********************主菜单********************");
printf("\n\t\t******************1-新建菜单******************");
printf("\n\t\t******************2-浏览菜单******************");
printf("\n\t\t******************3-查找菜单******************");
printf("\n\t\t******************4-修改菜单******************");
printf("\n\t\t******************5-删除菜单******************");
printf("\n\t\t******************6-退出******************");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:
");
choice=getch();
switch(choice)
{
case'1':
newrecord();break;
case'2':
browsemenu();break;
case'3':
searchmenu();;break;
case'4':
modifymenu();break;
case'5':
deletemenu();break;
case'6':
exit(0);
default:
mainmenu();
}
}
voidnewrecord()
{
printf("\n\t\t****************请输入联系人信息****************\n");
printf("\n\t\t输入姓名:
");
scanf("%s",&contact[NO].name);
printf("\n\t\t输入年龄:
");
scanf("%s",&contact[NO].age);
printf("\n\t\t输入电话号码:
");
scanf("%s",&contact[NO].phone);
printf("\n\t\t输入家庭住址:
");
scanf("%s",&contact[NO].adress);
printf("\n\t\t输入学号:
");
scanf("%s",&contact[NO].number);
printf("\n\t\t输入电子邮件:
");
scanf("%s",&contact[NO].e_mail);
NO++;
savefile();
printf("\n\t\t是否继续添加?
(y/n):
");
if(getch()=='y')
newrecord();
return;
}
voidbrowsemenu()
{
inti;
system("cls");
if(NO!
=0)
{
printf("\n\t\t***************以下为通讯录所有信息************");
for(i=0;i{
printf("\n\t\t姓名:
%s",contact[i].name);
printf("\n\t\t年龄:
%s",contact[i].age);
printf("\n\t\t联系电话:
%s",contact[i].phone);
printf("\n\t\t家庭住址:
%s",contact[i].adress);
printf("\n\t\t学号:
%s",contact[i].number);
printf("\n\t\t电子邮件:
%s",contact[i].e_mail);
printf("\t\t");
if(i+1{
printf("\n\t\t__________________________");
system("pause");
}
}
printf("\n\t\t************************************************");
}
else
printf("\n\t\t通讯录中无任何纪录");
printf("\n\t\t按任意键返回主菜单:
");
getch();
return;
}
voidsearchmenu()
{
charchoice;
system("cls");
printf("\n\t\t*******************查找菜单*******************");
printf("\n\t\t*****************1-按姓名查找*****************");
printf("\n\t\t*****************2-按电话查找*****************");
printf("\n\t\t*****************3-返回主菜单*****************");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:
");
choice=getch();
switch(choice)
{
case'1':
searchname();break;
case'2':
searchphone();break;
case'3':
mainmenu();break;
}
}
voidsearchname()
{
intmark=0;
inti;
inta=0;
charname[20];
printf("\n\t\t*****************按姓名查找*******************");
printf("\n\t\t请输入姓名:
");
scanf("%s",name);
for(i=a;i{
if(strcmp(contact[i].name,name)==0)
{
printf("\n\t\t************以下是您查找的联系人信息**********");
printf("\n\t\t姓名:
%s",contact[i].name);
printf("\n\t\t年龄:
%s",contact[i].age);
printf("\n\t\t联系电话:
%s",contact[i].phone);
printf("\n\t\t家庭住址:
%s",contact[i].adress);
printf("\n\t\t学号:
%s",contact[i].number);
printf("\n\t\t电子邮件:
%s",contact[i].e_mail);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单:
");
mark++;
getch();
return;
return;
}
}
if(mark==0)
{printf("\n\t\t没有该姓名的联系人纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
voidsearchphone()
{
intmark=0;
inti;
inta=0;
charphone[10];
printf("\n\t\t******************按电话查找******************");
printf("\n\t\t请输入电话:
");
scanf("%s",phone);
for(i=0;i{
if(strcmp(contact[i].phone,phone)==0)
{
printf("\n\t\t*************以下是您查找的联系人信息*********");
printf("\n\t\t姓名:
%s",contact[i].name);
printf("\n\t\t年龄:
%s",contact[i].age);
printf("\n\t\t联系电话:
%s",contact[i].phone);
printf("\n\t\t家庭住址:
%s",contact[i].adress);
printf("\n\t\t学号:
%s",contact[i].number);
printf("\n\t\t电子邮件:
%s",contact[i].e_mail);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单:
");
mark++;
getch();
return;
}
}
if(mark==0)
{
printf("\n\t\t没有该联系人信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
voidmodifymenu()
{intmark=0;
inti,k;
inta=0;
intt=0;
charchoice;
charname[20];
structrecordmodify;
system("cls");
printf("\n\t\t请输入您要修改的姓名:
");
scanf("%s",name);
for(i=a;i{
if(strcmp(contact[i].name,name)==0)
{k=i;mark=1;
modify=contact[i];
printf("\n\t\t**********以下是您将修改的联系人信息**********");
printf("\n\t\t姓名:
%s",contact[i].name);
printf("\n\t\t年龄:
%s",contact[i].age);
printf("\n\t\t联系电话:
%s",contact[i].phone);
printf("\n\t\t家庭住址:
%s",contact[i].adress);
printf("\n\t\t学号:
%s",contact[i].number);
printf("\n\t\t电子邮件:
%s",contact[i].e_mail);
printf("\n\t\t是否继续y/n");
if(getch()=='n')
modifymenu();
else
{printf("\n\t\t选择您要修改的选项:
");
printf("\n\t\t\t
(1).姓名");
printf("\n\t\t\t
(2).年龄");
printf("\n\t\t\t(3).联系电话");
printf("\n\t\t\t(4).家庭住址");
printf("\n\t\t\t(5).学号");
printf("\n\t\t\t(6).电子邮件");
printf("\n\t\t\t(7).返回");
printf("\n\t\t请选择:
");
choice=getch();
switch(choice)
{case'1':
printf("姓名:
");scanf("%s",contact[i].name);break;
case'2':
printf("年龄:
");scanf("%s",contact[i].age);break;
case'3':
printf("联系电话:
");scanf("%s",contact[i].phone);break;
case'4':
printf("家庭住址:
");scanf("%s",contact[i].adress);break;
case'5':
printf("学号:
");scanf("%s",contact[i].number);break;
case'6':
printf("电子邮件:
");scanf("%s",contact[i].e_mail);break;
case'7':
mainmenu();break;
default:
modifymenu();
}
printf("\n\t\t您的修改结果为:
");
printf("\n\t\t姓名:
%s",contact[i].name);
printf("\n\t\t年龄:
%s",contact[i].age);
printf("\n\t\t联系电话:
%s",contact[i].phone);
printf("\n\t\t家庭住址:
%s",contact[i].adress);
printf("\n\t\t学号:
%s",contact[i].number);
printf("\n\t\t电子邮件:
%s",contact[i].e_mail);
printf("\n\t\t确认修改y/n");
if(getch()=='n')
{contact[i]=modify;
printf("\n\t\t修改未保存!
");
}
elseprintf("\n\t\t修改成功!
");
savefile();mark=0;
printf("\n\t\t是否继续修改?
(y/n)");
if(getch()=='y')
modifymenu();
}
}
}
if(mark==0)
{
printf("\n\t\t没有该联系人的纪录");
printf("\n\t\t是否继续修改?
(y/n)");
if(getch()=='y')
modifymenu();
}
return;
}
voiddeletemenu()
{
charchoice;
if(NO==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
system("cls");
printf("\n\t\t*******************删除菜单*******************");
printf("\n\t\t******************1-删除所有******************");
printf("\n\t\t******************2-删除单个******************");
printf("\n\t\t*****************3-返回主菜单*****************");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:
");
choice=getch();
switch(choice)
{
case'1':
deleteall();break;
case'2':
deletesingle();break;
case'3':
mainmenu();break;
default:
mainmenu();
}
}
voiddeleteall()
{
printf("\n\t\t确认删除?
(y/n)");
if(getch()=='y')
{
if((fp=fopen("contact","w"))==0)
{
printf("\n\t\t不能打开文件,删除失败");
loadfile();
}
NO=0;
printf("\n\t\t纪录已删除,按任意键返回主菜单");
getch();
fclose(fp);
return;
}
else
return;
}
voiddeletesingle()
{
charchoice;
printf("\n\t\t\t1-按姓名删除");
printf("\n\t\t\t2-按号码删除");
printf("\n\t\t\t3-返回删除菜单");
printf("\n\t\t请选择:
");
choice=getch();
switch(choice)
{
case'1':
deletename();break;
case'2':
deletephone();break;
case'3':
deletemenu();break;
}
}
voiddeletename()
{
inti,j;
intmark=0;
charname[20];
printf("\n\t\t请输入要删除联系人姓名:
");
scanf("%s",name);
if(NO==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
for(i=0;i{
if(strcmp(contact[i].name,name)==0)
{
printf("\n\t\t以下是您要删除的联系人纪录:
");
printf("\n\t\t姓名:
%s",contact[i].name);
printf("\n\t\t年龄:
%s",contact[i].age);
printf("\n\t\t联系电话:
%s",contact[i].phone);
printf("\n\t\t家庭住址:
%s",contact[i].adress);
printf("\n\t\t学号:
%s",contact[i].number);
printf("\n\t\t电子邮件:
%s",contact[i].e_mail);
printf("\n\t\t是否删除?
(y/n)");
if(getch()=='y')
{
for(j=i;jcontact[j]=contact[j+1];
NO--;
mark++;
printf("\n\t\t删除成功");
savefile();
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')
deletename();
return;
}
else
return;
}
continue;
}
if(mark==0)
{
printf("\n\t\t没有该联系人的纪录");
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')
deletename();
return;
}
}
voiddeletephone()
{
inti,j;
intmark=0;
charphone[20];
printf("\n\t\t请输入要删除联系电话:
");
scanf("%s",phone);
if(NO==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
for(i=0;i{
if(strcmp(contact[i].phone,phone)==0)
{
printf("\n\t