“C++课程实际”

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


主菜单界面




添加联系人






删除联系人



修改前的显示



修改后




查询


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


排序



格式化




退出通讯录












  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值