设计一个通讯录管理系统。要求:通讯录一般包括通讯者的编号、姓名、性别、电话、地址及邮编等信息还有

2024-11-23 09:19:40
推荐回答(3个)
回答(1):

不要这么费劲吧,网上有现成的,下载一个就完事了,比如肯为旎免费办公平台,它的功能比您想象的还多,除了您说的功能外,还能实现从手机导入导出(csv格式的txt文件)、分组、多选发送短信和电子邮件等等,更详细的自己下载一个试试看看吧。

回答(2):

这样的问题直接去CSDN上找吧~

回答(3):

刚好作了一个。给邮箱我。分值有点低阿…

我这个事原版,但差别不大,修改几个地方就可以了,我就不修改了!

我的百度知道ID ldyhrln 请记得采纳!!!!!!!!!
#include
#include
#define M 100
static int N=0,I=0;
struct student
{
char name[20];
char num[20];
char qq[20];
char type[10];
}stu[M];
void menu();
void add();
void find();
void alter();
void Delete();
void list();
void input();
void output();
int quit();
int Find(char []);
int Find_num(char []);
int Find_qq(char []);
int Find_type(char []);
void main()
{
int op;
menu();
while(1)
{
printf("\t\n\t\t 请选择功能(1-8):");
scanf("%d",&op);
getchar();
switch(op)
{
case 1:
printf("\n\t1.***********新增记录****************\n");
add();
break;
case 2:
printf("\n\t2.**********查找通讯录***************\n");
find();
break;
case 3:
printf("\n\t3.**********修改通讯录***************\n");
alter();
break;
case 4:
printf("\n\t4.**********删除通讯录***************\n");
Delete();
break;
case 5:
printf("\n\t5.**********显示通讯录***************\n");
list();
break;
case 6:
printf("\n\t6.*******从内存导出文件中************\n");
output();
break;
case 7:
printf("\n\t7.*******从文件导入内存中************\n");
input();
break;
break;
case 8:
printf("\n\t8.*************退出******************\n");
op=quit();
break;
default:
printf("\tNot have the function!\n");
break;
}
if(op==8)
{
printf("\n\t感谢您的使用,已退出程序!\n\t");
break;
}
else
continue;
}
}
void menu()
{
printf("\n");
printf("\t************通讯录管理菜单***********\n");
printf("\t\t1.增加新的记录\n");
printf("\t\t2.查找通讯录\n");
printf("\t\t3.修改通讯录\n");
printf("\t\t4.删除通讯录\n");
printf("\t\t5.显示全部通讯录\n");
printf("\t\t6.把通讯录导出到文件\n");
printf("\t\t7.从文件导入通讯录\n");
printf("\t\t8.退出\n");
printf("\t*************************************\n");
}
//1实现新增
void add()
{
struct student stud;
while(1)
{
printf("\n\t当前共存在%d条记录,请输入下一条:",N);
if(N==0)
{
printf("\n\t请输入姓名:");
scanf("%s",stu[N].name);
printf("\t请输入电话号码:");
scanf("%s",stu[N].num);
printf("\t请输入QQ号:");
scanf("%s",stu[N].qq);
printf("\t请输入类别(小学、初中、高中、大学):");
scanf("%s",stu[N].type);
N++;
printf("\n\t是否输入下一条(Y)?按任意键返回主菜单:");
if(getchar()=='Y'||getchar()=='y')
continue;
break;
}
printf("\n\t请输入姓名:");
scanf("%s",&stud.name);
printf("\t请输入电话号码:");
scanf("%s",&stud.num);
printf("\t请输入QQ号:");
scanf("%s",&stud.qq);
printf("\t请输入类别(小学、初中、高中、大学):");
scanf("%s",&stud.type);
if(!Find(stud.name))
{
printf("\n\t发现通讯录中存在该记录,确认新增吗(Y)?其它任意键将覆盖:");
if(getchar()=='Y'||getchar()=='y')
{
stu[N]=stud;
N++;
}
else
stu[I]=stud;
printf("\n\t操作成功!\n");
}
else
{
stu[N]=stud;
N++;
}
printf("\n\t是否输入下一条(Y)?按任意键返回主菜单:");
if(getchar()=='Y'||getchar()=='y')
continue;
break;
}
menu();
}
//2 实现查找
void find()
{
char s[20],ch,ch1;
while(1)
{
printf("\n\t****选择查找方式****");
printf("\n\t1.按姓名查找:");
printf("\n\t2.按电话号码查找:");
printf("\n\t3.按QQ查找:");
printf("\n\t4.按类别查找:");
printf("\n\t*******************\n");
printf("\n\t请输入查找方式(1-4):");
ch=getchar();
getchar();
switch(ch)
{
case '1':
printf("\n\t请输入姓名:");
gets(s);
if(Find(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!\n");
break;
case '2':
printf("\n\t请输入电话号码:");
gets(s);
if(Find_num(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!\n");
break;
case '3':
printf("\n\t请输入QQ号码:");
gets(s);
if(Find_qq(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!\n");
break;
case '4':
printf("\n\t请输入类别:");
gets(s);
if(Find_type(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!\n");
break;
default:
printf("\tHave not the function!");
printf("\t\n");
break;
}
printf("\n\t继续查找吗(Y)?,按任意键返回主菜单:");
ch1=getchar();
getchar();
if(ch1=='Y'||ch1=='y')
continue;
break;
}
menu();
}
//3 实现修改
void alter()
{
char ch,ch1,ch2,s[20];
printf("\n\t请输入要修改的姓名:");
gets(s);
if(Find(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!");
else
{
printf("\n\t*****请选择修改方式*****:");
printf("\n\t1.覆盖修改(重新输入全部信息)");
printf("\n\t2.部分修改");
printf("\n\t************************\n");
printf("\n\t请选择修改的方式(1-2):");
ch=getchar();
getchar();
switch(ch)
{
case '1':
printf("\n\t请输入姓名:");
scanf("%s",stu[I].name);
printf("\t请输入电话号码:");
scanf("%s",stu[I].num);
printf("\t请输入QQ:");
scanf("%s",stu[I].qq);
printf("\t请输入类别(小学、初中、高中、大学):");
scanf("%s",stu[I].type);
printf("\n\t修改成功! 修改后记录为:\n");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
printf("\n\t%-8s%-16s%-16s%-8s",stu[I].name,stu[I].num,stu[I].qq,stu[I].type);
break;
case '2':
while(1)
{
printf("\n\t**请选择要修改的项目:***");
printf("\n\t1.姓名");
printf("\n\t2.电话号码:");
printf("\n\t3.QQ:");
printf("\n\t4.类别:");
printf("\n\t************************\n");
printf("\n\t请输入要修改的项目(1-4):");
ch1=getchar();
getchar();
switch(ch1)
{
case '1':
printf("\n\t请输入修改后的姓名:");
scanf("%s",s);
break;
case '2':
printf("\n\t请输入修改后的电话号码:");
scanf("%s",stu[I].num);
break;
case '3':
printf("\n\t请输入修改后的QQ:");
scanf("%s",stu[I].qq);
break;
case '4':
printf("\n\t请输入修改后的类别(小学、初中、高中、大学):");
scanf("%s",stu[I].type);
break;
}
getchar();
printf("\n\t修改成功! 修改后记录为:\n");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
printf("\n\t%-8s%-16s%-16s%-8s",stu[I].name,stu[I].num,stu[I].qq,stu[I].type);
printf("\n\t继续修改(Y)?按任意键返回主菜单:");
ch2=getchar();
getchar();
if(ch2=='Y'||ch2=='y')
continue;
break;
}
break;
}
}
menu();
}
//4 实现删除
void Delete()
{
char s[20],ch;
while(1)
{
printf("\n\t请输入要删除的姓名:");
scanf("%s",s);
getchar();
if(Find(s))
{
printf("\n\t不存在该条记录,请确认是否输入有误或不存在该记录!\n");
break;
}
else
{
printf("\n\t确认删除该条记录吗(Y)?按任意键保留原纪录并返回主菜单:");
ch=getchar();
if(ch=='Y'||ch=='y')
{
for(I;Istu[I]=stu[I+1];
printf("\n\t删除成功!\n");
N-=1;
break;
}
printf("\n\t已保留原纪录!\n");
break;
}
}
menu();
}
//5 实现全部显示
void list()
{
int c=0;
for(int i=0;i{
if(c==0)
{
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
}
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c++;
}
printf("\n\t\t\t\t当前记录共有%d条!",i);
menu();
}
//6实现导出
void output()
{
FILE *fp;
if((fp=fopen("tongxunlu.txt","w"))==NULL)
printf("\n\tcan not open the file!");
for(int i=0;i{
fwrite(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("\n\t导出成功!\n");
menu();
}
//7实现导入
void input()
{
FILE *fp;
struct student stud1;
if((fp=fopen("tongxunlu.txt","r"))==NULL)
printf("\n\tcan not open the file!");
printf("\t姓名\t电话号码\tQQ\t\t类别\n");
for(int i=0;i{
fread(&stud1,sizeof(struct student),1,fp);
printf("\n\t%-8s%-16s%-16s%-8s",stud1.name,stud1.num,stud1.qq,stud1.type);
}
fclose(fp);
printf("\n\t导入成功!\n");
menu();
}
//8实现程序退出
int quit()
{
char ch;
printf("\n\t确定退出吗(Y)?按任意键返回主菜单:");
ch=getchar();
if(ch=='Y'||ch=='y')
return(8);
else
return(1);
}
//用于名字查找
int Find(char s[])
{
int i,c,c1=0;
for(i=0;i{
while(1)
{
if((strcmp(stu[i].name,s))==0)
{
I=i,c=0;
if(c1==0)
{
printf("\n\t查找成功:");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
}
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c1++;
break;
}
else
break;
}
}
if(c==0)
return(c);
else
return(1);
}
int Find_num(char s[])
{
int i,c,c1=0;
for(i=0;i{
while(1)
{
if((strcmp(stu[i].num,s))==0)
{
I=i,c=0;
if(c1==0)
{
printf("\n\t查找成功:");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
}
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c1++;
break;
}
break;
}
}
if(c==0)
return(c);
else
return(1);
}
int Find_qq(char s[])
{
int i,c,c1=0;
for(i=0;i{
while(1)
{
if((strcmp(stu[i].qq,s))==0)
{
I=i,c=0;
if(c1==0)
{
printf("\n\t查找成功:");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
}
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c1++;
break;
}
break;
}
}
if(c==0)
return(c);
else
return(1);
}
int Find_type(char s[])
{
int i,c,c1=0;
for(i=0;i{
while(1)
{
if((strcmp(stu[i].type,s))==0)
{
I=i,c=0;
if(c1==0)
{
printf("\n\t查找成功:");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
}
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c1++;
break;
}
break;
}
}
if(c==0)
return(c);
else
return(1);
}