“C++课程实际”

来源:互联网 发布:淘宝客服模块代码 编辑:程序博客网 时间:2024/06/05 19:09

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;elseprint(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;elseprint(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;elseprint(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;elseprint(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;elseprint(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;elseprint(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();}


主菜单界面




添加联系人






删除联系人



修改前的显示



修改后




查询


其他查询功能显示结果一样,就不一一显示了。


排序



格式化




退出通讯录












0 0
原创粉丝点击