永发信息网

c++实现通讯录管理系统

答案:1  悬赏:0  手机版
解决时间 2021-07-25 20:52
  • 提问者网友:感性作祟
  • 2021-07-25 14:28

用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。

功能要求

(1)查看功能:选择此功能时,列出下列三类选择。

A 办公类 B 个人类 C 商务类 ,当选中某类时,显示出此类所有数据中的姓名和电话号码。

(2) 增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。例如

李大 13589664454 商务类 chuny@126.com

当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。

(3)拔号功能:能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字。

(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。

(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。

要求:只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读,尽量不用文件吧,用数组吧,参考一下,我不太懂,感谢!当然只有个大方向也行,具体细节我可以更改。

最佳答案
  • 五星知识达人网友:逃夭
  • 2021-07-25 15:58

凑乎着改一改用吧



要求
1内容包括姓名单位电话等 记录个数为N(N大于10)
2该系统具有对记录的增加 删除 修改 和查询等功能
3为进入该系统设计一个口令 以自己学号为口令 输入3次不正确 不能进入



#include <stdio.h>


#include <string.h>


#include <stdlib.h>


#define LEN sizeof(struct addbook)


#define MAX 100


void InitDialBook(void);


void UserInterface(void);


void Load(void);


void Add(void);


void Find(void);


void Modify(void);


void Delete(void);


void ShowAll(void);


void Save(void);


struct addbook{


int record;


char name[15];


char sex[4];


char age[4];


char addr[20];


char phone[15];


char qq[15];


char meg[40];


struct addbook *link;


};


FILE *fp;


struct addbook *p,*p1,*head,*s,*t;


main()


{


int flag;


int choice;


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


{ clrscr();


printf("\n\n\t\t\t文件不存在!\n");


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


{


printf("文件打开错误!\n");


getch();


exit(0);


}


}


if(fgetc(fp)==-1)


{


printf("\n\t\t通讯录里没有信息,现在您必须添加信息.\n");


InitDialBook();


printf("\n\t\t\t添加成功!\n");


printf("\n\t\t您若想添加更多人的信息需请重新打开程序\n");


getch();


exit(0);


}


rewind(fp);


Load();


fclose(fp);



flag = 1;


while(flag)


{


UserInterface();


printf("请输入您的选择:(0-5):");


scanf("%d",&choice);


getchar();


if(choice>=0&&choice<6)


{


switch(choice)


{


case 1:


Add();break;


case 2:


Find();break;


case 3:


ShowAll();break;


case 4:


Delete();break;


case 5:


Modify();break;


case 0:


flag = 0;


clrscr();


printf("\n\n\n\t\t\t谢谢使用本通讯录系统!!!");


printf("\n\n\t\t如果你在使用过程中有什么要求或建议请连系:");


printf("\n\n\t\t\tzzxx2001@126.com或QQ:279252614");


getch();


break;


}


}


else{


printf("输入错误,请重新选择!\n");


}


}


fp = fopen("zzxx.txt","wb");


Save();


fclose(fp); clrscr();


printf("\n\n\n\t\t\t按任意键退出!\n");


getch();


return 0;


}


void InitDialBook(void)


{


p->record = 1;


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


gets(p->name);


printf("\n\t\t请输入性别:");


gets(p->sex);


printf("\n\t\t请输入年龄:");


gets(p->age);


printf("\n\t\t请输入地址:");


gets(p->addr);


printf("\n\t\t请输入电话:");


gets(p->phone);


printf("\n\t\t请输入QQ号码:");


gets(p->qq);


printf("\n\t\t请输入个性签名:");


gets(p->meg);


p->link = NULL;


head = p;


fwrite(p,LEN,1,fp);


fclose(fp);


}


void UserInterface(void)


{ clrscr();


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


printf("\t\t\t欢迎使用通讯录管理系统");


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


printf("\n\n\t\t\t******请选择你的操作******\n");


printf("\t\t\t +-------------------------------+");


printf("\t\t\t\t\t\t | 1 增加个人信息 |\n");


printf("\t\t\t | 2 查找信息(包含删除\修改信息) |\n");


printf("\t\t\t | 3 显示所有信息 |\n");


printf("\t\t\t | 4 删除信息 |\n");


printf("\t\t\t | 5 修改信息 |\n");


printf("\t\t\t | 0 退出和保存 |\n");


printf("\t\t\t +-------------------------------+\n");


printf("\n\n\t注意!!输入数字(电话号码或QQ)要在英文状态下,中文状态无法输入!!\n\n");


}


void Load(void)


{


fread(head,LEN,1,fp);


p = head;


while(p->link!=NULL){


p1 = (struct addbook*)malloc(LEN);


p1 = p->link;


fread(p1,LEN,1,fp);


p = p->link;


}


}


void Add(void)


{


p1 = (struct addbook*)malloc(LEN);


p1->record = p->record + 1; clrscr();


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


printf("\t\t\t\t\t请输入信息\n");


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


printf("\n\t\t\t这是第%d位成员",p->record+1);


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


gets(p1->name);


printf("\n\t\t\t请输入性别:");


gets(p1->sex);


printf("\n\t\t\t请输入年龄:");


gets(p1->age);


printf("\n\t\t\t请输入地址:");


gets(p1->addr);


printf("\n\t\t\t请输入电话:");


gets(p1->phone);


printf("\n\t\t\t请输入QQ号码:");


gets(p1->qq);


printf("\n\t\t\t请输入个性签名:");


gets(p1->meg);


p1->link = NULL;


p->link = p1;


p = p1;


}


void ShowAll(void)


{


s = head;


clrscr();


printf("\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");


printf(" \t序号 姓名 性别 年龄 地址 电话 QQ号码 个性签名");


printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");


do{


printf("\t %-6d%-10s%-8s%-7s%-10s%-10s%-s%-s\n",s->record,s->name,s->sex,


s->age,s->addr,s->phone,s->qq,s->meg);


s = s->link;


}while(s!=NULL);


printf("\n\n\n\t\t\t按任意键退出!");


getch();


return;


}


void Find(void)


{


char c;


struct addbook who;


s = head;


clrscr();


printf("\n\t\t请输入要查找人的姓名:");


gets(who.name);


while((s->link!=NULL)&&(strcmp(s->name,who.name)))


{


s = s->link;


}


if((s->link==NULL)&&(strcmp(s->name,who.name)))


{


printf("\"%s\" 不存在!\n",who.name);


printf("请查对一下姓名再查找.\n");


getch();


return;


}


clrscr();


printf("\n\t\t\t\要查找的资料如下所示:\n");


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


printf("\t 序号 姓名 性别 年龄 地址 电话 QQ号码 个性签名");


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


printf("\t %-6d%-10s%-8s%-7s%-8s%-10s%-s%-s\n",s->record,s->name,s->sex,s->age,s->age,


s->addr,s->phone,s->qq,s->meg);


printf("\n\t\t删除(d)\修改(m)\浏览一下(s)\n");


printf("\n\t请输入您的选择(d/m/s):");


scanf("%c",&c);


switch(c)


{


case 'D':


case 'd':Delete();break;


case 'M':


case 'm':Modify();break;


}


}


void Modify(void)


{ getchar();


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


gets(s->name);


printf("\n\t\t请输入新的性别:");


gets(s->sex);


printf("\n\t\t请输入新的年龄:");


gets(s->age);


printf("\n\t\t请输入新的地址:");


gets(s->addr);


printf("\n\t\t请输入新的电话:");


gets(s->phone);


printf("\n\t\t请输入新的QQ号码:");


gets(s->qq);


printf("\n\t\t请输入新的个性签名:");


gets(s->meg);


printf("\n\t\t修改成功!\n");


getch();


}


void Delete(void)


{


int find_prev;


int find_record;


char del;


char del_member_name[15];


struct addbook *p_del_prev;


strcpy(del_member_name,s->name);


getchar();


printf("确定要删除%s吗(Y/N)?",del_member_name);


scanf("%c",&del);


if(del=='n'||del=='N')


{


return;


}


find_prev = s->record - 1;


find_record = 1;


p_del_prev = head;


while((p_del_prev->link!=NULL)&&(find_record<find_prev))


{


p_del_prev = p_del_prev->link;


find_record++;


}



if(s->record==1)


{


if(s->link!=NULL)


{


head = head->link;


s = head;


while(s!=NULL)


{


s->record = s->record - 1;


s = s->link;


}


printf("%d,%s",p->record,p->name);


}


else if(s->link==NULL){


p = NULL;


head = p;


if(remove("zzxx.txt")==0){


printf("您已经删除了最后一位成员,通讯录已经清空!\n");


printf("所以,您必须重新建立通讯录!\n");


printf("重新打开程序去建立.\n");


}


printf("\n\n\t\t按任意键退出.\n");


getch();


exit(0);


}


}



else if(s->record==p->record){


p_del_prev->link = NULL;


s->link = NULL;


p = p_del_prev;


}


else{


p_del_prev->link = s->link;


s->link = NULL;


while(p_del_prev->link!=NULL)


{


p_del_prev = p_del_prev->link;


p_del_prev->record = p_del_prev->record -1;


}


printf("%d\n%d\n",p->record,p->link);


}


printf("成员 \"%s\" 已经被删除.\n ",del_member_name);


getch();


}


void Save(void)


{


s = head;


do{


fwrite(s,LEN,1,fp);


s = s->link;


}while(s!=NULL);


}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯