• <C++> 通讯录管理系统(纯手写含源码)


    🛒本文收录于专栏【大战C++】
    📢专栏目的是对于C++的讲解,重点的逐个击破,会持续输出,欢迎免费订阅!!

    ✨千里之行,始于足下✨

    在这里插入图片描述


    🔎通讯录管理系统

    一、系统概述

    用C++来实现一个通讯录管理系统

    功能如下:

    • 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人
    • 显示联系人:显示通讯录中所有联系人信息
    • 删除联系人:按照姓名进行删除指定联系人
    • 查找联系人:按照姓名查看指定联系人信息
    • 修改联系人:按照姓名重新修改指定联系人
    • 清空联系人:清空通讯录中所有信息
    • 退出通讯录:退出当前使用的通讯录

    二、系统实现

    🔥菜单

    给用户提供选择的界面,下图是效果图:
    在这里插入图片描述
    封装一个函数来实现这个菜单界面,然后在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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    可根据自己喜好更改

    🔥设计联系人结构体

    对结构体不太明白的可以看下博主的热榜好文:🔎<C++> 结构体 的全角度解答

    //联系人结构体
    struct Person
    {
    	string m_Name; //姓名
    	int m_Sex; //性别:1男 2女
    	int m_Age; //年龄
    	string m_Phone; //电话
    	string m_Addr; //住址
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    🔥设计结构体结构体

    这里设置MAX也是方便以后的更改

    #define MAX 1000 //最大人数
    
    //通讯录结构体
    struct Addressbooks
    {
    	struct Person personArray[MAX]; //通讯录中保存的联系人数组
    	int m_Size; //通讯录中人员个数
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    🔥1.添加联系人

    向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人

    需要先判断通讯录是否满了,如果满了就不能再添加,未满情况将新联系人信息逐个加入到通讯录

    //1、添加联系人信息
    void addPerson(Addressbooks *abs)
    {
    	//判断电话本是否满了
    	if (abs->m_Size == MAX)
    	{
    		cout << "通讯录已满,无法添加" << endl;
    		return;
    	}
    	else
    	{
    		//姓名
    		string name;
    		cout << "请输入姓名:" << endl;
    		cin >> name;
    		abs->personArray[abs->m_Size].m_Name = name;
    
    		cout << "请输入性别:" << endl;
    		cout << "1 -- 男" << endl;
    		cout << "2 -- 女" << endl;
    
    		//性别
    		int sex = 0;
    		while (true)
    		{
    			cin >> sex;
    			if (sex == 1 || sex == 2)
    			{
    				abs->personArray[abs->m_Size].m_Sex = sex;
    				break;
    			}
    			cout << "输入有误,请重新输入";
    		}
    
    		//年龄
    		cout << "请输入年龄:" << endl;
    		int age = 0;
    		cin >> age;
    		abs->personArray[abs->m_Size].m_Age = age;
    
    		//联系电话
    		cout << "请输入联系电话:" << endl;
    		string phone = "";
    		cin >> phone;
    		abs->personArray[abs->m_Size].m_Phone = phone;
    
    		//家庭住址
    		cout << "请输入家庭住址:" << endl;
    		string address;
    		cin >> address;
    		abs->personArray[abs->m_Size].m_Addr = address;
    
    		//更新通讯录人数
    		abs->m_Size++;
    
    		cout << "添加成功" << endl;
    		system("pause");
    		system("cls");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    🔥2.显示联系人

    显示通讯录中所有联系人信息

    也是先判断如果当前通讯录中没有联系人,就提示记录为空,若存在联系人,显示通讯录中信息

    //2、显示联系人
    void showPerson(Addressbooks * abs)
    {
    	if (abs->m_Size == 0)
    	{
    		cout << "当前记录为空" << endl;
    	}
    	else
    	{
    		for (int i = 0; i < abs->m_Size; i++)
    		{
    			cout << "姓名:" << abs->personArray[i].m_Name << "\t";
    			cout << "性别:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t";
    			cout << "年龄:" << abs->personArray[i].m_Age << "\t";
    			cout << "电话:" << abs->personArray[i].m_Phone << "\t";
    			cout << "住址:" << abs->personArray[i].m_Addr << endl;
    		}
    	}
    
    	system("pause");
    	system("cls");
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    🔥3.删除联系人

    按照姓名进行删除指定联系人

    删除联系人前需判断该联系人是否存在,为下面功能使用方便,封装成函数

    int isExist(Addressbooks * abs, string name)
    {
    	for (int i = 0; i < abs->m_Size; i++)
    	{
    		if (abs->personArray[i].m_Name == name)
    		{
    			return i;
    		}
    	}
    	return -1;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    根据用户输入的联系人判断该通讯录中是否有此人
    查到进行删除,并提示删除成功
    查不到提示查无此人

    //3、删除指定联系人信息
    //判断是否存在查询的人员,存在返回在数组中索引位置,不存在返回-1
    int isExist(Addressbooks * abs, string name)
    {
    	for (int i = 0; i < abs->m_Size; i++)
    	{
    		if (abs->personArray[i].m_Name == name)
    		{
    			return i;
    		}
    	}
    	return -1;
    }
    void deletePerson(Addressbooks * abs)
    {
    	cout << "请输入您要删除的联系人" << endl;
    	string name;
    	cin >> name;
    
    	int ret = isExist(abs, name);
    	if (ret != -1)
    	{
    		for (int i = ret; i < abs->m_Size; i++)
    		{
    			abs->personArray[i] = abs->personArray[i + 1];
    		}
    		abs->m_Size--;
    		cout << "删除成功" << endl;
    	}
    	else
    	{
    		cout << "查无此人" << endl;
    	}
    
    	system("pause");
    	system("cls");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    🔥4.查找联系人

    按照姓名查看指定联系人信息

    思路差不多,先判断用户指定的联系人是否存在,若存在显示信息,不存在则提示查无此人

    //4、查找指定联系人信息
    void findPerson(Addressbooks * abs)
    {
    	cout << "请输入您要查找的联系人" << endl;
    	string name;
    	cin >> name;
    
    	int ret = isExist(abs, name);
    	if (ret != -1)
    	{
    		cout << "姓名:" << abs->personArray[ret].m_Name << "\t";
    		cout << "性别:" << abs->personArray[ret].m_Sex << "\t";
    		cout << "年龄:" << abs->personArray[ret].m_Age << "\t";
    		cout << "电话:" << abs->personArray[ret].m_Phone << "\t";
    		cout << "住址:" << abs->personArray[ret].m_Addr << endl;
    	}
    	else
    	{
    		cout << "查无此人" << endl;
    	}
    
    	system("pause");
    	system("cls");
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    🔥5.修改联系人

    按照姓名重新修改指定联系人

    查找成功进行修改操作,查找失败提示查无此人

    //5、修改指定联系人信息
    void modifyPerson(Addressbooks * abs)
    {
    	cout << "请输入您要修改的联系人" << endl;
    	string name;
    	cin >> name;
    
    	int ret = isExist(abs, name);
    	if (ret != -1)
    	{
    		//姓名
    		string name;
    		cout << "请输入姓名:" << endl;
    		cin >> name;
    		abs->personArray[ret].m_Name = name;
    
    		cout << "请输入性别:" << endl;
    		cout << "1 -- 男" << endl;
    		cout << "2 -- 女" << endl;
    
    		//性别
    		int sex = 0;
    		while (true)
    		{
    			cin >> sex;
    			if (sex == 1 || sex == 2)
    			{
    				abs->personArray[ret].m_Sex = sex;
    				break;
    			}
    			cout << "输入有误,请重新输入";
    		}
    
    		//年龄
    		cout << "请输入年龄:" << endl;
    		int age = 0;
    		cin >> age;
    		abs->personArray[ret].m_Age = age;
    
    		//联系电话
    		cout << "请输入联系电话:" << endl;
    		string phone = "";
    		cin >> phone;
    		abs->personArray[ret].m_Phone = phone;
    
    		//家庭住址
    		cout << "请输入家庭住址:" << endl;
    		string address;
    		cin >> address;
    		abs->personArray[ret].m_Addr = address;
    
    		cout << "修改成功" << endl;
    	}
    	else
    	{
    		cout << "查无此人" << endl;
    	}
    
    	system("pause");
    	system("cls");
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    🔥6.清空联系人

    清空通讯录中所有信息

    将通讯录所有联系人信息清除掉,只要将通讯录记录的联系人数量置为0,做逻辑清空即可

    //6、清空所有联系人
    void cleanPerson(Addressbooks * abs)
    {
    	abs->m_Size = 0;
    	cout << "通讯录已清空" << endl;
    	system("pause");
    	system("cls");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    🔎补充:
    逻辑清空就是直接把记录所加联系人数量的结构体的成员变量size变来等于0,但是结构体数组里面的成员各个成员都还在,但是我未对此做多余的功能和操作,所以用户在清空了通讯录之后也无法查看到结构体数组里面的成员


    🔥0.退出联系人

    退出当前使用的通讯录

    退出联系人功能包含在主函数中
    当用户选择0时候,执行退出,选择其他先不做操作,也不会退出程序

    完整主函数代码

    
    int main() {
    
    	Addressbooks abs;
    	abs.m_Size = 0;
    
    	//1、添加联系人
    	
    	//
    	int select = 0;
    
    	showMenu();
    
    	cin >> select;
    	switch (true) {
    
    		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、修改联系人
    			modifyPerson(&abs);
    			break;
    		case 6://6、清空联系人
    			cleanPerson(&abs);
    			break;
    		case 0://0、退出联系人
    			cout << "欢迎下次使用" << endl;
    			system("pause");
    			return 0;
    			break;
    		default:
    			break;
    		}
    	}
    	
    	system("pause");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    三、源码

    通讯录管理系统

    #include <iostream>
    #include <string>
    #define MAX 1000
    using namespace std;
    
    struct Person {
    	string m_Name;
    	int m_Sex;
    	int m_Age;
    	string m_Phone;
    	string m_Addr;
    };
    
    struct Addressbooks{
    	struct 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;
    }
    void addPerson(Addressbooks *abs)
    {
    	if (abs->m_Size == MAX)//判断是否满了{
    		cout << "通讯录已满,无法添加" << endl;
    		return;
    	}
    	else{
    		//姓名
    		string name;
    		cout << "请输入姓名:" << endl;
    		cin >> name;
    		abs->personArray[abs->m_Size].m_Name = name;
    
    		cout << "请输入性别:" << endl;
    		cout << "1 -- 男" << endl;
    		cout << "2 -- 女" << endl;
    		//性别
    		int sex = 0;
    		while (true)
    		{
    			cin >> sex;
    			if (sex == 1 || sex == 2)
    			{
    				abs->personArray[abs->m_Size].m_Sex = sex;
    				break;
    			}
    			cout << "输入有误,请重新输入";
    		}
    		//年龄
    		cout << "请输入年龄:" << endl;
    		int age = 0;
    		cin >> age;
    		abs->personArray[abs->m_Size].m_Age = age;
    		//联系电话
    		cout << "请输入联系电话:" << endl;
    		string phone = "";
    		cin >> phone;
    		abs->personArray[abs->m_Size].m_Phone = phone;
    		//家庭住址
    		cout << "请输入家庭住址:" << endl;
    		string address;
    		cin >> address;
    		abs->personArray[abs->m_Size].m_Addr = address;
    		//更新人数
    		abs->m_Size++;
    		cout << "添加成功" << endl;
    		system("pause");
    		system("cls");
    	}
    }
    //2、显示联系人
    void showPerson(Addressbooks * abs){
    	if (abs->m_Size == 0){
    		cout << "当前记录为空" << endl;
    	}
    	else{
    		for (int i = 0; i < abs->m_Size; i++){
    			cout << "姓名:" << abs->personArray[i].m_Name << "\t";
    			cout << "性别:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t";
    			cout << "年龄:" << abs->personArray[i].m_Age << "\t";
    			cout << "电话:" << abs->personArray[i].m_Phone << "\t";
    			cout << "住址:" << abs->personArray[i].m_Addr << endl;
    		}
    	}
    	system("pause");
    	system("cls");
    }
    //3、删除指定联系人信息
    
    //判断是否存在查询的人员,存在返回在数组中索引位置,不存在返回-1
    int isExist(Addressbooks * abs, string name){
    	for (int i = 0; i < abs->m_Size; i++){
    		if (abs->personArray[i].m_Name == name){
    			return i;
    		}
    	}
    	return -1;
    }
    void deletePerson(Addressbooks * abs){
    	cout << "请输入您要删除的联系人" << endl;
    	string name;
    	cin >> name;
    
    	int ret = isExist(abs, name);
    	if (ret != -1){
    		for (int i = ret; i < abs->m_Size; i++){
    			abs->personArray[i] = abs->personArray[i + 1];
    		}
    		abs->m_Size--;
    		cout << "删除成功" << endl;
    	}
    	else{
    		cout << "查无此人" << endl;
    	}
    	system("pause");
    	system("cls");
    }
    
    //4、查找指定联系人信息
    void findPerson(Addressbooks * abs){
    	cout << "请输入您要查找的联系人" << endl;
    	string name;
    	cin >> name;
    	int ret = isExist(abs, name);
    	if (ret != -1){
    		cout << "姓名:" << abs->personArray[ret].m_Name << "\t";
    		cout << "性别:" << abs->personArray[ret].m_Sex << "\t";
    		cout << "年龄:" << abs->personArray[ret].m_Age << "\t";
    		cout << "电话:" << abs->personArray[ret].m_Phone << "\t";
    		cout << "住址:" << abs->personArray[ret].m_Addr << endl;
    	}
    	else{
    		cout << "查无此人" << endl;
    	}
    	system("pause");
    	system("cls");
    }
    //5、修改指定联系人
    void modifyPerson(Addressbooks * abs){
    	cout << "请输入您要修改的联系人" << endl;
    	string name;
    	cin >> name;
    	int ret = isExist(abs, name);
    	if (ret != -1){
    		//姓名
    		string name;
    		cout << "请输入姓名:" << endl;
    		cin >> name;
    		abs->personArray[ret].m_Name = name;
    		cout << "请输入性别:" << endl;
    		cout << "1 -- 男" << endl;
    		cout << "2 -- 女" << endl;
    		//性别
    		int sex = 0;
    		while (true){
    			cin >> sex;
    			if (sex == 1 || sex == 2)
    			{
    				abs->personArray[ret].m_Sex = sex;
    				break;
    			}
    			cout << "输入有误,请重新输入";
    		}
    		//年龄
    		cout << "请输入年龄:" << endl;
    		int age = 0;
    		cin >> age;
    		abs->personArray[ret].m_Age = age;
    		//联系电话
    		cout << "请输入联系电话:" << endl;
    		string phone = "";
    		cin >> phone;
    		abs->personArray[ret].m_Phone = phone;
    		//家庭住址
    		cout << "请输入家庭住址:" << endl;
    		string address;
    		cin >> address;
    		abs->personArray[ret].m_Addr = address;
    		cout << "修改成功" << endl;
    	}
    	else{
    		cout << "查无此人" << endl;
    	}
    	system("pause");
    	system("cls");
    }
    //6、清空联系人
    void cleanPerson(Addressbooks * abs){
    	abs->m_Size = 0;
    	cout << "通讯录已清空" << endl;
    	system("pause");
    	system("cls");
    }
    int main() {
    	Addressbooks abs;
    	abs.m_Size = 0;
    	int select = 0;
    	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、修改联系人
    			modifyPerson(&abs);break;
    		case 6://6、清空联系人
    			cleanPerson(&abs);break;
    		case 0://0、退出联系人
    			cout << "欢迎下次使用" << endl;
    			system("pause");
    			return 0;break;
    		default:
    			break;
    		}
    	system("pause");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232

    效果图就不给大家展示了,太多了,可以自己试一试哦,这也是博主第一个C++项目,咱们下篇文章见~

  • 相关阅读:
    网络安全1
    16-Ros launch文件解读
    基于网络爬虫的新闻实时监测分析可视化系统(Java+MySQL+Web+Eclipse)
    Node.js 零基础入门 Node.js 零基础入门第四天 4.1 数据库的基本概念 && 4.2 安装并配置MySQL && 4.3 MySQL的基本使用
    码农批量下岗后的全新开发模式预览
    Robot Framework结合Jenkins进行持续集成
    动态规划-矩阵连乘
    融云全球社交泛娱乐洞察,老资格的「游戏社交」还有哪些想象空间
    css-vxe列表中ant进度条与百分比
    Jmeter之性能测试
  • 原文地址:https://blog.csdn.net/m0_64996150/article/details/125317729