用c语言或c++做一个通讯录管理系统

2025-03-04 03:59:47
推荐回答(2个)
回答1:

#include
#include
#include
class pbook
{
int cellphone,phone;
char name[20],first,sex[10],workplace[30];
char date[15];
public:
void addin();
char* gname(){return name;}
char getf(){ return first;}
void print()
{
cout< cout< static int dele(pbook *book,int n);
static void edit(pbook *book,int n,char *name);
static void findn(pbook *book,int n,char *name);
static void findf(pbook *book,int n,char f);
static void rang(pbook *book,int n);
};
void pbook::addin()
{
cout<<"姓名:";
cin>>name;
cout< cin>>sex;
cout< cin>>workplace;
cout< cin>>cellphone;
cout< cin>>phone;
cout< cin>>date;
cout< cin>>first;
cout<}
int pbook::dele(pbook *book,int n){
int p=-2,c=n;
char name[20];cout<<"请输入姓名"< cin>>name;
for(int i=0;i {
if(strcmp(book[i].gname(),name)==0)
{
p=i;break;
}
}
if(p!=-2)
{
for(i=p;i book[i]=book[i+1];
return --c;
}
else
return c;
}
void pbook::edit(pbook *book,int n,char *name)
{ int p;
for(int i=0;i {if(strcmp(book[i].gname(),name)==0)
p=i;break;
}
book[p].addin();
cout<<"修改成功"<}
void pbook::findn(pbook *book,int n,char *sname)
{
int i;
for(i=0;i if(strcmp(book[i].gname(),sname)==0)
{
book[i].print();break;
}
if(i==n)
{
cout<<"查无此人"< }
}
void pbook::findf(pbook *book,int n,char f)
{
int p=-1;
cout< cout< for(int i=0;i {
if(book[i].getf()==f)
{
p=i;
book[p].print();
}
}
if(p==-1)cout<<"查无此人"<}
void pbook::rang(pbook *book,int n)
{
pbook m;int i,j;
for(i=1;i {
for(j=0;j if(book[i].getf()>book[i+1].getf())
{
m=book[j];
book[j]=book[j+1];
book[j+1]=m;
}
}
cout< cout< for(i=0;i book[i].print();
}
void display()
{

cout < cout<<"********************电话簿********************"< cout<<" ------- 1.添加联系人 ------- "< cout<<" ------- 2.删除联系人 ------- "< cout<<" ------- 3.显示所有联系人 ------- "< cout<<" ------- 4.修改联系人信息 ------- "< cout<<" ------- 5.按姓名查询 ------- "< cout<<" ------- 6.按首字母查询 ------- "< cout<<" ------- 7.退出系统请按 ------- "< cout<<"**********************************************"<}
void main()
{
pbook book[10];int n=0;char name[20];
int i;char j=1;char g;char a;
while(j!=0)
{
display();
cout<<"请选择菜单号(1---7):";
cin>>i;
while(!(i==1||i==2||i==3||i==4||i==5||i==6||i==7))
{
cout<<"\a\a选择错误! 请重新选择! 请选择菜单号(0---7):";
cin>>i;
}
while(i==1||i==2||i==3||i==4||i==5||i==6||i==7)
{
if(i==1)
{ n++;book[n-1].addin();}
else if(i==7)
{
cout<<"谢谢使用本系统!"< j=0;
}
else
{
if(i==2)
n=pbook::dele(book,n);
else if(i==3)
pbook::rang(book,n);
else if(i==4)
{ cout<<"请输入姓名"< cin>>name;
pbook::edit(book,n,name);
}
else if(i==5)
{
cout<<"请输入姓名"< cin>>name;
cout< cout< pbook::findn(book,n,name);
}
else
{
cout<<"请输入字符:";
cin>>g;
pbook::findf(book,n,g);
}
}
cout<<"继续请按y,否则请按n."< cin>>a;
if(a=='y'){};
if(a=='n')break;
}
cout<<"继续菜单请按y,否则请按n."< cin>>j;
}
}

回答2:

//////类似

#include
#include
#include
#include
#define N 15 //最大容量为15
typedef struct //定义一个结构
{
char name[10];
char haoma[15];
char leibie[10];
char dizhi[20];
}ren;
//菜单
void menu() //目录
{
system("cls"); //清屏
printf(" 欢迎使用手机通讯录\n");
printf("\n");
printf("=======================\n");
printf(" 1.号码添加 \n");
printf(" 2.号码查询 \n");
printf(" 3.号码修改 \n");
printf(" 4.号码删除 \n");
printf(" 5.号码拨号 \n");
printf(" 0. 退出 \n");
printf("=======================\n");
printf("\n");
printf(" 计科五班\n");

printf("请选择相应的功能:");
}
//号码添加
void input()
{
FILE *fp; //定义文件指针
ren ry,s; // 定义两个ren结构体的量
if((fp=fopen("ren.dat","ab+"))==NULL)
{printf("can't open file!\n");exit(0);}
printf("\n录入格式 姓名 号码 类别 邮箱。当输入姓名为#结束录入\n");
while(1)
{ printf("请输入姓名:");
scanf("%s",ry.name);
if(strcmp(ry.name,"#")==0) break; //如果输入#则退出添加
printf("请输入电话号码:");
scanf("%s",ry.haoma);
printf("请输入类别(A办公类B个人类C商务类):");
scanf("%s",ry.leibie);
printf("请输入邮箱地址:");
scanf("%s",ry.dizhi);
fseek(fp,0,0); //指针定位到文件开始位置
fread(&s,sizeof(ren),1,fp);
while(!feof(fp))
{ if(strcmp(s.haoma,ry.haoma)==0)
{printf("号码已经存在,不能记录.\n");break;}//遇到有相同的号码
fread(&s,sizeof(ren),1,fp);
}
if(feof(fp)) //读到自后也没有相同的号码
fwrite(&ry,sizeof(ren),1,fp); //将信息写入文件
}
fclose(fp); //关闭文件
getchar(); //接受一个输入
}

void search() //查询
{
ren ry;
FILE *fp;
char leibie[10];
system("cls");
printf("\n输入要查人员的类别: ");scanf("%s",leibie);//要查询的类别

if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
fread(&ry,sizeof(ren),1,fp);
if(!feof(fp))
{ printf(" 人员的信息如下:\n");
printf("说明:(A办公类B个人类C商务类)");
printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");
while(!feof(fp))
{
if(strcmp(ry.leibie,leibie)==0) //若为该类别则输出
{
printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
}
fread(&ry,sizeof(ren),1,fp);
}
}
else printf("查找失败!!!");
fclose(fp);
getch();
}

//修改:输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果;
void modi()
{ ren ry;
FILE *fp;
char name[10];
system("cls");
if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
if(!feof(fp))
{printf(" 修改前全部人员的信息如下:\n");
printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");
fread(&ry,sizeof(ren),1,fp);
while(!feof(fp))
{

printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
fread(&ry,sizeof(ren),1,fp);
}
}
printf("\n输入要修改人员的姓名: ");scanf("%s",name);
if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
while(!feof(fp))
{ fread(&ry,sizeof(ren),1,fp);
if(strcmp(ry.name,name)==0)
{ printf(" 修改前人员的信息如下:\n");
printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");
printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
printf("\n请输入该人的号码:");scanf("%s",ry.haoma);
printf("\n类别:");scanf("%s",ry.leibie); //新信息输入
printf("\n邮箱:");scanf("%s",ry.dizhi);
break; //修改完毕退出
}
}
if(!feof(fp))
{
printf(" \n 修改后的人的信息如下:\n");
printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");
printf("%10s %15s %10s %20s \n",ry.name,ry.haoma,ry.leibie,ry.dizhi);
fseek(fp,-sizeof(ren),1); //指针向前一位定位
fwrite(&ry,sizeof(ren),1,fp);
}
else
printf("\n此人不存在,修改失败!!");
fclose(fp);
getch();
}
//删除:输入人员姓名,若该人员存在,则删除,并显示删除后余下的人员的信息

void dele()
{ ren ry[N];
FILE *fp;
char name[10];
int i,len,k=-1;
system("cls");
printf("\n输入要删除的人员姓名: ");scanf("%s",name);
i=0;
if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
while(!feof(fp))
{ fread(&ry[i],sizeof(ren),1,fp);
if(feof(fp)) break;
if(strcmp(ry[i].name,name)==0) k=i;
i++;
}
fclose(fp);
//以下是删除后重新写文件
len=i;
if(k>=0)
{ if((fp=fopen("ren.dat","wb+"))==NULL) {printf("can't open file!\n");exit(0);}
for(i=0;i { if(i==k) continue;
fwrite(&ry[i],sizeof(ren),1,fp);
}
fclose(fp);printf("删除成功!!!\n");
}

else printf("删除失败!!!\n");
getch();
}

void bohao() //拨号
{ ren ry;
FILE *fp;
char name[10];
system("cls");
printf("\n输入要拨人员的姓名: ");scanf("%s",name);
if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
while(!feof(fp))
{ fread(&ry,sizeof(ren),1,fp);
if(strcmp(ry.name,name)==0)
{ printf("\n\a\a\a\a\a\a %15s\a\a\a\a\a\n",ry.haoma); //输出号码和声音
break;
}
}
if(feof(fp)) printf("拨号失败!!!");
fclose(fp);
getch();
}
//菜单选择

void choice()
{
char ch;
while(1)
{
menu();// 显示菜单
ch=getch();//选择菜单
if(ch=='0') break;
switch(ch)//判断功能项
{
case '1': input();break;
case '2':search();break;
case '3':modi();break;
case '4':dele();break;
case '5':bohao();break;
}
}
printf("\n欢迎使用!!!\n");
}

//主函数
void main()
{
choice();//调用菜单选择

}