通讯录管理系统

news2024/11/15 5:07:10

目录

1.系统需求

 2.创建项目

 3.菜单功能

4.退出功能

5.添加联系人

 5.1设计联系人结构体、设计通讯录结构体

5.2main函数中创建通讯录

 5.3封装添加联系人函数

 5.4测试添加联系人

6.显示联系人

7.删除联系人

 7.1封装检测联系人是否存在

7.2删除联系人,测试删除联系人

8、查找联系人

9.修改联系人 

10.清空联系人


1.系统需求

 2.创建项目

 

 3.菜单功能

#include<iostream>
using namespace std;

//-封装函数显示该界面 如 void showMenu()
//-在main函数中调用封装好的函数

//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	showMenu();

	system("pause");//按任意键继续
	return 0;
}

4.退出功能

#include<iostream>
using namespace std;

//-封装函数显示该界面 如 void showMenu()
//-在main函数中调用封装好的函数

//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	int select;//创建用户选择输入的变量

	while (1)
	{
		showMenu();//菜单调用
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			break;
		case 2://2、显示联系人
			break;
		case 3:// 3、删除联系人
			break;
		case 4://4、查找联系人
			break;
		case 5://5、修改联系人
			break;
		case 6://6、清空联系人
			break;
		case 0://0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");//按任意键继续
			return 0;//return 0退出函数,退出系统
			break;
		default:
			break;
		}
	}
	
	system("pause");//按任意键继续
	return 0;
}

5.添加联系人

 5.1设计联系人结构体、设计通讯录结构体

#include<iostream>
using namespace std;

//#define Max 1000
const int Max = 1000;
//设计联系人结构体
struct person
{
	//姓名
	string m_name;
	//性别 1男2女
	int m_sex;
	//年龄
	int age;
	//电话
	string m_phone;
	//住址
	string m_Addr;

};
//通讯录结构体
struct Addressbooks
{
	//保存联系人的数组
	person personArray[Max];
		//通讯录中当前记录的联系人的个数
		int m_Size;
};
//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	int select;//创建用户选择输入的变量

	while (1)
	{
		showMenu();//菜单调用
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			break;
		case 2://2、显示联系人
			break;
		case 3:// 3、删除联系人
			break;
		case 4://4、查找联系人
			break;
		case 5://5、修改联系人
			break;
		case 6://6、清空联系人
			break;
		case 0://0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");//按任意键继续
			return 0;//return 0退出函数,退出系统
			break;
		default:
			break;
		}
	}
	
	system("pause");//按任意键继续
	return 0;
}

5.2main函数中创建通讯录

 5.3封装添加联系人函数

 5.4测试添加联系人

#include<iostream>
using namespace std;

//#define Max 1000
const int Max = 1000;
//设计联系人结构体
struct person
{
	//姓名
	string m_name;
	//性别 1男2女
	int m_sex;
	//年龄
	int age;
	//电话
	string m_phone;
	//住址
	string m_Addr;

};
//通讯录结构体
struct Addressbooks
{
	//保存联系人的数组
	person personArray[Max];
		//通讯录中当前记录的联系人的个数
		int m_Size;
};

//1、添加联系人
void addPerson(Addressbooks* p)
{
	//判断通讯录是否已满,如果满了就不再添加
	if (p->m_Size == Max)
	{
		cout << "通讯录已满,无法添加!" << endl;
	}
	else
	{
		cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
		string name;
		int sex;
		int age;
		string phone;
		string Addr;
		cin >> name >> sex >> age >> phone >> Addr;
		p->personArray[p->m_Size].m_name = name;
		p->personArray[p->m_Size].m_sex = sex;
		p->personArray[p->m_Size].age = age;
		p->personArray[p->m_Size].m_phone = phone;
		p->personArray[p->m_Size].m_Addr = Addr;
		//更新通讯录中的人数
		p->m_Size++;//等价于 p->m_Size += 1;
		/*
		while(1)//输错性别,就一直输入,直到正确才退出
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				p->personArray[p->m_Size].m_sex = sex;
				break;
			}
			cout<<"输入有误,请重新输入<<endl;
		}
		*/
		cout << "添加成功" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏操作
	}
	
}
//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	Addressbooks abs;//创建通讯录结构体变量
	abs.m_Size = 0;//初始化通讯录中当前人员的个数
	int select;//创建用户选择输入的变量

	while (1)
	{
		showMenu();//菜单调用
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			addPerson(&abs);//利用地址传递,可以修改实参
			break;
		case 2://2、显示联系人
			break;
		case 3:// 3、删除联系人
			break;
		case 4://4、查找联系人
			break;
		case 5://5、修改联系人
			break;
		case 6://6、清空联系人
			break;
		case 0://0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");//按任意键继续
			return 0;//return 0退出函数,退出系统
			break;
		default:
			break;
		}
	}
	
	system("pause");//按任意键继续
	return 0;
}

6.显示联系人

#include<iostream>
using namespace std;

//#define Max 1000
const int Max = 1000;
//设计联系人结构体
struct person
{
	//姓名
	string m_name;
	//性别 1男2女
	int m_sex;
	//年龄
	int age;
	//电话
	string m_phone;
	//住址
	string m_Addr;

};
//通讯录结构体
struct Addressbooks
{
	//保存联系人的数组
	person personArray[Max];
		//通讯录中当前记录的联系人的个数
		int m_Size;
};

//1、添加联系人
void addPerson(Addressbooks* p)
{
	//判断通讯录是否已满,如果满了就不再添加
	if (p->m_Size == Max)
	{
		cout << "通讯录已满,无法添加!" << endl;
	}
	else
	{
		cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
		string name;
		int sex;
		int age;
		string phone;
		string Addr;
		cin >> name >> sex >> age >> phone >> Addr;
		p->personArray[p->m_Size].m_name = name;
		p->personArray[p->m_Size].m_sex = sex;
		p->personArray[p->m_Size].age = age;
		p->personArray[p->m_Size].m_phone = phone;
		p->personArray[p->m_Size].m_Addr = Addr;
		//更新通讯录中的人数
		p->m_Size++;//等价于 p->m_Size += 1;
		/*
		while(1)//输错性别,就一直输入,直到正确才退出
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				p->personArray[p->m_Size].m_sex = sex;
				break;
			}
			cout<<"输入有误,请重新输入<<endl;
		}
		*/
		cout << "添加成功" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏操作
	}
	
}

//2、显示联系人
void showPerson(Addressbooks* p)
{
	if (p->m_Size == 0)
	{
		cout << "记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < p->m_Size; i++)
		{
			cout <<"姓名:"<< p->personArray[i].m_name << " "
				<< "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
				<<"年龄:"<< p->personArray[i].age << " "
				<<"电话:"<< p->personArray[i].m_phone << " "
				<< "地址:"<<p->personArray[i].m_Addr << endl;
		}
	}
	system("pause");//按任意键继续
	system("cls");//清屏
}
//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	Addressbooks abs;//创建通讯录结构体变量
	abs.m_Size = 0;//初始化通讯录中当前人员的个数
	int select;//创建用户选择输入的变量

	while (1)
	{
		showMenu();//菜单调用
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			addPerson(&abs);//利用地址传递,可以修改实参
			break;
		case 2://2、显示联系人
			showPerson(&abs);
			break;
		case 3:// 3、删除联系人
			break;
		case 4://4、查找联系人
			break;
		case 5://5、修改联系人
			break;
		case 6://6、清空联系人
			break;
		case 0://0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");//按任意键继续
			return 0;//return 0退出函数,退出系统
			break;
		default:
			break;
		}
	}
	
	system("pause");//按任意键继续
	return 0;
}

7.删除联系人

 7.1封装检测联系人是否存在

#include<iostream>
using namespace std;

//#define Max 1000
const int Max = 1000;
//设计联系人结构体
struct person
{
	//姓名
	string m_name;
	//性别 1男2女
	int m_sex;
	//年龄
	int age;
	//电话
	string m_phone;
	//住址
	string m_Addr;

};
//通讯录结构体
struct Addressbooks
{
	//保存联系人的数组
	person personArray[Max];
		//通讯录中当前记录的联系人的个数
		int m_Size;
};

//1、添加联系人
void addPerson(Addressbooks* p)
{
	//判断通讯录是否已满,如果满了就不再添加
	if (p->m_Size == Max)
	{
		cout << "通讯录已满,无法添加!" << endl;
	}
	else
	{
		cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
		string name;
		int sex;
		int age;
		string phone;
		string Addr;
		cin >> name >> sex >> age >> phone >> Addr;
		p->personArray[p->m_Size].m_name = name;
		p->personArray[p->m_Size].m_sex = sex;
		p->personArray[p->m_Size].age = age;
		p->personArray[p->m_Size].m_phone = phone;
		p->personArray[p->m_Size].m_Addr = Addr;
		//更新通讯录中的人数
		p->m_Size++;//等价于 p->m_Size += 1;
		/*
		while(1)//输错性别,就一直输入,直到正确才退出
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				p->personArray[p->m_Size].m_sex = sex;
				break;
			}
			cout<<"输入有误,请重新输入<<endl;
		}
		*/
		cout << "添加成功" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏操作
	}
	
}

//2、显示联系人
void showPerson(Addressbooks* p)
{
	if (p->m_Size == 0)
	{
		cout << "记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < p->m_Size; i++)
		{
			cout <<"姓名:"<< p->personArray[i].m_name << " "
				<< "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
				<<"年龄:"<< p->personArray[i].age << " "
				<<"电话:"<< p->personArray[i].m_phone << " "
				<< "地址:"<<p->personArray[i].m_Addr << endl;
		}
	}
	system("pause");//按任意键继续
	system("cls");//清屏
}

//检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
int isExit(Addressbooks* p,string name)
{
	for (int i = 0; i < p->m_Size; i++)
	{
		//找到用户输入的姓名
		if (p->personArray[i].m_name == name)
		{
			return i;//找到了返回位置
		}
	}
	return -1;//遍历结束没找到,返回-1
}
//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	Addressbooks abs;//创建通讯录结构体变量
	abs.m_Size = 0;//初始化通讯录中当前人员的个数
	int select;//创建用户选择输入的变量

	while (1)
	{
		showMenu();//菜单调用
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			addPerson(&abs);//利用地址传递,可以修改实参
			break;
		case 2://2、显示联系人
			showPerson(&abs);
			break;
		case 3:// 3、删除联系人
		{//注意 switch case case里是多段代码时,用花括号
			string name;
			cin >> name;
			if (isExit(&abs, name) == -1)
			{
				cout << "查无此人" << endl;
			}
			else
			{
				cout << "找到此人" << endl;
			}
		}
			break;
		case 4://4、查找联系人
			break;
		case 5://5、修改联系人
			break;
		case 6://6、清空联系人
			break;
		case 0://0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");//按任意键继续
			return 0;//return 0退出函数,退出系统
			break;
		default:
			break;
		}
	}
	
	system("pause");//按任意键继续
	return 0;
}

7.2删除联系人,测试删除联系人

#include<iostream>
using namespace std;

//#define Max 1000
const int Max = 1000;
//设计联系人结构体
struct person
{
	//姓名
	string m_name;
	//性别 1男2女
	int m_sex;
	//年龄
	int age;
	//电话
	string m_phone;
	//住址
	string m_Addr;

};
//通讯录结构体
struct Addressbooks
{
	//保存联系人的数组
	person personArray[Max];
		//通讯录中当前记录的联系人的个数
		int m_Size;
};

//1、添加联系人
void addPerson(Addressbooks* p)
{
	//判断通讯录是否已满,如果满了就不再添加
	if (p->m_Size == Max)
	{
		cout << "通讯录已满,无法添加!" << endl;
	}
	else
	{
		cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
		string name;
		int sex;
		int age;
		string phone;
		string Addr;
		cin >> name >> sex >> age >> phone >> Addr;
		p->personArray[p->m_Size].m_name = name;
		p->personArray[p->m_Size].m_sex = sex;
		p->personArray[p->m_Size].age = age;
		p->personArray[p->m_Size].m_phone = phone;
		p->personArray[p->m_Size].m_Addr = Addr;
		//更新通讯录中的人数
		p->m_Size++;//等价于 p->m_Size += 1;
		/*
		while(1)//输错性别,就一直输入,直到正确才退出
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				p->personArray[p->m_Size].m_sex = sex;
				break;
			}
			cout<<"输入有误,请重新输入<<endl;
		}
		*/
		cout << "添加成功" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏操作
	}
	
}

//2、显示联系人
void showPerson(Addressbooks* p)
{
	if (p->m_Size == 0)
	{
		cout << "记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < p->m_Size; i++)
		{
			cout <<"姓名:"<< p->personArray[i].m_name << " "
				<< "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
				<<"年龄:"<< p->personArray[i].age << " "
				<<"电话:"<< p->personArray[i].m_phone << " "
				<< "地址:"<<p->personArray[i].m_Addr << endl;
		}
	}
	system("pause");//按任意键继续
	system("cls");//清屏
}

//检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
int isExit(Addressbooks* p,string name)
{
	for (int i = 0; i < p->m_Size; i++)
	{
		//找到用户输入的姓名
		if (p->personArray[i].m_name == name)
		{
			return i;//找到了返回位置
		}
	}
	return -1;//遍历结束没找到,返回-1
}

//删除联系人函数
void deletePerson(Addressbooks* p)
{
	string name;
	cout << "请输入要删除的联系人姓名" << endl;
	cin >> name;
	int res = isExit(p, name);
	if (res == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		//查到此人,进行删除
		//将要删除的人的后面的人往前移就好
		for (int i = res; res < p->m_Size - 1; i++)
		{
			//数据前移
			p->personArray[i] = p->personArray[i+1];
		}
		/*for (int i = res + 1; i < p->m_Size; i++)
		{
			//数据前移
			p->personArray[i-1] = p->personArray[i];
		}*/
		p->m_Size--;//更新通讯录中的人员数
		cout << "删除成功" << endl;
	}
	system("pause");
	system("cls");
}
//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	Addressbooks abs;//创建通讯录结构体变量
	abs.m_Size = 0;//初始化通讯录中当前人员的个数
	int select;//创建用户选择输入的变量

	while (1)
	{
		showMenu();//菜单调用
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			addPerson(&abs);//利用地址传递,可以修改实参
			break;
		case 2://2、显示联系人
			showPerson(&abs);
			break;
		case 3:// 3、删除联系人
			deletePerson(&abs);
			break;
		case 4://4、查找联系人
			break;
		case 5://5、修改联系人
			break;
		case 6://6、清空联系人
			break;
		case 0://0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");//按任意键继续
			return 0;//return 0退出函数,退出系统
			break;
		default:
			break;
		}
	}
	
	system("pause");//按任意键继续
	return 0;
}

8、查找联系人

#include<iostream>
using namespace std;

//#define Max 1000
const int Max = 1000;
//设计联系人结构体
struct person
{
	//姓名
	string m_name;
	//性别 1男2女
	int m_sex;
	//年龄
	int age;
	//电话
	string m_phone;
	//住址
	string m_Addr;

};
//通讯录结构体
struct Addressbooks
{
	//保存联系人的数组
	person personArray[Max];
		//通讯录中当前记录的联系人的个数
		int m_Size;
};

//1、添加联系人
void addPerson(Addressbooks* p)
{
	//判断通讯录是否已满,如果满了就不再添加
	if (p->m_Size == Max)
	{
		cout << "通讯录已满,无法添加!" << endl;
	}
	else
	{
		cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
		string name;
		int sex;
		int age;
		string phone;
		string Addr;
		cin >> name >> sex >> age >> phone >> Addr;
		p->personArray[p->m_Size].m_name = name;
		p->personArray[p->m_Size].m_sex = sex;
		p->personArray[p->m_Size].age = age;
		p->personArray[p->m_Size].m_phone = phone;
		p->personArray[p->m_Size].m_Addr = Addr;
		//更新通讯录中的人数
		p->m_Size++;//等价于 p->m_Size += 1;
		/*
		while(1)//输错性别,就一直输入,直到正确才退出
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				p->personArray[p->m_Size].m_sex = sex;
				break;
			}
			cout<<"输入有误,请重新输入<<endl;
		}
		*/
		cout << "添加成功" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏操作
	}
	
}

//2、显示联系人
void showPerson(Addressbooks* p)
{
	if (p->m_Size == 0)
	{
		cout << "记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < p->m_Size; i++)
		{
			cout <<"姓名:"<< p->personArray[i].m_name << " "
				<< "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
				<<"年龄:"<< p->personArray[i].age << " "
				<<"电话:"<< p->personArray[i].m_phone << " "
				<< "地址:"<<p->personArray[i].m_Addr << endl;
		}
	}
	system("pause");//按任意键继续
	system("cls");//清屏
}

//检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
int isExit(Addressbooks* p,string name)
{
	for (int i = 0; i < p->m_Size; i++)
	{
		//找到用户输入的姓名
		if (p->personArray[i].m_name == name)
		{
			return i;//找到了返回位置
		}
	}
	return -1;//遍历结束没找到,返回-1
}

//3、删除联系人函数
void deletePerson(Addressbooks* p)
{
	string name;
	cout << "请输入要删除的联系人姓名" << endl;
	cin >> name;
	int res = isExit(p, name);
	if (res == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		//查到此人,进行删除
		//将要删除的人的后面的人往前移就好
		for (int i = res; res < p->m_Size - 1; i++)
		{
			//数据前移
			p->personArray[i] = p->personArray[i+1];
		}
		/*for (int i = res + 1; i < p->m_Size; i++)
		{
			//数据前移
			p->personArray[i-1] = p->personArray[i];
		}*/
		p->m_Size--;//更新通讯录中的人员数
		cout << "删除成功" << endl;
	}
	system("pause");
	system("cls");
}

//4、查找联系人
void findPerson(Addressbooks* p)
{
	cout << "请输入要查找的联系人姓名" << endl;
	string name;
	cin >> name;
	int res = isExit(p, name);
	if (res == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout << "姓名:" << p->personArray[res].m_name << " "
			<< "性别:" << (p->personArray[res].m_sex == 1 ? "男" : "女") << " "
			<< "年龄:" << p->personArray[res].age << " "
			<< "电话:" << p->personArray[res].m_phone << " "
			<< "住址:" << p->personArray[res].m_Addr << endl;
	}
	system("pause");
	system("cls");
}
//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	Addressbooks abs;//创建通讯录结构体变量
	abs.m_Size = 0;//初始化通讯录中当前人员的个数
	int select;//创建用户选择输入的变量

	while (1)
	{
		showMenu();//菜单调用
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			addPerson(&abs);//利用地址传递,可以修改实参
			break;
		case 2://2、显示联系人
			showPerson(&abs);
			break;
		case 3:// 3、删除联系人
			deletePerson(&abs);
			break;
		case 4://4、查找联系人
			findPerson(&abs);
			break;
		case 5://5、修改联系人
			break;
		case 6://6、清空联系人
			break;
		case 0://0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");//按任意键继续
			return 0;//return 0退出函数,退出系统
			break;
		default:
			break;
		}
	}
	
	system("pause");//按任意键继续
	return 0;
}

9.修改联系人 

#include<iostream>
using namespace std;

//#define Max 1000
const int Max = 1000;
//设计联系人结构体
struct person
{
	//姓名
	string m_name;
	//性别 1男2女
	int m_sex;
	//年龄
	int age;
	//电话
	string m_phone;
	//住址
	string m_Addr;

};
//通讯录结构体
struct Addressbooks
{
	//保存联系人的数组
	person personArray[Max];
		//通讯录中当前记录的联系人的个数
		int m_Size;
};

//1、添加联系人
void addPerson(Addressbooks* p)
{
	//判断通讯录是否已满,如果满了就不再添加
	if (p->m_Size == Max)
	{
		cout << "通讯录已满,无法添加!" << endl;
	}
	else
	{
		cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
		string name;
		int sex;
		int age;
		string phone;
		string Addr;
		cin >> name >> sex >> age >> phone >> Addr;
		p->personArray[p->m_Size].m_name = name;
		p->personArray[p->m_Size].m_sex = sex;
		p->personArray[p->m_Size].age = age;
		p->personArray[p->m_Size].m_phone = phone;
		p->personArray[p->m_Size].m_Addr = Addr;
		//更新通讯录中的人数
		p->m_Size++;//等价于 p->m_Size += 1;
		/*
		while(1)//输错性别,就一直输入,直到正确才退出
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				p->personArray[p->m_Size].m_sex = sex;
				break;
			}
			cout<<"输入有误,请重新输入<<endl;
		}
		*/
		cout << "添加成功" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏操作
	}
	
}

//2、显示联系人
void showPerson(Addressbooks* p)
{
	if (p->m_Size == 0)
	{
		cout << "记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < p->m_Size; i++)
		{
			cout <<"姓名:"<< p->personArray[i].m_name << " "
				<< "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
				<<"年龄:"<< p->personArray[i].age << " "
				<<"电话:"<< p->personArray[i].m_phone << " "
				<< "地址:"<<p->personArray[i].m_Addr << endl;
		}
	}
	system("pause");//按任意键继续
	system("cls");//清屏
}

//检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
int isExit(Addressbooks* p,string name)
{
	for (int i = 0; i < p->m_Size; i++)
	{
		//找到用户输入的姓名
		if (p->personArray[i].m_name == name)
		{
			return i;//找到了返回位置
		}
	}
	return -1;//遍历结束没找到,返回-1
}

//3、删除联系人函数
void deletePerson(Addressbooks* p)
{
	string name;
	cout << "请输入要删除的联系人姓名" << endl;
	cin >> name;
	int res = isExit(p, name);
	if (res == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		//查到此人,进行删除
		//将要删除的人的后面的人往前移就好
		for (int i = res; res < p->m_Size - 1; i++)
		{
			//数据前移
			p->personArray[i] = p->personArray[i+1];
		}
		/*for (int i = res + 1; i < p->m_Size; i++)
		{
			//数据前移
			p->personArray[i-1] = p->personArray[i];
		}*/
		p->m_Size--;//更新通讯录中的人员数
		cout << "删除成功" << endl;
	}
	system("pause");
	system("cls");
}

//4、查找联系人
void findPerson(Addressbooks* p)
{
	cout << "请输入要查找的联系人姓名" << endl;
	string name;
	cin >> name;
	int res = isExit(p, name);
	if (res == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout << "姓名:" << p->personArray[res].m_name << " "
			<< "性别:" << (p->personArray[res].m_sex == 1 ? "男" : "女") << " "
			<< "年龄:" << p->personArray[res].age << " "
			<< "电话:" << p->personArray[res].m_phone << " "
			<< "住址:" << p->personArray[res].m_Addr << endl;
	}
	system("pause");
	system("cls");
}

//5.修改指定联系人
void modifyPreson(Addressbooks* p)
{
	cout << "请输入要修改的联系人姓名:" << endl;
	string name;
	cin >> name;
	int res = isExit(p, name);
	if (res == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		int select;
		while (1)
		{
			cout << "请输入要修改的内容,1:姓名 2:性别 3:年龄:4: 电话 5: 地址 0:修改完毕" << endl;
			cin >> select;
			switch (select)
			{
			case 1:
			{
				cout << "请输入姓名:" << endl;
				cin >> name;
				p->personArray[res].m_name = name;
			}
			break;
			case 2:
			{
				int sex;
				cout << "请输入性别:1 男 2 女" << endl;
				cin >> sex;
				p->personArray[res].m_sex= sex;
			}
			break;
			case 3:
			{
				int age;
				cout << "请输入年龄:" << endl;
				cin >> age;
				p->personArray[res].age = age;
			}
			break;
			case 4:
			{
				cout << "请输入电话:" << endl;
				cin >> name;
				p->personArray[res].m_phone = name;
			}
			break;
			case 5:
			{
				cout << "请输入地址:" << endl;
				cin >> name;
				p->personArray[res].m_Addr= name;
			}
			break;
			case 0:
			{
				cout << "修改完毕" << endl;
				system("pause");
				system("cls");
				return;
			}
			break;
			default:
				break;
			}
		}
	}
	system("pause");
	system("cls");
}
//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	Addressbooks abs;//创建通讯录结构体变量
	abs.m_Size = 0;//初始化通讯录中当前人员的个数
	int select;//创建用户选择输入的变量

	while (1)
	{
		showMenu();//菜单调用
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			addPerson(&abs);//利用地址传递,可以修改实参
			break;
		case 2://2、显示联系人
			showPerson(&abs);
			break;
		case 3:// 3、删除联系人
			deletePerson(&abs);
			break;
		case 4://4、查找联系人
			findPerson(&abs);
			break;
		case 5://5、修改联系人
			modifyPreson(&abs);
			break;
		case 6://6、清空联系人
			break;
		case 0://0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");//按任意键继续
			return 0;//return 0退出函数,退出系统
			break;
		default:
			break;
		}
	}
	
	system("pause");//按任意键继续
	return 0;
}

10.清空联系人

#include<iostream>
using namespace std;

//#define Max 1000
const int Max = 1000;
//设计联系人结构体
struct person
{
	//姓名
	string m_name;
	//性别 1男2女
	int m_sex;
	//年龄
	int age;
	//电话
	string m_phone;
	//住址
	string m_Addr;

};
//通讯录结构体
struct Addressbooks
{
	//保存联系人的数组
	person personArray[Max];
		//通讯录中当前记录的联系人的个数
		int m_Size;
};

//1、添加联系人
void addPerson(Addressbooks* p)
{
	//判断通讯录是否已满,如果满了就不再添加
	if (p->m_Size == Max)
	{
		cout << "通讯录已满,无法添加!" << endl;
	}
	else
	{
		cout << "请输入要添加的联系人的姓名,性别(1男,2女),年龄,电话,住址,以空格分割" << endl;
		string name;
		int sex;
		int age;
		string phone;
		string Addr;
		cin >> name >> sex >> age >> phone >> Addr;
		p->personArray[p->m_Size].m_name = name;
		p->personArray[p->m_Size].m_sex = sex;
		p->personArray[p->m_Size].age = age;
		p->personArray[p->m_Size].m_phone = phone;
		p->personArray[p->m_Size].m_Addr = Addr;
		//更新通讯录中的人数
		p->m_Size++;//等价于 p->m_Size += 1;
		/*
		while(1)//输错性别,就一直输入,直到正确才退出
		{
			cin >> sex;
			if (sex == 1 || sex == 2)
			{
				p->personArray[p->m_Size].m_sex = sex;
				break;
			}
			cout<<"输入有误,请重新输入<<endl;
		}
		*/
		cout << "添加成功" << endl;
		system("pause");//请按任意键继续
		system("cls");//清屏操作
	}
	
}

//2、显示联系人
void showPerson(Addressbooks* p)
{
	if (p->m_Size == 0)
	{
		cout << "记录为空" << endl;
	}
	else
	{
		for (int i = 0; i < p->m_Size; i++)
		{
			cout <<"姓名:"<< p->personArray[i].m_name << " "
				<< "性别:"<<(p->personArray[i].m_sex == 1 ? "男" : "女") << " "
				<<"年龄:"<< p->personArray[i].age << " "
				<<"电话:"<< p->personArray[i].m_phone << " "
				<< "地址:"<<p->personArray[i].m_Addr << endl;
		}
	}
	system("pause");//按任意键继续
	system("cls");//清屏
}

//检测联系人是否存在,如果存在返回所在数组的具体位置,不存在返回-1
int isExit(Addressbooks* p,string name)
{
	for (int i = 0; i < p->m_Size; i++)
	{
		//找到用户输入的姓名
		if (p->personArray[i].m_name == name)
		{
			return i;//找到了返回位置
		}
	}
	return -1;//遍历结束没找到,返回-1
}

//3、删除联系人函数
void deletePerson(Addressbooks* p)
{
	string name;
	cout << "请输入要删除的联系人姓名" << endl;
	cin >> name;
	int res = isExit(p, name);
	if (res == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		//查到此人,进行删除
		//将要删除的人的后面的人往前移就好
		for (int i = res; res < p->m_Size - 1; i++)
		{
			//数据前移
			p->personArray[i] = p->personArray[i+1];
		}
		/*for (int i = res + 1; i < p->m_Size; i++)
		{
			//数据前移
			p->personArray[i-1] = p->personArray[i];
		}*/
		p->m_Size--;//更新通讯录中的人员数
		cout << "删除成功" << endl;
	}
	system("pause");
	system("cls");
}

//4、查找联系人
void findPerson(Addressbooks* p)
{
	cout << "请输入要查找的联系人姓名" << endl;
	string name;
	cin >> name;
	int res = isExit(p, name);
	if (res == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout << "姓名:" << p->personArray[res].m_name << " "
			<< "性别:" << (p->personArray[res].m_sex == 1 ? "男" : "女") << " "
			<< "年龄:" << p->personArray[res].age << " "
			<< "电话:" << p->personArray[res].m_phone << " "
			<< "住址:" << p->personArray[res].m_Addr << endl;
	}
	system("pause");
	system("cls");
}

//5.修改指定联系人
void modifyPreson(Addressbooks* p)
{
	cout << "请输入要修改的联系人姓名:" << endl;
	string name;
	cin >> name;
	int res = isExit(p, name);
	if (res == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		int select;
		while (1)
		{
			cout << "请输入要修改的内容,1:姓名 2:性别 3:年龄:4: 电话 5: 地址 0:修改完毕" << endl;
			cin >> select;
			switch (select)
			{
			case 1:
			{
				cout << "请输入姓名:" << endl;
				cin >> name;
				p->personArray[res].m_name = name;
			}
			break;
			case 2:
			{
				int sex;
				cout << "请输入性别:1 男 2 女" << endl;
				cin >> sex;
				p->personArray[res].m_sex= sex;
			}
			break;
			case 3:
			{
				int age;
				cout << "请输入年龄:" << endl;
				cin >> age;
				p->personArray[res].age = age;
			}
			break;
			case 4:
			{
				cout << "请输入电话:" << endl;
				cin >> name;
				p->personArray[res].m_phone = name;
			}
			break;
			case 5:
			{
				cout << "请输入地址:" << endl;
				cin >> name;
				p->personArray[res].m_Addr= name;
			}
			break;
			case 0:
			{
				cout << "修改完毕" << endl;
				system("pause");
				system("cls");
				return;
			}
			break;
			default:
				break;
			}
		}
	}
	system("pause");
	system("cls");
}

//6.清空联系人
void cleanPerson(Addressbooks* p)
{
	p->m_Size = 0; //将当前记录联系人数量设置为0
	cout << "通讯录已清空" << endl;
	system("pause");
	system("cls");
}
//菜单界面
void showMenu()
{
	cout << "**************************"<<endl;
	cout << "***** 1、添加联系人 *****" << endl;
	cout << "***** 2、显示联系人 *****" << endl;
	cout << "***** 3、删除联系人 *****" << endl;
	cout << "***** 4、查找联系人 *****" << endl;
	cout << "***** 5、修改联系人 *****" << endl;
	cout << "***** 6、清空联系人 *****" << endl;
	cout << "***** 0、退出通讯录 *****" << endl;
	cout << "**************************" << endl;
}
int main()
{
	Addressbooks abs;//创建通讯录结构体变量
	abs.m_Size = 0;//初始化通讯录中当前人员的个数
	int select;//创建用户选择输入的变量

	while (1)
	{
		showMenu();//菜单调用
		cin >> select;
		switch (select)
		{
		case 1://1、添加联系人
			addPerson(&abs);//利用地址传递,可以修改实参
			break;
		case 2://2、显示联系人
			showPerson(&abs);
			break;
		case 3:// 3、删除联系人
			deletePerson(&abs);
			break;
		case 4://4、查找联系人
			findPerson(&abs);
			break;
		case 5://5、修改联系人
			modifyPreson(&abs);
			break;
		case 6://6、清空联系人
			cleanPerson(&abs);
			break;
		case 0://0、退出通讯录
			cout << "欢迎下次使用" << endl;
			system("pause");//按任意键继续
			return 0;//return 0退出函数,退出系统
			break;
		default:
			break;
		}
	}
	
	system("pause");//按任意键继续
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当我们的执行 java -jar xxx.jar 的时候底层到底做了什么?

大家都知道我们常用的 SpringBoot 项目最终在线上运行的时候都是通过启动 java -jar xxx.jar 命令来运行的。 那你有没有想过一个问题&#xff0c;那就是当我们执行 java -jar 命令后&#xff0c;到底底层做了什么就启动了我们的 SpringBoot 应用呢&#xff1f; 或者说一个 S…

Redux使用详解(一) Redux的核心思想与基本使用

Redux 理解javascript纯函数 函数式编程中有一个非常重要的概念叫纯函数&#xff0c;JavaScript符合函数式编程的范式&#xff0c;所以也有纯函数的概念&#xff1b; 在react开发中纯函数是被多次提及的&#xff1b; 比如react中组件就被要求像是一个纯函数&#xff08;为什么…

使用STM32F103C8T自制freejoy控制板

1. 软件准备 1.1 STM公司的官方工具&#xff1a; STM32 ST-LINK Utility 已经更名为 STM32CubeProgrammer STSW-LINK004 - STM32 ST-LINK utility (replaced by STM32CubeProgrammer) - STMicroelectronics 1.2 FreeJoyConfiguratorQt V1.7.1 这个是刷好固件后的配置、调…

D-025 DP硬件电路设计

DP硬件电路设计1 简介1.1 DP接口分类1.2 DP接口和HDMI接口的区别1.3 DP接口的优势2 硬件层3 接口定义4 原理图设计1 简介 Display是一种新型的标准化的数字式视频接口标准&#xff0c;其支持的功能与HDMI相似&#xff0c;但是其目标是作为HDMI的补充&#xff0c;而非取代。DP …

红队渗透靶场之SickOs1.1

靶场考察知识 shellshock漏洞 shellshock即unix系统下的bash shell的一个漏洞, Bash 4.3以及之前的版本在处理某些构造的环境变量时存在安全漏洞, 向环境变量值内的函数定义后添加多余的字符串会触发此漏洞, 攻击者可利用此漏洞改变或绕过环境限制&#xff0c;以执行任意的sh…

Notepad++ ,json 、xml 格式化插件安装不了 和 github 网站访问不了 最佳解决方案

文章目录1.背景&#xff1a;2. 解决方法&#xff1a;方法一&#xff1a;修改hosts方法二&#xff1a; 通过 Watt Toolkit 加速1.简介&#xff1a;2.安装步骤&#xff1a;1.背景&#xff1a; 最近notpad 安装 JSON 和 xml 格式化工具安装不上&#xff0c;发现插件的地址 github…

docker之数据卷(Data Volumes)dockerfile

这里写目录标题宿主机与容器之间的文件拷贝数据卷数据卷容器Dockerfile自定义centos&#xff0c;具备vim及ifconfig作用&#xff08;体会学习Dockerfile的意义&#xff09;自定义tomcat8&#xff08;熟悉几乎所有的Dockerfile命令&#xff09;宿主机与容器之间的文件拷贝 引言…

故障分析 | Greenplum 集群 standby 故障处理

作者&#xff1a;杨文 DBA&#xff0c;负责客户项目的需求与维护&#xff0c;没有擅长&#xff0c;会点数据库&#xff0c;不限于MySQL、Redis、Cassandra、GreenPlum、ClickHouse、Elastic、TDSQL等等。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容…

SM4分组密码算法

对称加密算法SM4SM4算法介绍一、SM4加密流程二、轮函数F1.合成置换T3.非线性变换τ2.线性变换L4.加密的结果总结SM4算法介绍 SM4.0于2013年3月被列为国家密码行业标准“GM/T 0002-2012《SM4分组密码算法》&#xff08;原SMS4分组密码算法&#xff09;”。2016年被列入国家标准…

blender assetBrowser 资产浏览器

文章目录简介.基础操作打开资产浏览器.标记资产.资产库位置设置与加载其他工程的资产库.为资产设置分类.设置资产的属性.根据类型筛选资产.标记材质为资产.标记天空盒材质为资产.标记动作为资产.简介. 1 类似于unity的预制体&#xff0c;可以直接从资产浏览器里拖出来 2 创建时…

什么是缓存架构,什么是后端分布式多级缓存架构,全文解析带你了解其中门道

文章目录浏览器缓存客户端缓存CDN缓存反向代理缓存本地缓存分布式缓存其他&#xff1a;缓存命中率缓存问题&#xff1a;缓存穿透缓存问题&#xff1a;缓存击穿缓存问题&#xff1a;缓存雪崩缓存问题&#xff1a;缓存一致性缓存的其他问题开篇01数据库缓存1.1.MySQL查询缓存1.2.…

CAS登录认证

CAS最基本的协议过程&#xff1a; 名词解释 Ticket Grangting Ticket(TGT) &#xff1a; TGT是CAS为用户签发的登录票据&#xff0c;拥有了TGT&#xff0c;用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS认证成功后&#xff0c…

应用于供暖、供水管道等场景的一种智能控制阀

智能控制阀&#xff0c;顾名思义就是能够实现智能化控制功能的一种控制阀。它有什么用处呢&#xff1f; TSM-04V无线智能控制阀由锂亚电池供电、超长续航&#xff0c;具有无线远程配置功能&#xff0c;是一种高可靠性阀控设备。自带断码显示屏&#xff0c;可以查看设备的电量、…

在VScode中使用Jupyter Notebook的一些技巧

目录 一、VScode中Jupyter Notebook的优点 二、Cell命令模式目前支持的Jupyter Notebook快捷 三、Cell编辑模式下支持的Vscode快捷键&#xff08;只描述与编辑相关的那些快捷键&#xff09;​​​​​​​ 一、VScode中Jupyter Notebook的优点 1.写py代码和使用Notebook经常…

DBCO-SS-Mal,DBCO-SS-Maleimide,马来酰亚胺衍生物试剂特点分析

一、基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a; CAS号&#xff1a;N/A 中文名&#xff1a;二苯并环辛炔-二硫键-马来酰亚胺 英文名&#xff1a;DBCO-SS-Maleimide&#xff0c;DBCO-SS-Mal二、详细产品数据&#xff08;Detailed Product Data&#xf…

aws 整理和理解aws的虚拟化技术

资料 Introduce_to_virtualizationKVM I/O虚拟化AWS EC2 Virtualization 2017: Introducing Nitro从AWS转向KVM&#xff0c;再看KVM与XEN的技术路线之争 简单整理并了解下和aws相关的虚拟化技术 虚拟化技术 相关概念 Hypervisor Hypervisor是一种运行在物理服务器和操作系…

一文彻底搞懂什么是SSH中间人攻击(Man-in-the-middle attack)

文章目录【1】背景【2】中间人攻击原理登录报错信息提示从首次登录服务器说起中间人攻击原理重装服务器导致ssh无法登录的解决方案【3】如何避免中间人攻击&#xff1f;【4】什么是Known_hosts &#xff1f;known_hosts中的文件来自哪里&#xff1f;这个/etc/ssh/ssh_host_ecds…

gcc内联汇编

1. 介绍 用汇编编写的程序虽然运行速度快&#xff0c;但开发速度非常慢&#xff0c;效率也很低。如果只是想对关键代码段进行优化&#xff0c;或许更好的办法是将汇编指令嵌入到 C 语言程序中&#xff0c;从而充分利用高级语言和汇编语言各自的特点。但一般来讲&#xff0c;在…

华为机试_HJ81 字符串字符匹配【简单】【收藏!】

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 解题过程 提交代码 学习代码 收藏点 一、strstr函数 二、stdlib.h 描述 判断短字符串S中的所有字符是否在长字符串T中全部出现。 请注意本题有多组样例输入。 数据范围:1≤len(S),len(T)≤200 进阶&#xf…

如何解决“德语/文”等外文字符显示乱码问题

目录 1“德文/语字符”等外文显示乱码原因 2 如何解决“德文/语字符”等外文显示乱码 2.1 使用支持多个“编码”切换的工具打开该文本 2.2 使用变音字符的标准ASCII字符 2.3 将计算机系统切换至西欧编码 3 结尾 1“德文/语字符”等外文显示乱码原因 以德文/语为例&#…