C++ 个人通讯录管理系统程序 跪求!!!

编写简单的个人通讯录管理,其功能包括•增加新的联系人•删除旧的联系人•编辑已有联系人•根据各项指标查找联系人•... 编写简单的个人通讯录管理,其功能包括
•增加新的联系人
•删除旧的联系人
•编辑已有联系人
•根据各项指标查找联系人
•查看所有联系人
•通讯录备份和恢复功能(读写文件)
展开
 我来答
ahcc08
2015-01-02 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51934
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部
#include <stdio.h>
#include <stdlib.h> 
#include <string.h>
#include <iostream>
using namespace std;

#define maxlen 15
struct persons
{
    int num;     
    char name[20]; 
    char e_addr[20];
    char tel_no[15];
    char sim_no;
    char arch;
}persons[maxlen];

typedef struct lnode{ 
    int num;
    char name[20];
    char e_addr[20];
    char tel_no[15];
    char sim_no;
    char arch;
    struct lnode *next;
}listnode,*linklist;

linklist head=NULL,r=NULL; 
listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;
int i;
char name1[10],ch;char tel_no1[15];char arch1;char sim_no1;char e_addr1[20];
char s1[20];
FILE *fp; 

void creat()

    int j;
    long k;
    fp=fopen("数据文件.txt","r t"); 
    if(fp!=NULL)
    {for(i=0;i<=maxlen;i++ )
    { j=fgetc(fp);
    if(j==EOF)
        return;
    k=i;
    fseek(fp,k*sizeof(struct persons),0); 
    fread(&persons[i],sizeof(struct persons),1,fp);

    s=(linklist)malloc(sizeof(listnode));
    s->num=persons[i].num;
    strcpy(s->name,persons[i].name);
    strcpy(s->e_addr,persons[i].e_addr);
    strcpy(s->tel_no,persons[i].tel_no);
    s->sim_no=persons[i].sim_no;
    s->arch=persons[i].arch;
    if(head==NULL) 
    {head=s;r=head;head->next=NULL;}
    else
    {r->next=s;
    r=s;r->next=NULL;
    }}fclose(fp);}
    else
    { fp=fopen("数据文件.txt","w"); 
    i=1;
    }
}
void ShowA()
{p1=head;

while(p1!=NULL)
{if(p1->arch=='A')
{
    cout<<endl;
    cout<<p1->name<<endl;
    cout<<p1->tel_no<<endl;
    cout<<p1->sim_no<<endl;}
p1=p1->next;continue;}
}
void ShowB()
{p1=head;

while(p1!=NULL)
{if(p1->arch=='B')
{
    cout<<endl;
    cout<<p1->name<<endl;
    cout<<p1->tel_no<<endl;
    cout<<p1->sim_no<<endl;}
p1=p1->next;continue;}
}
void ShowC()
{p1=head;

while(p1!=NULL)
{if(p1->arch=='C')
{
    cout<<endl;
    cout<<p1->name<<endl;
    cout<<p1->tel_no<<endl;
    cout<<p1->sim_no<<endl;}
p1=p1->next;continue;}
}
void Show()
{char ch1;
printf("                 Which arch do you want to show?\n");
cout<<"                  A:同学同事"<<"B:家人"<<"C:其他"<<endl;
cout<<"请选择:"<<endl;
cin>>ch1;
switch(ch1)
{case'A':ShowA();break;
case'B':ShowB();break;
case'C':ShowC();break;
default:cout<<"error"<<endl;
}
}

void Delete() 
{ printf("\n\n\t          请输入要删除用户的姓名:");

cin>>name1;
p4=head;
if(strcmp(p4->name,name1)==0)
{ p4=p4->next; 
head=p4;
}
else
{ while(strcmp(p4->next->name,name1)!=0)
p4=p4->next;
p5=p4->next;
p4->next=p5->next;
free(p5);
}

void Input() 
{ s=(linklist)malloc(sizeof(listnode));

printf("\n\n\t            请输入该用户的信息:");

cout<<"name:";
cin>>s->name;
cout<<"tel_no:";
cin>>s->tel_no;
cout<<"sim_no:";
cin>>s->sim_no;
cout<<"e_addr:";
cin>>s->e_addr;
cout<<"arch:";
cin>>s->arch;

if(head==NULL)printf("\n\n");
else
{p8=head;
while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0)
p8=p8->next;
if(p8!=NULL)
{printf("                 您添加的用户已存在!");
free(s);}}

if(head==NULL)
{head=s;head->next=NULL;}
else
{r->next=s;
r=s;r->next=NULL;}
}

void Alter() 
{

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

    cin>>name1;
    p3=head;
    while(p3!=NULL&&strcmp(name1,p3->name)!=0)
        p3=p3->next;
    if(p3==NULL)
        printf("\n\n\t             您选择的用户不存在!");
    else
    { printf("\n\n\t           请输入该用户的新信息!"); 

    cout<<"name:";
    cin>>name1;
    cout<<"tel_no:";
    cin>>tel_no1;
    cout<<"e_addr:";
    cin>>e_addr1;
    cout<<"sim_no:";
    cin>>sim_no1;
    cout<<"arch:";
    cin>>arch1;
    while(p9!=NULL&&strcmp(name1,p9->name)!=0&&strcmp(tel_no1,p9->tel_no)!=0)
        p9=p9->next;
    if(p9==NULL)
    {strcpy(p3->name,name1);
    strcpy(p3->tel_no,tel_no1);
    strcpy(p3->e_addr,e_addr1);
    p3->sim_no=sim_no1;
    p3->arch=arch1;
    }
    else
        printf("                    您添加的用户已存在!");

    }
}
void Dial()
{int a;char b;
cout<<"1.拨叫用户:"<<endl;
cout<<"2.使用单键拨号:"<<endl;
cin>>a;
p0=head;
if(a==1)
{cout<<"                    请输入拨叫用户的姓名:";
cin>>name1;
while(strcmp(name1,p0->name)!=0&&p0!=NULL)
p0=p0->next;
if(p0==NULL)
cout<<"                     您选择的用户不存在!";
else 
/*for(c=0;c<15;c++)
{cout<<endl;
cout<<(*p0).tel_no[c];}*/
{cout<<endl;
cout<<p0->tel_no;
cout<<endl;}
}
else 
{cout<<"请输入单键号码:";
cin>>b;
while(p0!=NULL&&b!=p0->sim_no)
p0=p0->next;
if(p0==NULL)
cout<<"                     您输入的单键号码不存在!";
else
{cout<<endl;
cout<<p0->name<<endl;
cout<<p0->tel_no;
cout<<endl;}
}
}

void Save() 
{ int j;
fp=fopen("数据文件.txt","w");
for(p2=head,j=0;p2!=NULL;j++ ,p2=p2->next)

    strcpy(persons[j].name,p2->name);
    strcpy(persons[j].tel_no,p2->tel_no);
    persons[j].sim_no=p2->sim_no;
    strcpy(persons[j].e_addr,p2->e_addr);
    persons[j].arch=p2->arch;
    fwrite(&persons[j],sizeof(struct persons),1,fp);
}
}

void main()
{ creat();
do
{
    printf("          **********************************************************");
    printf("\n\n\n\n\t                         欢迎来到通讯录!");
    printf("\n\n\t\t                  请选择操作:");
    printf("\n\t\t1.                显示通讯录");
    printf("\n\t\t2.                删除通讯录");

    printf("\n\t\t3.                添加通讯录");
    printf("\n\t\t4.                编辑通讯录");
    printf("\n\t\t5.                拨号功能");
    printf("\n\t\t6.                保存刚才的操作并退出\n");
    printf("          **********************************************************");
    printf("\n\n\n");
    printf("\t        选择您想要的操作:");
    cin>>ch;
    switch(ch)
    { case '1': Show(); 
    break;
    case '2': Delete();
        break;
    case '3': Input();
        break;
    case '4': Alter();
        break;
    case '5': Dial();
        break;
    case '6': Save();
        fclose(fp);
        exit(0);
        break;
    default:
        printf("\n\t*********************************\n");
        printf("\n\t The num should 1-6!!! \n");
        printf("\n\t**********************************");
        break;
    }
}while(1);
}

吉祥安康678
2019-11-29 · TA获得超过455个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:11.2万
展开全部
#include<iostream>
#include<string>
using namespace std;
#define MAX 1000
struct Person
{
string m_Name;
int m_Sex;
int m_Age;
string m_Phone;
string m_Addr;
};
struct Addressbooks
{
struct Person personArray[MAX];
int m_Size;
};
void addPerson(Addressbooks*abs)
{
if(abs->m_Size==MAX)
{
cout<<"通讯录已满,无法添加!"<<endl;
return;
}
else
{
cout<<"请输入名字:"<<endl;
string name;
cin>>name;
abs->personArray[abs->m_Size].m_Name=name;
cout<<"请输入性别:"<<endl;
cout<<"1=>男"<<endl;
cout<<"2=>女"<<endl;
int sex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_Size].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
cout<<"请输入年龄:"<<endl;
int age=0;
cin>>age;
abs->personArray[abs->m_Size].m_Age=age;
cout<<"请输入电话号码:"<<endl;
string phone;
cin>>phone;
abs->personArray[abs->m_Size].m_Phone=phone;
cout<<"请输入家庭住址"<<endl;
string address;
cin>>address;
abs->personArray[abs->m_Size].m_Addr=address;
abs->m_Size++;
cout<<"添加成功"<<endl;
}
system("pause");
system("cls");
}
void showPerson(Addressbooks*abs)
{
if(abs->m_Size==0)
{
cout<<"当前记录为空"<<endl;
}
else
{
for(int i=0;i<abs->m_Size;i++)
{
cout<<"姓名:"<<abs->personArray[i].m_Name<<" ";
cout<<"性别:"<<(abs->personArray[i].m_Sex==1?"男":"女")<<" ";
cout<<"年龄:"<<abs->personArray[i].m_Age<<" ";
cout<<"电话:"<<abs->personArray[i].m_Phone<<" ";
cout<<"住址:"<<abs->personArray[i].m_Addr<<endl;
}
}
system("pause");
system("cls");
};
int isExist(Addressbooks*abs,string name)
{
for(int i=0;i<abs->m_Size;i++)
{
if(abs->personArray[i].m_Name==name)
{
return i;
}
}
return -1;
}
void deletePerson(Addressbooks*abs)
{
cout<<"请输入您要删除的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if(ret!=-1)
{
for(int i=ret;i<abs->m_Size;i++)
{
abs->personArray[i]=abs->personArray[i+1];
}
abs->m_Size--;
cout<<"删除成功"<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
}
void findPerson(Addressbooks*abs)
{
cout<<"请输入您要查找的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if(ret!=1)
{
cout<<"姓名:"<<abs->personArray[ret].m_Name<<" ";
cout<<"性别:"<<(abs->personArray[ret].m_Sex==1?"男":"女")<<" ";
cout<<"年龄:"<<abs->personArray[ret].m_Age<<" ";
cout<<"电话:"<<abs->personArray[ret].m_Phone<<" ";
cout<<"住址:"<<abs->personArray[ret].m_Addr<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
void modifyPerson(Addressbooks*abs)
{
cout<<"请输入您要修改的联系人"<<endl;
string name;
cin>>name;
int ret=isExist(abs,name);
if(ret!=-1)
{
cout<<"请输入名字:"<<endl;
string name;
cin>>name;
abs->personArray[abs->m_Size].m_Name=name;
cout<<"请输入性别:"<<endl;
cout<<"1=>男"<<endl;
cout<<"2=>女"<<endl;
int sex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_Size].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
cout<<"请输入年龄:"<<endl;
int age=0;
cin>>age;
abs->personArray[abs->m_Size].m_Age=age;
cout<<"请输入电话号码:"<<endl;
string phone;
cin>>phone;
abs->personArray[abs->m_Size].m_Phone=phone;
cout<<"请输入家庭住址"<<endl;
string address;
cin>>address;
abs->personArray[abs->m_Size].m_Addr=address;
abs->m_Size++;
cout<<"修改成功"<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
void cleanPerson(Addressbooks*abs)
{
abs->m_Size=0;
cout<<"通讯录已清空"<<endl;
system("pause");
system("cls");
}
void showMenu()
{
cout<<"**********通讯录**********"<<endl;
cout<<"*******1.添加联系人*******"<<endl;
cout<<"*******2.显示联系人*******"<<endl;
cout<<"*******3.删除联系人*******"<<endl;
cout<<"*******4.查找联系人*******"<<endl;
cout<<"*******5.修改联系人*******"<<endl;
cout<<"*******6.清空通讯录*******"<<endl;
cout<<"*******0.退出通讯录*******"<<endl;
cout<<"**************************"<<endl;
cout<<"请输入您的选择"<<endl;
}
int main()
{
Addressbooks abs;
abs.m_Size=0;
int select=0;
while(true)
{
showMenu();
cin>>select;
switch(select)
{
case 1:
addPerson(&abs);
break;
case 2:
showPerson(&abs);
break;
case 3:
deletePerson(&abs);
system("pause");
system("cls");
break;
case 4:
findPerson(&abs);
break;
case 5:
modifyPerson(&abs);
break;
case 6:
cleanPerson(&abs);
break;
case 0:
{
cout<<"欢迎您下一次使用"<<endl;
return 0;
}
break;
default:
{
cout<<"输入有误,请重新输入"<<endl;
system("pause");
system("cls");
}
}
}
system("pause");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式