系统需求:
通讯录是一个可以记录亲人、好友信息的工具。
下面的代码实现主要利用C++来实现一个通讯录管理系统
系统中需要实现的功能如下:
添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
●显示联系人:显示通讯录中所有联系人信息
●删除联系人:按照姓名进行删除指定联系人
●查找联系人:按照姓名查看指定联系人信息
●修改联系人:按照姓名重新修改指定联系人
●清空联系人:清空通讯录中所有信息
●退出通讯录:退出当前使用的通讯录
联系人结构体:
typedef struct {
string name;//姓名
int sex;//性别 1男 2女
int age;//年龄
string phone;//电话
string add;//地址
}Person;
通讯录结构体
typedef struct {
Person pArrs[MAX];
int size;//联系人个数
}Addbooks;
检测联系人是否存在,如果存在返回下标位置,不存在返回-1
int isExit(Addbooks *abs,string name) {
for(int i=0;i<abs->size;i++) {
if(abs->pArrs[i].name==name)
return i;//找到了返回在结构体数组中的下标
}
return -1;//没找到返回-1
}
显示联系人代码实现:
void showPerson(Addbooks *abs){
if(abs->size==0){
cout<<"当前通讯录的记录为空,请输入联系人"<<endl;
system("pause");//请按任意键继续
system("cls") ;//清屏操作
return ;
}
for(int i=0;i<abs->size;i++){
cout<<"姓名: "<<abs->pArrs[i].name<<"\t";
cout<<"性别: "<<(abs->pArrs[i].sex==1 ?"男":"女")<<"\t";
cout<<"年龄: "<<abs->pArrs[i].age<<"\t";
cout<<"电话 "<<abs->pArrs[i].phone<<"\t";
cout<<"地址: "<<abs->pArrs[i].add<<endl;
}
system("pause");//请按任意键继续
system("cls") ;//清屏操作
}
删除联系人代码实现:
void deletePerson(Addbooks *abs){
cout<<"请输入您需要删除的联系人:";
string name;
cin>>name;
int flag=isExit(abs,name);
if(flag==-1){
cout<<"查无此人!"<<endl;
}else{
//cout<<"找到此人"<<endl;
for(int i=flag;i<abs->size;i++){
abs->pArrs[i]=abs->pArrs[i+1];
}
//更新通讯录的人数
abs->size--;
cout<<"删除成功!"<<endl;
}
system("pause");//请按任意键继续
system("cls") ;//清屏操作
}
查找联系人代码实现:
void findPerson(Addbooks *abs){
cout<<"请输入您需要查找的联系人:";
string name;
cin>>name;
int flag=isExit(abs,name);
if(flag!=-1) {
cout<<"姓名: "<<abs->pArrs[flag].name<<"\t";
cout<<"性别: "<<abs->pArrs[flag].sex<<"\t";
cout<<"年龄: "<<abs->pArrs[flag].age<<"\t";
cout<<"电话 "<<abs->pArrs[flag].phone<<"\t";
cout<<"地址: "<<abs->pArrs[flag].add<<endl;
}else{
cout<<"查无此人!"<<endl;
}
system("pause");//请按任意键继续
system("cls") ;//清屏操作
}
修改联系人代码实现:
void modifyPerson(Addbooks *abs){
cout<<"请输入您需要修改的联系人:";
string name;
cin>>name;
int flag=isExit(abs,name);
if(flag!=-1){
string name;
int sex;
int age;
string phone;
string add;
//输入姓名
cout<<"请输入姓名:";
cin>>name;
abs->pArrs[flag].name=name;
//输入性别
cout<<"请输入性别(提示:1代表男,2代表女):";
while(true){
cin>>sex;
if(sex==1||sex==2){
abs->pArrs[flag].sex=sex; break;}
cout<<"输入有误,请重新输入!"<<endl;
}
//输入年龄
cout<<"请输入年龄:";
cin>>age;
abs->pArrs[flag].age=age;
//输入电话
cout<<"请输入电话:";
cin>>phone;
abs->pArrs[flag].phone=phone;
//输入地址
cout<<"请输入地址:";
cin>>add;
abs->pArrs[flag].add=add;
cout<<"修改成功!"<<endl;
}else{
cout<<"查无此人!"<<endl;
}
system("pause");//请按任意键继续
system("cls") ;//清屏操作
}
清空联系人代码实现:
void cleanPerson(Addbooks *abs){
abs->size=0;
cout<<"通讯录已清空"<<endl;
system("pause");//请按任意键继续
system("cls") ;//清屏操作
}
主函数:
int main(){
Addbooks abs;
//初始化通讯录人员个数
abs.size=0;
int select=0;
while(true){
//菜单调用
showMenu();
//system("pause");
cout<<"请选择你的操作:";
cin>>select;
switch(select){
case 1://1、添加联系人
addPerson(&abs);//利用地址传递,可以修改形参
break;
case 2://2、显示联系人
showPerson(&abs) ;
break;
case 3://3、删除联系人
{
/*
cout<<"请输入需要删除联系人的姓名:";
string name;
cin>>name;
if(isExit(&abs,name)==-1){
cout<<"查无此人!"<<endl;
}else{
cout<<"找到此人"<<endl;
}
*/
deletePerson(&abs);
break;
}
case 4://4、查找联系人
findPerson( &abs);
break;
case 5://5、修改联系人
modifyPerson(&abs);
break;
case 6://6、清空联系人
cleanPerson(&abs);
break;
case 0://7、退出通讯录
cout<<"欢迎下次使用"<<endl;
system("pause");
break;
}
}
return 0;
}
总结
1.void ClearList(LinkList &L)
2.void ClearList(LinkList *L)
1是传递引用。她对应的主函数中的形式是ClearList(LinkList L)
就是变量的别名,可以当作原变量使用。
2是传递指针。她对应的主函数中的形式是ClearList(LinkList &L)
针对你的代码,应该是传递指针。