“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
- “C++课程实际”
- c语言课程总结
- c语言课程
- c语言课程总结
- C语言课程常见问题
- Problem C: 家教课程
- c语言的实际应用?
- C malloc & free 实际例子
- 《C语言程序设计》课程指导大纲
- C语言课程终结篇
- 【stanford C++】C++课程学习
- 传智播客C/C++课程大纲
- 《C语言程序设计》 课程教学设计
- C语言课程部分代码
- 21实际c语言教程-1
- 21实际C语言教程-2
- 21实际C语言教程-3
- C/C++实际编程常见问题分析
- HDU 3853 概率dp
- struts2 通配符简化配置
- eclipse egit误删文件的恢复
- OCP-1Z0-051 补充题库 第17题 约束的注意事项
- Android中Acition和Category常量表
- “C++课程实际”
- Android虚拟机Dalvik介绍
- Fujitsu Limited样片申请与经验
- Linux启动过程
- 加班防猝死的十个小建议
- sql学习笔记(一)
- Boost Replaceable by C++11 language features or libraries
- cubieboard python gpio
- CF B. Kolya and Tandem Repeat