上次不是写了一个车票管理系统么,那个系统我写的时间挺长的,我觉得对C语言的熟练度还不太够,所以这次我又写了个通讯录管理系统,由于代码比较长(一千多行),我就不在这里完全展示了,只展示部分代码,也算是再巩固一下我的C语言功底。
目录
题目要求:
1.菜单界面
2.添加联系人
3.删除联系人
4.查找联系人
4.1编号查询
5.修改联系人
题目要求:
通讯录管理系统
问题描述
对通讯录中多个联系人信息管理,通讯录中的个人信息包括:编号、姓名、单位、住址、电话号码1、电话号码2、电子邮箱、QQ 号、分组标签。
基本要求
(1) 能建立、修改和增删通讯录。
(2) 能显示通讯录中所有联系人的信息。
(3) 能根据电话号码来查询。注意每个联系人有2个电话号码。还能够按多种方式进行查询,如按姓名。按单位查询或分组标签进行查询,查询到符合条件的所有联系人。
(4) 支持模糊查询。即输入部分信息,把符合条件的联系人全部显示出来,如输入电话号码的部分信息“136”,可以将电话号码中所有含有136的联系人全部显示。
(5) 可以提供不同方式的排序显示。如按姓名排序、按单位显示、按单位或分组标签排序显示。
(6) 通讯录提供菜单方式。要求:界面友好,易于操作
1.菜单界面//菜单界面
void ShowMenu()
{
printf("t================================n");
printf("t====欢迎使用通讯录管理系统!====n");
printf("t================================n");
printf("t======t 1、添加联系人t ======n");
printf("t======t 2、显示联系人t ======n");
printf("t======t 3、删除联系人t ======n");
printf("t======t 4、查找联系人t ======n");
printf("t======t 5、修改联系人t ======n");
printf("t======t 6、清空联系人t ======n");
printf("t======t 7、退出通讯录t ======n");
printf("t================================n");
printf("t================================n");
}
2.添加联系人
//1添加联系人
void AddPerson(struct Addressbooks* p)
{
if(p->m_Size == MAX)
{
printf("通讯录已满!");
return;
}
else
{
int i;
//编号
long long id;
printf("请输入联系人编号:n");
scanf("%lld",&id);
p->personArray [p->m_Size ].m_Id=id;
//姓名
char name[NAME];
printf("请输入联系人姓名:n");
scanf("%s",name);
strcpy(p->personArray [p->m_Size ].m_Name,name);
//单位
char unit[UNIT];
printf("请输入联系人单位:n");
scanf("%s",unit);
strcpy(p->personArray [p->m_Size ].m_Unit,unit);
//住址
char addr[ADDR];
printf("请输入联系人住址:n");
scanf("%s",addr);
strcpy(p->personArray [p->m_Size ].m_Addr,addr);
//电话1
char phone1[PHONE];
printf("请输入联系人电话1:n");
scanf("%s",phone1);
strcpy(p->personArray [p->m_Size ].m_Phone1,phone1);
//电话2
char phone2[PHONE];
printf("请输入联系人电话2:n");
scanf("%s",phone2);
strcpy(p->personArray [p->m_Size ].m_Phone2,phone2);
//电子邮箱
char email[E_MAIL];
printf("请输入联系人邮箱:n");
scanf("%s",email);
strcpy(p->personArray [p->m_Size ].m_Email,email);
//QQ号
long long qq;
printf("请输入联系人QQ:n");
scanf("%lld",&qq);
p->personArray [p->m_Size ].m_QQ=qq;
//分组标签
char group[GROUP];
printf("请输入联系人分组:n");
ShowGroup();
scanf("%s",group);
while(strcmp(group,"亲人")&&strcmp(group,"朋友")&&strcmp(group,"同学")&&strcmp(group,"同事") != 0)
{
printf("您输入的分组有误,请重新输入!n");
printf("请输入联系人分组:n");
ShowGroup();
scanf("%s",group);
}
strcpy(p->personArray [p->m_Size ].m_Group,group);
}
//更新通讯录信息
printf("添加成功!n");
p->m_Size++;
system("pause");
system("cls");
}
3.删除联系人
//3删除联系人
void DeletePerson(struct Addressbooks* p)
{
char name[NAME];
int Exist = 0,i = 0,j = 0; //判断联系人是否存在
printf("请输入您想删除的联系人姓名:n");
scanf("%s",name);
for(i = 0;i < p->m_Size ;i++)
{
if(strcmp(p->personArray [i].m_Name,name) == 0)
{
Exist = 1;
for(j = 0;j < p->m_Size ;j++)
{
//数组前移实现删除操作
p->personArray [j]=p->personArray [j+1];
}
//更新数据
printf("删除成功!n");
p->m_Size --;
}
}
if(Exist == 0)
printf("未找到此人!n");
system("pausen");
system("cls");
}
4.查找联系人
//4查找联系人
void FindPerson(struct Addressbooks* p)
{
int F_select = 0;
printf("请输入您需要查找的联系人信息:n");
printf("1、编号查询n");
printf("2、姓名查询n");
printf("3、单位查询n");
printf("4、住址查询n");
printf("5、电话查询n");
printf("6、邮箱查询n");
printf("7、QQ号查询n");
printf("8、分组查询n");
scanf("%d",&F_select);
switch(F_select)
{
case 1:
{
void Find_Id_Person(struct Addressbooks* p);
Find_Id_Person(p);
break;
}
case 2:
{
void Find_Name_Person(struct Addressbooks* p);
Find_Name_Person(p);
break;
}
case 3:
{
void Find_Unit_Person(struct Addressbooks* p);
Find_Unit_Person(p);
break;
}
case 4:
{
void Find_Addr_Person(struct Addressbooks* p);
Find_Addr_Person(p);
break;
}
case 5:
{
void Find_Phone_Person(struct Addressbooks* p);
Find_Phone_Person(p);
break;
}
case 6:
{
void Find_Email_Person(struct Addressbooks* p) ;
Find_Email_Person(p);
break;
}
case 7:
{
void Find_QQ_Person(struct Addressbooks* p);
Find_QQ_Person(p);
break;
}
case 8:
{
void Find_Group_Person(struct Addressbooks* p);
Find_Group_Person(p);
break;
}
default:
break;
}
}
具体的查找函数就不在这里一一赘述了,就举一个例子
4.1编号查询//4.1 编号查询
void Find_Id_Person(struct Addressbooks* p)
{
long long F_id;
int i,Exist = 0;
printf("请输入您要查询的联系人编号:n");
scanf("%lld",&F_id);
for(i = 0;i < p->m_Size ;i++)
{
if(p->personArray [i].m_Id == F_id)
{
Exist = 1;
printf("编号:%-10lldt",p->personArray [i].m_Id);
printf("姓名:%-10st",p->personArray [i].m_Name);
printf("单位:%-10st",p->personArray [i].m_Unit);
printf("住址:%-10st",p->personArray [i].m_Addr);
printf("电话1:%-10sn",p->personArray [i].m_Phone1);
printf("电话2:%-10st",p->personArray [i].m_Phone2);
printf("电子邮箱:%-10st",p->personArray [i].m_Email);
printf("QQ:%-10lldt",p->personArray [i].m_QQ);
printf("分组:%-10sn",p->personArray [i].m_Group);
}
}
if(Exist == 0)
{
printf("未找到此人!n");
}
system("pausen");
system("cls");
}
5.修改联系人
//5修改联系人
void AmendPerson(struct Addressbooks* p)
{
printf("请输入您要修改的联系人姓名:n");
char A_name[NAME];
scanf("%s",A_name);
int i,Exist = 0;
for(i = 0;i < p->m_Size ;i++)
{
if(strcmp(p->personArray [i].m_Name,A_name) == 0)
{
Exist = 1;
printf("请输入您要修改该联系人的信息:n");
printf("1——编号t2——姓名t3——单位n");
printf("4——住址t5——电话t6——邮箱n");
printf("7——QQtt8——分组n");
int amend = 0;
scanf("%d",&amend);
switch(amend)
{
case 1:
{
void Amend_Id_Person(struct Addressbooks* p,char name[NAME]);
Amend_Id_Person(p,A_name);
break;
}
case 2:
{
void Amend_Name_Person(struct Addressbooks* p,char name[NAME]);
Amend_Name_Person(p,A_name);
break;
}
case 3:
{
void Amend_Unit_Person(struct Addressbooks* p,char name[NAME]);
Amend_Unit_Person(p,A_name);
break;
}
case 4:
{
void Amend_Addr_Person(struct Addressbooks* p,char name[NAME]);
Amend_Addr_Person(p,A_name);
break;
}
case 5:
{
void Amend_Phone_Person(struct Addressbooks* p,char name[NAME]);
Amend_Phone_Person(p,A_name);
break;
}
case 7:
{
void Amend_QQ_Person(struct Addressbooks* p,char name[NAME]);
Amend_QQ_Person(p,A_name);
break;
}
case 8:
{
void Amend_Group_Person(struct Addressbooks* p,char name[NAME]);
Amend_Group_Person(p,A_name);
break;
}
default:
break;
}
}
}
if(Exist == 0)
{
printf("未找到此人!n");
}
system("pausen");
system("cls");
}
后面的函数功能其实跟前面的相差不大,读者可以自行补全
来一张运行时的图进行参考
OK,以上就是我的通讯录管理系统了,一个简单的小程序,如果有什么需要纠正的请广大读者跟我联系 .



