10、通讯录管理
建立一个学生通讯录管理系统,管理的数据自己确定,其主要功能包括:能建立、修改和增删学生通讯录,能够按多种方式进行查询。
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct student //通讯录资料内容
{
char num[20]; //学号
char name[20]; //姓名
char address[100]; //地址
char tel_num[20]; //电话号码
char post_code[10]; ///邮编
char QQ[40]; //QQ
};
int back_1();
class inter
{
private:
student st[35]; //最大限制为35个电话号码
public:
void add(char num[20],char name[20],char address[100],char tel_num[20],char post_code[10],char QQ[40]);
void del(char name[20]);
void find1(char num[20]);
void find2(char name[20]);
void find3(char address[100]);
void find4(char tel_num[20]);
void find5(char post_code[10]);
void find6(char QQ[40]);
void list1();
int correct(char name[20]);
void format();
int back() //返回主菜单函数
{
cout<<" ------------------------------------------------------------"<<endl;
cout<<endl;
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back;
cin>>back;
if(back=='B'||back=='r')
return back_1();
}
void print(int i) //输出联系人的内容
{
cout<<"学号:"<<st[i].num<<endl;
cout<<"姓名:"<<st[i].name<<endl;
cout<<"地址:"<<st[i].address<<endl;
cout<<"电话号码:"<<st[i].tel_num<<endl;
cout<<"邮编:"<<st[i].post_code<<endl;
cout<<"QQ:"<<st[i].QQ<<endl;
}
};
int main()
{
inter a;
a.format();
char select1;
cout<<endl;
top:cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl
<<"\t\t※ ※"<<endl
<<"\t\t※ 通 迅 录 ※"<<endl
<<"\t\t※ ※"<<endl
<<"\t\t※ 1. 通讯录编辑. 3. 按序排列 . ※"<<endl
<<"\t\t※ ※"<<endl
<<"\t\t※ 2. 查询联系人. 4. 格式化(慎用). ※"<<endl
<<"\t\t※ ※"<<endl
<<"\t\t※ ※"<<endl
<<"\t\t※ 自动化1122 李佳原 ※"<<endl
<<"\t\t※ ※"<<endl
<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl
<<"\t\t "<<endl<<endl
<<"\t\t\t选择 :";
cin>>select1;
switch(select1) //功能选择
{
case'1':cout<<" (1)添加联系人:"<<endl;
cout<<" (2)删除联系人:"<<endl;
cout<<" (3)修改联系人:"<<endl;
char select2;
cout<<" 请选择:"<<endl;
cin>>select2;
switch(select2) //功能1内的功能选择
{
case '1':cout<<" 输入添加的通讯录内容:"<<endl;
char num[20];
char name[20];
char address[100];
char tel_num[20];
char post_code[10];
char QQ[40];
cout<<" 输入学号:"<<endl;
cin>>num;
cout<<" 输入姓名:"<<endl;
cin>>name;
cout<<" 输入地址:"<<endl;
cin>>address;
cout<<" 输入电话号码:"<<endl;
cin>>tel_num;
cout<<" 输入邮编:"<<endl;
cin>>post_code;
cout<<" 输入QQ:"<<endl;
cin>>QQ;
a.add(num,name,address,tel_num,post_code,QQ); //调用添加函数
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back_add;
cin>>back_add;
if(back_add=='B'||back_add=='b')
goto top;
else
goto bottom;
break;
case '2':cout<<" 输入要删除的人的姓名:"<<endl;
char name2[20];
cin>>name2;
a.del(name2);
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back_del;
cin>>back_del;
if(back_del=='B'||back_del=='b')
goto top;
else
goto bottom;
break;
case '3':cout<<" 输入需要修改的人的姓名:"<<endl;
char name3[20];
cin>>name3;
if(a.correct(name3))
goto top;
else
goto bottom;
break;
}
break;
case '2':cout<<" (1)根据学号查找"<<endl;
cout<<" (2)根据姓名查找"<<endl;
cout<<" (3)根据地址查找"<<endl;
cout<<" (4)根据电话号码查找"<<endl;
cout<<" (5)根据邮编查找"<<endl;
cout<<" (6)根据QQ查找"<<endl;
char select3;
cout<<" 请选择:";
cin>>select3;
switch(select3) //查找的功能
{
case '1':char num4[20]; //通过学号查找
cout<<" 输入学号:";
cin>>num4;
a.find1(num4);
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back_f1;
cin>>back_f1;
if(back_f1=='B'||back_f1=='b')
goto top;
else
goto bottom;
break;
case '2':char name4[20]; //通过姓名查找
cout<<" 输入姓名:";
cin>>name4;
a.find2(name4);
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back_f2;
cin>>back_f2;
if(back_f2=='B'||back_f2=='b')
goto top;
else
goto bottom;
break;
case '3':char address4[100]; //通过地址查找
cout<<" 输入地址:";
cin>>address4;
a.find3(address4);
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back_f3;
cin>>back_f3;
if(back_f3=='B'||back_f3=='b')
goto top;
else
goto bottom;
break;
case '4':char tel_num4[20]; //通过电话号码查找
cout<<" 输入电话号码:";
cin>>tel_num4;
a.find4(tel_num4);
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back_f4;
cin>>back_f4;
if(back_f4=='B'||back_f4=='b')
goto top;
else
goto bottom;
break;
case '5':char post_code4[10]; //通过邮编查找
cout<<" 输入邮编:";
cin>>post_code4;
a.find5(post_code4);
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back_f5;
cin>>back_f5;
if(back_f5=='B'||back_f5=='b')
goto top;
else
goto bottom;
break;
case '6':char QQ4[40];
cout<<" 输入QQ:"; //通过QQ查找
cin>>QQ4;
a.find6(QQ4);
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back_f6;
cin>>back_f6;
if(back_f6=='B'||back_f6=='b')
goto top;
else
goto bottom;
break;
}
break;
case '3':cout<<" 按学号排序:"<<endl; //排序
cout<<" 请输入1:";
char select4;
cin>>select4;
switch(select4)
{
case '1':a.list1 ();
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back;
cin>>back;
if(back=='B'||back=='b')
goto top;
else
goto bottom;
break;
}
break;
case '4':cout<<" 请确认删除所有资料!Y/N "; //格式化
char select5;
cin>>select5;
if(select5=='Y'||select5=='y')
a.format();
cout<<" 退出系统还是返回主菜单(任意键(除B)为退出,B为返回主菜单,大小写都OK):";
char back_f;
cin>>back_f;
if(back_f=='B'||back_f=='b')
goto top;
else
goto bottom;
break;
}
bottom:cout<<" ---------------------------------------------------- "<<endl;
return 0;
}
/*******************************增加联系人****************************/
void inter::add(char num[20],char name[20],char address[100],char tel_num[20],char post_code[10],char QQ[40])
{
int x=1;
for(int i=0;i<35;i++)
{
if(!strcmp(st[i].num,"0"))
{
strcpy(st[i].address,address);
strcpy(st[i].QQ,QQ);
strcpy(st[i].name,name);
strcpy(st[i].num,num);
strcpy(st[i].post_code,post_code);
strcpy(st[i].tel_num,tel_num);
x=0;
}
if(x==0)
break;
}
}
/***********************************删除某个联系人***********************/
void inter::del(char name[20])
{
int x=0;
for(int i=0;strcmp(st[i].name,name)==0&&i<35;i++)
{
if(strcmp(st[i].name,name)==0) //寻找该联系人的姓名
{
strcpy(st[i].address,"0");
strcpy(st[i].QQ,"0");
strcpy(st[i].name,"0");
strcpy(st[i].num,"0");
strcpy(st[i].post_code,"0");
strcpy(st[i].tel_num,"0");
cout<<"删除成功!"<<endl;
}
x++;
}
if(x==0)
cout<<" 输入姓名错误!"<<endl;
}
/*******************************修改某个联系人*************************************/
int inter::correct(char name[20])
{
int x;
for(int i=0;i<35;i++)
{
if(!strcmp(st[i].name,name)) //寻找该联系人
x=i;
}
char select;
cout<<" (1)修改姓名:"<<endl;
cout<<" (2)修改学号:"<<endl;
cout<<" (3)修改地址:"<<endl;
cout<<" (4)修改邮编:"<<endl;
cout<<" (5)修改电话号码:"<<endl;
cout<<" (6)修改QQ:"<<endl;
cout<<" 请选择:";
cin>>select;
switch(select)
{
case '1':cout<<" 输入要修改的姓名:";
char name1[20];
cin>>name1;
strcpy(st[x].name,name1);
cout<<" 修改成功!"<<endl;
break;
case '2':cout<<" 输入要修改的学号:";
char num1[20];
cin>>num1;
strcpy(st[i].num,num1);
cout<<" 修改成功!"<<endl;
break;
case '3':cout<<" 输入要修改的地址:"<<endl;
char address1[100];
cin>>address1;
strcpy(st[x].address,address1);
cout<<" 修改成功!"<<endl;
break;
case '4':cout<<" 输入要修改的邮编:";
char post_code1[10];
cin>>post_code1;
strcpy(st[x].post_code,post_code1);
cout<<" 修改成功!"<<endl;
break;
case '5':cout<<" 输入要修改的电话号码:";
char tel_num1[20];
cin>>tel_num1;
strcpy(st[x].tel_num,tel_num1);
cout<<" 修改成功!"<<endl;
break;
case '6':cout<<" 输入要修改的QQ:";
char QQ1[40];
cin>>QQ1;
strcpy(st[x].QQ,QQ1);
cout<<" 修改成功!"<<endl;
break;
}
return back();
}
/***********************************通过学号查询联系人*******************/
void inter::find1(char num[20])
{
int x,y=1,z=1;
for(int i=0;i<35;i++)
{
if(!strcmp(st[i].num,num)) //寻找该学号的联系人
{
x=i;
z=0;
}
else y=0;
if(z==0)
break;
}
if(y==0)
cout<<" 输入的学号不存在!"<<endl;
else
print(x);
}
/***********************************通过姓名查询联系人********************/
void inter::find2(char name[20])
{
int x,y=1,z=1;
for(int i=0;i<35;i++)
{
if(!strcmp(st[i].name,name)) //寻找改姓名的联系人
{
x=i;
z=0;
}
else y=0;
if(z==0)
break;
}
if(y==0)
cout<<" 输入的姓名不存在!"<<endl;
else
print(x);
}
/***********************************通过地址查询联系人********************/
void inter::find3(char address[100])
{
int x,y=1,z=1;
for(int i=0;i<35;i++)
{
if(!strcmp(st[i].address,address)) //寻找该地址的联系人
{
x=i;
z=0;
}
else y=0;
if(z==0)
break;
}
if(y==0)
cout<<" 输入的地址不存在!"<<endl;
else
print(x);
}
/***********************************通过电话号码查询联系人********************/
void inter::find4(char tel_num[20])
{
int x,y=1,z=1;
for(int i=0;i<35;i++)
{
if(!strcmp(st[i].tel_num,tel_num)) //寻找该号码的联系人
{
x=i;
z=0;
}
else y=0;
if(z==0)
break;
}
if(y==0)
cout<<" 输入的电话号码不存在!"<<endl;
else
print(x);
}
/***********************************通过邮编查询联系人********************/
void inter::find5(char post_code[10])
{
int x,y=1,z=1;
for(int i=0;i<35;i++)
{
if(!strcmp(st[i].post_code,post_code)) //寻找该邮编的联系人
{
x=i;
z=0;
}
else y=0;
if(z==0)
break;
}
if(y==0)
cout<<" 输入的邮编不存在!"<<endl;
else
print(x);
}
/***********************************通过QQ查询联系人********************/
void inter::find6(char QQ[40])
{
int x,y=1,z=1;
for(int i=0;i<35;i++)
{
if(!strcmp(st[i].QQ,QQ)) //寻找该QQ的联系人
{
x=i;
z=0;
}
else y=0;
if(z==0)
break;
}
if(y==0)
cout<<" 输入的QQ不存在!"<<endl;
else
print(x);
}
/***********************************按学号排序********************/
void inter::list1()
{
for(int i=0;i<34;i++)
{
for(int j=0;j<34-i;j++) //冒泡法
{
if(strcmp(st[j].num,st[j+1].num)>0) //按学号大的输出
{
char num[20];
char name[20];
char address[100];
char tel_num[20];
char post_code[10];
char QQ[40];
strcpy(num,st[j].num);
strcpy(st[j].num,st[j+1].num);
strcpy(st[j+1].num,num);
strcpy(name,st[j].name);
strcpy(st[j].name,st[j+1].name);
strcpy(st[j+1].name,name);
strcpy(address,st[j].address);
strcpy(st[j].address,st[j+1].address);
strcpy(st[j+1].address,address);
strcpy(tel_num,st[j].tel_num);
strcpy(st[j].tel_num,st[j+1].tel_num);
strcpy(st[j+1].tel_num,tel_num);
strcpy(post_code,st[j].post_code);
strcpy(st[j].post_code,st[j+1].post_code);
strcpy(st[j+1].post_code,post_code);
strcpy(QQ,st[j].QQ);
strcpy(st[j].QQ,st[j+1].QQ);
strcpy(st[j+1].QQ,QQ);
}
}
}
for(int k=0;k<35;k++)
{
int x=0;
if(strcmp(st[k].num,"0"))
{
print(k);
x=1;
}
if(x==1)
{
cout<<endl;
cout<<"-----------------------------------------------------------------------------"<<endl;
}
}
}
/***********************************将整个通讯录格式化********************/
void inter::format()
{
for(int i=0;i<35;i++)
{
strcpy(st[i].address,"0");
strcpy(st[i].QQ,"0");
strcpy(st[i].name,"0");
strcpy(st[i].num,"0");
strcpy(st[i].post_code,"0");
strcpy(st[i].tel_num,"0");
}
}
/********************************返回主菜单的辅助函数*******************/
int back_1()
{
return main();
}
添加联系人
删除联系人
修改前的显示
修改后
查询
其他查询功能显示结果一样,就不一一显示了。
排序
格式化
退出通讯录